@arcgis/core 5.2.0-next.72 → 5.2.0-next.74

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 (357) hide show
  1. package/analysis/ViewshedAnalysis.js +1 -1
  2. package/arcgisGlobal.d.ts +1 -0
  3. package/assets/esri/core/workers/RemoteClient.js +1 -1
  4. package/assets/esri/core/workers/chunks/{d3be4d914fc99a1d686c.js → 075e65cc4275ac886f08.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{3b3a8a6167f2e1eeb828.js → 0823961e5d0bdedbf8cf.js} +2 -2
  6. package/assets/esri/core/workers/chunks/087bd698b80ca0cea71e.js +1 -0
  7. package/assets/esri/core/workers/chunks/{b6c7b7b7f87dce5de811.js → 0bf644f93c180a2bc2f8.js} +1 -1
  8. package/assets/esri/core/workers/chunks/{a62f1b8ed065b2a38f1a.js → 0dbf31a663b5220a3136.js} +1 -1
  9. package/assets/esri/core/workers/chunks/{fe10a95ebe1da2322af6.js → 0df660dfd941cff3ea1d.js} +1 -1
  10. package/assets/esri/core/workers/chunks/0e81c6d4f1c81f9b0a1b.js +1 -0
  11. package/assets/esri/core/workers/chunks/{d93d0cb69f3a9a722510.js → 1418c03c4ab87f7ab5f4.js} +1 -1
  12. package/assets/esri/core/workers/chunks/{c03da138651ac53cadcb.js → 186bedc377cc97731ca2.js} +2 -2
  13. package/assets/esri/core/workers/chunks/193aed69de2dec4f36b6.js +1 -0
  14. package/assets/esri/core/workers/chunks/1a3afee3ecd806b4aa81.js +1 -0
  15. package/assets/esri/core/workers/chunks/{359584a8fb5687a7d098.js → 264fd750691d517ab1f3.js} +1 -1
  16. package/assets/esri/core/workers/chunks/28f87daaba1ae3441364.js +1 -0
  17. package/assets/esri/core/workers/chunks/{fff23b2682590c4b21e3.js → 2a2ed7bd44010f24c2dd.js} +1 -1
  18. package/assets/esri/core/workers/chunks/2baa16ec8559e77c226f.js +1 -0
  19. package/assets/esri/core/workers/chunks/2c31648a4b95275516ee.js +1 -0
  20. package/assets/esri/core/workers/chunks/2e44978ee677aa23163d.js +256 -0
  21. package/assets/esri/core/workers/chunks/2f81047790c4890ae625.js +1 -0
  22. package/assets/esri/core/workers/chunks/305eea9c1fc4aee3309e.js +1 -0
  23. package/assets/esri/core/workers/chunks/31d19bb72a9e79b30070.js +1 -0
  24. package/assets/esri/core/workers/chunks/{fc2cae359d571690d754.js → 35fd2f765d2cb3f59a22.js} +4 -4
  25. package/assets/esri/core/workers/chunks/{6b208bac120bcfecd9e4.js → 3e2b4e734aa20a308f3e.js} +1 -1
  26. package/assets/esri/core/workers/chunks/45ccca01db0027b9dc16.js +1 -0
  27. package/assets/esri/core/workers/chunks/495f90fe3d0ad32bb82d.js +1 -0
  28. package/assets/esri/core/workers/chunks/4b5bd0c9a55ea2998601.js +1 -0
  29. package/assets/esri/core/workers/chunks/{50e0dd74795978468625.js → 4cf2b0558a4acc141429.js} +1 -1
  30. package/assets/esri/core/workers/chunks/509aecafbc629bee1c15.js +1 -0
  31. package/assets/esri/core/workers/chunks/{d901f8503a73277cfa58.js → 553be2bd69bd311477ea.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{2d3a18d56e2e5669c562.js → 64176f7ae719289a2f79.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{31669511cfddf116d991.js → 66e60351aacbd162775f.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{9684ab5e8254fdfcb7bb.js → 67f54586156d1ab80257.js} +1 -1
  35. package/assets/esri/core/workers/chunks/762be5d3e6aeaea33f74.js +29 -0
  36. package/assets/esri/core/workers/chunks/76b573143d1a65fdbcb6.js +1 -0
  37. package/assets/esri/core/workers/chunks/7aaa051b51a8e34bbfb0.js +1 -0
  38. package/assets/esri/core/workers/chunks/{fa19d5923276418096da.js → 7b5b66ae79e0287e3ade.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{2cfe6f41865ffb3a4645.js → 7e373d9c98ce910db9d2.js} +1 -1
  40. package/assets/esri/core/workers/chunks/81130dbcb738d40f723b.js +1 -0
  41. package/assets/esri/core/workers/chunks/{4da993c79b373b9d304e.js → 8302bffd28cc6720e0fe.js} +2 -2
  42. package/assets/esri/core/workers/chunks/835af7b4fd92cb4e7af0.js +1 -0
  43. package/assets/esri/core/workers/chunks/859dd86c921053bf03a1.js +1 -0
  44. package/assets/esri/core/workers/chunks/877594b6db08da98acd7.js +1 -0
  45. package/assets/esri/core/workers/chunks/{96d861265566854760cd.js → 88fd698b940dadcc6dc5.js} +1 -1
  46. package/assets/esri/core/workers/chunks/8f0d4aec8bd3cbfefc40.js +1 -0
  47. package/assets/esri/core/workers/chunks/{7f208ef75ef2ce0d7cf9.js → 910c93bbbf8113a4a51f.js} +1 -1
  48. package/assets/esri/core/workers/chunks/92c4464b67fce6cea134.js +1 -0
  49. package/assets/esri/core/workers/chunks/{509cfac9e5d86a8ee449.js → 936d44c7bc3a181e64a3.js} +1 -1
  50. package/assets/esri/core/workers/chunks/{b9953277d0cd4a01bdc6.js → 94368a097e6190ce3c7a.js} +1 -1
  51. package/assets/esri/core/workers/chunks/947f1ea4dbc3e3419ecc.js +1 -0
  52. package/assets/esri/core/workers/chunks/9b76c8974424a1908e86.js +1 -0
  53. package/assets/esri/core/workers/chunks/{c203df41f9d2e4b80889.js → 9ca59077712e45ef4d56.js} +1 -1
  54. package/assets/esri/core/workers/chunks/9e25f715cda59c686a4c.js +1 -0
  55. package/assets/esri/core/workers/chunks/{36171c72a3c04b0d13ef.js → a0a1f0bd3648738354a6.js} +1 -1
  56. package/assets/esri/core/workers/chunks/a101152066dd56259619.js +1 -0
  57. package/assets/esri/core/workers/chunks/a2a2c7e274fb32fecffa.js +1 -0
  58. package/assets/esri/core/workers/chunks/a50421fe79f264ae3619.js +1 -0
  59. package/assets/esri/core/workers/chunks/a9053ad0f4e8c4705665.js +1 -0
  60. package/assets/esri/core/workers/chunks/aca5c524bd3c955e9243.js +1 -0
  61. package/assets/esri/core/workers/chunks/{9dda9414104f585560a4.js → ad1d06a91121ebfe9162.js} +2 -2
  62. package/assets/esri/core/workers/chunks/b1a175b3b2d1a7ddde8e.js +1 -0
  63. package/assets/esri/core/workers/chunks/{065e3353124fc5ac44ce.js → b33d870cbfa238762c5e.js} +1 -1
  64. package/assets/esri/core/workers/chunks/b3b53cf0a3a30164d337.js +1 -0
  65. package/assets/esri/core/workers/chunks/b6d26d9738c0787acc38.js +1 -0
  66. package/assets/esri/core/workers/chunks/b9c61b20bbc91cb63036.js +1 -0
  67. package/assets/esri/core/workers/chunks/bf3dc3ad8df8488da3f0.js +1 -0
  68. package/assets/esri/core/workers/chunks/bff75cc7413bf0d319db.js +1 -0
  69. package/assets/esri/core/workers/chunks/c1568bcd3f04014152e1.js +1 -0
  70. package/assets/esri/core/workers/chunks/c1a4d499a30f3d80567b.js +1 -0
  71. package/assets/esri/core/workers/chunks/c374e5d5980db74c4aca.js +1 -0
  72. package/assets/esri/core/workers/chunks/{8c76f31a363dd0c3354d.js → c46f79d5b7712adbbd1c.js} +1 -1
  73. package/assets/esri/core/workers/chunks/c67e4a848d41038367b8.js +1 -0
  74. package/assets/esri/core/workers/chunks/{684d3cb4fb233180b2d0.js → cd892c9603710d6130a9.js} +1 -1
  75. package/assets/esri/core/workers/chunks/{fa5d27e47d47ff8fcb96.js → d03e7be74c57c3dbf003.js} +2 -2
  76. package/assets/esri/core/workers/chunks/de5013f89f0eae93978f.js +1 -0
  77. package/assets/esri/core/workers/chunks/e557043f90c051e93925.js +1 -0
  78. package/assets/esri/core/workers/chunks/{bee5e738ecf8680909c4.js → eaf26c1cc938789d5336.js} +1 -1
  79. package/assets/esri/core/workers/chunks/ebfb3cdc0df15eb05d75.js +1 -0
  80. package/assets/esri/core/workers/chunks/f1727b4a32cb6f36a5e6.js +1 -0
  81. package/assets/esri/core/workers/chunks/f4bc563c71c478d3912f.js +1 -0
  82. package/assets/esri/core/workers/chunks/fb0b89bbb4f8607d5f20.js +1 -0
  83. package/assets/esri/core/workers/chunks/fdca9873914b9dbd9244.js +1 -0
  84. package/assets/esri/core/workers/chunks/ff890167ff2baabfc4ce.js +1 -0
  85. package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
  86. package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
  87. package/chunks/Component.glsl.js +3 -3
  88. package/chunks/HUDMaterial.glsl.js +8 -8
  89. package/chunks/lyr3DMain.js +1 -1
  90. package/config.js +1 -1
  91. package/kernel.js +1 -1
  92. package/layers/DimensionFeatureLayer.d.ts +22 -0
  93. package/layers/DimensionFeatureLayer.js +1 -1
  94. package/layers/ILyr3DWasmPerSceneView.js +1 -1
  95. package/layers/Lyr3DWasmPerSceneView.js +1 -1
  96. package/layers/save/featureLayerUtils.js +1 -1
  97. package/layers/support/layerUtils.js +1 -1
  98. package/layers/support/layersMapping.js +1 -1
  99. package/layers/support/tiles3DUtils.js +1 -1
  100. package/layers/video/VideoController.js +1 -1
  101. package/package.json +3 -3
  102. package/support/revision.js +1 -1
  103. package/views/2d/engine/Bitmap.js +1 -1
  104. package/views/2d/engine/BitmapTile.js +1 -1
  105. package/views/2d/engine/BitmapTileContainer.js +1 -1
  106. package/views/2d/engine/flow/FlowContainer.js +1 -1
  107. package/views/2d/engine/flow/FlowDisplayObject.js +1 -1
  108. package/views/2d/engine/flow/styles/Imagery.js +1 -1
  109. package/views/2d/engine/flow/styles/Particles.js +1 -1
  110. package/views/2d/engine/flow/styles/Streamlines.js +1 -1
  111. package/views/2d/engine/imagery/RasterBitmap.js +1 -1
  112. package/views/2d/engine/imagery/RasterTile.js +1 -1
  113. package/views/2d/engine/imagery/RasterTileContainer.js +1 -1
  114. package/views/2d/engine/imagery/RasterVFDisplayObject.js +1 -1
  115. package/views/2d/engine/imagery/RasterVFTile.js +1 -1
  116. package/views/2d/engine/imagery/RasterVFTileContainer.js +1 -1
  117. package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
  118. package/views/2d/engine/vectorTiles/VectorTileRendererHelper3D.js +1 -1
  119. package/views/2d/engine/webgl/Overlay.js +1 -1
  120. package/views/2d/engine/webgl/OverlayContainer.js +1 -1
  121. package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
  122. package/views/2d/engine/webgl/TileContainer.js +1 -1
  123. package/views/2d/engine/webgl/normalizedTileUtils.js +2 -0
  124. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  125. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedFillShader.js +1 -1
  126. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedLineShader.js +1 -1
  127. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedMarkerShader.js +1 -1
  128. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedTechnique.js +1 -1
  129. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimationUniformInfo.js +1 -1
  130. package/views/2d/engine/webgl/shaderGraph/techniques/bitmap/BitmapTechnique.js +1 -1
  131. package/views/2d/engine/webgl/shaderGraph/techniques/clip/ClipTechnique.js +1 -1
  132. package/views/2d/engine/webgl/shaderGraph/techniques/createGraphicSymbolMeshSchemas.js +1 -1
  133. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityPointShader.js +1 -1
  134. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityTechnique.js +1 -1
  135. package/views/2d/engine/webgl/shaderGraph/techniques/drop-shadow/DropShadowTechnique.js +1 -1
  136. package/views/2d/engine/webgl/shaderGraph/techniques/featureTechniqueUtils.js +1 -1
  137. package/views/2d/engine/webgl/shaderGraph/techniques/fill/ComplexOutlineFillTechnique.js +1 -1
  138. package/views/2d/engine/webgl/shaderGraph/techniques/fill/FillMeshWriter.js +1 -1
  139. package/views/2d/engine/webgl/shaderGraph/techniques/fill/GradientFillMeshWriter.js +1 -1
  140. package/views/2d/engine/webgl/shaderGraph/techniques/fill/OutlineFillTechnique.js +1 -1
  141. package/views/2d/engine/webgl/shaderGraph/techniques/fill/PatternOutlineFillTechnique.js +1 -1
  142. package/views/2d/engine/webgl/shaderGraph/techniques/flow/FlowTechnique.js +1 -1
  143. package/views/2d/engine/webgl/shaderGraph/techniques/line/GradientStrokeTechnique.js +1 -1
  144. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineMeshWriter.js +1 -1
  145. package/views/2d/engine/webgl/shaderGraph/techniques/line/LineTechnique.js +1 -1
  146. package/views/2d/engine/webgl/shaderGraph/techniques/line/TexturedLineTechnique.js +1 -1
  147. package/views/2d/engine/webgl/shaderGraph/techniques/markers/MarkerShader.js +1 -1
  148. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriter.js +1 -1
  149. package/views/2d/engine/webgl/shaderGraph/techniques/overlay/OverlayTechnique.js +1 -1
  150. package/views/2d/engine/webgl/shaderGraph/techniques/pieChart/PieChartShader.js +1 -1
  151. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterColorizerTechnique.js +1 -1
  152. package/views/2d/engine/webgl/shaderGraph/techniques/raster/RasterHighlightTechnique.js +1 -1
  153. package/views/2d/engine/webgl/shaderGraph/techniques/raster/VectorFieldTechnique.js +1 -1
  154. package/views/2d/engine/webgl/shaderGraph/techniques/raster/processor/ReprojectTechnique.js +1 -1
  155. package/views/2d/engine/webgl/shaderGraph/techniques/raster/rasterVFUtils.js +2 -0
  156. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  157. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/BitmapShader.js +1 -1
  158. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ClipShader.js +1 -1
  159. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexFillShader.js +1 -1
  160. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ComplexOutlineFillShader.js +1 -1
  161. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/DebugOverlayShader.js +1 -1
  162. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/DropShadowShader.js +1 -1
  163. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/FillShader.js +1 -1
  164. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/GradientFillShader.js +1 -1
  165. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/GradientStrokeShader.js +1 -1
  166. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/HeatmapAccumulateShader.js +1 -1
  167. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/LineShader.js +1 -1
  168. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OutlineFillShader.js +1 -1
  169. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/OverlayShader.js +1 -1
  170. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/PatternFillShader.js +1 -1
  171. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/PatternOutlineFillShader.js +1 -1
  172. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TexturedLineShader.js +1 -1
  173. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/Tile.js +2 -0
  174. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TileDebugInfoShader.js +1 -1
  175. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TileInfo.js +2 -0
  176. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/TileStencilShader.js +1 -1
  177. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/ViewInfo.js +1 -1
  178. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/flow/FlowImageryShader.js +1 -1
  179. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/flow/FlowParticlesShader.js +1 -1
  180. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/flow/FlowStreamlinesShader.js +1 -1
  181. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/flow/FlowUtils.js +1 -1
  182. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/hittestUtils.js +1 -1
  183. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/BaseRasterColorizerShader.js +1 -1
  184. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/BaseRasterHighlightShader.js +1 -1
  185. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/MagDirShader.js +1 -1
  186. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/RasterVFTransform.js +2 -0
  187. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/ScalarShader.js +1 -1
  188. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/raster/processor/ReprojectShader.js +1 -1
  189. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderBackground.js +1 -1
  190. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderCircle.js +1 -1
  191. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderFill.js +1 -1
  192. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderIcon.js +1 -1
  193. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderLine.js +1 -1
  194. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderOutline.js +1 -1
  195. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderText.js +1 -1
  196. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  197. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileDebugInfoTechnique.js +1 -1
  198. package/views/2d/engine/webgl/shaderGraph/techniques/tile/TileStencilTechnique.js +1 -1
  199. package/views/2d/engine/webgl/shaderGraph/techniques/utility/DebugOverlayTechnique.js +1 -1
  200. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueBackground.js +1 -1
  201. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueCircle.js +1 -1
  202. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueFill.js +1 -1
  203. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueLine.js +1 -1
  204. package/views/2d/engine/webgl/shaderGraph/techniques/vectorTiles/VTLTechniqueSymbol.js +1 -1
  205. package/views/2d/engine/webgl/shaderGraph/typed/TypedShaderProgram.js +1 -1
  206. package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
  207. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  208. package/views/2d/layers/MediaLayerView2D.js +1 -1
  209. package/views/2d/layers/TileLayerView2D.js +1 -1
  210. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  211. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  212. package/views/2d/layers/features/schema/processor/symbols/ComplexSymbolSchema.js +1 -1
  213. package/views/2d/layers/support/DebugOverlay.js +1 -1
  214. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  215. package/views/3d/analysis/LineOfSight/LineOfSightAggregateManipulatedObject3D.js +1 -1
  216. package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
  217. package/views/3d/analysis/LineOfSight/LineOfSightReshapeTool3D.js +1 -1
  218. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  219. package/views/3d/analysis/LineOfSight/lineOfSightPlacementUtils.js +1 -1
  220. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  221. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  222. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  223. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  224. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  225. package/views/3d/analysis/Viewshed/placementUtils.js +1 -1
  226. package/views/3d/analysis/ViewshedAnalysisView3D.js +1 -1
  227. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillController.js +1 -1
  228. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementCutFillVisualization.js +1 -1
  229. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  230. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementTool.js +1 -1
  231. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  232. package/views/3d/interactive/editingTools/move/MoveTool3D.js +1 -1
  233. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  234. package/views/3d/interactive/editingTools/reshape/ReshapeTool3D.js +1 -1
  235. package/views/3d/interactive/editingTools/reshape/reshapeTooltipUtils3D.js +1 -1
  236. package/views/3d/interactive/editingTools/settings.js +1 -1
  237. package/views/3d/interactive/editingTools/tooltipUtils3D.js +1 -1
  238. package/views/3d/interactive/editingTools/transform/ExtentTransformTool.js +1 -1
  239. package/views/3d/interactive/editingTools/transform/ScaleRotateTransform.js +1 -1
  240. package/views/3d/interactive/editingTools/transform/TransformTool3D.js +1 -1
  241. package/views/3d/interactive/editingTools/transform/extentTransform/ExtentMove.js +1 -1
  242. package/views/3d/interactive/editingTools/transform/extentTransform/ExtentRotate.js +1 -1
  243. package/views/3d/interactive/editingTools/transform/extentTransform/ExtentScale.js +1 -1
  244. package/views/3d/interactive/manipulatorUtils.js +1 -1
  245. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  246. package/views/3d/interactive/snapping/featureSources/featureServiceSource/FeatureServiceTiles3D.js +1 -1
  247. package/views/3d/layers/GaussianSplatLayerView3D.js +1 -1
  248. package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
  249. package/views/3d/layers/graphics/tessellationUtils.js +1 -1
  250. package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
  251. package/views/3d/layers/support/MediaLayerInteraction.js +1 -1
  252. package/views/3d/layers/support/lyr3dTypeConversions.js +1 -1
  253. package/views/3d/support/flow/FlowSubViewTiles3D.js +1 -1
  254. package/views/3d/support/renderInfoUtils/polygon.js +1 -1
  255. package/views/3d/webgl-engine/collections/Component/Material/Component.glsl.js +1 -1
  256. package/views/3d/webgl-engine/core/shaderLibrary/NormalFromDepth.glsl.js +1 -1
  257. package/views/3d/webgl-engine/core/shaderLibrary/output/DepthConversion.glsl.js +14 -0
  258. package/views/3d/webgl-engine/core/shaderLibrary/output/ReadDepth.glsl.js +3 -15
  259. package/views/3d/webgl-engine/core/shaderLibrary/output/ReadDepthLastFrame.glsl.js +1 -1
  260. package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
  261. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  262. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  263. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  264. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  265. package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
  266. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  267. package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
  268. package/views/3d/webgl.js +1 -1
  269. package/views/VideoView.js +1 -1
  270. package/views/View.js +1 -1
  271. package/views/draw/DrawGraphicTool.js +1 -1
  272. package/views/draw/DrawOperation.js +1 -1
  273. package/views/draw/DrawTool.js +1 -1
  274. package/views/draw/plugins/PolylinePlugin.js +1 -1
  275. package/views/draw/support/Box.js +1 -1
  276. package/views/draw/support/InteractiveHandle.js +1 -1
  277. package/views/draw/support/Reshape.js +1 -1
  278. package/views/draw/support/drawToolUtils.js +1 -1
  279. package/views/draw/support/managers/InteractiveHandleManager.js +1 -1
  280. package/views/draw/support/managers/TooltipManager.js +1 -1
  281. package/views/draw/support/reshapeTooltipUtils.js +1 -1
  282. package/views/draw/support/tooltipUtils.js +1 -1
  283. package/views/interactive/options/InteractiveToolOptions.d.ts +36 -0
  284. package/views/interactive/options/InteractiveToolOptions.js +2 -0
  285. package/views/interactive/sketch/SketchOptions.d.ts +4 -3
  286. package/views/interactive/sketch/SketchOptions.js +1 -1
  287. package/views/interactive/tooltip/components/DrawHeaderActions.js +1 -1
  288. package/views/interactive/tooltip/content/TooltipContent.js +1 -1
  289. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  290. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  291. package/views/interactive/tooltip/content/TooltipContentDynamic.js +1 -1
  292. package/views/interactive/tooltip/fields/fields.js +1 -1
  293. package/views/interactive/tooltip/infos/DynamicTooltipInfo.js +1 -1
  294. package/views/interactive/tooltip/infos/SketchTooltipInfo.js +1 -1
  295. package/views/interactive/tooltip/tooltipCommonUtils.js +1 -1
  296. package/views/support/imageReprojection.js +1 -1
  297. package/widgets/Sketch/SketchViewModel.js +1 -1
  298. package/widgets/support/GridControls/GridControlsViewModel.js +1 -1
  299. package/assets/esri/core/workers/chunks/0623acb2bd14a61b65c9.js +0 -29
  300. package/assets/esri/core/workers/chunks/06c9aac75a01d3af6d54.js +0 -1
  301. package/assets/esri/core/workers/chunks/089f8c60e96d920a2cb2.js +0 -1
  302. package/assets/esri/core/workers/chunks/0c3c311400ee352187ea.js +0 -1
  303. package/assets/esri/core/workers/chunks/158d2ac0333d53556e33.js +0 -1
  304. package/assets/esri/core/workers/chunks/16cade1c2ddf44e336ee.js +0 -1
  305. package/assets/esri/core/workers/chunks/1b130af7d14eaae69d96.js +0 -1
  306. package/assets/esri/core/workers/chunks/1e0140556c2e3fa72545.js +0 -1
  307. package/assets/esri/core/workers/chunks/1e5cb72830c7f32f2961.js +0 -1
  308. package/assets/esri/core/workers/chunks/259bdacfb7b0f866a8d0.js +0 -1
  309. package/assets/esri/core/workers/chunks/2f58e1f64df2da8259a2.js +0 -1
  310. package/assets/esri/core/workers/chunks/383304d33b496c5d8baa.js +0 -1
  311. package/assets/esri/core/workers/chunks/3aacb935d632834d4154.js +0 -1
  312. package/assets/esri/core/workers/chunks/3c8e98cf23ad8ef12fcb.js +0 -1
  313. package/assets/esri/core/workers/chunks/3dc71e03a630dd50b28e.js +0 -1
  314. package/assets/esri/core/workers/chunks/3fd022df127af32782ce.js +0 -1
  315. package/assets/esri/core/workers/chunks/4344ab1250a1c550bf8b.js +0 -1
  316. package/assets/esri/core/workers/chunks/43de723f765ec8f268ac.js +0 -1
  317. package/assets/esri/core/workers/chunks/4695cd6120f60b234d5c.js +0 -1
  318. package/assets/esri/core/workers/chunks/582a1d468089b9986416.js +0 -1
  319. package/assets/esri/core/workers/chunks/5f201c77a09ae0df29d6.js +0 -1
  320. package/assets/esri/core/workers/chunks/6080e46fc79127500283.js +0 -1
  321. package/assets/esri/core/workers/chunks/6357c7cac401aee9fe77.js +0 -1
  322. package/assets/esri/core/workers/chunks/67d3ff7fcefaa7d5d27f.js +0 -1
  323. package/assets/esri/core/workers/chunks/6a9002fcba11e2cf3f2e.js +0 -1
  324. package/assets/esri/core/workers/chunks/72dcd4bd1a28bf8605c5.js +0 -1
  325. package/assets/esri/core/workers/chunks/73f228d966b89c73c9e9.js +0 -1
  326. package/assets/esri/core/workers/chunks/77df0bb35d2688729479.js +0 -1
  327. package/assets/esri/core/workers/chunks/7a143ca61c0a70306185.js +0 -1
  328. package/assets/esri/core/workers/chunks/869d292a60747c93dc84.js +0 -1
  329. package/assets/esri/core/workers/chunks/9c57161ad48d8d546dc7.js +0 -1
  330. package/assets/esri/core/workers/chunks/a7f42ada0aa69873a938.js +0 -1
  331. package/assets/esri/core/workers/chunks/a988fd54912969b812ce.js +0 -1
  332. package/assets/esri/core/workers/chunks/aff0e7761276036e029d.js +0 -1
  333. package/assets/esri/core/workers/chunks/b7d8817018b3d277c454.js +0 -1
  334. package/assets/esri/core/workers/chunks/bfb6566c27c09deb0929.js +0 -1
  335. package/assets/esri/core/workers/chunks/c715c585c42d8c2b86f5.js +0 -1
  336. package/assets/esri/core/workers/chunks/c7e9513f75b8ec205562.js +0 -1
  337. package/assets/esri/core/workers/chunks/c838cc1c786368b78598.js +0 -1
  338. package/assets/esri/core/workers/chunks/cd4e5c948d1bfa9b9a2d.js +0 -1
  339. package/assets/esri/core/workers/chunks/cfe31b7d1c6c05fbd268.js +0 -1
  340. package/assets/esri/core/workers/chunks/d0c1bc90e474f706211c.js +0 -1
  341. package/assets/esri/core/workers/chunks/d2faac81142586cf7509.js +0 -1
  342. package/assets/esri/core/workers/chunks/da484787bd9fd3b13d15.js +0 -1
  343. package/assets/esri/core/workers/chunks/e21b3490bfce75405e55.js +0 -1
  344. package/assets/esri/core/workers/chunks/e4353f0792f45aa6a62f.js +0 -1
  345. package/assets/esri/core/workers/chunks/e702abaeccef20b64a81.js +0 -1
  346. package/assets/esri/core/workers/chunks/ebd619533be077059494.js +0 -1
  347. package/assets/esri/core/workers/chunks/f475672ff4c2ec9367c2.js +0 -1
  348. package/assets/esri/core/workers/chunks/f69329b85b362b349a8c.js +0 -1
  349. package/assets/esri/core/workers/chunks/fba8065a3a6fbd877e23.js +0 -1
  350. package/assets/esri/core/workers/chunks/fd6107f95082e05f016a.js +0 -256
  351. package/assets/esri/core/workers/chunks/fec07a16b72cdcafc641.js +0 -1
  352. package/views/2d/engine/webgl/shaderGraph/techniques/line/utils.js +0 -2
  353. /package/assets/esri/core/workers/chunks/{3b3a8a6167f2e1eeb828.js.LICENSE.txt → 0823961e5d0bdedbf8cf.js.LICENSE.txt} +0 -0
  354. /package/assets/esri/core/workers/chunks/{c03da138651ac53cadcb.js.LICENSE.txt → 186bedc377cc97731ca2.js.LICENSE.txt} +0 -0
  355. /package/assets/esri/core/workers/chunks/{4da993c79b373b9d304e.js.LICENSE.txt → 8302bffd28cc6720e0fe.js.LICENSE.txt} +0 -0
  356. /package/assets/esri/core/workers/chunks/{9dda9414104f585560a4.js.LICENSE.txt → ad1d06a91121ebfe9162.js.LICENSE.txt} +0 -0
  357. /package/assets/esri/core/workers/chunks/{fa5d27e47d47ff8fcb96.js.LICENSE.txt → d03e7be74c57c3dbf003.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as o}from"tslib";import t from"../../../../Color.js";import e from"../../../../core/Accessor.js";import{getContrast as l,multiplyOpacity as i,desaturate as s}from"../../../../core/colorUtils.js";import{property as r,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{createStipplePatternSimple as c}from"../../webgl-engine/materials/lineStippleUtils.js";const h=.3;function a(o,t){t&&Object.assign(o,t)}class d{constructor(o){this.height=90,this.coneHeight=40,this.coneWidth=23,this.width=3,this.renderOccluded=16,this.color=o.accent}}class p{constructor({colors:o,...t}){this.size=11,this.outlineSize=1,this.collisionPadding=9,this.color=o.accent,this.outlineColor=o.outline,this.renderOccluded=16,this.hoverOutlineColor=o.selectedOutline,a(this,t)}applyColor(o){this._apply(this.color,o)}applyOutline(o){this._apply(this.outlineColor,o)}applyHoverOutline(o){this._apply(this.hoverOutlineColor,o)}_apply(o,t){t.setParameters({color:o.toUnitRGBA(),renderOccluded:this.renderOccluded})}}class u{constructor({colors:o,...t}){this.size=40,this.height=.2,this.offset=.25,this.collisionPadding=2,this.renderOccluded=2,this.minSquaredEdgeLength=900,this.color=i(o.accent,.5),this.hoverColor=o.accent,a(this,t)}applyColor(o){this._apply(this.color,o)}applyHover(o){this._apply(this.hoverColor,o)}_apply(o,t){t.setParameters({color:o.toUnitRGBA(),renderOccluded:this.renderOccluded})}}class g{constructor(o){this.vertex=new p({colors:o,color:o.accent,outlineColor:o.outline}),this.edge=new p({colors:o,color:s(i(o.accent,2/3),.5),outlineColor:i(o.outline,.5),size:8,collisionPadding:8}),this.selected=new p({colors:o,color:o.selected,outlineColor:o.outline}),this.edgeOffset=new u({colors:o})}}class f{constructor({colors:o,...t}){this.width=1.5,this.stipplePattern=c(3.3),this.falloff=0,this.innerWidth=1.5,this.renderOccluded=4,this.color=o.selected,this.stippleOffColor=o.outline,this.innerColor=o.selected,a(this,t)}apply(o){o.color=this.color.toUnitRGBA(),o.width=this.width,o.stipplePattern=this.stipplePattern,o.stippleOffColor=this.stippleOffColor.toUnitRGBA(),o.falloff=this.falloff,o.innerWidth=this.innerWidth,o.innerColor=this.innerColor.toUnitRGBA(),o.renderOccluded=this.renderOccluded}}class w{constructor({colors:o,...t}){this.size=4,this.outlineSize=1,this.shape="square",this.color=o.selected,this.outlineColor=o.outline,a(this,t)}apply(o){o.color=this.color.toUnitRGBA(),o.size=this.size,o.outlineSize=this.outlineSize,o.outlineColor=this.outlineColor.toUnitRGBA(),o.primitive=this.shape}}class C{constructor({colors:o,...t}){this.innerWidth=1,this.glowWidth=8,this.glowFalloff=8,this.globalAlpha=h,this.globalAlphaContrastBoost=1.5,this.radius=3,this.innerColor=o.selected,this.glowColor=o.accent,this.heightFillColor=o.accent,a(this,t)}apply(o,t=1){const e={glowColor:this.glowColor.toUnitRGB(),glowFalloff:this.glowFalloff,glowWidth:this.glowWidth,innerColor:this.innerColor.toUnitRGB(),innerWidth:this.innerWidth,globalAlpha:this.globalAlpha*t*this.glowColor.a,globalAlphaContrastBoost:this.globalAlphaContrastBoost,intersectsLineRadius:this.radius};"style"in o?o.style=e:o.laserlineStyle=e}}class y{constructor(o){this.outline=new f({colors:o,color:o.stippleOff,renderOccluded:8,stippleOffColor:o.stippleOn,innerWidth:0}),this.staged=new f({colors:o,color:o.stippleOn,renderOccluded:8,innerColor:o.stagedSolid,stippleOffColor:o.stippleOff}),this.shadowStyle=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:1})}}class O{constructor(o){this.outline=new w({colors:o,color:o.selected,outlineColor:o.outline,outlineSize:1,shape:"circle",size:4}),this.shadowStyle=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:1.5,glowWidth:6,innerColor:o.selected,innerWidth:1,radius:2})}}class m extends f{constructor({colors:o,...t}){super({colors:o}),this.extensionType=2,a(this,t)}}class A{constructor(o){this.laserlineAlphaMultiplier=1.5,this.heightPlaneAngleCutoff=20,this.lineObjects=new y(o),this.pointObjects=new O(o),this.heightPlane=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:1}),this.heightBox=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:0,heightFillColor:o.accent}),this.zVerticalLine=new m({colors:o,color:i(o.accent,5*h/3),falloff:2,innerColor:i(o.selected,0),renderOccluded:4,stipplePattern:null,width:5,extensionType:2})}}let W=class extends e{constructor(o){super(o)}get colors(){const o=this.getTheme().accentColor,e=o.a;return{accent:o,contrast:l(o),selected:t.fromArray([255,255,255,e]),selectedOutline:t.fromArray([255,255,255,e]),staged:t.fromArray([12,207,255,e]),stagedSolid:t.fromArray([12,207,255,1]),outline:t.fromArray([0,0,0,.5*e]),stippleOn:t.fromArray([255,255,255,1]),stippleOff:t.fromArray([0,0,0,.5])}}get visualElements(){return new A(this.colors)}get manipulators(){return new g(this.colors)}get zManipulator(){return new d(this.colors)}};o([r()],W.prototype,"colors",null),o([r()],W.prototype,"visualElements",null),o([r()],W.prototype,"manipulators",null),o([r()],W.prototype,"zManipulator",null),o([r()],W.prototype,"getTheme",void 0),W=o([n("esri.views.3d.interactive.editingTools.settings")],W);export{W as Settings};
2
+ import{__decorate as o}from"tslib";import t from"../../../../Color.js";import e from"../../../../core/Accessor.js";import{getContrast as l,multiplyOpacity as i,desaturate as s}from"../../../../core/colorUtils.js";import{property as r,subclass as n}from"../../../../core/accessorSupport/decorators.js";import{createStipplePatternSimple as c}from"../../webgl-engine/materials/lineStippleUtils.js";const h=.3;function a(o,t){t&&Object.assign(o,t)}class d{constructor(o){this.height=90,this.coneHeight=40,this.coneWidth=23,this.width=3,this.renderOccluded=16,this.color=o.accent}}class p{constructor({colors:o,...t}){this.size=11,this.outlineSize=1,this.collisionPadding=9,this.color=o.accent,this.outlineColor=o.outline,this.renderOccluded=16,this.focusedOutlineColor=o.selectedOutline,a(this,t)}applyColor(o){this._apply(this.color,o)}applyOutline(o){this._apply(this.outlineColor,o)}applyFocusedOutline(o){this._apply(this.focusedOutlineColor,o)}_apply(o,t){t.setParameters({color:o.toUnitRGBA(),renderOccluded:this.renderOccluded})}}class u{constructor({colors:o,...t}){this.size=40,this.height=.2,this.offset=.25,this.collisionPadding=2,this.renderOccluded=2,this.minSquaredEdgeLength=900,this.color=i(o.accent,.5),this.focusedColor=o.accent,a(this,t)}applyColor(o){this._apply(this.color,o)}applyFocused(o){this._apply(this.focusedColor,o)}_apply(o,t){t.setParameters({color:o.toUnitRGBA(),renderOccluded:this.renderOccluded})}}class f{constructor(o){this.vertex=new p({colors:o,color:o.accent,outlineColor:o.outline}),this.edge=new p({colors:o,color:s(i(o.accent,2/3),.5),outlineColor:i(o.outline,.5),size:8,collisionPadding:8}),this.selected=new p({colors:o,color:o.selected,outlineColor:o.outline}),this.edgeOffset=new u({colors:o})}}class g{constructor({colors:o,...t}){this.width=1.5,this.stipplePattern=c(3.3),this.falloff=0,this.innerWidth=1.5,this.renderOccluded=4,this.color=o.selected,this.stippleOffColor=o.outline,this.innerColor=o.selected,a(this,t)}apply(o){o.color=this.color.toUnitRGBA(),o.width=this.width,o.stipplePattern=this.stipplePattern,o.stippleOffColor=this.stippleOffColor.toUnitRGBA(),o.falloff=this.falloff,o.innerWidth=this.innerWidth,o.innerColor=this.innerColor.toUnitRGBA(),o.renderOccluded=this.renderOccluded}}class w{constructor({colors:o,...t}){this.size=4,this.outlineSize=1,this.shape="square",this.color=o.selected,this.outlineColor=o.outline,a(this,t)}apply(o){o.color=this.color.toUnitRGBA(),o.size=this.size,o.outlineSize=this.outlineSize,o.outlineColor=this.outlineColor.toUnitRGBA(),o.primitive=this.shape}}class C{constructor({colors:o,...t}){this.innerWidth=1,this.glowWidth=8,this.glowFalloff=8,this.globalAlpha=h,this.globalAlphaContrastBoost=1.5,this.radius=3,this.innerColor=o.selected,this.glowColor=o.accent,this.heightFillColor=o.accent,a(this,t)}apply(o,t=1){const e={glowColor:this.glowColor.toUnitRGB(),glowFalloff:this.glowFalloff,glowWidth:this.glowWidth,innerColor:this.innerColor.toUnitRGB(),innerWidth:this.innerWidth,globalAlpha:this.globalAlpha*t*this.glowColor.a,globalAlphaContrastBoost:this.globalAlphaContrastBoost,intersectsLineRadius:this.radius};"style"in o?o.style=e:o.laserlineStyle=e}}class y{constructor(o){this.outline=new g({colors:o,color:o.stippleOff,renderOccluded:8,stippleOffColor:o.stippleOn,innerWidth:0}),this.staged=new g({colors:o,color:o.stippleOn,renderOccluded:8,innerColor:o.stagedSolid,stippleOffColor:o.stippleOff}),this.shadowStyle=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:1})}}class O{constructor(o){this.outline=new w({colors:o,color:o.selected,outlineColor:o.outline,outlineSize:1,shape:"circle",size:4}),this.shadowStyle=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:1.5,glowWidth:6,innerColor:o.selected,innerWidth:1,radius:2})}}class m extends g{constructor({colors:o,...t}){super({colors:o}),this.extensionType=2,a(this,t)}}class A{constructor(o){this.laserlineAlphaMultiplier=1.5,this.heightPlaneAngleCutoff=20,this.lineObjects=new y(o),this.pointObjects=new O(o),this.heightPlane=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:1}),this.heightBox=new C({colors:o,globalAlpha:h,glowColor:o.accent,glowFalloff:8,glowWidth:8,innerColor:o.selected,innerWidth:0,heightFillColor:o.accent}),this.zVerticalLine=new m({colors:o,color:i(o.accent,5*h/3),falloff:2,innerColor:i(o.selected,0),renderOccluded:4,stipplePattern:null,width:5,extensionType:2})}}let W=class extends e{constructor(o){super(o)}get colors(){const o=this.getTheme().accentColor,e=o.a;return{accent:o,contrast:l(o),selected:t.fromArray([255,255,255,e]),selectedOutline:t.fromArray([255,255,255,e]),staged:t.fromArray([12,207,255,e]),stagedSolid:t.fromArray([12,207,255,1]),outline:t.fromArray([0,0,0,.5*e]),stippleOn:t.fromArray([255,255,255,1]),stippleOff:t.fromArray([0,0,0,.5])}}get visualElements(){return new A(this.colors)}get manipulators(){return new f(this.colors)}get zManipulator(){return new d(this.colors)}};o([r()],W.prototype,"colors",null),o([r()],W.prototype,"visualElements",null),o([r()],W.prototype,"manipulators",null),o([r()],W.prototype,"zManipulator",null),o([r()],W.prototype,"getTheme",void 0),W=o([n("esri.views.3d.interactive.editingTools.settings")],W);export{W as Settings};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{handlesGroup as t}from"../../../../core/handleUtils.js";import{createAngle as o,createLength as e}from"../../../../core/quantity.js";import{watch as i,syncAndInitial as n,sync as a}from"../../../../core/reactiveUtils.js";import{manipulatedObjectGeometry as r}from"./manipulatedObjectUtils.js";import{connectPasteEvent as s,updateMeshTransformFromTooltipInfo as c,getXYZDeltasFromTooltipInfo as l,updateTooltipInfoFromMeshTransform as u}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{elevationFromPoint as p}from"../../../support/euclideanLengthMeasurementUtils.js";function f(o,e,c){function l(){const t=c(),o=t.sketchOptions.tooltips.effectiveEnabled?t.activeTooltipInfo:null;return{...t,activeTooltipInfo:o}}let u=!1;function p(t){u||(u=!0,t(),u=!1)}function f({activeTooltipInfo:t,sketchOptions:i,scaleRotateTransform:n}){p(()=>{t&&(t.sketchOptions=i,d(t,e),y(t,n)),o.info=t})}return t([i(l,f,n),i(()=>{const t=l(),{activeTooltipInfo:o}=t;if(o)return{context:t,activeTooltipInfo:o,key:o.key,geometry:r(e)}},(t,o)=>{t&&o&&o.key!==t.key&&p(()=>m(e,t.context))},a),e.on("committed",()=>{queueMicrotask(()=>f(l()))}),s(o,{onBeforePaste:()=>{u=!0},onAfterPaste:()=>{m(e,l()),u=!1}})])}function m(t,{activeTooltipInfo:o,callbacks:e}){if(!o)return;e.onBeforeUpdate();const i=r(t);switch(i?.type){case"mesh":v(o,i.origin,t,e),"orientation"in o&&"scale"in o&&c(o,i,e);break;case"point":v(o,i,t,e)}}function v(t,o,e,i){const{dx:n,dy:a,dz:r}=l(t,o);0===n&&0===a&&0===r||(i.onMoveStart(),e.operations?.move(n,a,r,0),i.onMove(n,a,r),i.onMoveStop())}function d(t,o){const e=r(o),i=e?.type;if(!t||!e||"mesh"!==i&&"point"!==i)return;const n="mesh"===i,a=n?e.origin:e;t.setLocationFromPoint(a),h(t,a,o),"transform-mesh"===t.type&&n&&u(t,e),t.clearInputValues()}function h(t,o,e){t.elevation.actual=p(o),t.elevation.visible=!!e.operations?.data.coordinateHelper.hasZ(),t.elevation.readOnly=!1,t.elevation.showAsZ=!0}function y(t,i){if("transform-point"!==t?.type)return;if(!i)return t.orientation.actual=void 0,t.size.actual=void 0,t.orientation.visible=!1,void(t.size.visible=!1);const n=i.mode,{size:a,orientationClockwise:r}=i.adapter,{visualVariables:s}=t.sketchOptions.tooltips,c=s?.rotation,l=null!=r&&(null==n||"rotate"===n),u="geographic";t.orientation.actual=l?o(r,"radians",u):void 0,t.orientation.precision=k(c?.valueType),t.orientation.visible=l;const p=s?.size,f=null!=a&&(null==n||"scale"===n);t.size.actual=f?e(a,p?.unit??"meters"):void 0,t.size.precision=k(p?.valueType),t.size.visible=f}function k(t){switch(t){case"integer":case"long":return 0;default:return null}}export{f as connectTooltipToManipulatedObject,h as updateElevationFromPoint,d as updateTooltipInfoFromManipulatedObject,v as updateXYZFromTooltipInfo};
2
+ import{handlesGroup as o}from"../../../../core/handleUtils.js";import{createAngle as t,createLength as e}from"../../../../core/quantity.js";import{watch as i,syncAndInitial as n,sync as a}from"../../../../core/reactiveUtils.js";import{manipulatedObjectGeometry as r}from"./manipulatedObjectUtils.js";import{connectPasteEvent as s,updateMeshTransformFromTooltipInfo as l,getXYZDeltasFromTooltipInfo as c,updateTooltipInfoFromMeshTransform as u}from"../../../interactive/tooltip/tooltipCommonUtils.js";import{elevationFromPoint as p}from"../../../support/euclideanLengthMeasurementUtils.js";function f(t,e,l){function c(){const o=l(),t=o.toolOptions.tooltips.effectiveEnabled?o.activeTooltipInfo:null;return{...o,activeTooltipInfo:t}}let u=!1;function p(o){u||(u=!0,o(),u=!1)}function f({activeTooltipInfo:o,toolOptions:i,scaleRotateTransform:n}){p(()=>{o&&(o.toolOptions=i,d(o,e),h(o,n)),t.info=o})}return o([i(c,f,n),i(()=>{const o=c(),{activeTooltipInfo:t}=o;if(t)return{context:o,activeTooltipInfo:t,key:t.key,geometry:r(e)}},(o,t)=>{o&&t&&t.key!==o.key&&p(()=>m(e,o.context))},a),e.on("committed",()=>{queueMicrotask(()=>f(c()))}),s(t,{onBeforePaste:()=>{u=!0},onAfterPaste:()=>{m(e,c()),u=!1}})])}function m(o,{activeTooltipInfo:t,callbacks:e}){if(!t)return;e.onBeforeUpdate();const i=r(o);switch(i?.type){case"mesh":v(t,i.origin,o,e),"orientation"in t&&"scale"in t&&l(t,i,e);break;case"point":v(t,i,o,e)}}function v(o,t,e,i){const{dx:n,dy:a,dz:r}=c(o,t);0===n&&0===a&&0===r||(i.onMoveStart(),e.operations?.move(n,a,r,0),i.onMove(n,a,r),i.onMoveStop())}function d(o,t){const e=r(t),i=e?.type;if(!o||!e||"mesh"!==i&&"point"!==i)return;const n="mesh"===i,a=n?e.origin:e;o.setLocationFromPoint(a),y(o,a,t),"transform-mesh"===o.type&&n&&u(o,e),o.clearInputValues()}function y(o,t,e){o.elevation.actual=p(t),o.elevation.visible=!!e.operations?.data.coordinateHelper.hasZ(),o.elevation.readOnly=!1,o.elevation.showAsZ=!0}function h(o,i){if("transform-point"!==o?.type)return;if(!i)return o.orientation.actual=void 0,o.size.actual=void 0,o.orientation.visible=!1,void(o.size.visible=!1);const n=i.mode,{size:a,orientationClockwise:r}=i.adapter,{visualVariables:s}=o.toolOptions.tooltips,l=s?.rotation,c=null!=r&&(null==n||"rotate"===n),u="geographic";o.orientation.actual=c?t(r,"radians",u):void 0,o.orientation.precision=b(l?.valueType),o.orientation.visible=c;const p=s?.size,f=null!=a&&(null==n||"scale"===n);o.size.actual=f?e(a,p?.unit??"meters"):void 0,o.size.precision=b(p?.valueType),o.size.visible=f}function b(o){switch(o){case"integer":case"long":return 0;default:return null}}export{f as connectTooltipToManipulatedObject,y as updateElevationFromPoint,d as updateTooltipInfoFromManipulatedObject,v as updateXYZFromTooltipInfo};
@@ -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 e}from"../../../../../core/arrayUtils.js";import{EventEmitter as i}from"../../../../../core/Evented.js";import{makeHandle as a}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{initial as o}from"../../../../../core/reactiveUtils.js";import{property as n,subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as r}from"../../../../../core/support/UpdatingHandles.js";import{containsXY as l}from"../../../../../geometry/support/aaBoundingRect.js";import{sm4d as p}from"../../../../../geometry/support/vectorStacks.js";import{calculateBoundedPlaneTranslateRotate as h,resizeNormal as d,resizeOutlineOnly as c}from"../../../analysis/Slice/sliceToolUtils.js";import{Manipulator3D as u}from"../../Manipulator3D.js";import{manipulatedObjectGeometry as m}from"../manipulatedObjectUtils.js";import{canMoveZOperations as _}from"../manipulatorUtils.js";import{createVisualElements as b}from"../visualElementUtils.js";import{ExtentMove as v}from"./extentTransform/ExtentMove.js";import{ExtentRotate as g}from"./extentTransform/ExtentRotate.js";import{ExtentScale as f}from"./extentTransform/ExtentScale.js";import{TransformBounds as y}from"./extentTransform/extentUtils.js";import{PreserveAspectRatio as M}from"./extentTransform/PreserveAspectRatio.js";import{SnapRotation as j}from"./extentTransform/SnapRotation.js";import{OutlineVisualElement as x}from"../../visualElements/OutlineVisualElement.js";import{InteractiveToolBase as R}from"../../../../interactive/InteractiveToolBase.js";import E from"../../../../interactive/sketch/SketchOptions.js";import{makeTooltip as S}from"../../../../interactive/tooltip/tooltipCommonUtils.js";let O=class extends R{get updating(){return!this.destroying&&!this.destroyed&&(!!this.object.updating||this._extentMove.updating||this._extentScale.updating||this._updatingHandles.updating)}constructor(t){super(t),this.events=new i,this._updatingHandles=new r,this.enableZ=!0,this.enableScaling=!0,this.enableRotation=!0,this.sketchOptions=new E,this._preserveAspectRatio=new M,this._snapRotation=new j,this.grabbing=!1,this.inputState=null,this._attachmentOrigin=null,this.type="transform-3d",this._outlineVisualElement=null}initialize(){const{view:t,object:e}=this,i=this._bounds=new y(this,()=>this._updateManipulators());this._extentMove=new v(this,i),this._extentScale=new f(this,i,()=>this._preserveAspectRatio.createDragEventPipelineStep()),this._extentRotate=new g(this,i,()=>this._snapRotation.createDragEventPipelineStep()),this.addHandles([this._updatingHandles.add(()=>this.enableZ,()=>this._updateManipulatorAvailability(this._extentMove.moveZManipulator,0)),this._updatingHandles.add(()=>this.enableScaling,()=>this._extentScale.forEachManipulator(t=>this._updateManipulatorAvailability(t,2))),this._updatingHandles.add(()=>this.enableRotation,()=>this._updateManipulatorAvailability(this._extentRotate.rotateManipulator,3))]),this._updateManipulators(),this._updateAllManipulatorAvailability();const n=b({view:t,object:e,forEachManipulator:t=>this._forEachManipulator(t),onManipulatorsChanged:()=>a()});if(null!=n){const{visualElement:t}=n;t instanceof x&&(this._outlineVisualElement=t,this.addHandles(t.events.on("attachment-origin-changed",()=>this._bounds.updateDisplayBounds()))),this.addHandles(n)}this.addHandles([e.on("committed",()=>this._onGeometryChanged()),this._updatingHandles.add(()=>this.object.visible,()=>this._updateAllManipulatorAvailability()),this._updatingHandles.add(()=>this.object.isDraped,()=>this._graphicDrapedChanged(),o),this._updatingHandles.add(()=>t.pointsOfInterest?.centerOnSurfaceFrequent.location,()=>i.updateDisplayBounds())]);const s=t=>{this.addHandles(t.events.on("grab-changed",()=>{this._updateAllManipulatorAvailability()}))};this._forEachManipulator(s);const r=(t,i)=>{this.addHandles(t.events.on("immediate-click",t=>{1===i&&this.events.emit("immediate-click",{...t,object:e}),t.stopPropagation()}))};this._forEachManipulator(r),this._initializeTooltip(),this.finishToolCreation()}destroy(){this._extentMove.destroy(),this._extentScale.destroy(),this._extentRotate.destroy(),this.tooltip.destroy(),this._updatingHandles.destroy(),this._set("view",null),this._set("object",null)}_initializeTooltip(){const{view:t}=this;this.tooltip=S(()=>({view:t,options:this.sketchOptions.tooltips}));const e=()=>{this.tooltip.info=this._getUpdatedTooltipInfo()};this.addHandles([this._updatingHandles.add(()=>[this.sketchOptions.tooltips.effectiveEnabled,this.preserveAspectRatio],e)]),this._forEachManipulator(t=>{this.addHandles([t.events.on(["focus-changed","grab-changed"],e),t.events.on("drag",t=>{"cancel"===t.action?this.tooltip.clear():e()})])})}_getUpdatedTooltipInfo(){return this.sketchOptions.tooltips.effectiveEnabled?this._extentMove.getUpdatedTooltipInfo()??this._extentScale.getUpdatedTooltipInfo()??this._extentRotate.getUpdatedTooltipInfo():null}_onGeometryChanged(){this._bounds.updateDisplayBounds()}_graphicDrapedChanged(){this.removeHandles(T),this._bounds.updateDisplayBounds(),this.object.isDraped&&this.addHandles(this.view.elevationProvider.on("elevation-change",t=>{null!=this._attachmentOrigin&&l(t.extent,this._attachmentOrigin.x,this._attachmentOrigin.y)&&this._bounds.updateDisplayBounds()}),T)}_updateManipulators(){if(!this.visible)return;const t=this._bounds.displayBounds,e=h(t,p.get());this._extentMove.updateManipulators(e,t),this._extentScale.updateManipulators(e,t),this._extentRotate.updateManipulators(e,t)}_updateAllManipulatorAvailability(){this.grabbing=null!=this._activeManipulatorType(),this._forEachManipulator((t,e)=>this._updateManipulatorAvailability(t,e)),this._updateManipulatorDisplay()}_updateManipulatorAvailability(t,e){const i=this.grabbing&&!t.grabbing;if(t.interactive=!i,t instanceof u){const a=this.object.visible,o=this.enableZ&&_(this.object.operations,this.object.elevationInfo);switch(e){case 3:t.available=a&&this.enableRotation;break;case 2:t.available=a&&(this.enableScaling||this.enableRotation||o),t.interactive=!i&&this.enableScaling,t.state=!this.enableScaling||this.grabbing&&2!==this._activeManipulatorType()?c:d;break;case 0:t.available=a&&o;break;default:t.available=a}}}_activeManipulatorType(){let t=null;return this._forEachManipulator(({grabbing:e},i)=>{null==t&&e&&(t=i)}),t}_updateManipulatorDisplay(){this.removeHandles(A);if(null==this._activeManipulatorType())return;const t=[];this._forEachManipulator((e,i)=>{e.grabbing||3!==i&&0!==i||t.push(e.disableDisplay?.())}),this.addHandles(t.filter(e),A)}_forEachManipulator(t){this._extentMove.forEachManipulator(t),this._extentScale.forEachManipulator(t),this._extentRotate.forEachManipulator(t)}get preserveAspectRatio(){return this._preserveAspectRatio.enabled}set preserveAspectRatio(t){this._preserveAspectRatio.enabled=t,this._set("preserveAspectRatio",t)}get snapRotation(){return this._snapRotation.enabled}set snapRotation(t){this._snapRotation.enabled=t,this._set("snapRotation",t)}get attachmentOrigin(){const t=this.object.isDraped?null:this._outlineVisualElement?.attachmentOrigin;return this._attachmentOrigin=t??this.object.origin??m(this.object)?.extent?.center,this._attachmentOrigin}reset(){}cancelDrag(){if(this.canUndo){const t=this.object.operations?.undo();t&&this._bounds.updateMapBoundsFromOperationInverse(t)}this.inputState=null}get canUndo(){return!!this.object.operations?.canUndo}undo(){if(null!=this.inputState)this.view.activeTool=null;else if(this.canUndo){const t=this.object.operations?.undo();t&&this._bounds.updateMapBoundsFromOperationInverse(t)}}get canRedo(){return!!this.object.operations?.canRedo}redo(){if(this.canRedo){const t=this.object.operations?.redo();t&&this._bounds.updateMapBoundsFromOperation(t)}}get test(){}};t([n()],O.prototype,"updating",null),t([n({constructOnly:!0,nonNullable:!0})],O.prototype,"view",void 0),t([n({constructOnly:!0,nonNullable:!0})],O.prototype,"object",void 0),t([n()],O.prototype,"enableZ",void 0),t([n()],O.prototype,"enableScaling",void 0),t([n()],O.prototype,"enableRotation",void 0),t([n({constructOnly:!0,type:E})],O.prototype,"sketchOptions",void 0),t([n()],O.prototype,"preserveAspectRatio",null),t([n()],O.prototype,"snapRotation",null),t([n()],O.prototype,"grabbing",void 0),t([n()],O.prototype,"inputState",void 0),t([n({readOnly:!0})],O.prototype,"type",void 0),t([n()],O.prototype,"tooltip",void 0),O=t([s("esri.views.3d.interactive.editingTools.transform.ExtentTransformTool")],O);const T="draped-elevation-changes",A=Symbol();export{O as ExtentTransformTool};
2
+ import{__decorate as t}from"tslib";import{isSome as e}from"../../../../../core/arrayUtils.js";import{EventEmitter as i}from"../../../../../core/Evented.js";import{makeHandle as a}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{initial as o}from"../../../../../core/reactiveUtils.js";import{property as n,subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as r}from"../../../../../core/support/UpdatingHandles.js";import{containsXY as l}from"../../../../../geometry/support/aaBoundingRect.js";import{sm4d as p}from"../../../../../geometry/support/vectorStacks.js";import{calculateBoundedPlaneTranslateRotate as d,resizeNormal as h,resizeOutlineOnly as u}from"../../../analysis/Slice/sliceToolUtils.js";import{Manipulator3D as c}from"../../Manipulator3D.js";import{manipulatedObjectGeometry as m}from"../manipulatedObjectUtils.js";import{canMoveZOperations as _}from"../manipulatorUtils.js";import{createVisualElements as b}from"../visualElementUtils.js";import{ExtentMove as v}from"./extentTransform/ExtentMove.js";import{ExtentRotate as g}from"./extentTransform/ExtentRotate.js";import{ExtentScale as f}from"./extentTransform/ExtentScale.js";import{TransformBounds as y}from"./extentTransform/extentUtils.js";import{PreserveAspectRatio as M}from"./extentTransform/PreserveAspectRatio.js";import{SnapRotation as j}from"./extentTransform/SnapRotation.js";import{OutlineVisualElement as x}from"../../visualElements/OutlineVisualElement.js";import{InteractiveToolBase as R}from"../../../../interactive/InteractiveToolBase.js";import E from"../../../../interactive/options/InteractiveToolOptions.js";import{makeTooltip as S}from"../../../../interactive/tooltip/tooltipCommonUtils.js";let O=class extends R{get updating(){return!this.destroying&&!this.destroyed&&(!!this.object.updating||this._extentMove.updating||this._extentScale.updating||this._updatingHandles.updating)}constructor(t){super(t),this.events=new i,this._updatingHandles=new r,this.enableZ=!0,this.enableScaling=!0,this.enableRotation=!0,this.toolOptions=new E,this._preserveAspectRatio=new M,this._snapRotation=new j,this.grabbing=!1,this.inputState=null,this._attachmentOrigin=null,this.type="transform-3d",this._outlineVisualElement=null}initialize(){const{view:t,object:e}=this,i=this._bounds=new y(this,()=>this._updateManipulators());this._extentMove=new v(this,i),this._extentScale=new f(this,i,()=>this._preserveAspectRatio.createDragEventPipelineStep()),this._extentRotate=new g(this,i,()=>this._snapRotation.createDragEventPipelineStep()),this.addHandles([this._updatingHandles.add(()=>this.enableZ,()=>this._updateManipulatorAvailability(this._extentMove.moveZManipulator,0)),this._updatingHandles.add(()=>this.enableScaling,()=>this._extentScale.forEachManipulator(t=>this._updateManipulatorAvailability(t,2))),this._updatingHandles.add(()=>this.enableRotation,()=>this._updateManipulatorAvailability(this._extentRotate.rotateManipulator,3))]),this._updateManipulators(),this._updateAllManipulatorAvailability();const n=b({view:t,object:e,forEachManipulator:t=>this._forEachManipulator(t),onManipulatorsChanged:()=>a()});if(null!=n){const{visualElement:t}=n;t instanceof x&&(this._outlineVisualElement=t,this.addHandles(t.events.on("attachment-origin-changed",()=>this._bounds.updateDisplayBounds()))),this.addHandles(n)}this.addHandles([e.on("committed",()=>this._onGeometryChanged()),this._updatingHandles.add(()=>this.object.visible,()=>this._updateAllManipulatorAvailability()),this._updatingHandles.add(()=>this.object.isDraped,()=>this._graphicDrapedChanged(),o),this._updatingHandles.add(()=>t.pointsOfInterest?.centerOnSurfaceFrequent.location,()=>i.updateDisplayBounds())]);const s=t=>{this.addHandles(t.events.on("grab-changed",()=>{this._updateAllManipulatorAvailability()}))};this._forEachManipulator(s);const r=(t,i)=>{this.addHandles(t.events.on("immediate-click",t=>{1===i&&this.events.emit("immediate-click",{...t,object:e}),t.stopPropagation()}))};this._forEachManipulator(r),this._initializeTooltip(),this.finishToolCreation()}destroy(){this._extentMove.destroy(),this._extentScale.destroy(),this._extentRotate.destroy(),this.tooltip.destroy(),this._updatingHandles.destroy(),this._set("view",null),this._set("object",null)}_initializeTooltip(){const{view:t}=this;this.tooltip=S(()=>({view:t,options:this.toolOptions.tooltips}));const e=()=>{this.tooltip.info=this._getUpdatedTooltipInfo()};this.addHandles([this._updatingHandles.add(()=>[this.toolOptions.tooltips.effectiveEnabled,this.preserveAspectRatio],e)]),this._forEachManipulator(t=>{this.addHandles([t.events.on(["focus-changed","grab-changed"],e),t.events.on("drag",t=>{"cancel"===t.action?this.tooltip.clear():e()})])})}_getUpdatedTooltipInfo(){return this.toolOptions.tooltips.effectiveEnabled?this._extentMove.getUpdatedTooltipInfo()??this._extentScale.getUpdatedTooltipInfo()??this._extentRotate.getUpdatedTooltipInfo():null}_onGeometryChanged(){this._bounds.updateDisplayBounds()}_graphicDrapedChanged(){this.removeHandles(T),this._bounds.updateDisplayBounds(),this.object.isDraped&&this.addHandles(this.view.elevationProvider.on("elevation-change",t=>{null!=this._attachmentOrigin&&l(t.extent,this._attachmentOrigin.x,this._attachmentOrigin.y)&&this._bounds.updateDisplayBounds()}),T)}_updateManipulators(){if(!this.visible)return;const t=this._bounds.displayBounds,e=d(t,p.get());this._extentMove.updateManipulators(e,t),this._extentScale.updateManipulators(e,t),this._extentRotate.updateManipulators(e,t)}_updateAllManipulatorAvailability(){this.grabbing=null!=this._activeManipulatorType(),this._forEachManipulator((t,e)=>this._updateManipulatorAvailability(t,e)),this._updateManipulatorDisplay()}_updateManipulatorAvailability(t,e){const i=this.grabbing&&!t.grabbing;if(t.interactive=!i,t instanceof c){const a=this.object.visible,o=this.enableZ&&_(this.object.operations,this.object.elevationInfo);switch(e){case 3:t.available=a&&this.enableRotation;break;case 2:t.available=a&&(this.enableScaling||this.enableRotation||o),t.interactive=!i&&this.enableScaling,t.state=!this.enableScaling||this.grabbing&&2!==this._activeManipulatorType()?u:h;break;case 0:t.available=a&&o;break;default:t.available=a}}}_activeManipulatorType(){let t=null;return this._forEachManipulator(({grabbing:e},i)=>{null==t&&e&&(t=i)}),t}_updateManipulatorDisplay(){this.removeHandles(A);if(null==this._activeManipulatorType())return;const t=[];this._forEachManipulator((e,i)=>{e.grabbing||3!==i&&0!==i||t.push(e.disableDisplay?.())}),this.addHandles(t.filter(e),A)}_forEachManipulator(t){this._extentMove.forEachManipulator(t),this._extentScale.forEachManipulator(t),this._extentRotate.forEachManipulator(t)}get preserveAspectRatio(){return this._preserveAspectRatio.enabled}set preserveAspectRatio(t){this._preserveAspectRatio.enabled=t,this._set("preserveAspectRatio",t)}get snapRotation(){return this._snapRotation.enabled}set snapRotation(t){this._snapRotation.enabled=t,this._set("snapRotation",t)}get attachmentOrigin(){const t=this.object.isDraped?null:this._outlineVisualElement?.attachmentOrigin;return this._attachmentOrigin=t??this.object.origin??m(this.object)?.extent?.center,this._attachmentOrigin}reset(){}cancelDrag(){if(this.canUndo){const t=this.object.operations?.undo();t&&this._bounds.updateMapBoundsFromOperationInverse(t)}this.inputState=null}get canUndo(){return!!this.object.operations?.canUndo}undo(){if(null!=this.inputState)this.view.activeTool=null;else if(this.canUndo){const t=this.object.operations?.undo();t&&this._bounds.updateMapBoundsFromOperationInverse(t)}}get canRedo(){return!!this.object.operations?.canRedo}redo(){if(this.canRedo){const t=this.object.operations?.redo();t&&this._bounds.updateMapBoundsFromOperation(t)}}get test(){}};t([n()],O.prototype,"updating",null),t([n({constructOnly:!0,nonNullable:!0})],O.prototype,"view",void 0),t([n({constructOnly:!0,nonNullable:!0})],O.prototype,"object",void 0),t([n()],O.prototype,"enableZ",void 0),t([n()],O.prototype,"enableScaling",void 0),t([n()],O.prototype,"enableRotation",void 0),t([n({constructOnly:!0,type:E})],O.prototype,"toolOptions",void 0),t([n()],O.prototype,"preserveAspectRatio",null),t([n()],O.prototype,"snapRotation",null),t([n()],O.prototype,"grabbing",void 0),t([n()],O.prototype,"inputState",void 0),t([n({readOnly:!0})],O.prototype,"type",void 0),t([n()],O.prototype,"tooltip",void 0),O=t([s("esri.views.3d.interactive.editingTools.transform.ExtentTransformTool")],O);const T="draped-elevation-changes",A=Symbol();export{O as ExtentTransformTool};
@@ -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{multiplyOpacityToUnitRGBA as a}from"../../../../../core/colorUtils.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{EventEmitter as o}from"../../../../../core/Evented.js";import"../../../../../core/has.js";import{clamp as r,rad2deg as s}from"../../../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../../../core/maybe.js";import{watch as l,initial as c}from"../../../../../core/reactiveUtils.js";import{addFrameTask as d}from"../../../../../core/scheduling.js";import{createScreenPointArray as h}from"../../../../../core/screenUtils.js";import{property as u,subclass as p}from"../../../../../core/accessorSupport/decorators.js";import{fromRotation as g,fromScaling as m,multiply as f,scale as _,rotate as D}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as M}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as v,subtract as S,length as b,squaredDistance as y,cross as j,add as R}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as w,clone as A}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromPositionAndNormal as I,create as F,getNormal as k}from"../../../../../geometry/support/plane.js";import{wrap as E,distance2 as O}from"../../../../../geometry/support/ray.js";import{sm4d as P,sv3d as T}from"../../../../../geometry/support/vectorStacks.js";import{Manipulator3D as x}from"../../Manipulator3D.js";import{calculateInputRotationTransform as U}from"../../manipulatorUtils.js";import{RenderObject as L}from"../../RenderObject.js";import{screenToRenderPlane as C}from"../dragEventPipeline3D.js";import{ringIndicatorDelayMs as H,rotateIndicatorArrowPlacementPercentage as z,ringThickness as G,ringRadius as q,innerIndicatorRadius as B,outerIndicatorRadius as J,rotateIndicatorArrowTipRadius as K,rotateIndicatorArrowTipLength as N,scaleIndicatorOffset1 as Q,scaleIndicatorOffset2 as V,indicatorThickness as W,geometrySegments as X,rotateIndicatorArcLength as Y,scaleIndicatorArcLength as Z,rotateIndicatorDirectionBuffer as $,scaleIndicatorDirectionBuffer as tt,ringHeight as et,dragThresholdPx as at,ringResetAnimationSpeedFactor as it}from"../manipulations/config.js";import{createExtrudedTriangle as ot,transformInPlace as rt,createPathExtrusionGeometry as st}from"../../../webgl-engine/lib/GeometryUtil.js";import{ColorMaterial as nt}from"../../../webgl-engine/materials/ColorMaterial.js";import{createManipulatorDragEventPipeline as lt}from"../../../../interactive/dragEventPipeline.js";const ct={ScaleIn:32,ScaleOut:64,RotateLeft:128,RotateRight:256,Unlocked:1024,DelayedFocused:2048};let dt=class extends e{get angle(){return this.adapter.angle}get scale(){return this.adapter.scale}set location(t){this._ringManipulator.location=t}set elevationAlignedLocation(t){this._ringManipulator.elevationAlignedLocation=t}get grabbing(){return this._ringManipulator.grabbing}set interactive(t){this._ringManipulator.interactive=t}get updating(){return!!this._activeAnimation}constructor(t){super(t),this.mode=null,this._scaleRotateDragData=null,this._activeAnimation=null,this._ringIndicatorDelayMs=H,this.events=new o,this.getFocused=()=>this._ringManipulator.focused,this.getScale=()=>"scale"===this._scaleRotateDragData?.mode?this.adapter.scale:1}initialize(){this._createManipulator(),this._updateDragState(),this._updateManipulatorTransform(),this.addHandles([l(()=>{const{adapter:t}=this;return[t.angle,t.scale]},()=>this._updateManipulatorTransform())])}destroy(){this._activeAnimation?.frameTask.remove(),this._activeAnimation=null,this.tool.manipulators.remove(this._ringManipulator),this._ringManipulator=null}startAnimation(t){this.cancelActiveAnimation(),t.start();const e=d({update:({deltaTime:e})=>{t.update(e)&&this.cancelActiveAnimation()}});this._activeAnimation={...t,frameTask:e}}cancelActiveAnimation(){this._activeAnimation?.frameTask.remove(),this._activeAnimation=n(this._activeAnimation)}forEachManipulator(t){t(this._ringManipulator,4)}disableDisplay(){return this._ringManipulator.disableDisplay()}_createManipulator(){const t=this._createRingManipulator();this._ringManipulator=t,this.tool.manipulators.add(t);const e=this.tool.object,a=lt(t,(t,a,o)=>{this._scaleRotateDragData=null;const n=this.adapter.startInteraction(),l={mode:"none",origin:A(t.renderLocation),initialAngle:this.adapter.angle,angle:0,angleDir:0,scaleDir:0};this._scaleRotateDragData=l,this._updateDragState();const c=T.get();this.tool.view.renderCoordsHelper.worldUpAtPosition(t.renderLocation,c),a.next(C(this.tool.view,I(t.renderLocation,c,F()))).next(t=>{const a=k(t.plane),o=U(t.renderStart,t.renderEnd,l.origin,a),c=i.shortestSignedDiff(l.angle,o);l.angleDir=r(l.angleDir+c,-.3,$),l.angle=o;const d=ht(l,t),h=d-this.adapter.scale;if(l.scaleDir=r(l.scaleDir+h,-.2,tt),this._onScaleChanged(),"none"===l.mode){const a=this.mode||ut(t,t.plane,l.origin,this.tool.view.state.camera);if(null!=a){switch(a){case"rotate":this.tool.events.emit("rotate-start",{object:e,angle:0}),this.tool.events.emit("record-undo",{updates:[this.adapter.createUndoRecord()]});break;case"scale":this.tool.events.emit("scale-start",{object:e,xScale:1,yScale:1}),this.tool.events.emit("record-undo",{updates:[this.adapter.createUndoRecord()]})}l.mode=a}}switch(l.mode){case"rotate":n.state.angle=l.initialAngle+o;break;case"scale":n.state.scale=d,this._onScaleChanged()}switch(this._updateDragState(),this._updateManipulatorTransform(),t.action){case"start":case"update":switch(l.mode){case"rotate":this.tool.events.emit("rotate",{object:e,angle:s(l.angle)});break;case"scale":this.tool.events.emit("scale",{object:e,xScale:d,yScale:d})}break;case"end":switch(l.mode){case"rotate":this.tool.events.emit("rotate-stop",{object:e,angle:s(l.angle)});break;case"scale":this.tool.events.emit("scale-stop",{object:e,xScale:d,yScale:d})}}return"end"===t.action&&(this.startAnimation(gt(this,()=>this._onScaleChanged())),this._scaleRotateDragData=null,this._updateDragState(),n.done()),t}),o.next(()=>{if(n.cancel(),null!=this._scaleRotateDragData){switch(this._scaleRotateDragData.mode){case"none":break;case"rotate":this.tool.events.emit("rotate-stop",{object:e,angle:0});break;case"scale":this.tool.events.emit("scale-stop",{object:e,xScale:1,yScale:1})}this.startAnimation(gt(this,()=>this._onScaleChanged())),this._scaleRotateDragData=null,this._updateDragState()}})});this.addHandles([a,t.events.on("focus-changed",t=>{"focus"===t.action?this.startAnimation(mt(this,()=>this._updateDelayedFocusedState(),{delayMs:this._ringIndicatorDelayMs})):this._updateDelayedFocusedState()}),t.events.on("immediate-click",t=>{t.stopPropagation()}),l(()=>this.tool.object.visible,t=>this._ringManipulator.available=t,c)])}_onScaleChanged(){this.events.emit("scale-changed"),this._updateManipulatorTransform()}_updateDelayedFocusedState(){this._ringManipulator.updateStateEnabled(ct.DelayedFocused,this.getFocused())}_updateDragState(){if(this._ringManipulator.updateStateEnabled(ct.Unlocked,!(null!=this._scaleRotateDragData&&"none"!==this._scaleRotateDragData?.mode)),null!=this._scaleRotateDragData)switch(this._scaleRotateDragData.mode){case"rotate":this._ringManipulator.updateStateEnabled(ct.ScaleIn|ct.ScaleOut,!1),this._ringManipulator.updateStateEnabled(ct.RotateLeft,this._scaleRotateDragData.angleDir<0),this._ringManipulator.updateStateEnabled(ct.RotateRight,this._scaleRotateDragData.angleDir>=0);break;case"scale":this._ringManipulator.updateStateEnabled(ct.RotateLeft|ct.RotateRight,!1),this._ringManipulator.updateStateEnabled(ct.ScaleIn,this._scaleRotateDragData.scaleDir<0),this._ringManipulator.updateStateEnabled(ct.ScaleOut,this._scaleRotateDragData.scaleDir>=0)}else this._ringManipulator.updateStateEnabled(ct.ScaleIn|ct.ScaleOut|ct.RotateLeft|ct.RotateRight,!1)}_updateManipulatorTransform(){const t=g(P.get(),this.adapter.angle,w(0,0,1));if(null==t)return;const e=this.getScale(),a=m(P.get(),v(T.get(),e,e,e));this._ringManipulator.modelTransform=f(P.get(),a,t)}_createRingManipulator(){const t=(t,e,a)=>{const i=[],o=Math.ceil(X*(e-t)/(2*Math.PI));for(let r=0;r<o+1;r++){const s=t+r*(e-t)/o;i.push(w(a*Math.cos(s),a*Math.sin(s),0))}return i},e=e=>t(0,2*Math.PI,e),a=t=>[[-t/2,0],[t/2,0],[t/2,et/2],[-t/2,et/2]],i=this._createMaterial(1),o=(t,e,o=i)=>st(o,a(e),t,[],[],!1),r=e(q),s=o(r,G),n={left:new Array,right:new Array},l=[];for(let w=0;w<2;w++){const e=w*Math.PI-Math.PI/4,a=Math.PI/2-Y,r=e+a,s=e+Math.PI/2-a,c=t(r,s,B),d=o(c,W);l.push(c),l.push(t(r,s,J-G/2)),n.left.push(d),n.right.push(d.instantiate());for(let t=0;t<2;t++){const e=0===t,a=M();if(e){_(a,a,[1,-1,1]),D(a,a,-r,[0,0,1]);const t=Math.round(z*(c.length-1));a[12]=c[t][0],a[13]=c[t][1],a[14]=c[t][2]}else{D(a,a,s,[0,0,1]);const t=Math.round((1-z)*(c.length-1));a[12]=c[t][0],a[13]=c[t][1],a[14]=c[t][2]}const o=ot(i,N,0,K,et);rt(o,a),(e?n.left:n.right).push(o)}}const c=[];for(let _=0;_<2;_++){const e=_*Math.PI-Math.PI/4,a=Math.PI/2-Z,i=e+a,r=e+Math.PI/2-a,s=t(i,r,J);c.push(o(s,W))}const d=this._createMaterial(.66),h=this._createMaterial(.5),u=this._createMaterial(.33),p=e(q+Q),g=e(q+V),m=o(p,W,d),f=o(g,W,u),v=e(q-Q),S=e(q-V),b=o(v,W,d),y=o(S,W,u);let j=[new L(s,ct.DelayedFocused),new L(s.instantiate({material:h}),0)];this.mode&&"scale"!==this.mode||(j=j.concat([...c.map(t=>new L(t,ct.DelayedFocused|ct.Unlocked)),new L(m,ct.DelayedFocused|ct.ScaleIn),new L(f,ct.DelayedFocused|ct.ScaleIn),new L(b,ct.DelayedFocused|ct.ScaleOut),new L(y,ct.DelayedFocused|ct.ScaleOut)])),this.mode&&"rotate"!==this.mode||(j=j.concat([...n.right.map(t=>new L(t.instantiate(),ct.DelayedFocused|ct.Unlocked)),...n.left.map(t=>new L(t,ct.DelayedFocused|ct.RotateLeft)),...n.right.map(t=>new L(t,ct.DelayedFocused|ct.RotateRight))]));const R=[r,...l];return new x({view:this.tool.view,renderObjects:j,autoScaleRenderObjects:!1,worldOriented:!0,radius:G,focusMultiplier:1,touchMultiplier:1.5,elevationInfo:this.tool.object.elevationInfo,collisionType:{type:"ribbon",paths:R,direction:w(0,0,1)}})}_createMaterial(t){const e=new nt({cullFace:2,renderOccluded:2,isDecoration:!0});return this.addHandles(l(()=>a(this.tool.view.effectiveTheme.accentColor,t),t=>e.setParameters({color:t}),c)),e}get test(){}};function ht(t,e){const a=S(T.get(),e.renderStart,t.origin),i=S(T.get(),e.renderEnd,t.origin),o=b(a),r=b(i);return 0===o?0:r/o}function ut(t,e,a,i){const{renderStart:o,renderEnd:r}=t,s=pt(o,i,T.get()),n=pt(r,i,T.get());if(y(s,n)<at*at)return null;const l=S(T.get(),o,a),c=j(T.get(),l,k(e)),d=o,h=R(T.get(),d,c),u=pt(a,i,T.get()),p=s,g=pt(h,i,T.get()),m=S(T.get(),g,p),f=S(T.get(),s,u),_=E(p,m),D=E(u,f);return O(_,n)<O(D,n)?"rotate":"scale"}function pt(t,e,a){return e.projectToScreen(t,ft),v(a,ft[0],ft[1],0)}function gt(t,e){let a=null,i=1;const o=()=>i;return{start:()=>{i=t.getScale(),a=t.getScale,t.getScale=o,e()},update:t=>(i+=((i+1)/2-i)*Math.min(t*it,1),e(),Math.abs(i-1)<.01?1:0),destroy:()=>{a&&(t.getScale=a),e()}}}function mt(t,e,a){let i=0,o=null;const r=()=>!1;return{start:()=>{o=t.getFocused,t.getFocused=r,i=0,e()},update:t=>(i+=t,!o?.()||i>=a.delayMs?1:0),destroy:()=>{o&&(t.getFocused=o),e()}}}t([u({constructOnly:!0})],dt.prototype,"tool",void 0),t([u({constructOnly:!0})],dt.prototype,"adapter",void 0),t([u({constructOnly:!0})],dt.prototype,"sketchOptions",void 0),t([u()],dt.prototype,"mode",void 0),t([u()],dt.prototype,"_activeAnimation",void 0),t([u()],dt.prototype,"updating",null),dt=t([p("esri.views.3d.interactive.editingTools.transform.ScaleRotateTransform")],dt);const ft=h();export{dt as ScaleRotateTransform};
2
+ import{__decorate as t}from"tslib";import e from"../../../../../core/Accessor.js";import{multiplyOpacityToUnitRGBA as a}from"../../../../../core/colorUtils.js";import{cyclicalPI as i}from"../../../../../core/Cyclical.js";import{EventEmitter as o}from"../../../../../core/Evented.js";import"../../../../../core/has.js";import{clamp as r,rad2deg as s}from"../../../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../../../core/maybe.js";import{watch as l,initial as c}from"../../../../../core/reactiveUtils.js";import{addFrameTask as d}from"../../../../../core/scheduling.js";import{createScreenPointArray as h}from"../../../../../core/screenUtils.js";import{property as u,subclass as p}from"../../../../../core/accessorSupport/decorators.js";import{fromRotation as g,fromScaling as m,multiply as f,scale as _,rotate as D}from"../../../../../core/libs/gl-matrix-2/math/mat4.js";import{create as M}from"../../../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{set as v,subtract as S,length as b,squaredDistance as y,cross as j,add as R}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{fromValues as w,clone as A}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{fromPositionAndNormal as I,create as F,getNormal as k}from"../../../../../geometry/support/plane.js";import{wrap as E,distance2 as O}from"../../../../../geometry/support/ray.js";import{sm4d as P,sv3d as T}from"../../../../../geometry/support/vectorStacks.js";import{Manipulator3D as x}from"../../Manipulator3D.js";import{calculateInputRotationTransform as U}from"../../manipulatorUtils.js";import{RenderObject as L}from"../../RenderObject.js";import{screenToRenderPlane as C}from"../dragEventPipeline3D.js";import{ringIndicatorDelayMs as H,rotateIndicatorArrowPlacementPercentage as z,ringThickness as G,ringRadius as q,innerIndicatorRadius as B,outerIndicatorRadius as J,rotateIndicatorArrowTipRadius as K,rotateIndicatorArrowTipLength as N,scaleIndicatorOffset1 as Q,scaleIndicatorOffset2 as V,indicatorThickness as W,geometrySegments as X,rotateIndicatorArcLength as Y,scaleIndicatorArcLength as Z,rotateIndicatorDirectionBuffer as $,scaleIndicatorDirectionBuffer as tt,ringHeight as et,dragThresholdPx as at,ringResetAnimationSpeedFactor as it}from"../manipulations/config.js";import{createExtrudedTriangle as ot,transformInPlace as rt,createPathExtrusionGeometry as st}from"../../../webgl-engine/lib/GeometryUtil.js";import{ColorMaterial as nt}from"../../../webgl-engine/materials/ColorMaterial.js";import{createManipulatorDragEventPipeline as lt}from"../../../../interactive/dragEventPipeline.js";const ct={ScaleIn:32,ScaleOut:64,RotateLeft:128,RotateRight:256,Unlocked:1024,DelayedFocused:2048};let dt=class extends e{get angle(){return this.adapter.angle}get scale(){return this.adapter.scale}set location(t){this._ringManipulator.location=t}set elevationAlignedLocation(t){this._ringManipulator.elevationAlignedLocation=t}get grabbing(){return this._ringManipulator.grabbing}set interactive(t){this._ringManipulator.interactive=t}get updating(){return!!this._activeAnimation}constructor(t){super(t),this.mode=null,this._scaleRotateDragData=null,this._activeAnimation=null,this._ringIndicatorDelayMs=H,this.events=new o,this.getFocused=()=>this._ringManipulator.focused,this.getScale=()=>"scale"===this._scaleRotateDragData?.mode?this.adapter.scale:1}initialize(){this._createManipulator(),this._updateDragState(),this._updateManipulatorTransform(),this.addHandles([l(()=>{const{adapter:t}=this;return[t.angle,t.scale]},()=>this._updateManipulatorTransform())])}destroy(){this._activeAnimation?.frameTask.remove(),this._activeAnimation=null,this.tool.manipulators.remove(this._ringManipulator),this._ringManipulator=null}startAnimation(t){this.cancelActiveAnimation(),t.start();const e=d({update:({deltaTime:e})=>{t.update(e)&&this.cancelActiveAnimation()}});this._activeAnimation={...t,frameTask:e}}cancelActiveAnimation(){this._activeAnimation?.frameTask.remove(),this._activeAnimation=n(this._activeAnimation)}forEachManipulator(t){t(this._ringManipulator,4)}disableDisplay(){return this._ringManipulator.disableDisplay()}_createManipulator(){const t=this._createRingManipulator();this._ringManipulator=t,this.tool.manipulators.add(t);const e=this.tool.object,a=lt(t,(t,a,o)=>{this._scaleRotateDragData=null;const n=this.adapter.startInteraction(),l={mode:"none",origin:A(t.renderLocation),initialAngle:this.adapter.angle,angle:0,angleDir:0,scaleDir:0};this._scaleRotateDragData=l,this._updateDragState();const c=T.get();this.tool.view.renderCoordsHelper.worldUpAtPosition(t.renderLocation,c),a.next(C(this.tool.view,I(t.renderLocation,c,F()))).next(t=>{const a=k(t.plane),o=U(t.renderStart,t.renderEnd,l.origin,a),c=i.shortestSignedDiff(l.angle,o);l.angleDir=r(l.angleDir+c,-.3,$),l.angle=o;const d=ht(l,t),h=d-this.adapter.scale;if(l.scaleDir=r(l.scaleDir+h,-.2,tt),this._onScaleChanged(),"none"===l.mode){const a=this.mode||ut(t,t.plane,l.origin,this.tool.view.state.camera);if(null!=a){switch(a){case"rotate":this.tool.events.emit("rotate-start",{object:e,angle:0}),this.tool.events.emit("record-undo",{updates:[this.adapter.createUndoRecord()]});break;case"scale":this.tool.events.emit("scale-start",{object:e,xScale:1,yScale:1}),this.tool.events.emit("record-undo",{updates:[this.adapter.createUndoRecord()]})}l.mode=a}}switch(l.mode){case"rotate":n.state.angle=l.initialAngle+o;break;case"scale":n.state.scale=d,this._onScaleChanged()}switch(this._updateDragState(),this._updateManipulatorTransform(),t.action){case"start":case"update":switch(l.mode){case"rotate":this.tool.events.emit("rotate",{object:e,angle:s(l.angle)});break;case"scale":this.tool.events.emit("scale",{object:e,xScale:d,yScale:d})}break;case"end":switch(l.mode){case"rotate":this.tool.events.emit("rotate-stop",{object:e,angle:s(l.angle)});break;case"scale":this.tool.events.emit("scale-stop",{object:e,xScale:d,yScale:d})}}return"end"===t.action&&(this.startAnimation(gt(this,()=>this._onScaleChanged())),this._scaleRotateDragData=null,this._updateDragState(),n.done()),t}),o.next(()=>{if(n.cancel(),null!=this._scaleRotateDragData){switch(this._scaleRotateDragData.mode){case"none":break;case"rotate":this.tool.events.emit("rotate-stop",{object:e,angle:0});break;case"scale":this.tool.events.emit("scale-stop",{object:e,xScale:1,yScale:1})}this.startAnimation(gt(this,()=>this._onScaleChanged())),this._scaleRotateDragData=null,this._updateDragState()}})});this.addHandles([a,t.events.on("focus-changed",t=>{"focus"===t.action?this.startAnimation(mt(this,()=>this._updateDelayedFocusedState(),{delayMs:this._ringIndicatorDelayMs})):this._updateDelayedFocusedState()}),t.events.on("immediate-click",t=>{t.stopPropagation()}),l(()=>this.tool.object.visible,t=>this._ringManipulator.available=t,c)])}_onScaleChanged(){this.events.emit("scale-changed"),this._updateManipulatorTransform()}_updateDelayedFocusedState(){this._ringManipulator.updateStateEnabled(ct.DelayedFocused,this.getFocused())}_updateDragState(){if(this._ringManipulator.updateStateEnabled(ct.Unlocked,!(null!=this._scaleRotateDragData&&"none"!==this._scaleRotateDragData?.mode)),null!=this._scaleRotateDragData)switch(this._scaleRotateDragData.mode){case"rotate":this._ringManipulator.updateStateEnabled(ct.ScaleIn|ct.ScaleOut,!1),this._ringManipulator.updateStateEnabled(ct.RotateLeft,this._scaleRotateDragData.angleDir<0),this._ringManipulator.updateStateEnabled(ct.RotateRight,this._scaleRotateDragData.angleDir>=0);break;case"scale":this._ringManipulator.updateStateEnabled(ct.RotateLeft|ct.RotateRight,!1),this._ringManipulator.updateStateEnabled(ct.ScaleIn,this._scaleRotateDragData.scaleDir<0),this._ringManipulator.updateStateEnabled(ct.ScaleOut,this._scaleRotateDragData.scaleDir>=0)}else this._ringManipulator.updateStateEnabled(ct.ScaleIn|ct.ScaleOut|ct.RotateLeft|ct.RotateRight,!1)}_updateManipulatorTransform(){const t=g(P.get(),this.adapter.angle,w(0,0,1));if(null==t)return;const e=this.getScale(),a=m(P.get(),v(T.get(),e,e,e));this._ringManipulator.modelTransform=f(P.get(),a,t)}_createRingManipulator(){const t=(t,e,a)=>{const i=[],o=Math.ceil(X*(e-t)/(2*Math.PI));for(let r=0;r<o+1;r++){const s=t+r*(e-t)/o;i.push(w(a*Math.cos(s),a*Math.sin(s),0))}return i},e=e=>t(0,2*Math.PI,e),a=t=>[[-t/2,0],[t/2,0],[t/2,et/2],[-t/2,et/2]],i=this._createMaterial(1),o=(t,e,o=i)=>st(o,a(e),t,[],[],!1),r=e(q),s=o(r,G),n={left:new Array,right:new Array},l=[];for(let w=0;w<2;w++){const e=w*Math.PI-Math.PI/4,a=Math.PI/2-Y,r=e+a,s=e+Math.PI/2-a,c=t(r,s,B),d=o(c,W);l.push(c),l.push(t(r,s,J-G/2)),n.left.push(d),n.right.push(d.instantiate());for(let t=0;t<2;t++){const e=0===t,a=M();if(e){_(a,a,[1,-1,1]),D(a,a,-r,[0,0,1]);const t=Math.round(z*(c.length-1));a[12]=c[t][0],a[13]=c[t][1],a[14]=c[t][2]}else{D(a,a,s,[0,0,1]);const t=Math.round((1-z)*(c.length-1));a[12]=c[t][0],a[13]=c[t][1],a[14]=c[t][2]}const o=ot(i,N,0,K,et);rt(o,a),(e?n.left:n.right).push(o)}}const c=[];for(let _=0;_<2;_++){const e=_*Math.PI-Math.PI/4,a=Math.PI/2-Z,i=e+a,r=e+Math.PI/2-a,s=t(i,r,J);c.push(o(s,W))}const d=this._createMaterial(.66),h=this._createMaterial(.5),u=this._createMaterial(.33),p=e(q+Q),g=e(q+V),m=o(p,W,d),f=o(g,W,u),v=e(q-Q),S=e(q-V),b=o(v,W,d),y=o(S,W,u);let j=[new L(s,ct.DelayedFocused),new L(s.instantiate({material:h}),0)];this.mode&&"scale"!==this.mode||(j=j.concat([...c.map(t=>new L(t,ct.DelayedFocused|ct.Unlocked)),new L(m,ct.DelayedFocused|ct.ScaleIn),new L(f,ct.DelayedFocused|ct.ScaleIn),new L(b,ct.DelayedFocused|ct.ScaleOut),new L(y,ct.DelayedFocused|ct.ScaleOut)])),this.mode&&"rotate"!==this.mode||(j=j.concat([...n.right.map(t=>new L(t.instantiate(),ct.DelayedFocused|ct.Unlocked)),...n.left.map(t=>new L(t,ct.DelayedFocused|ct.RotateLeft)),...n.right.map(t=>new L(t,ct.DelayedFocused|ct.RotateRight))]));const R=[r,...l];return new x({view:this.tool.view,renderObjects:j,autoScaleRenderObjects:!1,worldOriented:!0,radius:G,focusMultiplier:1,touchMultiplier:1.5,elevationInfo:this.tool.object.elevationInfo,collisionType:{type:"ribbon",paths:R,direction:w(0,0,1)}})}_createMaterial(t){const e=new nt({cullFace:2,renderOccluded:2,isDecoration:!0});return this.addHandles(l(()=>a(this.tool.view.effectiveTheme.accentColor,t),t=>e.setParameters({color:t}),c)),e}get test(){}};function ht(t,e){const a=S(T.get(),e.renderStart,t.origin),i=S(T.get(),e.renderEnd,t.origin),o=b(a),r=b(i);return 0===o?0:r/o}function ut(t,e,a,i){const{renderStart:o,renderEnd:r}=t,s=pt(o,i,T.get()),n=pt(r,i,T.get());if(y(s,n)<at*at)return null;const l=S(T.get(),o,a),c=j(T.get(),l,k(e)),d=o,h=R(T.get(),d,c),u=pt(a,i,T.get()),p=s,g=pt(h,i,T.get()),m=S(T.get(),g,p),f=S(T.get(),s,u),_=E(p,m),D=E(u,f);return O(_,n)<O(D,n)?"rotate":"scale"}function pt(t,e,a){return e.projectToScreen(t,ft),v(a,ft[0],ft[1],0)}function gt(t,e){let a=null,i=1;const o=()=>i;return{start:()=>{i=t.getScale(),a=t.getScale,t.getScale=o,e()},update:t=>(i+=((i+1)/2-i)*Math.min(t*it,1),e(),Math.abs(i-1)<.01?1:0),destroy:()=>{a&&(t.getScale=a),e()}}}function mt(t,e,a){let i=0,o=null;const r=()=>!1;return{start:()=>{o=t.getFocused,t.getFocused=r,i=0,e()},update:t=>(i+=t,!o?.()||i>=a.delayMs?1:0),destroy:()=>{o&&(t.getFocused=o),e()}}}t([u({constructOnly:!0})],dt.prototype,"tool",void 0),t([u({constructOnly:!0})],dt.prototype,"adapter",void 0),t([u({constructOnly:!0})],dt.prototype,"toolOptions",void 0),t([u()],dt.prototype,"mode",void 0),t([u()],dt.prototype,"_activeAnimation",void 0),t([u()],dt.prototype,"updating",null),dt=t([p("esri.views.3d.interactive.editingTools.transform.ScaleRotateTransform")],dt);const ft=h();export{dt as ScaleRotateTransform};
@@ -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 e}from"../../../../../core/arrayUtils.js";import{EventEmitter as i}from"../../../../../core/Evented.js";import{makeHandle as o}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{watch as n}from"../../../../../core/reactiveUtils.js";import{property as s,subclass as l}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as r}from"../../../../../core/support/UpdatingHandles.js";import p from"../../../../../geometry/Point.js";import{Manipulator3D as c}from"../../Manipulator3D.js";import{placeAtObject as h}from"../../manipulatorUtils.js";import{SnappingVisualizer3D as d}from"../../SnappingVisualizer3D.js";import{manipulatedObjectGeometry as m}from"../manipulatedObjectUtils.js";import{canMoveZOperations as u}from"../manipulatorUtils.js";import{meshTransformFastUpdateHandles as v}from"../meshFastUpdateUtils.js";import{connectTooltipToManipulatedObject as _}from"../tooltipUtils3D.js";import{createVisualElements as g}from"../visualElementUtils.js";import{alignArrowsScaleThreshold as f}from"../manipulations/config.js";import{MoveManipulation as b}from"../manipulations/MoveManipulation.js";import{ScaleRotateMeshAdapter as j}from"./ScaleRotateMeshAdapter.js";import{ScaleRotateObjectSymbol3DAdapter as y}from"./ScaleRotateObjectSymbol3DAdapter.js";import{ScaleRotateTransform as S}from"./ScaleRotateTransform.js";import{sceneSnappingAtProjectedLocation as M}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as R}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as w}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import O from"../../../../interactive/sketch/SketchOptions.js";import{SnappingContext as T}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as A}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as x,enterInputModeIfAvailable as I}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{TransformMeshTooltipInfo as U}from"../../../../interactive/tooltip/infos/TransformMeshTooltipInfo.js";import{TransformPointTooltipInfo as k}from"../../../../interactive/tooltip/infos/TransformPointTooltipInfo.js";let E=class extends R{constructor(t){super(t),this.events=new i,this.enableZ=!0,this.enableRotation=!0,this.enableScaling=!0,this.sketchOptions=new O,this.type="transform-3d",this._updatingHandles=new r,this._scaleRotate=null}initialize(){const{events:t,object:i,view:a}=this;this.tooltip=x(()=>({view:a,options:this.sketchOptions.tooltips})),this._moveManipulation=new b({tool:this,view:a,snapToScene:this.snapToScene,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:this.enableZ&&u(i.operations,i.elevationInfo),radius:b.radiusForSymbol(i.graphic?.symbol)}),this._moveManipulation.forEachManipulator(e=>this.addHandles(e.events.on("immediate-click",e=>{t.emit("immediate-click",{...e,object:this.object}),e.stopPropagation()})));const s=i.elevationInfo;if(this._moveManipulation.elevationInfo=s,this.addHandles(v(i)),this._moveManipulation.createManipulatedObjectDragPipeline((t,e,o,n,l)=>{if(0===t){const{snappingStep:t,cancelSnapping:e}=A({snappingContext:new T({elevationInfo:s,pointer:l,editGeometryOperations:w.fromGeometry(new p({spatialReference:i.operations?.data.spatialReference}),a.state.viewingMode),visualizer:new d,excludeFeature:i.graphic}),snappingManager:this.snappingManager,updatingHandles:this._updatingHandles,useZ:!1});n=n.next(e),o=o.next(M(this.view,s)).next(...t)}return{steps:o,cancel:n}},i,e=>{const{action:i,object:o,dxScreen:a,dyScreen:n}=e,s={object:o,dxScreen:a,dyScreen:n};switch(i){case"start":this._emitRecordUndo(),t.emit("translate-start",s);break;case"update":t.emit("translate",s);break;case"end":t.emit("translate-stop",s)}}),this._moveManipulation.angle=null!=this._scaleRotate?this._scaleRotate.angle:0,this._scaleRotateAdapter=this._createScaleRotateAdapter(),this.addHandles(n(()=>this._scaleRotateAdapter.angle,()=>this._updateMoveAngle())),this.enableScaling||this.enableRotation){const t=this.enableScaling&&this.enableRotation?null:this.enableScaling?"scale":"rotate";this._scaleRotate=new S({tool:this,mode:t,adapter:this._scaleRotateAdapter,sketchOptions:this.sketchOptions}),this.addHandles(this._scaleRotate.events.on("scale-changed",()=>this._onScaleChanged()))}this.addHandles([g({view:this.view,object:i,forEachManipulator:t=>this._forEachManipulator(t),onManipulatorsChanged:()=>o()}),i.on("committed",()=>this._onGeometryChanged()),this._hideManipulatorsForObjectState(),n(()=>a.scale,()=>this._updateMoveAngle())].filter(e)),this._onGeometryChanged(),this._updateMoveAngle(),this._forEachManipulator(t=>{t instanceof c&&this.addHandles(t.events.on("grab-changed",()=>this._updateManipulatorsForGrabState()))});const l=a?.type,{sketchOptions:r}=this;this._meshTooltipInfo=new U({viewType:l,sketchOptions:r}),this._pointTooltipInfo=new k({viewType:l,sketchOptions:r});const h={object:i,dxScreen:0,dyScreen:0},m={onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._emitRecordUndo(),t.emit("translate-start",{...h})},onMove:()=>t.emit("translate",{...h}),onMoveStop:()=>t.emit("translate-stop",{...h}),onRotateStart:e=>{this._emitRecordUndo(),t.emit("rotate-start",{object:i,angle:e})},onRotate:e=>t.emit("rotate",{object:i,angle:e}),onRotateStop:e=>t.emit("rotate-stop",{object:i,angle:e}),onScaleStart:(e,o)=>{this._emitRecordUndo(),t.emit("scale-start",{object:i,xScale:e,yScale:o})},onScale:(e,o)=>t.emit("scale",{object:i,xScale:e,yScale:o}),onScaleStop:(e,o)=>t.emit("scale-stop",{object:i,xScale:e,yScale:o})};this.addHandles(_(this.tooltip,this.object,()=>({sketchOptions:this.sketchOptions,activeTooltipInfo:this.activeTooltipInfo,callbacks:m,scaleRotateTransform:this._scaleRotate}))),this.finishToolCreation()}destroy(){this.tooltip.destroy(),this._moveManipulation.destroy(),this._scaleRotate=a(this._scaleRotate),this._scaleRotateAdapter=a(this._scaleRotateAdapter),this._updatingHandles.destroy(),this._set("view",null),this._set("object",null)}onInputEvent(t){if(!this.destroyed&&!I(t,this.tooltip))return super.onInputEvent(t)}_updateManipulatorsForGrabState(){if(null==this._scaleRotate)return;this._scaleRotate.interactive=!this._moveManipulation.grabbing,this._moveManipulation.interactive=!this._scaleRotate.grabbing;let t=null;this._moveManipulation.grabbing?t=this._scaleRotate.disableDisplay():this._scaleRotate.grabbing&&(t=this._moveManipulation.hideManipulators()),this.removeHandles(H),t&&this.addHandles(t,H)}_createScaleRotateAdapter(){const t=m(this.object);return"mesh"===t?.type?new j({object:this.object,viewingMode:this.view.state.viewingMode}):new y({graphic:this.object.graphic,sizeFilter:t=>this._enforceNonZeroSize(t),findLayerView:()=>this.view.allLayerViews.find(t=>t.layer===this.object.graphic?.layer),sizeAxis:this.sketchOptions?.tooltips?.visualVariables?.size?.axis??null})}_forEachManipulator(t){this._moveManipulation?.forEachManipulator(t),this._scaleRotate?.forEachManipulator(t)}_hideManipulatorsForObjectState(){return n(()=>this.object.visible,t=>{this._forEachManipulator(e=>e.available=t),this._moveManipulation.zManipulation.available=t&&this.enableZ&&u(this.object.operations,this.object.elevationInfo)})}_emitRecordUndo(){this.events.emit("record-undo",{updates:[this.object.createUndoRecord()]})}set snapToScene(t){this._moveManipulation&&(this._moveManipulation.snapToScene=t),this._set("snapToScene",t)}get updating(){return this._updatingHandles.updating||!!this._scaleRotate?.updating}get activeTooltipInfo(){return"mesh"===m(this.object)?.type?this._meshTooltipInfo:this._pointTooltipInfo}set location(t){this._moveManipulation.location=t,this._scaleRotate&&(this._scaleRotate.location=t)}set elevationAlignedLocation(t){this._moveManipulation.elevationAlignedLocation=t,this._scaleRotate&&(this._scaleRotate.elevationAlignedLocation=t)}reset(){}onActivate(){this.tooltip.hidden=!this.internallyEditable}onEditableChange(){this.internallyEditable||(this.tooltip.hidden=!0,this.tooltip.exitInputMode({focusOnView:!1}))}onHide(){this._scaleRotate?.cancelActiveAnimation()}_onScaleChanged(){null!=this._scaleRotate&&(this._moveManipulation.displayScale=this._scaleRotate.getScale())}_updateMoveAngle(){const{view:t}=this,e=2===t.state.viewingMode||t.scale<f;this._moveManipulation.angle=e?this._scaleRotateAdapter.angle:0}_onGeometryChanged(){h(this,this.object)}_enforceNonZeroSize(t){return t||this.view.state.camera.computeRenderPixelSizeAt(this._moveManipulation.renderLocation)}get test(){}};t([s({constructOnly:!0,nonNullable:!0})],E.prototype,"view",void 0),t([s({constructOnly:!0,nonNullable:!0})],E.prototype,"object",void 0),t([s({constructOnly:!0,nonNullable:!0})],E.prototype,"enableZ",void 0),t([s()],E.prototype,"enableRotation",void 0),t([s()],E.prototype,"enableScaling",void 0),t([s({constructOnly:!0,type:O})],E.prototype,"sketchOptions",void 0),t([s({value:!1})],E.prototype,"snapToScene",null),t([s({constructOnly:!0})],E.prototype,"snappingManager",void 0),t([s({readOnly:!0})],E.prototype,"type",void 0),t([s({readOnly:!0})],E.prototype,"updating",null),t([s()],E.prototype,"activeTooltipInfo",null),E=t([l("esri.views.3d.interactive.editingTools.transform.TransformTool3D")],E);const H=Symbol();export{E as TransformTool3D};
2
+ import{__decorate as t}from"tslib";import{isSome as e}from"../../../../../core/arrayUtils.js";import{EventEmitter as o}from"../../../../../core/Evented.js";import{makeHandle as i}from"../../../../../core/handleUtils.js";import"../../../../../core/has.js";import{destroyMaybe as a}from"../../../../../core/maybe.js";import{property as n,subclass as s}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as l}from"../../../../../core/support/UpdatingHandles.js";import r from"../../../../../geometry/Point.js";import{Manipulator3D as p}from"../../Manipulator3D.js";import{placeAtObject as c}from"../../manipulatorUtils.js";import{SnappingVisualizer3D as h}from"../../SnappingVisualizer3D.js";import{manipulatedObjectGeometry as d}from"../manipulatedObjectUtils.js";import{canMoveZOperations as m}from"../manipulatorUtils.js";import{meshTransformFastUpdateHandles as u}from"../meshFastUpdateUtils.js";import{connectTooltipToManipulatedObject as v}from"../tooltipUtils3D.js";import{createVisualElements as g}from"../visualElementUtils.js";import{alignArrowsScaleThreshold as _}from"../manipulations/config.js";import{MoveManipulation as b}from"../manipulations/MoveManipulation.js";import{ScaleRotateMeshAdapter as f}from"./ScaleRotateMeshAdapter.js";import{ScaleRotateObjectSymbol3DAdapter as j}from"./ScaleRotateObjectSymbol3DAdapter.js";import{ScaleRotateTransform as y}from"./ScaleRotateTransform.js";import{sceneSnappingAtProjectedLocation as S}from"../../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as M}from"../../../../interactive/InteractiveToolBase.js";import{EditGeometryOperations as R}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import w from"../../../../interactive/options/InteractiveToolOptions.js";import{SnappingContext as T}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as O}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{makeTooltip as A,enterInputModeIfAvailable as x}from"../../../../interactive/tooltip/tooltipCommonUtils.js";import{TransformMeshTooltipInfo as I}from"../../../../interactive/tooltip/infos/TransformMeshTooltipInfo.js";import{TransformPointTooltipInfo as H}from"../../../../interactive/tooltip/infos/TransformPointTooltipInfo.js";let U=class extends M{constructor(t){super(t),this.events=new o,this.enableZ=!0,this.enableRotation=!0,this.enableScaling=!0,this.toolOptions=new w,this.type="transform-3d",this._updatingHandles=new l,this._scaleRotate=null}initialize(){const{events:t,object:o,view:a}=this;this.tooltip=A(()=>({view:a,options:this.toolOptions.tooltips})),this._moveManipulation=new b({tool:this,view:a,snapToScene:this.snapToScene,xyAvailable:!0,xyAxisAvailable:!0,zAvailable:this.enableZ&&m(o.operations,o.elevationInfo),radius:b.radiusForSymbol(o.graphic?.symbol)}),this._moveManipulation.forEachManipulator(e=>this.addHandles(e.events.on("immediate-click",e=>{t.emit("immediate-click",{...e,object:this.object}),e.stopPropagation()})));const n=o.elevationInfo;if(this._moveManipulation.elevationInfo=n,this.addHandles(u(o)),this._moveManipulation.createManipulatedObjectDragPipeline((t,e,i,s,l)=>{if(0===t){const{snappingStep:t,cancelSnapping:e}=O({snappingContext:new T({elevationInfo:n,pointer:l,editGeometryOperations:R.fromGeometry(new r({spatialReference:o.operations?.data.spatialReference}),a.state.viewingMode),visualizer:new h,excludeFeature:o.graphic}),snappingManager:this.snappingManager,updatingHandles:this._updatingHandles,useZ:!1});s=s.next(e),i=i.next(S(this.view,n)).next(...t)}return{steps:i,cancel:s}},o,e=>{const{action:o,object:i,dxScreen:a,dyScreen:n}=e,s={object:i,dxScreen:a,dyScreen:n};switch(o){case"start":this._emitRecordUndo(),t.emit("translate-start",s);break;case"update":t.emit("translate",s);break;case"end":t.emit("translate-stop",s)}}),this._moveManipulation.angle=null!=this._scaleRotate?this._scaleRotate.angle:0,this._scaleRotateAdapter=this._createScaleRotateAdapter(),this.addHandles(this._updatingHandles.add(()=>this._scaleRotateAdapter.angle,()=>this._updateMoveAngle())),this.enableScaling||this.enableRotation){const t=this.enableScaling&&this.enableRotation?null:this.enableScaling?"scale":"rotate";this._scaleRotate=new y({tool:this,mode:t,adapter:this._scaleRotateAdapter,toolOptions:this.toolOptions}),this.addHandles(this._scaleRotate.events.on("scale-changed",()=>this._onScaleChanged()))}this.addHandles([g({view:this.view,object:o,forEachManipulator:t=>this._forEachManipulator(t),onManipulatorsChanged:()=>i()}),o.on("committed",()=>this._onGeometryChanged()),this._hideManipulatorsForObjectState(),this._updatingHandles.add(()=>a.scale,()=>this._updateMoveAngle())].filter(e)),this._onGeometryChanged(),this._updateMoveAngle(),this._forEachManipulator(t=>{t instanceof p&&this.addHandles(t.events.on("grab-changed",()=>this._updateManipulatorsForGrabState()))});const s=a?.type,{toolOptions:l}=this;this._meshTooltipInfo=new I({viewType:s,toolOptions:l}),this._pointTooltipInfo=new H({viewType:s,toolOptions:l});const c={object:o,dxScreen:0,dyScreen:0},d={onBeforeUpdate:()=>this.endDrag(),onMoveStart:()=>{this._emitRecordUndo(),t.emit("translate-start",{...c})},onMove:()=>t.emit("translate",{...c}),onMoveStop:()=>t.emit("translate-stop",{...c}),onRotateStart:e=>{this._emitRecordUndo(),t.emit("rotate-start",{object:o,angle:e})},onRotate:e=>t.emit("rotate",{object:o,angle:e}),onRotateStop:e=>t.emit("rotate-stop",{object:o,angle:e}),onScaleStart:(e,i)=>{this._emitRecordUndo(),t.emit("scale-start",{object:o,xScale:e,yScale:i})},onScale:(e,i)=>t.emit("scale",{object:o,xScale:e,yScale:i}),onScaleStop:(e,i)=>t.emit("scale-stop",{object:o,xScale:e,yScale:i})};this.addHandles(v(this.tooltip,this.object,()=>({toolOptions:this.toolOptions,activeTooltipInfo:this.activeTooltipInfo,callbacks:d,scaleRotateTransform:this._scaleRotate}))),this.finishToolCreation()}destroy(){this.tooltip.destroy(),this._moveManipulation.destroy(),this._scaleRotate=a(this._scaleRotate),this._scaleRotateAdapter=a(this._scaleRotateAdapter),this._updatingHandles.destroy(),this._set("view",null),this._set("object",null)}onInputEvent(t){if(!this.destroyed&&!x(t,this.tooltip))return super.onInputEvent(t)}_updateManipulatorsForGrabState(){if(null==this._scaleRotate)return;this._scaleRotate.interactive=!this._moveManipulation.grabbing,this._moveManipulation.interactive=!this._scaleRotate.grabbing;let t=null;this._moveManipulation.grabbing?t=this._scaleRotate.disableDisplay():this._scaleRotate.grabbing&&(t=this._moveManipulation.hideManipulators()),this.removeHandles(E),t&&this.addHandles(t,E)}_createScaleRotateAdapter(){const t=d(this.object);return"mesh"===t?.type?new f({object:this.object,viewingMode:this.view.state.viewingMode}):new j({graphic:this.object.graphic,sizeFilter:t=>this._enforceNonZeroSize(t),findLayerView:()=>this.view.allLayerViews.find(t=>t.layer===this.object.graphic?.layer),sizeAxis:this.toolOptions?.tooltips?.visualVariables?.size?.axis??null})}_forEachManipulator(t){this._moveManipulation?.forEachManipulator(t),this._scaleRotate?.forEachManipulator(t)}_hideManipulatorsForObjectState(){return this._updatingHandles.add(()=>this.object.visible,t=>{this._forEachManipulator(e=>e.available=t),this._moveManipulation.zManipulation.available=t&&this.enableZ&&m(this.object.operations,this.object.elevationInfo)})}_emitRecordUndo(){this.events.emit("record-undo",{updates:[this.object.createUndoRecord()]})}set snapToScene(t){this._moveManipulation&&(this._moveManipulation.snapToScene=t),this._set("snapToScene",t)}get updating(){return this._updatingHandles.updating||!!this._scaleRotate?.updating||!!this.snappingManager?.updating}get activeTooltipInfo(){return"mesh"===d(this.object)?.type?this._meshTooltipInfo:this._pointTooltipInfo}set location(t){this._moveManipulation.location=t,this._scaleRotate&&(this._scaleRotate.location=t)}set elevationAlignedLocation(t){this._moveManipulation.elevationAlignedLocation=t,this._scaleRotate&&(this._scaleRotate.elevationAlignedLocation=t)}reset(){}onActivate(){this.tooltip.hidden=!this.internallyEditable}onEditableChange(){this.internallyEditable||(this.tooltip.hidden=!0,this.tooltip.exitInputMode({focusOnView:!1}))}onHide(){this._scaleRotate?.cancelActiveAnimation()}_onScaleChanged(){null!=this._scaleRotate&&(this._moveManipulation.displayScale=this._scaleRotate.getScale())}_updateMoveAngle(){const{view:t}=this,e=2===t.state.viewingMode||t.scale<_;this._moveManipulation.angle=e?this._scaleRotateAdapter.angle:0}_onGeometryChanged(){c(this,this.object)}_enforceNonZeroSize(t){return t||this.view.state.camera.computeRenderPixelSizeAt(this._moveManipulation.renderLocation)}get test(){}};t([n({constructOnly:!0,nonNullable:!0})],U.prototype,"view",void 0),t([n({constructOnly:!0,nonNullable:!0})],U.prototype,"object",void 0),t([n({constructOnly:!0,nonNullable:!0})],U.prototype,"enableZ",void 0),t([n()],U.prototype,"enableRotation",void 0),t([n()],U.prototype,"enableScaling",void 0),t([n({constructOnly:!0,type:w})],U.prototype,"toolOptions",void 0),t([n({value:!1})],U.prototype,"snapToScene",null),t([n({constructOnly:!0})],U.prototype,"snappingManager",void 0),t([n({readOnly:!0})],U.prototype,"type",void 0),t([n({readOnly:!0})],U.prototype,"updating",null),t([n()],U.prototype,"activeTooltipInfo",null),U=t([s("esri.views.3d.interactive.editingTools.transform.TransformTool3D")],U);const E=Symbol();export{U as TransformTool3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{makeHandle as t}from"../../../../../../core/handleUtils.js";import{zeroMeters as e}from"../../../../../../core/quantity.js";import{rotateZ as o}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as i}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as n}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as a}from"../../../../../../core/support/UpdatingHandles.js";import r from"../../../../../../geometry/Point.js";import{sm4d as s,sv3d as p}from"../../../../../../geometry/support/vectorStacks.js";import{IsShiftEdgeOnScreenFlag as l}from"../../../../analysis/Slice/sliceToolUtils.js";import{screenToZConstrained as m}from"../../dragEventPipeline3D.js";import{MoveXYObjectManipulation as c}from"../../manipulations/MoveXYObjectManipulation.js";import{ShiftManipulator as u}from"../../../manipulators/ShiftManipulator.js";import{createManipulatorDragEventPipeline as d,addMapDelta as h,addScreenDelta as v}from"../../../../../interactive/dragEventPipeline.js";import{TranslateTooltipInfo as f}from"../../../../../interactive/tooltip/infos/TranslateTooltipInfo.js";import{TranslateZTooltipInfo as _}from"../../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{verticalSignedDistance as g}from"../../../../../support/euclideanLengthMeasurementUtils.js";import{GeometryWorkerHandle as M}from"../../../../../support/GeometryWorkerHandle.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}get updating(){return this._updatingHandles.updating}constructor(t,e){this._tool=t,this._bounds=e,this._moveXYTooltipInfo=null,this._moveZTooltipInfo=null,this._measurementWorker=new M({preloadGeodetic:!0}),this._updatingHandles=new a;const o=this._tool,i=o.view;this.moveXYObjectManipulation=new c({view:i,tool:o,object:this._object}),o.addHandles(this._createMoveXYObjectDragPipeline()),this.moveZManipulator=new u(i,0),this.moveZManipulator.state|=l,o.manipulators.add(this.moveZManipulator),o.addHandles(this._createMoveZDragPipeline()),o.addHandles(o.events.on("translate-stop",()=>{this._moveXYTooltipInfo=null,this._moveZTooltipInfo=null}))}destroy(){this.moveXYObjectManipulation.destroy(),this._tool.manipulators.remove(this.moveZManipulator),this.moveZManipulator.destroy(),this._measurementWorker.destroy(),this._updatingHandles.destroy()}forEachManipulator(t){this.moveXYObjectManipulation.forEachManipulator(t),t(this.moveZManipulator,0)}updateManipulators(t,e){const n=this.moveZManipulator,a=o(s.get(),t,Math.PI);a[12]=0,a[13]=0,a[14]=0,n.modelTransform=a,n.renderLocation=i(p.get(),e.origin,e.basis1)}getUpdatedTooltipInfo(){return this.moveXYObjectManipulation.grabbing||this.moveXYObjectManipulation.dragging?this._computeMoveXYTooltipInfo():this.moveZManipulator.focused?this._computeMoveZTooltipInfo():null}_computeMoveXYTooltipInfo(){const t=this._tool,o=this._moveXYTooltipInfo??=new f({sketchOptions:t.sketchOptions});if(this.moveXYObjectManipulation.dragging){const t=this._bounds,e=t.mapBoundsStart.origin,i=t.mapBounds.origin,n=t.spatialReference,a=new r({x:e[0],y:e[1],spatialReference:n}),s=new r({x:i[0],y:i[1],spatialReference:n});this._updatingHandles.consumePromise(this._measurementWorker.autoDistance2DBetweenPoints(a,s).then(t=>o.distance=t))}else o.distance=e;return o}_computeMoveZTooltipInfo(){const t=this._tool,o=this._moveZTooltipInfo??=new _({sketchOptions:t.sketchOptions});if(this.moveZManipulator.dragging){const e=this._bounds,i=e.mapBoundsStart.origin,n=e.mapBounds.origin,{renderSpatialReference:a}=t.view;if(!a)return null;const r=g(i,n,a);if(null==r)return null;o.distance=r}else o.distance=e;return o}_createMoveXYObjectDragPipeline(){return this.moveXYObjectManipulation.createDragPipeline((t,e,o)=>this._buildMoveDragPipeline(e,o))}_createMoveZDragPipeline(){if(!this._operations)return t();const e=this._operations.data.spatialReference;return d(this.moveZManipulator,(t,o,i)=>{const a=n(t.renderLocation),r=o.next(m(this._tool.view,a,e)).next(v());this._buildMoveDragPipeline(r,i)})}_buildMoveDragPipeline(t,e){const{_tool:o,_object:i}=this;t.next(t=>("start"===t.action&&(o.inputState={type:"move"},this._bounds.backupMapBounds(),o.events.emit("translate-start",{object:i,dxScreen:t.screenDeltaX,dyScreen:t.screenDeltaY})),t)).next(h()).next(this._updateGeometry()).next(t=>{const e={object:i,dxScreen:t.screenDeltaX,dyScreen:t.screenDeltaY};switch(t.action){case"start":case"update":(t.mapEnd.x-t.mapStart.x||t.mapEnd.y-t.mapStart.y||(t.mapEnd.z??0)-(t.mapStart.z??0))&&o.events.emit("translate",e);break;case"end":o.inputState=null,o.events.emit("translate-stop",e)}return t}),e.next(()=>{null!=o.inputState&&o.events.emit("translate-stop",{object:i,dxScreen:0,dyScreen:0}),o.cancelDrag()})}_updateGeometry(){const t=this._tool;return e=>{if(null==t.inputState||"move"!==t.inputState.type)return e;const o="start"===e.action?0:1;if(this._operations){const t=this._operations.move(e.mapDeltaX,e.mapDeltaY,e.mapDeltaZ,o);this._bounds.updateMapBoundsFromOperation(t)}return e}}}export{j as ExtentMove};
2
+ import{makeHandle as t}from"../../../../../../core/handleUtils.js";import{zeroMeters as e}from"../../../../../../core/quantity.js";import{rotateZ as o}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as i}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{clone as n}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as a}from"../../../../../../core/support/UpdatingHandles.js";import r from"../../../../../../geometry/Point.js";import{sm4d as s,sv3d as l}from"../../../../../../geometry/support/vectorStacks.js";import{IsShiftEdgeOnScreenFlag as p}from"../../../../analysis/Slice/sliceToolUtils.js";import{screenToZConstrained as m}from"../../dragEventPipeline3D.js";import{MoveXYObjectManipulation as u}from"../../manipulations/MoveXYObjectManipulation.js";import{ShiftManipulator as c}from"../../../manipulators/ShiftManipulator.js";import{createManipulatorDragEventPipeline as d,addMapDelta as h,addScreenDelta as v}from"../../../../../interactive/dragEventPipeline.js";import{TranslateTooltipInfo as f}from"../../../../../interactive/tooltip/infos/TranslateTooltipInfo.js";import{TranslateZTooltipInfo as _}from"../../../../../interactive/tooltip/infos/TranslateZTooltipInfo.js";import{verticalSignedDistance as g}from"../../../../../support/euclideanLengthMeasurementUtils.js";import{GeometryWorkerHandle as M}from"../../../../../support/GeometryWorkerHandle.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}get updating(){return this._updatingHandles.updating}constructor(t,e){this._tool=t,this._bounds=e,this._moveXYTooltipInfo=null,this._moveZTooltipInfo=null,this._measurementWorker=new M({preloadGeodetic:!0}),this._updatingHandles=new a;const o=this._tool,i=o.view;this.moveXYObjectManipulation=new u({view:i,tool:o,object:this._object}),o.addHandles(this._createMoveXYObjectDragPipeline()),this.moveZManipulator=new c(i,0),this.moveZManipulator.state|=p,o.manipulators.add(this.moveZManipulator),o.addHandles(this._createMoveZDragPipeline()),o.addHandles(o.events.on("translate-stop",()=>{this._moveXYTooltipInfo=null,this._moveZTooltipInfo=null}))}destroy(){this.moveXYObjectManipulation.destroy(),this._tool.manipulators.remove(this.moveZManipulator),this.moveZManipulator.destroy(),this._measurementWorker.destroy(),this._updatingHandles.destroy()}forEachManipulator(t){this.moveXYObjectManipulation.forEachManipulator(t),t(this.moveZManipulator,0)}updateManipulators(t,e){const n=this.moveZManipulator,a=o(s.get(),t,Math.PI);a[12]=0,a[13]=0,a[14]=0,n.modelTransform=a,n.renderLocation=i(l.get(),e.origin,e.basis1)}getUpdatedTooltipInfo(){return this.moveXYObjectManipulation.grabbing||this.moveXYObjectManipulation.dragging?this._computeMoveXYTooltipInfo():this.moveZManipulator.focused?this._computeMoveZTooltipInfo():null}_computeMoveXYTooltipInfo(){const t=this._tool,o=this._moveXYTooltipInfo??=new f({toolOptions:t.toolOptions});if(this.moveXYObjectManipulation.dragging){const t=this._bounds,e=t.mapBoundsStart.origin,i=t.mapBounds.origin,n=t.spatialReference,a=new r({x:e[0],y:e[1],spatialReference:n}),s=new r({x:i[0],y:i[1],spatialReference:n});this._updatingHandles.consumePromise(this._measurementWorker.autoDistance2DBetweenPoints(a,s).then(t=>o.distance=t))}else o.distance=e;return o}_computeMoveZTooltipInfo(){const t=this._tool,o=this._moveZTooltipInfo??=new _({toolOptions:t.toolOptions});if(this.moveZManipulator.dragging){const e=this._bounds,i=e.mapBoundsStart.origin,n=e.mapBounds.origin,{renderSpatialReference:a}=t.view;if(!a)return null;const r=g(i,n,a);if(null==r)return null;o.distance=r}else o.distance=e;return o}_createMoveXYObjectDragPipeline(){return this.moveXYObjectManipulation.createDragPipeline((t,e,o)=>this._buildMoveDragPipeline(e,o))}_createMoveZDragPipeline(){if(!this._operations)return t();const e=this._operations.data.spatialReference;return d(this.moveZManipulator,(t,o,i)=>{const a=n(t.renderLocation),r=o.next(m(this._tool.view,a,e)).next(v());this._buildMoveDragPipeline(r,i)})}_buildMoveDragPipeline(t,e){const{_tool:o,_object:i}=this;t.next(t=>("start"===t.action&&(o.inputState={type:"move"},this._bounds.backupMapBounds(),o.events.emit("translate-start",{object:i,dxScreen:t.screenDeltaX,dyScreen:t.screenDeltaY})),t)).next(h()).next(this._updateGeometry()).next(t=>{const e={object:i,dxScreen:t.screenDeltaX,dyScreen:t.screenDeltaY};switch(t.action){case"start":case"update":(t.mapEnd.x-t.mapStart.x||t.mapEnd.y-t.mapStart.y||(t.mapEnd.z??0)-(t.mapStart.z??0))&&o.events.emit("translate",e);break;case"end":o.inputState=null,o.events.emit("translate-stop",e)}return t}),e.next(()=>{null!=o.inputState&&o.events.emit("translate-stop",{object:i,dxScreen:0,dyScreen:0}),o.cancelDrag()})}_updateGeometry(){const t=this._tool;return e=>{if(null==t.inputState||"move"!==t.inputState.type)return e;const o="start"===e.action?0:1;if(this._operations){const t=this._operations.move(e.mapDeltaX,e.mapDeltaY,e.mapDeltaZ,o);this._bounds.updateMapBoundsFromOperation(t)}return e}}}export{j as ExtentMove};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{rad2deg as t}from"../../../../../../core/mathUtils.js";import{rotateX as e}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{add as o,copy as r}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{a as n}from"../../../../../../chunks/boundedPlane.js";import{create as s,intersectRay as i,getNormal as l}from"../../../../../../geometry/support/plane.js";import{sm4d as p,sv3d as u}from"../../../../../../geometry/support/vectorStacks.js";import{getRotateHeadingTexture as c}from"../../../../analysis/images/Factory.js";import{createRotatePlane as m}from"../../../../analysis/Slice/sliceToolUtils.js";import{calculateInputRotationTransform as d}from"../../../manipulatorUtils.js";import{screenToRenderPlane as h}from"../../dragEventPipeline3D.js";import{RotateManipulator as g}from"../../../manipulators/RotateManipulator.js";import{fromScreenNormalized as _}from"../../../../support/geometryUtils/ray.js";import{createManipulatorDragEventPipeline as f}from"../../../../../interactive/dragEventPipeline.js";import{ExtentRotateTooltipInfo as b}from"../../../../../interactive/tooltip/infos/ExtentRotateTooltipInfo.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}constructor(t,e,o){this._tool=t,this._bounds=e,this._snapRotation=o,this._rotateTooltipInfo=null,this._startAngle=0,this._endAngle=0;const r=this._tool,a=r.view,n=!a.stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this.rotateManipulator=new g(a,(t,e)=>c(a.stage.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:n})),r.addHandles([this.rotateManipulator.events.on("grab-changed",t=>this._onGrabChanged(t)),this._createRotateDragPipeline(this.rotateManipulator)]),r.manipulators.add(this.rotateManipulator),r.addHandles([r.events.on("rotate-start",t=>this._startAngle=t.angle),r.events.on("rotate",t=>this._endAngle=t.angle),r.events.on("rotate-stop",()=>{this._startAngle=0,this._endAngle=0})])}destroy(){this._tool.manipulators.remove(this.rotateManipulator),this.rotateManipulator.destroy()}forEachManipulator(t){t(this.rotateManipulator,3)}updateManipulators(t,r){const a=this._bounds.mapBounds.plane[2]<0?Math.PI:0,n=e(p.get(),t,a);n[12]=0,n[13]=0,n[14]=0,this.rotateManipulator.modelTransform=n,this.rotateManipulator.renderLocation=o(u.get(),r.origin,r.basis1)}getUpdatedTooltipInfo(){return this.rotateManipulator.focused?this._computeRotateTooltipInfo():null}_computeRotateTooltipInfo(){const t=this._rotateTooltipInfo??=new b({sketchOptions:this._tool.sketchOptions});return t.angle=this._startAngle-this._endAngle,t}_onGrabChanged({action:t,screenPoint:e}){const o=this._tool,r=this._bounds;if("start"!==t||!e)return;const a=m(r.displayBounds,o.view.renderCoordsHelper,1,s()),n=_(o.view.state.camera,e);i(a,n,u.get())&&(r.backupMapBounds(),o.inputState={type:"rotate",rotatePlane:a})}_createRotateDragPipeline(e){const{_tool:o,_object:r}=this;return f(e,(e,a,n)=>{const s=o.inputState;null!=s&&(a.next(t=>("start"===t.action&&o.events.emit("rotate-start",{object:r,angle:0}),t)).next(h(o.view,s.rotatePlane)).next(this._renderPlaneToAngle()).next(...this._snapRotation()).next(this._updateGeometry()).next(e=>{const a={object:r,angle:t(e.rotateAngle)};switch(e.action){case"start":case"update":o.events.emit("rotate",a);break;case"end":o.inputState=null,o.events.emit("rotate-stop",a)}return e}),n.next(()=>{null!=o.inputState&&o.events.emit("rotate-stop",{object:r,angle:0}),o.cancelDrag()}))})}_renderPlaneToAngle(){return t=>{const e=d(t.renderStart,t.renderEnd,this._bounds.displayBounds.origin,l(t.plane));return{...t,rotateAngle:e}}}_updateGeometry(){const t=this._bounds;return e=>{const o=r(a(),t.mapBoundsStart.origin),s="start"===e.action?0:1;if(this._operations){const r=this._operations.rotate(o,e.rotateAngle,s,1);n(t.mapBoundsStart,t.mapBounds),t.updateMapBoundsFromOperation(r)}return e}}}export{j as ExtentRotate};
2
+ import{rad2deg as t}from"../../../../../../core/mathUtils.js";import{rotateX as e}from"../../../../../../core/libs/gl-matrix-2/math/mat4.js";import{add as o,copy as r}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as a}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{a as n}from"../../../../../../chunks/boundedPlane.js";import{create as s,intersectRay as i,getNormal as l}from"../../../../../../geometry/support/plane.js";import{sm4d as p,sv3d as u}from"../../../../../../geometry/support/vectorStacks.js";import{getRotateHeadingTexture as m}from"../../../../analysis/images/Factory.js";import{createRotatePlane as c}from"../../../../analysis/Slice/sliceToolUtils.js";import{calculateInputRotationTransform as d}from"../../../manipulatorUtils.js";import{screenToRenderPlane as h}from"../../dragEventPipeline3D.js";import{RotateManipulator as g}from"../../../manipulators/RotateManipulator.js";import{fromScreenNormalized as _}from"../../../../support/geometryUtils/ray.js";import{createManipulatorDragEventPipeline as f}from"../../../../../interactive/dragEventPipeline.js";import{ExtentRotateTooltipInfo as b}from"../../../../../interactive/tooltip/infos/ExtentRotateTooltipInfo.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}constructor(t,e,o){this._tool=t,this._bounds=e,this._snapRotation=o,this._rotateTooltipInfo=null,this._startAngle=0,this._endAngle=0;const r=this._tool,a=r.view,n=!a.stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this.rotateManipulator=new g(a,(t,e)=>m(a.stage.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:n})),r.addHandles([this.rotateManipulator.events.on("grab-changed",t=>this._onGrabChanged(t)),this._createRotateDragPipeline(this.rotateManipulator)]),r.manipulators.add(this.rotateManipulator),r.addHandles([r.events.on("rotate-start",t=>this._startAngle=t.angle),r.events.on("rotate",t=>this._endAngle=t.angle),r.events.on("rotate-stop",()=>{this._startAngle=0,this._endAngle=0})])}destroy(){this._tool.manipulators.remove(this.rotateManipulator),this.rotateManipulator.destroy()}forEachManipulator(t){t(this.rotateManipulator,3)}updateManipulators(t,r){const a=this._bounds.mapBounds.plane[2]<0?Math.PI:0,n=e(p.get(),t,a);n[12]=0,n[13]=0,n[14]=0,this.rotateManipulator.modelTransform=n,this.rotateManipulator.renderLocation=o(u.get(),r.origin,r.basis1)}getUpdatedTooltipInfo(){return this.rotateManipulator.focused?this._computeRotateTooltipInfo():null}_computeRotateTooltipInfo(){const t=this._rotateTooltipInfo??=new b({toolOptions:this._tool.toolOptions});return t.angle=this._startAngle-this._endAngle,t}_onGrabChanged({action:t,screenPoint:e}){const o=this._tool,r=this._bounds;if("start"!==t||!e)return;const a=c(r.displayBounds,o.view.renderCoordsHelper,1,s()),n=_(o.view.state.camera,e);i(a,n,u.get())&&(r.backupMapBounds(),o.inputState={type:"rotate",rotatePlane:a})}_createRotateDragPipeline(e){const{_tool:o,_object:r}=this;return f(e,(e,a,n)=>{const s=o.inputState;null!=s&&(a.next(t=>("start"===t.action&&o.events.emit("rotate-start",{object:r,angle:0}),t)).next(h(o.view,s.rotatePlane)).next(this._renderPlaneToAngle()).next(...this._snapRotation()).next(this._updateGeometry()).next(e=>{const a={object:r,angle:t(e.rotateAngle)};switch(e.action){case"start":case"update":o.events.emit("rotate",a);break;case"end":o.inputState=null,o.events.emit("rotate-stop",a)}return e}),n.next(()=>{null!=o.inputState&&o.events.emit("rotate-stop",{object:r,angle:0}),o.cancelDrag()}))})}_renderPlaneToAngle(){return t=>{const e=d(t.renderStart,t.renderEnd,this._bounds.displayBounds.origin,l(t.plane));return{...t,rotateAngle:e}}}_updateGeometry(){const t=this._bounds;return e=>{const o=r(a(),t.mapBoundsStart.origin),s="start"===e.action?0:1;if(this._operations){const r=this._operations.rotate(o,e.rotateAngle,s,1);n(t.mapBoundsStart,t.mapBounds),t.updateMapBoundsFromOperation(r)}return e}}}export{j as ExtentRotate};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{set as t,normalize as e}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as s}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as a,scaleAndAdd as i,subtract as o,length as r,dot as n}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as p}from"../../../../../../core/support/UpdatingHandles.js";import{c as d,a as l}from"../../../../../../chunks/boundedPlane.js";import{intersectRay as u}from"../../../../../../geometry/support/plane.js";import{sv3d as h}from"../../../../../../geometry/support/vectorStacks.js";import{updateResizeHandle as m,isDiagonalResizeHandle as _,calculateDiagonalResizeHandleScale as f}from"../../../../analysis/Slice/sliceToolUtils.js";import{screenToRenderPlane as g}from"../../dragEventPipeline3D.js";import{mapPlaneAutoSize2D as y}from"./extentUtils.js";import{ResizeManipulator as x}from"../../../manipulators/ResizeManipulator.js";import{fromScreenNormalized as S}from"../../../../support/geometryUtils/ray.js";import{createManipulatorDragEventPipeline as M}from"../../../../../interactive/dragEventPipeline.js";import{ExtentScaleTooltipInfo as b}from"../../../../../interactive/tooltip/infos/ExtentScaleTooltipInfo.js";import{GeometryWorkerHandle as z}from"../../../../../support/GeometryWorkerHandle.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}get updating(){return this._updatingHandles.updating}get zMax(){if(!this._zMaxDirty||!this._operations)return this._zMax;const t=this._operations.data;if(t.geometry.hasZ){const e=t.coordinateHelper;this._zMax=Number.NEGATIVE_INFINITY;for(const s of t.parts)for(const t of s.vertices){const s=e.getZ(t.pos)??0;this._zMax=Math.max(s,this._zMax)}}else this._zMax=0;return this._zMaxDirty=!1,this._zMax}constructor(t,e,s){this._tool=t,this._bounds=e,this._preserveAspectRatioStep=s,this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._displayBoundsStart=d(),this._displayBoundsMarginStart=0,this._updatingHandles=new p,this._measurementWorker=new z({preloadGeodetic:!0}),this._zMax=0,this._zMaxDirty=!0;const a=this._tool,i=a.view;this.resizeManipulators=this._resizeHandles.map(t=>{const e=new x(i,t);return a.addHandles([e.events.on("grab-changed",t=>this._onGrabChanged(t)),this._createResizeDragPipeline(e,t)]),e}),a.manipulators.addMany(this.resizeManipulators),this._operations&&a.addHandles(this._operations.data.on("change",()=>{"resize"!==a.inputState?.type&&(this._zMaxDirty=!0)}))}destroy(){this.forEachManipulator(t=>{this._tool.manipulators.remove(t),t.destroy()}),this._measurementWorker.destroy(),this._updatingHandles.destroy()}forEachManipulator(t){this.resizeManipulators.forEach(e=>t(e,2))}updateManipulators(t,e){this.resizeManipulators.forEach((s,a)=>{m(s,this._resizeHandles[a],t,e)})}getUpdatedTooltipInfo(){if(!this.resizeManipulators.some(t=>t.focused))return null;const t=this._tooltipInfo??=new b({sketchOptions:this._tool.sketchOptions});return this.resizeManipulators.some(t=>t.dragging)||(t.xScale=1,t.yScale=1),this._updatingHandles.consumePromise(y(this._bounds.mapBounds,this.zMax,this._bounds.spatialReference,this._measurementWorker).then(({width:e,height:s})=>{t.xSize=e,t.ySize=s})),t}_onGrabChanged({action:t,screenPoint:e}){const s=this._tool,a=this._bounds;if("start"!==t||!e)return;const i=S(s.view.state.camera,e);u(a.displayBounds.plane,i,h.get())&&(a.backupMapBounds(),l(a.displayBounds,this._displayBoundsStart),this._displayBoundsMarginStart=a.displayBoundsMargin,s.inputState={type:"resize"})}_createResizeDragPipeline(t,e){const{_tool:s,_object:a}=this;return M(t,(t,i,o)=>{let r;null!=s.inputState&&(i.next(t=>("start"===t.action&&s.events.emit("scale-start",{object:a,xScale:1,yScale:1}),{...t,handle:e})).next(g(s.view,this._displayBoundsStart.plane)).next(this._renderPlaneToFactors()).next(...this._preserveAspectRatioStep()).next(t=>("end"===t.action&&r?[t.factor1,t.factor2]=r:r=[t.factor1,t.factor2],t)).next(this._updateGeometry()).next(t=>{const e=this._tooltipInfo;e&&(e.xScale=t.factor1,e.yScale=t.factor2);const i={object:a,xScale:t.factor1,yScale:t.factor2};switch(t.action){case"start":case"update":s.events.emit("scale",i);break;case"end":s.inputState=null,s.events.emit("scale-stop",i)}return t}),o.next(()=>{null!=s.inputState&&s.events.emit("scale-stop",{object:a,xScale:1,yScale:1}),s.cancelDrag()}))})}_renderPlaneToFactors(){const t=this._bounds;return e=>{const s=this._displayBoundsStart,c=e.handle.direction,p=t.displayBoundsMargin,d=this._displayBoundsMarginStart,l=a(h.get(),s.origin);i(l,l,s.basis1,-c[0]),i(l,l,s.basis2,-c[1]);const u=o(h.get(),e.renderEnd,l),m=o(h.get(),e.renderStart,l),g=_(e.handle),y=f(s),x=f(t.displayBounds)/y,S=(t,e)=>{if(0===t)return 1;let s=r(e),a=.5*t*n(e,u)/s;const i=a<0?-1:1;if(g){a+=(s-.5*t*n(e,m)/s)*i*x}const o=s<1.5*d?1:B;return s=Math.max(s-d,B),i>0&&(a-=p),i*Math.max(i*(a/s),o)};return{...e,factor1:S(c[0],s.basis1),factor2:S(c[1],s.basis2)}}}_updateGeometry(){const o=this._bounds;return r=>{const n=a(c(),o.mapBoundsStart.origin);i(n,n,o.mapBoundsStart.basis1,-r.handle.direction[0]),i(n,n,o.mapBoundsStart.basis2,-r.handle.direction[1]);const p=t(s(),o.mapBoundsStart.basis1[0],o.mapBoundsStart.basis1[1]);e(p,p);const d="start"===r.action?0:1;if(this._operations){const t=this._operations.scale(n,p,r.factor1,r.factor2,d,1);l(o.mapBoundsStart,o.mapBounds),o.updateMapBoundsFromOperation(t)}return r}}}const B=1e-6;export{j as ExtentScale,B as scaleEpsilon};
2
+ import{set as t,normalize as e}from"../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as s}from"../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as a,scaleAndAdd as o,subtract as i,length as r,dot as n}from"../../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as c}from"../../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{UpdatingHandles as p}from"../../../../../../core/support/UpdatingHandles.js";import{c as d,a as l}from"../../../../../../chunks/boundedPlane.js";import{intersectRay as u}from"../../../../../../geometry/support/plane.js";import{sv3d as h}from"../../../../../../geometry/support/vectorStacks.js";import{updateResizeHandle as m,isDiagonalResizeHandle as _,calculateDiagonalResizeHandleScale as f}from"../../../../analysis/Slice/sliceToolUtils.js";import{screenToRenderPlane as g}from"../../dragEventPipeline3D.js";import{mapPlaneAutoSize2D as y}from"./extentUtils.js";import{ResizeManipulator as x}from"../../../manipulators/ResizeManipulator.js";import{fromScreenNormalized as S}from"../../../../support/geometryUtils/ray.js";import{createManipulatorDragEventPipeline as M}from"../../../../../interactive/dragEventPipeline.js";import{ExtentScaleTooltipInfo as b}from"../../../../../interactive/tooltip/infos/ExtentScaleTooltipInfo.js";import{GeometryWorkerHandle as z}from"../../../../../support/GeometryWorkerHandle.js";class j{get _object(){return this._tool.object}get _operations(){return this._object.operations}get updating(){return this._updatingHandles.updating}get zMax(){if(!this._zMaxDirty||!this._operations)return this._zMax;const t=this._operations.data;if(t.geometry.hasZ){const e=t.coordinateHelper;this._zMax=Number.NEGATIVE_INFINITY;for(const s of t.parts)for(const t of s.vertices){const s=e.getZ(t.pos)??0;this._zMax=Math.max(s,this._zMax)}}else this._zMax=0;return this._zMaxDirty=!1,this._zMax}constructor(t,e,s){this._tool=t,this._bounds=e,this._preserveAspectRatioStep=s,this._resizeHandles=[{direction:[1,0]},{direction:[1,1]},{direction:[0,1]},{direction:[-1,1]},{direction:[-1,0]},{direction:[-1,-1]},{direction:[0,-1]},{direction:[1,-1]}],this._displayBoundsStart=d(),this._displayBoundsMarginStart=0,this._updatingHandles=new p,this._measurementWorker=new z({preloadGeodetic:!0}),this._zMax=0,this._zMaxDirty=!0;const a=this._tool,o=a.view;this.resizeManipulators=this._resizeHandles.map(t=>{const e=new x(o,t);return a.addHandles([e.events.on("grab-changed",t=>this._onGrabChanged(t)),this._createResizeDragPipeline(e,t)]),e}),a.manipulators.addMany(this.resizeManipulators),this._operations&&a.addHandles(this._operations.data.on("change",()=>{"resize"!==a.inputState?.type&&(this._zMaxDirty=!0)}))}destroy(){this.forEachManipulator(t=>{this._tool.manipulators.remove(t),t.destroy()}),this._measurementWorker.destroy(),this._updatingHandles.destroy()}forEachManipulator(t){this.resizeManipulators.forEach(e=>t(e,2))}updateManipulators(t,e){this.resizeManipulators.forEach((s,a)=>{m(s,this._resizeHandles[a],t,e)})}getUpdatedTooltipInfo(){if(!this.resizeManipulators.some(t=>t.focused))return null;const t=this._tooltipInfo??=new b({toolOptions:this._tool.toolOptions});return this.resizeManipulators.some(t=>t.dragging)||(t.xScale=1,t.yScale=1),this._updatingHandles.consumePromise(y(this._bounds.mapBounds,this.zMax,this._bounds.spatialReference,this._measurementWorker).then(({width:e,height:s})=>{t.xSize=e,t.ySize=s})),t}_onGrabChanged({action:t,screenPoint:e}){const s=this._tool,a=this._bounds;if("start"!==t||!e)return;const o=S(s.view.state.camera,e);u(a.displayBounds.plane,o,h.get())&&(a.backupMapBounds(),l(a.displayBounds,this._displayBoundsStart),this._displayBoundsMarginStart=a.displayBoundsMargin,s.inputState={type:"resize"})}_createResizeDragPipeline(t,e){const{_tool:s,_object:a}=this;return M(t,(t,o,i)=>{let r;null!=s.inputState&&(o.next(t=>("start"===t.action&&s.events.emit("scale-start",{object:a,xScale:1,yScale:1}),{...t,handle:e})).next(g(s.view,this._displayBoundsStart.plane)).next(this._renderPlaneToFactors()).next(...this._preserveAspectRatioStep()).next(t=>("end"===t.action&&r?[t.factor1,t.factor2]=r:r=[t.factor1,t.factor2],t)).next(this._updateGeometry()).next(t=>{const e=this._tooltipInfo;e&&(e.xScale=t.factor1,e.yScale=t.factor2);const o={object:a,xScale:t.factor1,yScale:t.factor2};switch(t.action){case"start":case"update":s.events.emit("scale",o);break;case"end":s.inputState=null,s.events.emit("scale-stop",o)}return t}),i.next(()=>{null!=s.inputState&&s.events.emit("scale-stop",{object:a,xScale:1,yScale:1}),s.cancelDrag()}))})}_renderPlaneToFactors(){const t=this._bounds;return e=>{const s=this._displayBoundsStart,c=e.handle.direction,p=t.displayBoundsMargin,d=this._displayBoundsMarginStart,l=a(h.get(),s.origin);o(l,l,s.basis1,-c[0]),o(l,l,s.basis2,-c[1]);const u=i(h.get(),e.renderEnd,l),m=i(h.get(),e.renderStart,l),g=_(e.handle),y=f(s),x=f(t.displayBounds)/y,S=(t,e)=>{if(0===t)return 1;let s=r(e),a=.5*t*n(e,u)/s;const o=a<0?-1:1;if(g){a+=(s-.5*t*n(e,m)/s)*o*x}const i=s<1.5*d?1:B;return s=Math.max(s-d,B),o>0&&(a-=p),o*Math.max(o*(a/s),i)};return{...e,factor1:S(c[0],s.basis1),factor2:S(c[1],s.basis2)}}}_updateGeometry(){const i=this._bounds;return r=>{const n=a(c(),i.mapBoundsStart.origin);o(n,n,i.mapBoundsStart.basis1,-r.handle.direction[0]),o(n,n,i.mapBoundsStart.basis2,-r.handle.direction[1]);const p=t(s(),i.mapBoundsStart.basis1[0],i.mapBoundsStart.basis1[1]);e(p,p);const d="start"===r.action?0:1;if(this._operations){const t=this._operations.scale(n,p,r.factor1,r.factor2,d,1);l(i.mapBoundsStart,i.mapBounds),i.updateMapBoundsFromOperation(t)}return r}}}const B=1e-6;export{j as ExtentScale,B as scaleEpsilon};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{colorVectorToColorAndOpacity as t}from"../../../core/colorUtils.js";import{invert as e}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as r,cross as o,transformMat4 as i,normalize as n}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{sv3d as c,sm4d as l}from"../../../geometry/support/vectorStacks.js";import{hydrateGeometry as a}from"../../../layers/graphics/hydratedFeatures.js";import{manipulatedObjectGeometry as s}from"./editingTools/manipulatedObjectUtils.js";import{computeCentroid as u}from"../layers/graphics/graphicUtils.js";import{ColorMaterial as m}from"../webgl-engine/materials/ColorMaterial.js";function g(e,r=4,o=!0){const i=t(e),n=e[3]<1;return new m({color:i,writeDepth:!n,cullFace:2,renderOccluded:r,isDecoration:!0,shadingEnabled:o})}function p(e,r=4){const o=t(e);return new m({color:o,writeDepth:!0,cullFace:1,renderOccluded:r,isDecoration:!0})}const f=Object.freeze({calloutLength:40,calloutWidth:1,discRadius:27,focusMultiplier:1.1}),d=Object.freeze({autoScaleRenderObjects:!1,worldSized:!0});function h(t,n,a,s){const u=r(c.get(),t,a),m=j(u,o(c.get(),s,u),a,l.get());e(m,m);const g=i(c.get(),n,m);return Math.atan2(g[1],g[0])}function j(t,e,r,i){const l=n(c.get(),t),a=n(c.get(),e),s=o(c.get(),l,a);return i[0]=l[0],i[1]=l[1],i[2]=l[2],i[3]=0,i[4]=a[0],i[5]=a[1],i[6]=a[2],i[7]=0,i[8]=s[0],i[9]=s[1],i[10]=s[2],i[11]=0,i[12]=r[0],i[13]=r[1],i[14]=r[2],i[15]=1,i}function b(t,e){const r=t.getViewForGraphic(e);return null!=r&&"computeAttachmentOrigin"in r?r.computeAttachmentOrigin(e,t.spatialReference):null}function O(t,e){const r=e.origin;null==r?w(t,s(e)):t.elevationAlignedLocation=r}function w(t,e){if(null==e)return;const r="mesh"===e.type?e.origin:u(e);null!=r&&(t.location=a(r))}export{h as calculateInputRotationTransform,j as calculateTranslateRotateFromBases,g as createManipulatorMaterial,p as createManipulatorOutlineMaterial,b as getGraphicAttachmentOrigin,O as placeAtObject,f as rotateManipulatorDefaults,d as worldScaledManipulatorSettings};
2
+ import{colorVectorToColorAndOpacity as e}from"../../../core/colorUtils.js";import{invert as t}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{subtract as o,cross as r,transformMat4 as n,normalize as i}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{sv3d as c,sm4d as l}from"../../../geometry/support/vectorStacks.js";import{hydrateGeometry as a}from"../../../layers/graphics/hydratedFeatures.js";import{manipulatedObjectGeometry as s}from"./editingTools/manipulatedObjectUtils.js";import{computeCentroid as u}from"../layers/graphics/graphicUtils.js";import{ColorMaterial as m}from"../webgl-engine/materials/ColorMaterial.js";function d(t,o=4,r=!0){const n=e(t),i=t[3]<1;return new m({color:n,writeDepth:!i,cullFace:2,renderOccluded:o,isDecoration:!0,shadingEnabled:r})}function f({color:e,focusedColor:t,outlineColor:o,focusedOutlineColor:r,renderOccluded:n=4,shaded:i=!0}){const c=d(e,n,i);let l,a;if(null!=o){l=g(r??o,n),a=g(o,n)}else{l=d(t??e,n,i),a=c}return{material:c,focusedMaterial:l,outlineMaterial:a}}function g(t,o=4){const r=e(t);return new m({color:r,writeDepth:!0,cullFace:1,renderOccluded:o,isDecoration:!0})}const p=Object.freeze({calloutLength:40,calloutWidth:1,discRadius:27,focusMultiplier:1.1}),h=Object.freeze({autoScaleRenderObjects:!1,worldSized:!0});function j(e,i,a,s){const u=o(c.get(),e,a),m=O(u,r(c.get(),s,u),a,l.get());t(m,m);const d=n(c.get(),i,m);return Math.atan2(d[1],d[0])}function O(e,t,o,n){const l=i(c.get(),e),a=i(c.get(),t),s=r(c.get(),l,a);return n[0]=l[0],n[1]=l[1],n[2]=l[2],n[3]=0,n[4]=a[0],n[5]=a[1],n[6]=a[2],n[7]=0,n[8]=s[0],n[9]=s[1],n[10]=s[2],n[11]=0,n[12]=o[0],n[13]=o[1],n[14]=o[2],n[15]=1,n}function b(e,t){const o=e.getViewForGraphic(t);return null!=o&&"computeAttachmentOrigin"in o?o.computeAttachmentOrigin(t,e.spatialReference):null}function w(e,t){const o=t.origin;null==o?y(e,s(t)):e.elevationAlignedLocation=o}function y(e,t){if(null==t)return;const o="mesh"===t.type?t.origin:u(t);null!=o&&(e.location=a(o))}export{j as calculateInputRotationTransform,O as calculateTranslateRotateFromBases,d as createManipulatorMaterial,f as createManipulatorMaterials,g as createManipulatorOutlineMaterial,b as getGraphicAttachmentOrigin,w as placeAtObject,p as rotateManipulatorDefaults,h as worldScaledManipulatorSettings};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as t}from"tslib";import"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{memoize as i}from"../../../../../core/memoize.js";import{when as n,syncAndInitial as a,watch as s}from"../../../../../core/reactiveUtils.js";import{property as r,subclass as o}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as l}from"../../../../../core/support/UpdatingHandles.js";import u from"../../../../../geometry/Point.js";import{clonePoint as p}from"../../../../../layers/graphics/hydratedFeatures.js";import{isPrimaryPointerAction as c}from"../../../analysis/support/measurementUtils.js";import{SnappingVisualizer3D as d}from"../../SnappingVisualizer3D.js";import{screenToMap3D as h,hideManipulatorWhileDragging as m}from"../../editingTools/dragEventPipeline3D.js";import{DirectLineMeasurement3DView as g}from"./DirectLineMeasurement3DView.js";import{getElevationAtPoint as v}from"../../../support/ElevationProvider.js";import{AnalysisToolBase as P}from"../../../../interactive/AnalysisToolBase.js";import{createCoordinateHelper as y}from"../../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as f,resetProperties as w}from"../../../../interactive/dragEventPipeline.js";import{EditGeometry as _}from"../../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as M}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as S}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as D}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as j}from"../../../../interactive/snapping/SnappingManagerPool.js";import{setupSnappingToggleHandles as b}from"../../../../interactive/snapping/snappingUtils.js";import{createScreenPointFromEvent as L}from"../../../../support/screenUtils.js";let x=class extends P{constructor(t){super(t),this._updatingHandles=new l,this._snappingManagerResult=null,this._emulatedDrag=null,this.lineState="initial",this.removeIncompleteOnCancel=!1,this.startPointSurfaceLocation=null,this.endPointSurfaceLocation=null,this.cursorPointSurfaceLocation=null,this.startManipulator=null,this.endManipulator=null,this.cursorManipulator=null,this._getSnappingContext=i(t=>new S({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new M(new _("point",y(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new d}))}initialize(){const{view:t,analysis:e,analysisViewData:i,visible:r}=this;this.measurementView=new g({toolState:this,view:t,analysis:e,analysisViewData:i,visible:r});const{start:o,end:l,cursor:c}=this.measurementView.createManipulators(),d=(t,e,i)=>{const n=f(t,(t,n,a,s)=>{const r=m(t),o=this._ensureSnappingManager(),l=this._getSnappingContext(s),c=this._updatingHandles,{lineState:d}=this;a=a.next(r).next(w(this,[i,e])).next(i=>{if("cursorPoint"!==e){const i=this.analysis[e];null!=i&&(t.location=i)}return i});const g=h(this.view),v=t=>{const n=g(t);return n||"drawing"!==this.lineState&&"initial"!==this.lineState||(this[e]=null,this[i]=null),n};let P=n.next(r).next(v);if("touch"!==s||"editing"===d){const{snappingStep:t,cancelSnapping:e}=D({snappingManager:o,snappingContext:l,updatingHandles:c});a.next(e),P=P.next(...t)}P.next(t=>"start"!==t.action?t:null).next(n=>{const a=p(n.mapEnd,new u);this[e]=a,t.location=a,this[i]=this._surfaceLocation(a,n.surfaceType)})});return"cursorPoint"===e?[n]:[n,t.events.on("grab-changed",()=>{const t=o.grabbing||l.grabbing;this.lineState=t?"editing":"measured"}),s(()=>this.analysis[e],e=>{e&&(t.location=e)})]};this.startManipulator=o,this.endManipulator=l,this.cursorManipulator=c,this.manipulators.add(o),this.manipulators.add(l),this.manipulators.add(c),this.addHandles([...d(o,"startPoint","startPointSurfaceLocation"),...d(l,"endPoint","endPointSurfaceLocation"),...d(c,"cursorPoint","cursorPointSurfaceLocation"),n(()=>"measured"===this.state,()=>{this.finishToolCreation(),this.active&&(this.view.activeTool=null)},a),s(()=>({startPointAvailable:null!=this.startPoint,endPointAvailable:null!=this.endPoint}),({startPointAvailable:t,endPointAvailable:e})=>{this.startManipulator.available=t,this.endManipulator.available=e},a)]),b(this)}destroy(){this._updatingHandles=e(this._updatingHandles),this.measurementView=e(this.measurementView)}get _snappingManager(){return this._snappingManagerResult?.snappingManager}_ensureSnappingManager(){if(null==this._snappingManagerResult){const t=j(this.view);this._snappingManagerResult=t,this.addHandles(t)}return this._snappingManagerResult.snappingManager}get state(){const{analysis:t}=this;if(null==t.startPoint&&null==t.endPoint)return"ready";const{lineState:e}=this;return this.validMeasurement&&"editing"!==e&&"drawing"!==e?"measured":"measuring"}get cursor(){return!this.active||"ready"!==this.state&&"measured"===this.lineState?null:"crosshair"}get startPoint(){return this.analysis.startPoint}set startPoint(t){this.analysis.startPoint=t}get endPoint(){return this.analysis.endPoint}set endPoint(t){this.analysis.endPoint=t}get cursorPoint(){return this.measurementView.cursorPoint}set cursorPoint(t){this.measurementView.cursorPoint=t}get snappingOptions(){return this._snappingManager?.options}get validMeasurement(){return null!=this.analysis.startPoint&&null!=this.analysis.endPoint}get updating(){return this._updatingHandles.updating||!!this._snappingManager?.updating}resetCreated(){super.resetCreated(),this.lineState="initial",this.cursorPoint=null,"measured"===this.state&&this.finishToolCreation()}onShow(){this.measurementView.show()}onHide(){this.measurementView.hide()}onDeactivate(){this._emulatedDrag?.cancel(),this._emulatedDrag=null}onInputEvent(t){switch(t.type){case"immediate-click":this._handleImmediateClick(t);break;case"pointer-move":this._handlePointerMove(t)}}_handlePointerMove(t){if(!this.active||this.view.navigating)return;const{pointerType:e}=t;if("mouse"!==e)return;const i=L(t),{lineState:n,cursorManipulator:a,endManipulator:s}=this;let r=!1;null==this.cursorPoint&&(this._emulatedDrag?.cancel(),this._emulatedDrag=V(a,e,i),r=!0),"initial"===n&&(this._emulatedDrag?.update(i),r=!0),"drawing"===n&&(s.events.emit("drag",{action:"update",start:i,screenPoint:i}),r=!0),r&&t.stopPropagation()}_handleImmediateClick(t){if(!this.active||!c(t))return;const e=L(t),{pointerType:i}=t,{cursorManipulator:n,startManipulator:a,endManipulator:s,lineState:r}=this;let o=!1;switch(null==this.cursorPoint&&(this._emulatedDrag?.cancel(),this._emulatedDrag=V(n,i,e)),r){case"initial":if(this._emulatedDrag?.update(e),null!=this.cursorPoint){this._emulatedDrag?.end(e),this._emulatedDrag=null,this.endPoint=null;const{cursorPoint:t}=this;this.startPoint=t,this.startPointSurfaceLocation=this.cursorPointSurfaceLocation,a.location=t,a.interactive=!1,s.interactive=!1,this.lineState="drawing",this._emulatedDrag=V(s,i,e),o=!0}break;case"drawing":this._emulatedDrag?.update(e),null!=this.endPoint&&(this._emulatedDrag?.end(e),this._emulatedDrag=null,a.interactive=!0,s.interactive=!0,this.lineState="measured",o=!0)}o&&t.stopPropagation()}_surfaceLocation(t,e){return 0===e?"on-the-surface":(t.z??0)>=this._getElevation(t)?"above-the-surface":"below-the-surface"}_getElevation(t){return this.view.groundView?.ready?v(this.view.elevationProvider,t)??0:0}get test(){}};function V(t,e,i){return t.events.emit("drag",{action:"start",pointerType:e,start:i,screenPoint:i}),{update:e=>t.events.emit("drag",{action:"update",start:e,screenPoint:e}),end:e=>t.events.emit("drag",{action:"end",start:e,screenPoint:e}),cancel:()=>t.events.emit("drag",{action:"cancel"})}}t([r()],x.prototype,"_snappingManagerResult",void 0),t([r()],x.prototype,"_snappingManager",null),t([r({readOnly:!0})],x.prototype,"state",null),t([r()],x.prototype,"lineState",void 0),t([r({readOnly:!0})],x.prototype,"cursor",null),t([r()],x.prototype,"startPoint",null),t([r()],x.prototype,"endPoint",null),t([r()],x.prototype,"cursorPoint",null),t([r({constructOnly:!0})],x.prototype,"analysis",void 0),t([r({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([r()],x.prototype,"measurementView",void 0),t([r()],x.prototype,"removeIncompleteOnCancel",void 0),t([r({constructOnly:!0})],x.prototype,"view",void 0),t([r({readOnly:!0})],x.prototype,"validMeasurement",null),t([r({value:null})],x.prototype,"startPointSurfaceLocation",void 0),t([r({value:null})],x.prototype,"endPointSurfaceLocation",void 0),t([r({value:null})],x.prototype,"cursorPointSurfaceLocation",void 0),t([r()],x.prototype,"updating",null),x=t([o("esri.views.3d.interactive.measurementTools.directLineMeasurement3D.DirectLineMeasurement3DTool")],x);const C=x;export{C as default};
2
+ import{__decorate as t}from"tslib";import"../../../../../core/has.js";import{destroyMaybe as e}from"../../../../../core/maybe.js";import{memoize as i}from"../../../../../core/memoize.js";import{when as n,syncAndInitial as a,watch as s}from"../../../../../core/reactiveUtils.js";import{property as r,subclass as o}from"../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as l}from"../../../../../core/support/UpdatingHandles.js";import u from"../../../../../geometry/Point.js";import{clonePoint as p}from"../../../../../layers/graphics/hydratedFeatures.js";import{isPrimaryPointerAction as c}from"../../../analysis/support/measurementUtils.js";import{SnappingVisualizer3D as d}from"../../SnappingVisualizer3D.js";import{screenToMap3D as h,hideManipulatorWhileDragging as m}from"../../editingTools/dragEventPipeline3D.js";import{DirectLineMeasurement3DView as g}from"./DirectLineMeasurement3DView.js";import{getElevationAtPoint as v}from"../../../support/ElevationProvider.js";import{AnalysisToolBase as P}from"../../../../interactive/AnalysisToolBase.js";import{createCoordinateHelper as y}from"../../../../interactive/coordinateHelper.js";import{createManipulatorDragEventPipeline as f,resetProperties as w}from"../../../../interactive/dragEventPipeline.js";import{EditGeometry as _}from"../../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as M}from"../../../../interactive/editGeometry/EditGeometryOperations.js";import{SnappingContext as S}from"../../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as D}from"../../../../interactive/snapping/SnappingDragPipelineStep.js";import{acquire as j}from"../../../../interactive/snapping/SnappingManagerPool.js";import{setupSnappingToggleHandles as b}from"../../../../interactive/snapping/snappingUtils.js";import{createScreenPointFromEvent as L}from"../../../../support/screenUtils.js";let x=class extends P{constructor(t){super(t),this._updatingHandles=new l,this._snappingManagerResult=null,this._emulatedDrag=null,this.lineState="initial",this.removeIncompleteOnCancel=!1,this.startPointSurfaceLocation=null,this.endPointSurfaceLocation=null,this.cursorPointSurfaceLocation=null,this.startManipulator=null,this.endManipulator=null,this.cursorManipulator=null,this._getSnappingContext=i(t=>new S({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new M(new _("point",y(!0,!1,this.view.spatialReference)),this.view.state.viewingMode),visualizer:new d}))}initialize(){const{view:t,analysis:e,analysisViewData:i,visible:r}=this;this.measurementView=new g({toolState:this,view:t,analysis:e,analysisViewData:i,visible:r});const{start:o,end:l,cursor:c}=this.measurementView.createManipulators(),d=(t,e,i)=>{const n=f(t,(t,n,a,s)=>{const r=m(t),o=this._ensureSnappingManager(),l=this._getSnappingContext(s),c=this._updatingHandles,{lineState:d}=this;a=a.next(r).next(w(this,[i,e])).next(i=>{if("cursorPoint"!==e){const i=this.analysis[e];null!=i&&(t.location=i)}return i});const g=h(this.view),v=t=>{const n=g(t);return n||"drawing"!==this.lineState&&"initial"!==this.lineState||(this[e]=null,this[i]=null),n};let P=n.next(r).next(v);if("touch"!==s||"editing"===d){const{snappingStep:t,cancelSnapping:e}=D({snappingManager:o,snappingContext:l,updatingHandles:c});a.next(e),P=P.next(...t)}P.next(t=>"start"!==t.action?t:null).next(n=>{const a=p(n.mapEnd,new u);this[e]=a,t.location=a,this[i]=this._surfaceLocation(a,n.surfaceType)})});return"cursorPoint"===e?[n]:[n,t.events.on("grab-changed",()=>{const t=o.grabbing||l.grabbing;this.lineState=t?"editing":"measured"}),this._updatingHandles.add(()=>this.analysis[e],e=>{e&&(t.location=e)})]};this.startManipulator=o,this.endManipulator=l,this.cursorManipulator=c,this.manipulators.add(o),this.manipulators.add(l),this.manipulators.add(c),this.addHandles([...d(o,"startPoint","startPointSurfaceLocation"),...d(l,"endPoint","endPointSurfaceLocation"),...d(c,"cursorPoint","cursorPointSurfaceLocation"),n(()=>"measured"===this.state,()=>{this.finishToolCreation(),this.active&&(this.view.activeTool=null)},a),s(()=>({startPointAvailable:null!=this.startPoint,endPointAvailable:null!=this.endPoint}),({startPointAvailable:t,endPointAvailable:e})=>{this.startManipulator.available=t,this.endManipulator.available=e},a)]),b(this)}destroy(){this._updatingHandles=e(this._updatingHandles),this.measurementView=e(this.measurementView)}get _snappingManager(){return this._snappingManagerResult?.snappingManager}_ensureSnappingManager(){if(null==this._snappingManagerResult){const t=j(this.view);this._snappingManagerResult=t,this.addHandles(t)}return this._snappingManagerResult.snappingManager}get state(){const{analysis:t}=this;if(null==t.startPoint&&null==t.endPoint)return"ready";const{lineState:e}=this;return this.validMeasurement&&"editing"!==e&&"drawing"!==e?"measured":"measuring"}get cursor(){return!this.active||"ready"!==this.state&&"measured"===this.lineState?null:"crosshair"}get startPoint(){return this.analysis.startPoint}set startPoint(t){this.analysis.startPoint=t}get endPoint(){return this.analysis.endPoint}set endPoint(t){this.analysis.endPoint=t}get cursorPoint(){return this.measurementView.cursorPoint}set cursorPoint(t){this.measurementView.cursorPoint=t}get snappingOptions(){return this._snappingManager?.options}get validMeasurement(){return null!=this.analysis.startPoint&&null!=this.analysis.endPoint}get updating(){return this._updatingHandles.updating||!!this._snappingManager?.updating}resetCreated(){super.resetCreated(),this.lineState="initial",this.cursorPoint=null,"measured"===this.state&&this.finishToolCreation()}onShow(){this.measurementView.show()}onHide(){this.measurementView.hide()}onDeactivate(){this._emulatedDrag?.cancel(),this._emulatedDrag=null}onInputEvent(t){switch(t.type){case"immediate-click":this._handleImmediateClick(t);break;case"pointer-move":this._handlePointerMove(t)}}_handlePointerMove(t){if(!this.active||this.view.navigating)return;const{pointerType:e}=t;if("mouse"!==e)return;const i=L(t),{lineState:n,cursorManipulator:a,endManipulator:s}=this;let r=!1;null==this.cursorPoint&&(this._emulatedDrag?.cancel(),this._emulatedDrag=V(a,e,i),r=!0),"initial"===n&&(this._emulatedDrag?.update(i),r=!0),"drawing"===n&&(s.events.emit("drag",{action:"update",start:i,screenPoint:i}),r=!0),r&&t.stopPropagation()}_handleImmediateClick(t){if(!this.active||!c(t))return;const e=L(t),{pointerType:i}=t,{cursorManipulator:n,startManipulator:a,endManipulator:s,lineState:r}=this;let o=!1;switch(null==this.cursorPoint&&(this._emulatedDrag?.cancel(),this._emulatedDrag=V(n,i,e)),r){case"initial":if(this._emulatedDrag?.update(e),null!=this.cursorPoint){this._emulatedDrag?.end(e),this._emulatedDrag=null,this.endPoint=null;const{cursorPoint:t}=this;this.startPoint=t,this.startPointSurfaceLocation=this.cursorPointSurfaceLocation,a.location=t,a.interactive=!1,s.interactive=!1,this.lineState="drawing",this._emulatedDrag=V(s,i,e),o=!0}break;case"drawing":this._emulatedDrag?.update(e),null!=this.endPoint&&(this._emulatedDrag?.end(e),this._emulatedDrag=null,a.interactive=!0,s.interactive=!0,this.lineState="measured",o=!0)}o&&t.stopPropagation()}_surfaceLocation(t,e){return 0===e?"on-the-surface":(t.z??0)>=this._getElevation(t)?"above-the-surface":"below-the-surface"}_getElevation(t){return this.view.groundView?.ready?v(this.view.elevationProvider,t)??0:0}get test(){}};function V(t,e,i){return t.events.emit("drag",{action:"start",pointerType:e,start:i,screenPoint:i}),{update:e=>t.events.emit("drag",{action:"update",start:e,screenPoint:e}),end:e=>t.events.emit("drag",{action:"end",start:e,screenPoint:e}),cancel:()=>t.events.emit("drag",{action:"cancel"})}}t([r()],x.prototype,"_snappingManagerResult",void 0),t([r()],x.prototype,"_snappingManager",null),t([r({readOnly:!0})],x.prototype,"state",null),t([r()],x.prototype,"lineState",void 0),t([r({readOnly:!0})],x.prototype,"cursor",null),t([r()],x.prototype,"startPoint",null),t([r()],x.prototype,"endPoint",null),t([r()],x.prototype,"cursorPoint",null),t([r({constructOnly:!0})],x.prototype,"analysis",void 0),t([r({constructOnly:!0})],x.prototype,"analysisViewData",void 0),t([r()],x.prototype,"measurementView",void 0),t([r()],x.prototype,"removeIncompleteOnCancel",void 0),t([r({constructOnly:!0})],x.prototype,"view",void 0),t([r({readOnly:!0})],x.prototype,"validMeasurement",null),t([r({value:null})],x.prototype,"startPointSurfaceLocation",void 0),t([r({value:null})],x.prototype,"endPointSurfaceLocation",void 0),t([r({value:null})],x.prototype,"cursorPointSurfaceLocation",void 0),t([r()],x.prototype,"updating",null),x=t([o("esri.views.3d.interactive.measurementTools.directLineMeasurement3D.DirectLineMeasurement3DTool")],x);const C=x;export{C as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../../../core/Accessor.js";import{equals as i}from"../../../../../../core/arrayUtils.js";import{property as r,subclass as s}from"../../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as o}from"../../../../../../core/support/UpdatingHandles.js";import{create as n}from"../../../../../../geometry/support/aaBoundingRect.js";import{TileKey as l}from"../../../../../../layers/support/TileKey.js";import{distanceToTile as p}from"../../../../../interactive/snapping/featureSources/featureServiceSource/tileUtils.js";let a=class extends t{get _sortedTilesCoveringView(){const e=(this.view.featureTiles?.tiles?.toArray()??[]).map(u),t=this._effectivePointOfInterest;return null!=t&&e.sort((e,i)=>p(t,e)-p(t,i)),e}get tileInfo(){return this.view.featureTiles?.tilingScheme?.toTileInfo()??null}get tileSize(){return this.view.featureTiles?.tileSize??256}get _effectivePointOfInterest(){const e=this.pointOfInterest;return null!=e?e:this.view.pointsOfInterest?.focus?.location}get updating(){return!this.view.featureTiles||this._updatingHandles.updating}constructor(e){super(e),this.tiles=[],this.pointOfInterest=null,this._updatingHandles=new o}destroy(){this._updatingHandles.destroy()}initialize(){this.addHandles(this.view.enableFeatureTiles()),this._updatingHandles.add(()=>this._sortedTilesCoveringView,e=>this._set("tiles",e),{initial:!0,equals:(e,t)=>i(e,t,(e,t)=>e.id===t.id)})}};function u({lij:[e,t,i],extent:r}){return new l(e,t,i,r??n())}e([r({readOnly:!0})],a.prototype,"tiles",void 0),e([r({readOnly:!0})],a.prototype,"_sortedTilesCoveringView",null),e([r({readOnly:!0})],a.prototype,"tileInfo",null),e([r({readOnly:!0})],a.prototype,"tileSize",null),e([r({constructOnly:!0})],a.prototype,"view",void 0),e([r()],a.prototype,"pointOfInterest",void 0),e([r()],a.prototype,"_effectivePointOfInterest",null),e([r()],a.prototype,"updating",null),a=e([s("esri.views.3d.interactive.snapping.featureSources.featureServiceSource.FeatureServiceTiles3D")],a);export{a as FeatureServiceTiles3D};
2
+ import{__decorate as e}from"tslib";import t from"../../../../../../core/Accessor.js";import{equals as i}from"../../../../../../core/arrayUtils.js";import{property as r,subclass as s}from"../../../../../../core/accessorSupport/decorators.js";import{UpdatingHandles as o}from"../../../../../../core/support/UpdatingHandles.js";import{create as n}from"../../../../../../geometry/support/aaBoundingRect.js";import{TileKey as l}from"../../../../../../layers/support/TileKey.js";import{distanceToTile as p}from"../../../../../interactive/snapping/featureSources/featureServiceSource/tileUtils.js";let a=class extends t{get _sortedTilesCoveringView(){const e=(this.view.featureTiles?.tiles?.toArray()??[]).map(u),t=this._effectivePointOfInterest;return null!=t&&e.sort((e,i)=>p(t,e)-p(t,i)),e}get tileInfo(){return this.view.featureTiles?.tilingScheme?.toTileInfo()??null}get tileSize(){return this.view.featureTiles?.tileSize??256}get _effectivePointOfInterest(){const e=this.pointOfInterest;return null!=e?e:this.view.pointsOfInterest?.focus?.location}get updating(){return this.view.featureTiles?.updating||this._updatingHandles.updating}constructor(e){super(e),this.tiles=[],this.pointOfInterest=null,this._updatingHandles=new o}destroy(){this._updatingHandles.destroy()}initialize(){this.addHandles(this.view.enableFeatureTiles()),this._updatingHandles.add(()=>this._sortedTilesCoveringView,e=>this._set("tiles",e),{initial:!0,equals:(e,t)=>i(e,t,(e,t)=>e.id===t.id)})}};function u({lij:[e,t,i],extent:r}){return new l(e,t,i,r??n())}e([r({readOnly:!0})],a.prototype,"tiles",void 0),e([r({readOnly:!0})],a.prototype,"_sortedTilesCoveringView",null),e([r({readOnly:!0})],a.prototype,"tileInfo",null),e([r({readOnly:!0})],a.prototype,"tileSize",null),e([r({constructOnly:!0})],a.prototype,"view",void 0),e([r()],a.prototype,"pointOfInterest",void 0),e([r()],a.prototype,"_effectivePointOfInterest",null),e([r()],a.prototype,"updating",null),a=e([s("esri.views.3d.interactive.snapping.featureSources.featureServiceSource.FeatureServiceTiles3D")],a);export{a as FeatureServiceTiles3D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{abortMaybe as i,removeMaybe as s,destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{watch as n,initial as l}from"../../../core/reactiveUtils.js";import{unitFromRESTJSON as o,convertUnit as h}from"../../../core/units.js";import{property as d,subclass as u}from"../../../core/accessorSupport/decorators.js";import{fromValues as c}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{getReferenceEllipsoid as p}from"../../../geometry/ellipsoidUtils.js";import m from"../../../geometry/HeightModelInfo.js";import{create as f}from"../../../geometry/support/aaBoundingBox.js";import{isCompatible as g}from"../../../geometry/support/heightModelInfoUtils.js";import{isPlateCarree as _,isWebMercator as y,equals as w,isGeographic as b}from"../../../geometry/support/spatialReferenceUtils.js";import v from"../../../geometry/support/WKIDUnitConversion.js";import{validateMeshData as S,makeCacheKey as C,getHeightModelInfoFromVCS as x}from"../../../layers/support/tiles3DUtils.js";import{getElevationOffsetInMeters as M}from"../../../support/elevationInfoUtils.js";import{getMetersPerUnit as T}from"../../../symbols/support/unitConversionUtils.js";import{GaussianSplatLayerViewPerformanceInfo as H}from"./GaussianSplatLayerViewPerformanceInfo.js";import{LayerView3D as I}from"./LayerView3D.js";import{addLayerViewToWasm as A,getLyr3DWasm as F,removeLayerViewFromWasm as P}from"./Lyr3DWasm.js";import{LayerElevationProvider as R}from"./i3s/LayerElevationProvider.js";import{ElevationRange as V}from"../support/ElevationRange.js";import{projectToBoundingBox as j}from"../support/extentUtils.js";import{Obb as E}from"../support/orientedBoundingBox.js";import{splatPageSizeInU32 as G,gaussiansPerPage as O,packedGaussianSizeInU32 as U,splatAtlasTextureWidth as D}from"../support/gaussianSplatting/GaussianSplatAtlasPages.js";import{GaussianSplatDataStore as z}from"../support/gaussianSplatting/GaussianSplatDataStore.js";import{GaussianSplatFadeHelper as B}from"../support/gaussianSplatting/GaussianSplatFadeHelper.js";import{GaussianSplatIntersectionHandler as L}from"../support/gaussianSplatting/GaussianSplatIntersectionHandler.js";import{GaussianTile as k}from"../support/gaussianSplatting/GaussianTile.js";import{GaussianSplatDepthRenderer as q}from"../webgl-engine/lib/GaussianSplatDepthRenderer.js";import{GaussianSplatRenderer as W}from"../webgl-engine/lib/GaussianSplatRenderer.js";import{GaussianSplatShadows as N}from"../webgl-engine/lib/GaussianSplatShadows.js";import $ from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as X,isInEffectiveScaleRange as Z}from"../../support/layerViewUtils.js";import{TaskPriority as K}from"../../support/Scheduler.js";var Y;const J=()=>t.getLogger("esri.views.3d.layers.GaussianSplatLayerView3D"),Q=3,ee=Q*Q,te=255,ie=(()=>{const e=new Int16Array(te+1);e[0]=-255;for(let t=1;t<e.length;t++)e[t]=Math.round(16*Math.log(t/te));return e})();let se=class extends(I($)){static{Y=this}static{this.createRenderableBatchSize=64}constructor(e){super(e),this.type="gaussian-splat-3d",this.ignoresMemoryFactor=!1,this._tileHandles=new Map,this._pageBuffer=new Uint32Array(G),this._tmpTilesWithChangedVisibility=new Array,this._renderablesBeingCreated=new Set,this._currentLyr3dVisibilityChange=0,this._tileFadeInsAwaitingInitialSort=new Map,this._tileFadeOutsAwaitingInitialSort=new Map,this._fadeDurationPerVisibilityChange=new Map,this._tmpSortedTileHandles=new Set,this._createRenderableAbortController=new AbortController,this._initializationController=null,this._wasmLayerId=-1,this._metersPerVCSUnit=1,this._usedTileMemory=0,this._cacheTileMemory=0,this._useEsriCrs=!1,this.fullExtentInLocalViewSpatialReference=null,this._suspendedHandle=null,this._conversionBuffer=new ArrayBuffer(4),this._u32View=new Uint32Array(this._conversionBuffer),this._f32View=new Float32Array(this._conversionBuffer);const t=e.view.resourceController;this._memCache=t.memoryController.newCache(`GaussianSplat-${this.uid}`,e=>this._deleteTile(e)),this._frameTask=t.scheduler.registerTask(K.GAUSSIAN_SPLAT_TEXTURE_ATLAS)}get _clippingBox(){if(!this.view?.clippingArea)return null;const e=f();return j(this.view.clippingArea,e,this.view.renderSpatialReference)?e:null}get clippingBox(){return this._renderer?.clippingBox??null}initialize(){if(!this._canProjectWithoutEngine())throw X("layer",this.layer.spatialReference.wkid,this.view.renderSpatialReference?.wkid);this._initializationController=new AbortController;const e=A(this,this._initializationController.signal).then(e=>{a(this._initializationController.signal),this._wasmLayerId=e,this._renderer=new W({view:this.view,layerView:this}),this.data=new z(this._renderer,(e,t)=>this._onSortComplete(e,t),()=>this._freeInvisibleTiles()),this._shadows=new N({view:this.view,layerView:this}),this.fadeHelper=new B(this),this._depthRenderer=new q({view:this.view,layerView:this}),this._intersectionHandler=new L(this),this.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler),this._elevationProvider=new R({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this.view.elevationProvider.register(2,this._elevationProvider),this.addHandles([n(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),n(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChanged(e),l)]),this._suspendedHandle=n(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),l),this.addHandles([n(()=>this._clippingBox,e=>{this._renderer&&(this._renderer.clippingBox=e)},l)]),this.setMaximumGaussianCount(this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians),this._initializationController=null});this.addHandles([n(()=>this.view.qualitySettings.fadeDuration,e=>{this.data&&(this.fadeHelper.onFadeDurationChanged(e),this.updateFadingTexture())}),n(()=>this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians,e=>this.setMaximumGaussianCount(e*this.view.quality)),n(()=>this.view.quality,e=>this.setMaximumGaussianCount(this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians*e))]),this.addResolvingPromise(e)}get wasmLayerId(){return this._wasmLayerId}get metersPerVCSUnit(){return this._metersPerVCSUnit}get tileHandles(){return this._tileHandles}updateFadingTexture(){this.data.fadingTexture.updateTexture(this.data.textureAtlas.pageAllocator.pageCount)}get _wasm(){return F(this.view)}get usedMemory(){return this._usedTileMemory+(this.data?.usedMemory??0)}get cachedMemory(){return this._cacheTileMemory}get unloadedMemory(){return 0}get useEsriCrs(){return this._useEsriCrs}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return M(this.layer.elevationInfo)}get elevationRange(){const e=this.fullExtent;return e?.zmin&&e?.zmax?new V(e.zmin,e.zmax):null}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get fullExtent(){return this.layer.fullExtent}get visibleAtCurrentScale(){return Z(this.layer.effectiveScaleRange,this.view.scale)}isUpdating(){const e=this._wasm;return!(this._wasmLayerId<0||null==e)&&(e.isUpdating(this._wasmLayerId)||this.data.updating||this.fadeHelper.updating)}updatingFlagChanged(){this.notifyChange("updating")}async createRenderable(e){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy");const{meshData:t}=e;if(!S(t))throw new Error("meshData not valid");const i=t.desc.prims[0],s=i.vertexCount;if(0===s)return J().warnOnce("encountered tile with zero Gaussians"),()=>({memUsageBytes:0,numGaussians:0});const r=i.atrbs[0].view,a=i.atrbs[0].view.byteCount,n=i.atrbs[0].view.byteOffset;let l=null;if("U32"!==r.type)throw new Error("unexpected meshData.data format");l=new Uint32Array(t.data.buffer,n,a/4);const o=this.extractHeader(l),h=2.048,d=o.tileOrigin.x*h,u=o.tileOrigin.y*h,m=o.tileOrigin.z*h,f=t.desc;if(null==f.obb)throw new Error("meshData.desc.obb undefined");const g=f.obb.quaternion,_=new E(f.obb.center,f.obb.halfSize,c(...g)),y=this.view.state.isGlobal,w=y?p(this.view.spatialReference).radius:0,b={handle:e.handle,bufferView:l,totalGaussians:s,packedHeader:o.packedHeader,tileOrigin:{x:d,y:u,z:m},invPosScale:o.invPosScale,obb:_,origin:{x:_.centerX,y:_.centerY,z:_.centerZ},isGlobal:y,ellipsoidRadius:w};let v;this._renderablesBeingCreated.add(e.handle);try{v=await this._frameTask.scheduleGenerator(e=>this._createRenderableTask(b,e),this._createRenderableAbortController.signal)}catch(C){throw this._renderablesBeingCreated.delete(e.handle),C}return this._renderablesBeingCreated.delete(e.handle),()=>v}*_createRenderableTask(e,t){const{handle:i,bufferView:s,totalGaussians:r,packedHeader:a,tileOrigin:n,invPosScale:l,obb:o,origin:h,isGlobal:d,ellipsoidRadius:u}=e,c=n.x,p=n.y,m=n.z,f=h.x,g=h.y,_=h.z,y=new Uint32Array(r),w=new Float32Array(3*r),b=new Uint32Array(r),v=new Uint32Array(r),S=new Array,C=Math.ceil(r/O);let x=1/0,M=-1/0,T=1/0,H=-1/0,I=0,A=-1,F=0,P=0;for(let V=0;V<r;V++){const e=V*U,i=s[e],r=s[e+1],a=s[e+2],n=s[e+3],o=16383&r,h=r>>>14&16383,u=r>>>28&15|(1023&a)<<4,y=n>>>24,S=ie[y],C=(a>>>10&255)+S,R=(a>>>18&255)+S,j=(a>>>26&63|(3&n)<<6)+S,E=C>0?C:0,G=R>0?R:0,O=j>0?j:0,D=E|G<<8|O<<16,z=Math.max(E,G,O),B=o*l+c,L=h*l+p,k=u*l+m;if(w[I]=B-f,w[I+1]=L-g,w[I+2]=k-_,d){const e=B*B+L*L+k*k;T=Math.min(T,e),H=Math.max(H,e)}else x=Math.min(x,k),M=Math.max(M,k);b[V]=i,v[V]=D,z>A&&(A=z),y>F&&(F=y),I+=3,P++,P===Y.createRenderableBatchSize&&(P=0,t.madeProgress()&&(t=yield))}P>0&&t.madeProgress(),d&&(x=Math.sqrt(T)-u,M=Math.sqrt(H)-u);const R=this._extractGaussianSplatMbsRadiusSquared(A),{fullExtent:j}=this.layer;j?.hasZ&&j.zmax&&j.zmin&&(x=Math.max(x,j.zmin),M=Math.min(M,j.zmax));const E=new V(x,M);try{for(let e=0;e<C;e++){let t=this.data.textureAtlas.allocatePage();if(null===t&&(this._freeInvisibleTiles(),t=this.data.textureAtlas.allocatePage()),null===t)throw new Error("ran out of gaussian splat memory");S.push(t);const i=r-e*O,n=Math.min(i,O),l=e*O,o=t*O;for(let e=0;e<n;e++)y[l+e]=o+e;const h=e*G,d=n*U;this._pageBuffer.set(s.subarray(h,h+d));const u=o%D,c=Math.floor(o/D);this.data.textureAtlas.update(u,c,this._pageBuffer),this.data.headerTexture.update(t,a)}}catch(B){throw this.data.textureAtlas.freePages(S),B}const z=new k(i,o,y,S,w,b,v,r,R,F/te,E);return this._tileHandles.set(i,z),this._cacheTileMemory+=z.usedMemory,this._memCache.put(`${z.handle}`,z),{memUsageBytes:z.usedMemory,numGaussians:r}}_extractGaussianSplatMbsRadiusSquared(e){return Math.exp(e/8-20)*ee}freeRenderable(e){this._tileFadeInsAwaitingInitialSort.delete(e),this._tileFadeOutsAwaitingInitialSort.delete(e);const t=this.data?.textureAtlas;let i=!1;const s=this._tileHandles.get(e);if(s){0!==s.lifecycleState?(i=!0,this.fadeHelper.onTileDiscarded(s),this._usedTileMemory-=s.usedMemory,this._intersectionHandler.removeTile(s)):this._cacheTileMemory-=s.usedMemory,t&&s.pageIds.forEach(e=>t.freePage(e)),this.freeObject(s),this._tileHandles.delete(e)}i&&this.updateGaussians()}freeObject(e){this._memCache.pop(`${e.handle}`)}notifyTileObbsChanged(e){this._elevationProvider&&this._elevationProvider.notifyObjectsChangedFunctional(e.length,t=>{for(const{obb:i}of e)if(!t(i))break})}setRenderableVisibility(e,t,i){const s=this._currentLyr3dVisibilityChange+1,r=this.fadeHelper.updateFadeDuration();this._fadeDurationPerVisibilityChange.set(s,r);let a=!1;for(let n=0;n<i;n++){const i=this._tileHandles.get(e[n]);if(!i)continue;const l=t[n]?this._prepareTileFadeIn(i,s,r):this._prepareTileFadeOut(i,s);a||=l}a?(this._currentLyr3dVisibilityChange=s,this.updateGaussians()):this._fadeDurationPerVisibilityChange.delete(s)}_prepareTileFadeIn(e,t,i){const s=this._tileFadeOutsAwaitingInitialSort.delete(e.handle);return 2===e.lifecycleState?(this.fadeHelper.fadeTile(e,0,i),!1):this._tileFadeInsAwaitingInitialSort.get(e.handle)!==t?(0===e.lifecycleState&&this._popTileFromCache(e),e.lifecycleState=1,this._tileFadeInsAwaitingInitialSort.set(e.handle,t),!0):s}_prepareTileFadeOut(e,t){const i=this._tileFadeInsAwaitingInitialSort.delete(e.handle);return i&&1===e.lifecycleState&&(this.moveTileToCache(e),e.lifecycleState=0),2!==e.lifecycleState?i:this._tileFadeOutsAwaitingInitialSort.get(e.handle)!==t?(this._tileFadeOutsAwaitingInitialSort.set(e.handle,t),!0):i}_onSortComplete(e,t){const i=this._tmpTilesWithChangedVisibility;i.length=0;const s=this._tmpSortedTileHandles;s.clear();for(let a=0;a<e.length;a++){const t=e[a];s.add(t.handle)}this._triggerFadeIns(t,s,i);const r=this._triggerFadeOuts(t,i);s.clear(),i.length>0&&this.notifyTileObbsChanged(i),r&&this.updateGaussians(),this._cleanupVisibilityChangeFadeDurations(t)}_triggerFadeIns(e,t,i){for(const[s,r]of this._tileFadeInsAwaitingInitialSort){if(r>e||!t.has(s))continue;const a=this._tileHandles.get(s);if(!a){this._tileFadeInsAwaitingInitialSort.delete(s);continue}const n=this._getFadeDurationForPendingVisibilityChange(r),l=0===a.lifecycleState;2!==a.lifecycleState&&(a.lifecycleState=2,l&&this._popTileFromCache(a),i.push(a)),this.fadeHelper.fadeTile(a,0,n),this._tileFadeInsAwaitingInitialSort.delete(s)}}_triggerFadeOuts(e,t){let i=!1;for(const[s,r]of this._tileFadeOutsAwaitingInitialSort){if(r>e)continue;const a=this._tileHandles.get(s);if(a){const e=2===a.lifecycleState,s=this._getFadeDurationForPendingVisibilityChange(r);this.fadeHelper.fadeTile(a,1,s),e&&0===a.lifecycleState&&(t.push(a),i=!0)}this._tileFadeOutsAwaitingInitialSort.delete(s)}return i}_getFadeDurationForPendingVisibilityChange(e){return this._fadeDurationPerVisibilityChange.get(e)??this.fadeHelper.baseFadeDuration}_cleanupVisibilityChangeFadeDurations(e){if(0!==this._fadeDurationPerVisibilityChange.size)for(const t of this._fadeDurationPerVisibilityChange.keys())t<=e&&this._fadeDurationPerVisibilityChange.delete(t)}_popTileFromCache(e){this._usedTileMemory+=e.usedMemory,this._cacheTileMemory-=e.usedMemory,this._intersectionHandler.addTile(e),this._memCache.pop(C(e.handle))}moveTileToCache(e){this._usedTileMemory-=e.usedMemory,this._cacheTileMemory+=e.usedMemory,this._intersectionHandler.removeTile(e),this._memCache.put(C(e.handle),e)}destroy(){this._initializationController=i(this._initializationController),this._createRenderableAbortController.abort(),P(this),this._suspendedHandle&&(this._suspendedHandle=s(this._suspendedHandle)),this._intersectionHandler&&(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null),this._elevationProvider&&this.view.elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(this._tileHandles.size,e=>{for(const{obb:t}of this._tileHandles.values())if(!e(t))break}),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._frameTask.remove(),this._shadows=r(this._shadows),this._depthRenderer=r(this._depthRenderer),this._renderer=r(this._renderer),this._memCache.destroy(),this.data=r(this.data)}_canProjectWithoutEngine(){if(1===this.view.state.viewingMode)return!0;if(_(this.view.renderSpatialReference)||y(this.view.renderSpatialReference))return!0;if(this.layer.esriCrsSpatialReference&&w(this.layer.esriCrsSpatialReference,this.view.renderSpatialReference)){if(115700===this.layer.esriCrsSpatialReference.vcsWkid)return!1;let e=x(this.layer.esriCrsSpatialReference);if(!e){const t=this.layer.esriCrsSpatialReference;let i="meters";!b(t)&&t.wkid&&-1!==t.wkid&&(i=o(v.units[v[t.wkid]])),i&&(e=new m({heightModel:"gravity-related-height",heightUnit:i}))}const t=this.view.heightModelInfo;return this._useEsriCrs=0===g(e,t,!1),this._useEsriCrs&&(e&&(this._metersPerVCSUnit=h(1,e.heightUnit,"meters")),this.fullExtentInLocalViewSpatialReference=this.layer.esriCrsFullExtent),this._useEsriCrs}return!1}_elevationInfoChanged(e){if(e?.offset)if(this._useEsriCrs){const t=T(e?.unit)/this._metersPerVCSUnit,i=e?.offset??0;this._wasm?.setLayerOffset(this,i*t)}else this._wasm?.setLayerOffset(this,M(e));else this._wasm?.setLayerOffset(this,0)}_slicePlaneEnabledChanged(e){this._renderer&&(this._renderer.slicePlaneEnabled=e),this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e)}updateGaussians(){const e=new Array;for(const t of this._tileHandles.values())0!==t.lifecycleState&&e.push(t);this.data.updateGaussianVisibility(e,this._currentLyr3dVisibilityChange),this.notifyChange("updating")}setMaximumGaussianCount(e){const t=Math.min(e,this.data.textureAtlas.maximumSupportedVisibleGaussians);this._wasm?.setMaximumGaussianSplatCount(t)}_freeInvisibleTiles(){for(const e of this._tileHandles.values())0!==e.lifecycleState||this._renderablesBeingCreated.has(e.handle)||this._deleteTile(e)}extractHeader(e){const t=e.length-4,i=this.reinterpretU32AsFloat(e[t]),s=this.reinterpretU32AsFloat(e[t+1]),r=this.reinterpretU32AsFloat(e[t+2]),a=1/(1<<(255&e[t+3]));return{packedHeader:e.subarray(t,t+4),tileOrigin:{x:i,y:s,z:r},invPosScale:a}}_deleteTile(e){this._renderablesBeingCreated.has(e.handle)||this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}reinterpretU32AsFloat(e){return this._u32View[0]=e,this._f32View[0]}get performanceInfo(){let e=0,t=0;this._tileHandles.forEach(i=>{0===i.lifecycleState?t++:e++});const i=this.data?.textureAtlasMemory??0,s=this.data?.headerTextureMemory??0,r=this.data?.orderTextureMemory??0,a=this.data?.fadingTextureMemory??0,n=this.data?.sortBufferMemory??0;return new H(this.usedMemory,e,this._usedTileMemory,t,this._cacheTileMemory,i,s,r,a,n)}get test(){}};e([d()],se.prototype,"layer",void 0),e([d({readOnly:!0})],se.prototype,"_clippingBox",null),e([d()],se.prototype,"elevationOffset",null),e([d({readOnly:!0})],se.prototype,"visibleAtCurrentScale",null),e([d()],se.prototype,"fullExtentInLocalViewSpatialReference",void 0),se=Y=e([u("esri.views.3d.layers.GaussianSplatLayerView3D")],se);const re=se;export{re as default};
2
+ import{__decorate as e}from"tslib";import"../../../core/has.js";import t from"../../../core/Logger.js";import{abortMaybe as i,removeMaybe as s,destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as a}from"../../../core/promiseUtils.js";import{watch as n,initial as l}from"../../../core/reactiveUtils.js";import{isUint32Array as o}from"../../../core/typedArrayUtil.js";import{unitFromRESTJSON as h,convertUnit as d}from"../../../core/units.js";import{property as u,subclass as c}from"../../../core/accessorSupport/decorators.js";import{fromValues as p}from"../../../core/libs/gl-matrix-2/factories/quatf64.js";import{getReferenceEllipsoid as m}from"../../../geometry/ellipsoidUtils.js";import f from"../../../geometry/HeightModelInfo.js";import{create as g}from"../../../geometry/support/aaBoundingBox.js";import{isCompatible as _}from"../../../geometry/support/heightModelInfoUtils.js";import{isPlateCarree as y,isWebMercator as w,equals as v,isGeographic as b}from"../../../geometry/support/spatialReferenceUtils.js";import S from"../../../geometry/support/WKIDUnitConversion.js";import{validateEntity3D as C,makeCacheKey as M,getHeightModelInfoFromVCS as x}from"../../../layers/support/tiles3DUtils.js";import{getElevationOffsetInMeters as T}from"../../../support/elevationInfoUtils.js";import{getMetersPerUnit as I}from"../../../symbols/support/unitConversionUtils.js";import{GaussianSplatLayerViewPerformanceInfo as H}from"./GaussianSplatLayerViewPerformanceInfo.js";import{LayerView3D as A}from"./LayerView3D.js";import{addLayerViewToWasm as F,getLyr3DWasm as P,removeLayerViewFromWasm as R}from"./Lyr3DWasm.js";import{LayerElevationProvider as V}from"./i3s/LayerElevationProvider.js";import{ElevationRange as j}from"../support/ElevationRange.js";import{projectToBoundingBox as E}from"../support/extentUtils.js";import{Obb as G}from"../support/orientedBoundingBox.js";import{splatPageSizeInU32 as U,gaussiansPerPage as O,packedGaussianSizeInU32 as D,splatAtlasTextureWidth as z}from"../support/gaussianSplatting/GaussianSplatAtlasPages.js";import{GaussianSplatDataStore as B}from"../support/gaussianSplatting/GaussianSplatDataStore.js";import{GaussianSplatFadeHelper as L}from"../support/gaussianSplatting/GaussianSplatFadeHelper.js";import{GaussianSplatIntersectionHandler as k}from"../support/gaussianSplatting/GaussianSplatIntersectionHandler.js";import{GaussianTile as q}from"../support/gaussianSplatting/GaussianTile.js";import{GaussianSplatDepthRenderer as W}from"../webgl-engine/lib/GaussianSplatDepthRenderer.js";import{GaussianSplatRenderer as N}from"../webgl-engine/lib/GaussianSplatRenderer.js";import{GaussianSplatShadows as $}from"../webgl-engine/lib/GaussianSplatShadows.js";import X from"../../layers/LayerView.js";import{spatialReferenceIncompatibleError as Z,isInEffectiveScaleRange as K}from"../../support/layerViewUtils.js";import{TaskPriority as Y}from"../../support/Scheduler.js";var J;const Q=()=>t.getLogger("esri.views.3d.layers.GaussianSplatLayerView3D"),ee=3,te=ee*ee,ie=255,se=(()=>{const e=new Int16Array(ie+1);e[0]=-255;for(let t=1;t<e.length;t++)e[t]=Math.round(16*Math.log(t/ie));return e})();let re=class extends(A(X)){static{J=this}static{this.createRenderableBatchSize=64}constructor(e){super(e),this.type="gaussian-splat-3d",this.ignoresMemoryFactor=!1,this._tileHandles=new Map,this._pageBuffer=new Uint32Array(U),this._tmpTilesWithChangedVisibility=new Array,this._renderablesBeingCreated=new Set,this._currentLyr3dVisibilityChange=0,this._tileFadeInsAwaitingInitialSort=new Map,this._tileFadeOutsAwaitingInitialSort=new Map,this._fadeDurationPerVisibilityChange=new Map,this._tmpSortedTileHandles=new Set,this._createRenderableAbortController=new AbortController,this._initializationController=null,this._wasmLayerId=-1,this._metersPerVCSUnit=1,this._usedTileMemory=0,this._cacheTileMemory=0,this._useEsriCrs=!1,this.fullExtentInLocalViewSpatialReference=null,this._suspendedHandle=null,this._conversionBuffer=new ArrayBuffer(4),this._u32View=new Uint32Array(this._conversionBuffer),this._f32View=new Float32Array(this._conversionBuffer);const t=e.view.resourceController;this._memCache=t.memoryController.newCache(`GaussianSplat-${this.uid}`,e=>this._deleteTile(e)),this._frameTask=t.scheduler.registerTask(Y.GAUSSIAN_SPLAT_TEXTURE_ATLAS)}get _clippingBox(){if(!this.view?.clippingArea)return null;const e=g();return E(this.view.clippingArea,e,this.view.renderSpatialReference)?e:null}get clippingBox(){return this._renderer?.clippingBox??null}initialize(){if(!this._canProjectWithoutEngine())throw Z("layer",this.layer.spatialReference.wkid,this.view.renderSpatialReference?.wkid);this._initializationController=new AbortController;const e=F(this,this._initializationController.signal).then(e=>{a(this._initializationController.signal),this._wasmLayerId=e,this._renderer=new N({view:this.view,layerView:this}),this.data=new B(this._renderer,(e,t)=>this._onSortComplete(e,t),()=>this._freeInvisibleTiles()),this._shadows=new $({view:this.view,layerView:this}),this.fadeHelper=new L(this),this._depthRenderer=new W({view:this.view,layerView:this}),this._intersectionHandler=new k(this),this.view.sceneIntersectionHelper.addIntersectionHandler(this._intersectionHandler),this._elevationProvider=new V({view:this.view,layerElevationSource:this,intersectionHandler:this._intersectionHandler}),this.view.elevationProvider.register(2,this._elevationProvider),this.addHandles([n(()=>this.layer.elevationInfo,e=>this._elevationInfoChanged(e)),n(()=>this.slicePlaneEnabled,e=>this._slicePlaneEnabledChanged(e),l)]),this._suspendedHandle=n(()=>this.suspended,e=>this._wasm?.setEnabled(this,!e),l),this.addHandles([n(()=>this._clippingBox,e=>{this._renderer&&(this._renderer.clippingBox=e)},l)]),this.setMaximumGaussianCount(this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians),this._initializationController=null});this.addHandles([n(()=>this.view.qualitySettings.fadeDuration,e=>{this.data&&(this.fadeHelper.onFadeDurationChanged(e),this.updateFadingTexture())}),n(()=>this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians,e=>this.setMaximumGaussianCount(e*this.view.quality)),n(()=>this.view.quality,e=>this.setMaximumGaussianCount(this.view.qualitySettings.gaussianSplat.maximumNumberOfGaussians*e))]),this.addResolvingPromise(e)}get wasmLayerId(){return this._wasmLayerId}get metersPerVCSUnit(){return this._metersPerVCSUnit}get tileHandles(){return this._tileHandles}updateFadingTexture(){this.data.fadingTexture.updateTexture(this.data.textureAtlas.pageAllocator.pageCount)}get _wasm(){return P(this.view)}get usedMemory(){return this._usedTileMemory+(this.data?.usedMemory??0)}get cachedMemory(){return this._cacheTileMemory}get unloadedMemory(){return 0}get useEsriCrs(){return this._useEsriCrs}get elevationProvider(){return this._elevationProvider}get elevationOffset(){return T(this.layer.elevationInfo)}get elevationRange(){const e=this.fullExtent;return e?.zmin&&e?.zmax?new j(e.zmin,e.zmax):null}getElevationRange(e){return this._intersectionHandler.getElevationRange(e)}get fullExtent(){return this.layer.fullExtent}get visibleAtCurrentScale(){return K(this.layer.effectiveScaleRange,this.view.scale)}isUpdating(){const e=this._wasm;return!(this._wasmLayerId<0||null==e)&&(e.isUpdating(this._wasmLayerId)||this.data.updating||this.fadeHelper.updating)}updatingFlagChanged(){this.notifyChange("updating")}async createRenderable(e){if(this.destroyed||this.destroying)throw new Error("IntegratedMesh3DTilesLayerView3D: createRenderable called after destroy");const{entity3d:t}=e;if(!C(t))throw new Error("entity3D not valid");const i=t.desc.geometry.prims[t.validPrimitiveIndices[0]].atrbs[0],s=t.assets[i.assetId];if(!s)throw new Error("entity3D not valid");const r=s.count;if(0===r)return Q().warnOnce("encountered tile with zero Gaussians"),()=>({memUsageBytes:0,numGaussians:0});let a=null;if("U32"!==s.dataType||!o(s.data))throw new Error("unexpected GaussianSplat Entity3D asset.data format");a=s.data;const n=this.extractHeader(a),l=2.048,h=n.tileOrigin.x*l,d=n.tileOrigin.y*l,u=n.tileOrigin.z*l,c=t.desc,f=c.obb.quaternion,g=new G(c.obb.center,c.obb.halfSize,p(...f)),_=this.view.state.isGlobal,y=_?m(this.view.spatialReference).radius:0,w={handle:e.handle,bufferView:a,totalGaussians:r,packedHeader:n.packedHeader,tileOrigin:{x:h,y:d,z:u},invPosScale:n.invPosScale,obb:g,origin:{x:g.centerX,y:g.centerY,z:g.centerZ},isGlobal:_,ellipsoidRadius:y};let v;this._renderablesBeingCreated.add(e.handle);try{v=await this._frameTask.scheduleGenerator(e=>this._createRenderableTask(w,e),this._createRenderableAbortController.signal)}catch(b){throw this._renderablesBeingCreated.delete(e.handle),b}return this._renderablesBeingCreated.delete(e.handle),()=>v}*_createRenderableTask(e,t){const{handle:i,bufferView:s,totalGaussians:r,packedHeader:a,tileOrigin:n,invPosScale:l,obb:o,origin:h,isGlobal:d,ellipsoidRadius:u}=e,c=n.x,p=n.y,m=n.z,f=h.x,g=h.y,_=h.z,y=new Uint32Array(r),w=new Float32Array(3*r),v=new Uint32Array(r),b=new Uint32Array(r),S=new Array,C=Math.ceil(r/O);let M=1/0,x=-1/0,T=1/0,I=-1/0,H=0,A=-1,F=0,P=0;for(let j=0;j<r;j++){const e=j*D,i=s[e],r=s[e+1],a=s[e+2],n=s[e+3],o=16383&r,h=r>>>14&16383,u=r>>>28&15|(1023&a)<<4,y=n>>>24,S=se[y],C=(a>>>10&255)+S,R=(a>>>18&255)+S,V=(a>>>26&63|(3&n)<<6)+S,E=C>0?C:0,G=R>0?R:0,U=V>0?V:0,O=E|G<<8|U<<16,z=Math.max(E,G,U),B=o*l+c,L=h*l+p,k=u*l+m;if(w[H]=B-f,w[H+1]=L-g,w[H+2]=k-_,d){const e=B*B+L*L+k*k;T=Math.min(T,e),I=Math.max(I,e)}else M=Math.min(M,k),x=Math.max(x,k);v[j]=i,b[j]=O,z>A&&(A=z),y>F&&(F=y),H+=3,P++,P===J.createRenderableBatchSize&&(P=0,t.madeProgress()&&(t=yield))}P>0&&t.madeProgress(),d&&(M=Math.sqrt(T)-u,x=Math.sqrt(I)-u);const R=this._extractGaussianSplatMbsRadiusSquared(A),{fullExtent:V}=this.layer;V?.hasZ&&V.zmax&&V.zmin&&(M=Math.max(M,V.zmin),x=Math.min(x,V.zmax));const E=new j(M,x);try{for(let e=0;e<C;e++){let t=this.data.textureAtlas.allocatePage();if(null===t&&(this._freeInvisibleTiles(),t=this.data.textureAtlas.allocatePage()),null===t)throw new Error("ran out of gaussian splat memory");S.push(t);const i=r-e*O,n=Math.min(i,O),l=e*O,o=t*O;for(let e=0;e<n;e++)y[l+e]=o+e;const h=e*U,d=n*D;this._pageBuffer.set(s.subarray(h,h+d));const u=o%z,c=Math.floor(o/z);this.data.textureAtlas.update(u,c,this._pageBuffer),this.data.headerTexture.update(t,a)}}catch(B){throw this.data.textureAtlas.freePages(S),B}const G=new q(i,o,y,S,w,v,b,r,R,F/ie,E);return this._tileHandles.set(i,G),this._cacheTileMemory+=G.usedMemory,this._memCache.put(`${G.handle}`,G),{memUsageBytes:G.usedMemory,numGaussians:r}}_extractGaussianSplatMbsRadiusSquared(e){return Math.exp(e/8-20)*te}freeRenderable(e){this._tileFadeInsAwaitingInitialSort.delete(e),this._tileFadeOutsAwaitingInitialSort.delete(e);const t=this.data?.textureAtlas;let i=!1;const s=this._tileHandles.get(e);if(s){0!==s.lifecycleState?(i=!0,this.fadeHelper.onTileDiscarded(s),this._usedTileMemory-=s.usedMemory,this._intersectionHandler.removeTile(s)):this._cacheTileMemory-=s.usedMemory,t&&s.pageIds.forEach(e=>t.freePage(e)),this.freeObject(s),this._tileHandles.delete(e)}i&&this.updateGaussians()}freeObject(e){this._memCache.pop(`${e.handle}`)}notifyTileObbsChanged(e){this._elevationProvider&&this._elevationProvider.notifyObjectsChangedFunctional(e.length,t=>{for(const{obb:i}of e)if(!t(i))break})}setRenderableVisibility(e,t,i){const s=this._currentLyr3dVisibilityChange+1,r=this.fadeHelper.updateFadeDuration();this._fadeDurationPerVisibilityChange.set(s,r);let a=!1;for(let n=0;n<i;n++){const i=this._tileHandles.get(e[n]);if(!i)continue;const l=t[n]?this._prepareTileFadeIn(i,s,r):this._prepareTileFadeOut(i,s);a||=l}a?(this._currentLyr3dVisibilityChange=s,this.updateGaussians()):this._fadeDurationPerVisibilityChange.delete(s)}_prepareTileFadeIn(e,t,i){const s=this._tileFadeOutsAwaitingInitialSort.delete(e.handle);return 2===e.lifecycleState?(this.fadeHelper.fadeTile(e,0,i),!1):this._tileFadeInsAwaitingInitialSort.get(e.handle)!==t?(0===e.lifecycleState&&this._popTileFromCache(e),e.lifecycleState=1,this._tileFadeInsAwaitingInitialSort.set(e.handle,t),!0):s}_prepareTileFadeOut(e,t){const i=this._tileFadeInsAwaitingInitialSort.delete(e.handle);return i&&1===e.lifecycleState&&(this.moveTileToCache(e),e.lifecycleState=0),2!==e.lifecycleState?i:this._tileFadeOutsAwaitingInitialSort.get(e.handle)!==t?(this._tileFadeOutsAwaitingInitialSort.set(e.handle,t),!0):i}_onSortComplete(e,t){const i=this._tmpTilesWithChangedVisibility;i.length=0;const s=this._tmpSortedTileHandles;s.clear();for(let a=0;a<e.length;a++){const t=e[a];s.add(t.handle)}this._triggerFadeIns(t,s,i);const r=this._triggerFadeOuts(t,i);s.clear(),i.length>0&&this.notifyTileObbsChanged(i),r&&this.updateGaussians(),this._cleanupVisibilityChangeFadeDurations(t)}_triggerFadeIns(e,t,i){for(const[s,r]of this._tileFadeInsAwaitingInitialSort){if(r>e||!t.has(s))continue;const a=this._tileHandles.get(s);if(!a){this._tileFadeInsAwaitingInitialSort.delete(s);continue}const n=this._getFadeDurationForPendingVisibilityChange(r),l=0===a.lifecycleState;2!==a.lifecycleState&&(a.lifecycleState=2,l&&this._popTileFromCache(a),i.push(a)),this.fadeHelper.fadeTile(a,0,n),this._tileFadeInsAwaitingInitialSort.delete(s)}}_triggerFadeOuts(e,t){let i=!1;for(const[s,r]of this._tileFadeOutsAwaitingInitialSort){if(r>e)continue;const a=this._tileHandles.get(s);if(a){const e=2===a.lifecycleState,s=this._getFadeDurationForPendingVisibilityChange(r);this.fadeHelper.fadeTile(a,1,s),e&&0===a.lifecycleState&&(t.push(a),i=!0)}this._tileFadeOutsAwaitingInitialSort.delete(s)}return i}_getFadeDurationForPendingVisibilityChange(e){return this._fadeDurationPerVisibilityChange.get(e)??this.fadeHelper.baseFadeDuration}_cleanupVisibilityChangeFadeDurations(e){if(0!==this._fadeDurationPerVisibilityChange.size)for(const t of this._fadeDurationPerVisibilityChange.keys())t<=e&&this._fadeDurationPerVisibilityChange.delete(t)}_popTileFromCache(e){this._usedTileMemory+=e.usedMemory,this._cacheTileMemory-=e.usedMemory,this._intersectionHandler.addTile(e),this._memCache.pop(M(e.handle))}moveTileToCache(e){this._usedTileMemory-=e.usedMemory,this._cacheTileMemory+=e.usedMemory,this._intersectionHandler.removeTile(e),this._memCache.put(M(e.handle),e)}destroy(){this._initializationController=i(this._initializationController),this._createRenderableAbortController.abort(),R(this),this._suspendedHandle&&(this._suspendedHandle=s(this._suspendedHandle)),this._intersectionHandler&&(this.view.sceneIntersectionHelper.removeIntersectionHandler(this._intersectionHandler),this._intersectionHandler=null),this._elevationProvider&&this.view.elevationProvider&&(this._elevationProvider.notifyObjectsChangedFunctional(this._tileHandles.size,e=>{for(const{obb:t}of this._tileHandles.values())if(!e(t))break}),this.view.elevationProvider.unregister(this._elevationProvider),this._elevationProvider=null),this._frameTask.remove(),this._shadows=r(this._shadows),this._depthRenderer=r(this._depthRenderer),this._renderer=r(this._renderer),this._memCache.destroy(),this.data=r(this.data)}_canProjectWithoutEngine(){if(1===this.view.state.viewingMode)return!0;if(y(this.view.renderSpatialReference)||w(this.view.renderSpatialReference))return!0;if(this.layer.esriCrsSpatialReference&&v(this.layer.esriCrsSpatialReference,this.view.renderSpatialReference)){if(115700===this.layer.esriCrsSpatialReference.vcsWkid)return!1;let e=x(this.layer.esriCrsSpatialReference);if(!e){const t=this.layer.esriCrsSpatialReference;let i="meters";!b(t)&&t.wkid&&-1!==t.wkid&&(i=h(S.units[S[t.wkid]])),i&&(e=new f({heightModel:"gravity-related-height",heightUnit:i}))}const t=this.view.heightModelInfo;return this._useEsriCrs=0===_(e,t,!1),this._useEsriCrs&&(e&&(this._metersPerVCSUnit=d(1,e.heightUnit,"meters")),this.fullExtentInLocalViewSpatialReference=this.layer.esriCrsFullExtent),this._useEsriCrs}return!1}_elevationInfoChanged(e){if(e?.offset)if(this._useEsriCrs){const t=I(e?.unit)/this._metersPerVCSUnit,i=e?.offset??0;this._wasm?.setLayerOffset(this,i*t)}else this._wasm?.setLayerOffset(this,T(e));else this._wasm?.setLayerOffset(this,0)}_slicePlaneEnabledChanged(e){this._renderer&&(this._renderer.slicePlaneEnabled=e),this._intersectionHandler&&(this._intersectionHandler.slicePlaneEnabled=e)}updateGaussians(){const e=new Array;for(const t of this._tileHandles.values())0!==t.lifecycleState&&e.push(t);this.data.updateGaussianVisibility(e,this._currentLyr3dVisibilityChange),this.notifyChange("updating")}setMaximumGaussianCount(e){const t=Math.min(e,this.data.textureAtlas.maximumSupportedVisibleGaussians);this._wasm?.setMaximumGaussianSplatCount(t)}_freeInvisibleTiles(){for(const e of this._tileHandles.values())0!==e.lifecycleState||this._renderablesBeingCreated.has(e.handle)||this._deleteTile(e)}extractHeader(e){const t=e.length-4,i=this.reinterpretU32AsFloat(e[t]),s=this.reinterpretU32AsFloat(e[t+1]),r=this.reinterpretU32AsFloat(e[t+2]),a=1/(1<<(255&e[t+3]));return{packedHeader:e.subarray(t,t+4),tileOrigin:{x:i,y:s,z:r},invPosScale:a}}_deleteTile(e){this._renderablesBeingCreated.has(e.handle)||this._wasm?.onRenderableEvicted(this,e.handle,e.usedMemory),this.freeRenderable(e.handle)}reinterpretU32AsFloat(e){return this._u32View[0]=e,this._f32View[0]}get performanceInfo(){let e=0,t=0;this._tileHandles.forEach(i=>{0===i.lifecycleState?t++:e++});const i=this.data?.textureAtlasMemory??0,s=this.data?.headerTextureMemory??0,r=this.data?.orderTextureMemory??0,a=this.data?.fadingTextureMemory??0,n=this.data?.sortBufferMemory??0;return new H(this.usedMemory,e,this._usedTileMemory,t,this._cacheTileMemory,i,s,r,a,n)}get test(){}};e([u()],re.prototype,"layer",void 0),e([u({readOnly:!0})],re.prototype,"_clippingBox",null),e([u()],re.prototype,"elevationOffset",null),e([u({readOnly:!0})],re.prototype,"visibleAtCurrentScale",null),e([u()],re.prototype,"fullExtentInLocalViewSpatialReference",void 0),re=J=e([c("esri.views.3d.layers.GaussianSplatLayerView3D")],re);const ae=re;export{ae as default};