@arcgis/core 4.27.0-next.20230321 → 4.27.0-next.20230323

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 (267) hide show
  1. package/analysis/LineOfSightAnalysisObserver.js +1 -1
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/02b6227c156ee0d8eb66.js +1 -0
  4. package/assets/esri/core/workers/chunks/{7e0c65aa61c2ff0c3504.js → 1c98b92933a48cf96c1e.js} +1 -1
  5. package/assets/esri/core/workers/chunks/{a27951dbe83c63f9d01a.js → 26bc91a9d9d7345a3eba.js} +1 -1
  6. package/assets/esri/core/workers/chunks/321f272d4c7ed6b0cb46.js +1 -0
  7. package/assets/esri/core/workers/chunks/{a09cc8e2ff43fe4afa04.js → 375628de4cfc71cb41c1.js} +1 -1
  8. package/assets/esri/core/workers/chunks/47bd558e2ce89f47f908.js +1 -0
  9. package/assets/esri/core/workers/chunks/4cb62855bb1ae608bfde.js +1 -0
  10. package/assets/esri/core/workers/chunks/4f0c2b6b200bf8222fd7.js +1 -0
  11. package/assets/esri/core/workers/chunks/5252f3cc244204edc299.js +1 -0
  12. package/assets/esri/core/workers/chunks/6f952a6464cf9e62dbac.js +1098 -0
  13. package/assets/esri/core/workers/chunks/76d6c1fc25f02bcf258e.js +1 -0
  14. package/assets/esri/core/workers/chunks/{d6ec7682de8fad9718e9.js → 77dccfaf1f9e778973b3.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{c5d872adce711ec61ede.js → 8980c5dc389c27368b73.js} +1 -1
  16. package/assets/esri/core/workers/chunks/{6acaf28cba5d49a98fb6.js → 91b292f310f06a0cbf72.js} +1 -1
  17. package/assets/esri/core/workers/chunks/9bac27976e7a71268b7b.js +1 -0
  18. package/assets/esri/core/workers/chunks/{ff9efa829497557ec26a.js → aa4640a0207e0be224e2.js} +1 -1
  19. package/assets/esri/core/workers/chunks/{81a6f4b43e047c3395c0.js → aebc5091bd4159197ce0.js} +1 -1
  20. package/assets/esri/core/workers/chunks/{c8cd3fde6d8d43ddb954.js → b6cdf4daf07d9e55f61e.js} +1 -1
  21. package/assets/esri/core/workers/chunks/{6b14673a4afd6ef81487.js → c76cabd2d2510a653dff.js} +1 -1
  22. package/assets/esri/core/workers/chunks/{4be7647605300e07e843.js → c90fff7e28ba5b443b11.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{e637e47000f4dc48054d.js → cc7f4fd20443a2acf0f1.js} +1 -1
  24. package/assets/esri/core/workers/chunks/d19e9fab4f4fb765c6a3.js +1 -0
  25. package/assets/esri/core/workers/chunks/d9ef4891c8b0bdd90f5b.js +1 -0
  26. package/assets/esri/core/workers/chunks/{d92d6a43270fb0d366b4.js → de4f5c48efbcee82c3c1.js} +1 -1
  27. package/assets/esri/core/workers/chunks/f6e7948075b3742b4ef9.js +1 -0
  28. package/assets/esri/core/workers/chunks/{32f9b488915a4a8864e5.js → f8b9e0c1671e55b61904.js} +1 -1
  29. package/assets/esri/views/3d/analysis/Slice/images/heading-rotate.ts.svg +7 -28
  30. package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.ts.svg +11 -0
  31. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList.json +1 -1
  32. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ar.json +1 -1
  33. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_bg.json +1 -1
  34. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_bs.json +1 -1
  35. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ca.json +1 -1
  36. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_cs.json +1 -1
  37. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_da.json +1 -1
  38. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_de.json +1 -1
  39. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_el.json +1 -1
  40. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_en.json +1 -1
  41. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_es.json +1 -1
  42. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_et.json +1 -1
  43. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_fi.json +1 -1
  44. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_fr.json +1 -1
  45. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_he.json +1 -1
  46. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_hr.json +1 -1
  47. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_hu.json +1 -1
  48. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_id.json +1 -1
  49. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_it.json +1 -1
  50. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ja.json +1 -1
  51. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ko.json +1 -1
  52. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_lt.json +1 -1
  53. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_lv.json +1 -1
  54. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_nb.json +1 -1
  55. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_nl.json +1 -1
  56. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pl.json +1 -1
  57. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pt-BR.json +1 -1
  58. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pt-PT.json +1 -1
  59. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ro.json +1 -1
  60. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ru.json +1 -1
  61. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sk.json +1 -1
  62. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sl.json +1 -1
  63. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sr.json +1 -1
  64. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sv.json +1 -1
  65. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_th.json +1 -1
  66. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_tr.json +1 -1
  67. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_uk.json +1 -1
  68. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_vi.json +1 -1
  69. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-CN.json +1 -1
  70. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-HK.json +1 -1
  71. package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-TW.json +1 -1
  72. package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
  73. package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
  74. package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
  75. package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
  76. package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
  77. package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
  78. package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
  79. package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
  80. package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
  81. package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
  82. package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
  83. package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
  84. package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
  85. package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
  86. package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
  87. package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
  88. package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
  89. package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
  90. package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
  91. package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
  92. package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
  93. package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
  94. package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
  95. package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
  96. package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
  97. package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
  98. package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
  99. package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
  100. package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
  101. package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
  102. package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
  103. package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
  104. package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
  105. package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
  106. package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
  107. package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
  108. package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
  109. package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
  110. package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
  111. package/assets/esri/widgets/LayerList/t9n/LayerList.json +1 -1
  112. package/assets/esri/widgets/LayerList/t9n/LayerList_ar.json +1 -1
  113. package/assets/esri/widgets/LayerList/t9n/LayerList_bg.json +1 -1
  114. package/assets/esri/widgets/LayerList/t9n/LayerList_bs.json +1 -1
  115. package/assets/esri/widgets/LayerList/t9n/LayerList_ca.json +1 -1
  116. package/assets/esri/widgets/LayerList/t9n/LayerList_cs.json +1 -1
  117. package/assets/esri/widgets/LayerList/t9n/LayerList_da.json +1 -1
  118. package/assets/esri/widgets/LayerList/t9n/LayerList_de.json +1 -1
  119. package/assets/esri/widgets/LayerList/t9n/LayerList_el.json +1 -1
  120. package/assets/esri/widgets/LayerList/t9n/LayerList_en.json +1 -1
  121. package/assets/esri/widgets/LayerList/t9n/LayerList_es.json +1 -1
  122. package/assets/esri/widgets/LayerList/t9n/LayerList_et.json +1 -1
  123. package/assets/esri/widgets/LayerList/t9n/LayerList_fi.json +1 -1
  124. package/assets/esri/widgets/LayerList/t9n/LayerList_fr.json +1 -1
  125. package/assets/esri/widgets/LayerList/t9n/LayerList_he.json +1 -1
  126. package/assets/esri/widgets/LayerList/t9n/LayerList_hr.json +1 -1
  127. package/assets/esri/widgets/LayerList/t9n/LayerList_hu.json +1 -1
  128. package/assets/esri/widgets/LayerList/t9n/LayerList_id.json +1 -1
  129. package/assets/esri/widgets/LayerList/t9n/LayerList_it.json +1 -1
  130. package/assets/esri/widgets/LayerList/t9n/LayerList_ja.json +1 -1
  131. package/assets/esri/widgets/LayerList/t9n/LayerList_ko.json +1 -1
  132. package/assets/esri/widgets/LayerList/t9n/LayerList_lt.json +1 -1
  133. package/assets/esri/widgets/LayerList/t9n/LayerList_lv.json +1 -1
  134. package/assets/esri/widgets/LayerList/t9n/LayerList_nb.json +1 -1
  135. package/assets/esri/widgets/LayerList/t9n/LayerList_nl.json +1 -1
  136. package/assets/esri/widgets/LayerList/t9n/LayerList_pl.json +1 -1
  137. package/assets/esri/widgets/LayerList/t9n/LayerList_pt-BR.json +1 -1
  138. package/assets/esri/widgets/LayerList/t9n/LayerList_pt-PT.json +1 -1
  139. package/assets/esri/widgets/LayerList/t9n/LayerList_ro.json +1 -1
  140. package/assets/esri/widgets/LayerList/t9n/LayerList_ru.json +1 -1
  141. package/assets/esri/widgets/LayerList/t9n/LayerList_sk.json +1 -1
  142. package/assets/esri/widgets/LayerList/t9n/LayerList_sl.json +1 -1
  143. package/assets/esri/widgets/LayerList/t9n/LayerList_sr.json +1 -1
  144. package/assets/esri/widgets/LayerList/t9n/LayerList_sv.json +1 -1
  145. package/assets/esri/widgets/LayerList/t9n/LayerList_th.json +1 -1
  146. package/assets/esri/widgets/LayerList/t9n/LayerList_tr.json +1 -1
  147. package/assets/esri/widgets/LayerList/t9n/LayerList_uk.json +1 -1
  148. package/assets/esri/widgets/LayerList/t9n/LayerList_vi.json +1 -1
  149. package/assets/esri/widgets/LayerList/t9n/LayerList_zh-CN.json +1 -1
  150. package/assets/esri/widgets/LayerList/t9n/LayerList_zh-HK.json +1 -1
  151. package/assets/esri/widgets/LayerList/t9n/LayerList_zh-TW.json +1 -1
  152. package/chunks/ComponentShader.glsl.js +1 -1
  153. package/chunks/DefaultMaterial.glsl.js +4 -4
  154. package/chunks/vec42.js +1 -1
  155. package/core/Loadable.js +1 -1
  156. package/core/accessorSupport/Property.js +1 -1
  157. package/core/accessorSupport/tracking/SimpleTrackingTarget.js +1 -1
  158. package/core/analysisThemeUtils.js +1 -1
  159. package/core/maybe.js +1 -1
  160. package/geometry/support/buffer/math/vec4.js +1 -1
  161. package/interfaces.d.ts +1 -1
  162. package/layers/IntegratedMeshLayer.js +1 -1
  163. package/layers/LineOfSightLayer.js +1 -1
  164. package/layers/SceneLayer.js +1 -1
  165. package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
  166. package/layers/mixins/ImageryTileMixin.js +1 -1
  167. package/layers/mixins/RefreshableLayer.js +1 -1
  168. package/layers/support/SceneFilter.js +1 -1
  169. package/layers/support/SceneModifications.js +1 -1
  170. package/layers/support/rasterFunctions/clipUtils.js +1 -1
  171. package/layers/support/rasterFunctions/stretchUtils.js +1 -1
  172. package/package.json +1 -1
  173. package/portal/PortalItemResource.js +1 -1
  174. package/portal/support/resourceUtils.js +1 -1
  175. package/support/revision.js +1 -1
  176. package/symbols/support/utils.js +1 -1
  177. package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
  178. package/views/2d/viewpointUtils.js +1 -1
  179. package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
  180. package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
  181. package/views/3d/analysis/Dimension/settings.js +1 -1
  182. package/views/3d/analysis/Slice/SliceTool.js +1 -1
  183. package/views/3d/analysis/Slice/SliceVisualization.js +1 -1
  184. package/views/3d/analysis/Slice/images/Factory.js +1 -1
  185. package/views/3d/analysis/Slice/images/generateTextures.js +1 -1
  186. package/views/3d/analysis/Slice/images/heading-rotate-svg.js +1 -1
  187. package/views/3d/analysis/Slice/images/tilt-rotate-svg.js +5 -0
  188. package/views/3d/analysis/Slice/settings.js +5 -0
  189. package/views/3d/analysis/Slice/sliceToolConfig.js +1 -1
  190. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  191. package/views/3d/environment/Stars.js +1 -1
  192. package/views/3d/interactive/Manipulator3D.js +1 -1
  193. package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
  194. package/views/3d/interactive/manipulatorUtils.js +1 -1
  195. package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
  196. package/views/3d/layers/PointCloudLayerView3D.js +1 -1
  197. package/views/3d/layers/PointCloudWorker.js +1 -1
  198. package/views/3d/layers/VectorTileLayerView3D.js +1 -1
  199. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  200. package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
  201. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  202. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  203. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  204. package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
  205. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  206. package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
  207. package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
  208. package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
  209. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  210. package/views/3d/layers/i3s/PointCloudRendererUtil.js +1 -1
  211. package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
  212. package/views/3d/layers/i3s/PointGraphic.js +1 -1
  213. package/views/3d/state/ViewState.js +1 -1
  214. package/views/3d/state/controllers/SurfaceCollisionCorrectionController.js +1 -1
  215. package/views/3d/terrain/GeometryState.js +1 -1
  216. package/views/3d/terrain/PatchGeometry.js +1 -1
  217. package/views/3d/terrain/PatchGeometryFactory.js +1 -1
  218. package/views/3d/terrain/TileAgent.js +1 -1
  219. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  220. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  221. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
  222. package/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js +6 -5
  223. package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +1 -1
  224. package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +11 -11
  225. package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeShadingNormal.glsl.js +1 -1
  226. package/views/3d/webgl-engine/lib/AnimationTimeStep.js +1 -1
  227. package/views/3d/webgl-engine/lib/AttributeArray.js +1 -1
  228. package/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js +1 -1
  229. package/views/3d/webgl-engine/lib/Normals.js +5 -0
  230. package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
  231. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  232. package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
  233. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  234. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  235. package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
  236. package/views/3d/webgl-engine/shaders/DefaultMaterialTechniqueConfiguration.js +1 -1
  237. package/views/3d/webgl-engine/shaders/RealisticTreeTechnique.js +1 -1
  238. package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
  239. package/views/LayerViewManager.js +1 -1
  240. package/views/SceneView.js +1 -1
  241. package/views/draw/support/Reshape.js +1 -1
  242. package/views/layers/SceneLayerView.js +1 -1
  243. package/views/support/colorUtils.js +1 -1
  244. package/views/webgl/ShaderTranspiler.js +1 -1
  245. package/widgets/BasemapLayerList.js +1 -1
  246. package/widgets/Daylight/DaylightViewModel.js +1 -1
  247. package/widgets/Expand.js +1 -1
  248. package/widgets/FeatureForm/FieldInput.js +1 -1
  249. package/widgets/LayerList.js +1 -1
  250. package/widgets/Search.js +1 -1
  251. package/widgets/Sketch/SketchViewModel.js +1 -1
  252. package/assets/esri/core/workers/chunks/0487ab23a20ec356ab4c.js +0 -1
  253. package/assets/esri/core/workers/chunks/29ee4f14602caf6967e4.js +0 -1
  254. package/assets/esri/core/workers/chunks/2c0775541cfec9d43acb.js +0 -1
  255. package/assets/esri/core/workers/chunks/4879164b48da9ad4547a.js +0 -1
  256. package/assets/esri/core/workers/chunks/69060e5cffc19e76062a.js +0 -1
  257. package/assets/esri/core/workers/chunks/87edeb09a948122fa030.js +0 -1
  258. package/assets/esri/core/workers/chunks/92951b85676df776961f.js +0 -1100
  259. package/assets/esri/core/workers/chunks/a71a5c8a9aa302bf6f01.js +0 -1
  260. package/assets/esri/core/workers/chunks/ad5c61daaed286c74982.js +0 -1
  261. package/assets/esri/core/workers/chunks/bc002e4dff8859571a7a.js +0 -1
  262. package/assets/esri/core/workers/chunks/ef2d3e84cd58df5f80af.js +0 -1
  263. package/assets/esri/core/workers/chunks/fec5e55e0fbf1710e22d.js +0 -1
  264. package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.svg +0 -80
  265. package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.ts.png +0 -0
  266. package/views/3d/analysis/Slice/images/tilt-rotate-png.js +0 -5
  267. package/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js +0 -8
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{getMetersPerUnitForSR as e}from"../../../core/unitUtils.js";import t from"../../../geometry/Extent.js";import{intersects as i,contains as n}from"../../../geometry/geometryEngine.js";import a from"../PixelBlock.js";function h(t,i){if(t.spatialReference.equals(i))return t;const n=e(t.spatialReference),a=e(i);if(n===a)return t;const h=n/a;return{x:t.x*h,y:t.y*h}}function r(e,t,h){if("extent"===h.type)return m(e,t,h);const{width:r,height:o}=e,l=new Uint8Array(r*o);return i(t,h)?n(h,t)?e:x(e,t,h):new a({pixelType:e.pixelType,width:r,height:o,mask:l,maskIsAlpha:!1,pixels:[...e.pixels]})}function x(e,t,i){if(!e)return e;const{width:n,height:h}=e,r=t.width/n,x=t.height/h,{xmin:m,ymax:o}=t;let l;if("extent"===i.type){const e=(i.xmin-m)/r,t=(i.xmax-m)/r,n=(o-i.ymax)/x,a=(o-i.ymin)/x;l=[[[e,n],[e,a],[t,a],[t,n],[e,n]]]}else l=i.rings.map((e=>e.map((([e,t])=>[(e-m)/r,(o-t)/x]))));const s=document.createElement("canvas");s.width=n,s.height=h;const p=s.getContext("2d");p.fillStyle="#f00",l.forEach((e=>{p.beginPath(),p.moveTo(e[0][0],e[0][1]);for(let t=0;t<e.length;t++)p.lineTo(e[t][0],e[t][1]);p.closePath(),p.fill()}));const y=p.getImageData(0,0,n,h).data,f=e.mask,c=n*h,u=new Uint8Array(c);for(let a=0;a<c;a++)f&&!f[a]||(u[a]=y[4*a+3]>127?255:0);return new a({pixelType:e.pixelType,width:n,height:h,mask:u,maskIsAlpha:!1,pixels:[...e.pixels]})}function m(e,t,i){const{width:n,height:h}=e,r=new Uint8Array(n*h),x=t.width/n,m=t.height/h;if(i.width/x<.5||i.height/m<.5)return new a({pixelType:e.pixelType,width:n,height:h,mask:r,pixels:[...e.pixels]});const{xmin:o,xmax:l,ymin:s,ymax:p}=t,{xmin:y,xmax:f,ymin:c,ymax:u}=i,d=Math.max(o,y),w=Math.min(l,f),g=Math.max(s,c),M=Math.min(p,u),T=.5*x,k=.5*m;if(w-d<T||M-g<k||w<o+T||d>l-T||g>p-k||M<s+k)return new a({pixelType:e.pixelType,width:n,height:h,mask:r,pixels:[...e.pixels]});const A=Math.max(0,(d-o)/x),R=Math.min(n,Math.max(0,(w-o)/x)),j=Math.max(0,(p-M)/m),E=Math.min(h,Math.max(0,(p-g)/m)),U=Math.round(A),I=Math.round(R)-1,P=Math.round(j),v=Math.round(E)-1;if(U===I&&A%1>.5&&R%1<.5||P===v&&j%1>.5&&E%1<.5)return new a({pixelType:e.pixelType,width:n,height:h,mask:r,pixels:[...e.pixels]});if(0===U&&0===P&&I===n&&v===h)return e;const b=e.mask;for(let a=P;a<=v;a++)for(let e=U;e<=I;e++){const t=a*n+e;r[t]=b?b[t]:255}return new a({pixelType:e.pixelType,width:n,height:h,mask:r,pixels:[...e.pixels]})}function o(e,i,n,a=!0){const{spatialReference:r}=e,{x,y:m}=h(n,r);let o,l,s;const p="extent"===i.type?i:i.extent;let{xmin:y,xmax:f,ymax:c,ymin:u}=p;const{xmin:d,ymax:w}=e.extent;return a?(y=d+(y>d?x*Math.round((y-d)/x):0),c=w-(c<w?m*Math.round((w-c)/m):0),f=d+(f>d?x*Math.round((f-d)/x):0),u=w-(u<w?m*Math.round((w-u)/m):0),o=new t({xmin:y,ymax:c,xmax:f,ymin:u,spatialReference:r}),l=Math.round(o.width/x),s=Math.round(o.height/m)):(l=Math.floor((f-y)/x+.8),s=Math.floor((c-u)/m+.8),y=d+(y>d?x*Math.floor((y-d)/x+.1):0),c=w-(c<w?m*Math.floor((w-c)/m+.1):0),f=y+l*x,u=c-s*m,o=new t({xmin:y,ymax:c,xmax:f,ymin:u,spatialReference:r})),{extent:o,width:l,height:s}}export{r as clip,o as snapToRaster};
5
+ import{getMetersPerUnitForSR as t}from"../../../core/unitUtils.js";import e from"../../../geometry/Extent.js";import{intersects as i,contains as n}from"../../../geometry/geometryEngine.js";import a from"../PixelBlock.js";function h(e,i){if(e.spatialReference.equals(i))return e;const n=t(e.spatialReference),a=t(i);if(n===a)return e;const h=n/a;return{x:e.x*h,y:e.y*h}}function o(t,e,h){if("extent"===h.type)return x(t,e,h);const{width:o,height:m}=t,s=new Uint8Array(o*m);return i(e,h)?"polyline"===h.type?l(t,e,h):n(h,e)?t:r(t,e,h):new a({pixelType:t.pixelType,width:o,height:m,mask:s,maskIsAlpha:!1,pixels:[...t.pixels]})}function r(t,e,i){if(!t)return t;const{width:n,height:h}=t,o=e.width/n,r=e.height/h,{xmin:x,ymax:l}=e;let m;if("extent"===i.type){const t=(i.xmin-x)/o,e=(i.xmax-x)/o,n=(l-i.ymax)/r,a=(l-i.ymin)/r;m=[[[t,n],[t,a],[e,a],[e,n],[t,n]]]}else m=i.rings.map((t=>t.map((([t,e])=>[(t-x)/o,(l-e)/r]))));const s=document.createElement("canvas");s.width=n,s.height=h;const p=s.getContext("2d");p.fillStyle="#f00",m.forEach((t=>{p.beginPath(),p.moveTo(t[0][0],t[0][1]);for(let e=0;e<t.length;e++)p.lineTo(t[e][0],t[e][1]);p.closePath(),p.fill()}));const f=p.getImageData(0,0,n,h).data,y=t.mask,c=n*h,M=new Uint8Array(c);for(let a=0;a<c;a++)y&&!y[a]||(M[a]=f[4*a+3]>127?255:0);return new a({pixelType:t.pixelType,width:n,height:h,mask:M,maskIsAlpha:!1,pixels:[...t.pixels]})}function x(t,e,i){const{width:n,height:h}=t,o=new Uint8Array(n*h),r=e.width/n,x=e.height/h;if(i.width/r<.5||i.height/x<.5)return new a({pixelType:t.pixelType,width:n,height:h,mask:o,pixels:[...t.pixels]});const{xmin:l,xmax:m,ymin:s,ymax:p}=e,{xmin:f,xmax:y,ymin:c,ymax:M}=i,u=Math.max(l,f),d=Math.min(m,y),w=Math.max(s,c),g=Math.min(p,M),T=.5*r,k=.5*x;if(d-u<T||g-w<k||d<l+T||u>m-T||w>p-k||g<s+k)return new a({pixelType:t.pixelType,width:n,height:h,mask:o,pixels:[...t.pixels]});const A=Math.max(0,(u-l)/r),R=Math.min(n,Math.max(0,(d-l)/r)),U=Math.max(0,(p-g)/x),j=Math.min(h,Math.max(0,(p-w)/x)),E=Math.round(A),I=Math.round(R)-1,P=Math.round(U),v=Math.round(j)-1;if(E===I&&A%1>.5&&R%1<.5||P===v&&U%1>.5&&j%1<.5)return new a({pixelType:t.pixelType,width:n,height:h,mask:o,pixels:[...t.pixels]});if(0===E&&0===P&&I===n&&v===h)return t;const b=t.mask;for(let a=P;a<=v;a++)for(let t=E;t<=I;t++){const e=a*n+t;o[e]=b?b[e]:255}return new a({pixelType:t.pixelType,width:n,height:h,mask:o,pixels:[...t.pixels]})}function l(t,e,i){const{width:n,height:h}=t,o=new Uint8Array(n*h),r=e.width/n,x=e.height/h,{xmin:l,ymax:m}=e,{paths:s}=i,p=t.mask;for(let a=0;a<s.length;a++){const t=s[a];for(let e=0;e<t.length-1;e++){const[i,a]=t[e],[s,f]=t[e+1];let y=Math.floor((m-a)/x),c=Math.floor((m-f)/x);if(c<y){const t=y;y=c,c=t}y=Math.max(0,y),c=Math.min(h-1,c);const M=(s-i)/(f-a);for(let t=y;t<=c;t++){const e=t===y?Math.max(a,f):(h+1-t)*x,m=t===c?Math.min(a,f):e-x;let u=f===a?Math.floor((i-l)/r):Math.floor((M*(e-a)+i-l)/r),d=f===a?Math.floor((s-l)/r):Math.floor((M*(m-a)+i-l)/r);if(d<u){const t=u;u=d,d=t}const w=t*n;u=Math.max(0,u),d=Math.min(n-1,d);for(let t=w+u;t<=w+d;t++)o[t]=p?p[t]:255}}}return new a({pixelType:t.pixelType,width:n,height:h,mask:o,pixels:[...t.pixels]})}function m(t,i,n,a=!0){const{spatialReference:o}=t,{x:r,y:x}=h(n,o);let l,m,s;const p="extent"===i.type?i:i.extent;let{xmin:f,xmax:y,ymax:c,ymin:M}=p;const{xmin:u,ymax:d}=t.extent;return a?(f=u+(f>u?r*Math.round((f-u)/r):0),c=d-(c<d?x*Math.round((d-c)/x):0),y=u+(y>u?r*Math.round((y-u)/r):0),M=d-(M<d?x*Math.round((d-M)/x):0),l=new e({xmin:f,ymax:c,xmax:y,ymin:M,spatialReference:o}),m=Math.round(l.width/r),s=Math.round(l.height/x)):(m=Math.floor((y-f)/r+.8),s=Math.floor((c-M)/x+.8),f=u+(f>u?r*Math.floor((f-u)/r+.1):0),c=d-(c<d?x*Math.floor((d-c)/x+.1):0),y=f+m*r,M=c-s*x,l=new e({xmin:f,ymax:c,xmax:y,ymin:M,spatialReference:o})),{extent:l,width:m,height:s}}export{o as clip,m as snapToRaster};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{assertIsSome as t}from"../../../core/maybe.js";import n from"../PixelBlock.js";import{getPixelValueRange as e}from"../rasterFormats/pixelRangeUtils.js";import{stretchTypeFunctionEnum as s}from"../../../renderers/support/stretchRendererUtils.js";const i=1,r=[.299,.587,.114];function o(t,n=256){n=Math.min(n,256);const{size:e,counts:s}=t,i=new Uint8Array(e),r=s.reduce(((t,e)=>t+e/n),0);let o=0,a=0,l=0,f=r;for(let u=0;u<e;u++)if(l+=s[u],!(u<e-1&&l+s[u+1]<f)){for(;o<n-1&&f<l;)o++,f+=r;for(let t=a;t<=u;t++)i[t]=o;a=u+1}for(let u=a;u<e;u++)i[u]=n-1;return i}function a(t){const{minCutOff:n,maxCutOff:e,gamma:s,pixelType:i,rounding:r}=t,o=t.outMin||0,a=t.outMax||255;if(!["u8","u16","s8","s16"].includes(i))return null;const f=n.length;let u,m,c=0;"s8"===i?c=-127:"s16"===i&&(c=-32767);let h=256;["u16","s16"].includes(i)&&(h=65536);const g=[],p=[],x=a-o;for(u=0;u<f;u++)p[u]=e[u]-n[u],g[u]=0===p[u]?0:x/p[u];let M;const y=[];let v,w,z;if(s&&s.length>=f){const t=d(f,s);for(u=0;u<f;u++){for(z=[],m=0;m<h;m++)if(0!==p[u])if(v=m+c,M=(v-n[u])/p[u],w=1,s[u]>1&&(w-=(1/x)**(M*t[u])),v<e[u]&&v>n[u]){const t=w*x*M**(1/s[u])+o;z[m]="floor"===r?Math.floor(t):"round"===r?Math.round(t):t}else v>=e[u]?z[m]=a:z[m]=o;else z[m]=o;y[u]=z}}else for(u=0;u<f;u++){for(z=[],m=0;m<h;m++)if(v=m+c,v<=n[u])z[m]=o;else if(v>=e[u])z[m]=a;else{const t=(v-n[u])*g[u]+o;z[m]="floor"===r?Math.floor(t):"round"===r?Math.round(t):t}y[u]=z}if(null!=t.contrastOffset){const n=l(t.contrastOffset,t.brightnessOffset);for(u=0;u<f;u++)for(z=y[u],m=0;m<h;m++)z[m]=n[z[m]]}return{lut:y,offset:c}}function l(t,n){const e=Math.min(Math.max(t,-100),100),s=Math.min(Math.max(n??0,-100),100),i=255,r=128;let o=0,a=0;const l=new Uint8Array(256);for(o=0;o<256;o++)e>0&&e<100?a=(200*o-100*i+2*i*s)/(2*(100-e))+r:e<=0&&e>-100?a=(200*o-100*i+2*i*s)*(100+e)/2e4+r:100===e?(a=200*o-100*i+(i+1)*(100-e)+2*i*s,a=a>0?i:0):-100===e&&(a=r),l[o]=a>i?i:a<0?0:a;return l}function f(t,n,e){const s=[];for(let i=0;i<n.length;i++){let o=0,a=0,l=0;"min"in n[i]?({min:o,max:a,avg:l}=n[i]):[o,a,l]=n[i];let f=l??0;"u8"!==t&&(f=255*(f-o)/(a-o)),e&&(f*=r[i]),s.push(u(f))}return s}function u(t){if(t<=0||t>=255)return i;let n=0;150!==t&&(n=t<=150?45*Math.cos(.01047*t):17*Math.sin(.021*t));const e=255,s=t+n,r=Math.log(t/e),o=Math.log(s/e);if(0===o)return i;const a=r/o;return isNaN(a)?i:Math.min(9.9,Math.max(.01,a))}function m(t,n,e,s){let i=1/0,r=-1/0,o=0,a=0;const l=t.length;for(let d=0;d<l;d++){const e=t[d];n&&!n[d]||(i=e<i?e:i,r=e>r?e:r,o+=e,a++)}if(0===a)return{statistics:{min:0,max:0,avg:0,stddev:0},histogram:null};const f=o/a;let u=0;for(let d=0;d<l;d++)n&&!n[d]||(u+=(t[d]-f)**2);const m=n?n.filter((t=>t)).length:l,c={min:i,max:r,avg:f,stddev:m<=1?0:Math.sqrt(u/(m-1))};if(!s)return{statistics:c,histogram:null};const h=256,g=new Uint32Array(h);if("u8"===e){for(let e=0;e<l;e++)n&&!n[e]||g[t[e]]++;return{statistics:c,histogram:{min:-.5,max:255.5,size:h,counts:g}}}const p=(r-i)/h;if(0===p){let t=0;if(null==n)t=l;else for(let e=0;e<l;e++)n[e]&&t++;return{statistics:c,histogram:{min:-.5,max:255.5,size:1,counts:new Uint32Array(1).fill(t)}}}const x=new Uint32Array(h+1);for(let d=0;d<l;d++)n&&!n[d]||x[Math.floor((t[d]-i)/p)]++;for(let d=0;d<h-1;d++)g[d]=x[d];return g[h-1]=x[h-1]+x[h],{statistics:c,histogram:{min:-.5,max:255.5,size:h,counts:g}}}function c(t){const{pixels:n,mask:e,pixelType:s}=t,i=n.map((t=>m(t,e,s,!0)));return{statistics:i.map((({statistics:t})=>t)),histograms:i.map((({histogram:t})=>t))}}function h(t){if(null==t||!t.pixels?.length)return null;const{pixels:n,mask:e,pixelType:s}=t,i=t.width*t.height,r=n.length;let o,a,l,f,u;const m=[],c=[];let h,g,p,x,d,M,y,v,w,z;const C=256;for(f=0;f<r;f++){if(h=new Uint32Array(C),p=n[f],"u8"===s)if(o=-.5,a=255.5,e)for(u=0;u<i;u++)e[u]&&h[p[u]]++;else for(u=0;u<i;u++)h[p[u]]++;else{let n=!1;t.statistics||(t.updateStatistics(),n=!0);const s=t.statistics;if(o=s[f].minValue,a=s[f].maxValue,l=(a-o)/C,0===l){!s||t.validPixelCount||n||t.updateStatistics();const e=(t.validPixelCount||t.width*t.height)/C;for(let t=0;t<C;t++)h[t]=Math.round(e*(t+1))-Math.round(e*t)}else{for(g=new Uint32Array(C+1),u=0;u<i;u++)e&&!e[u]||g[Math.floor((p[u]-o)/l)]++;for(u=0;u<C-1;u++)h[u]=g[u];h[C-1]=g[C-1]+g[C]}}for(m.push({min:o,max:a,size:C,counts:h}),x=0,d=0,v=0,u=0;u<C;u++)x+=h[u],d+=u*h[u];for(w=d/x,u=0;u<C;u++)v+=h[u]*(u-w)**2;z=Math.sqrt(v/(x-1)),l=(a-o)/C,M=(w+.5)*l+o,y=z*l,c.push({min:o,max:a,avg:M,stddev:y})}return{statistics:c,histograms:m}}function g(t){const n=[];for(let e=0;e<t.length;e++){const{min:s,max:i,size:r,counts:o}=t[e];let a=0,l=0;for(let t=0;t<r;t++)a+=o[t],l+=t*o[t];const f=l/a;let u=0;for(let t=0;t<r;t++)u+=o[t]*(t-f)**2;const m=(i-s)/r,c=(f+.5)*m+s,h=Math.sqrt(u/(a-1))*m;n.push({min:s,max:i,avg:c,stddev:h})}return n}function p(n,i){const{pixelBlock:r,bandIds:a,returnHistogramLut:l,rasterInfo:f}=i;let u=null,m=null,c=n.stretchType;if("number"==typeof c&&(c=s[c]),n.dra)if("minMax"===c&&null!=r&&r.statistics)u=r.statistics.map((t=>[t.minValue,t.maxValue,0,0]));else{const t=h(r);u=null!=t?t.statistics:null,m=null!=t?t.histograms:null}else u=n.statistics?.length>0?n.statistics:f.statistics,m=n.histograms||f.histograms;"percentClip"!==c&&"histogramEqualization"!==c||m?.length||(c="minMax");const g=u?.length||m?.length||f.bandCount,p=[],d=[];let M,y,v,w,z,C,O,b,k;u&&!Array.isArray(u[0])&&(u=u.map((t=>[t.min,t.max,t.avg,t.stddev])));const[A,U]=e(f.pixelType);if(!u?.length){for(u=[],b=0;b<g;b++)u.push([A,U,1,1]);"standardDeviation"===c&&(c="minMax")}switch(c){case"none":for(b=0;b<g;b++)p[b]=A,d[b]=U;break;case"minMax":for(b=0;b<g;b++)p[b]=u[b][0],d[b]=u[b][1];break;case"standardDeviation":for(b=0;b<g;b++)p[b]=u[b][2]-n.numberOfStandardDeviations*u[b][3],d[b]=u[b][2]+n.numberOfStandardDeviations*u[b][3],p[b]<u[b][0]&&(p[b]=u[b][0]),d[b]>u[b][1]&&(d[b]=u[b][1]);break;case"histogramEqualization":for(t(m),b=0;b<g;b++)p[b]=m[b].min,d[b]=m[b].max;break;case"percentClip":for(t(m),b=0;b<m.length;b++){for(M=m[b],z=new Uint32Array(M.size),w=[...M.counts],w.length>=20&&(w[0]=w[1]=w[2]=w[w.length-1]=w[w.length-2]=0),v=0,y=(M.max-M.min)/M.size,O=-.5===M.min&&1===y?.5:0,k=0;k<M.size;k++)v+=w[k],z[k]=v;for(C=(n.minPercent||0)*v/100,p[b]=M.min+O,k=0;k<M.size;k++)if(z[k]>C){p[b]=M.min+y*(k+O);break}for(C=(1-(n.maxPercent||0)/100)*v,d[b]=M.max+O,k=M.size-2;k>=0;k--)if(z[k]<C){d[b]=M.min+y*(k+2-O);break}if(d[b]<p[b]){const t=p[b];p[b]=d[b],d[b]=t}}break;default:for(b=0;b<g;b++)p[b]=u[b][0],d[b]=u[b][1]}let T,q,P;"histogramEqualization"===c?(t(m),q=m[0].size||256,T=0,l&&(P=m.map((t=>o(t))))):(q=n.max||255,T=n.min||0);return x({minCutOff:p,maxCutOff:d,outMax:q,outMin:T,histogramLut:P},a)}function x(t,n){if(null==n||0===n.length)return t;const e=Math.max.apply(null,n),{minCutOff:s,maxCutOff:i,outMin:r,outMax:o,histogramLut:a}=t;return s.length===n.length||s.length<=e?t:{minCutOff:n.map((t=>s[t])),maxCutOff:n.map((t=>i[t])),histogramLut:a?n.map((t=>a[t])):null,outMin:r,outMax:o}}function d(t,n){const e=new Float32Array(t);for(let s=0;s<t;s++)n[s]>1?n[s]>2?e[s]=6.5+(n[s]-2)**2.5:e[s]=6.5+100*(2-n[s])**4:e[s]=1;return e}function M(t,e){if(null==t||!t.pixels?.length)return t;const{mask:s,width:i,height:r,pixels:o}=t,{minCutOff:a,maxCutOff:l,gamma:f}=e,u=e.outMin||0,m=e.outMax||255,c=i*r,h=e.outputPixelType||"u8",g=t.pixels.map((()=>n.createEmptyBand(h,c))),p=g.length;let x,M,y,v,w;const z=m-u,C=[],O=[];for(x=0;x<p;x++)O[x]=l[x]-a[x],C[x]=0===O[x]?0:z/O[x];const b=h.startsWith("u")||h.startsWith("s"),k=f&&f.length>=p,A=!!e.isRenderer;if(k){const t=d(p,f);for(M=0;M<c;M++)if(null==s||s[M])for(x=0;x<p;x++)if(0!==O[x])if(y=o[x][M],w=(y-a[x])/O[x],v=1,f[x]>1&&(v-=(1/z)**(w*t[x])),y<l[x]&&y>a[x]){const t=v*z*w**(1/f[x])+u;g[x][M]=A?Math.floor(t):b?Math.round(t):t}else y>=l[x]?g[x][M]=m:g[x][M]=u;else g[x][M]=u}else for(M=0;M<c;M++)if(null==s||s[M])for(x=0;x<p;x++)if(y=o[x][M],y<l[x]&&y>a[x]){const t=(y-a[x])*C[x]+u;g[x][M]=A?Math.floor(t):b?Math.round(t):t}else y>=l[x]?g[x][M]=m:g[x][M]=u;const U=new n({width:i,height:r,mask:s,pixels:g,pixelType:h});return U.updateStatistics(),U}export{d as computeGammaCorrection,f as computeGammaValues,c as computeStatisticsHistograms,l as createContrastBrightnessLUT,o as createHistogramEqualizationLUT,a as createStretchLUT,g as estimateStatisticsFromHistograms,h as estimateStatisticsHistograms,p as getStretchCutoff,M as stretch};
5
+ import{assertIsSome as t}from"../../../core/maybe.js";import n from"../PixelBlock.js";import{getPixelValueRange as e}from"../rasterFormats/pixelRangeUtils.js";import{stretchTypeFunctionEnum as s}from"../../../renderers/support/stretchRendererUtils.js";const i=1,r=[.299,.587,.114];function o(t,n=256){n=Math.min(n,256);const{size:e,counts:s}=t,i=new Uint8Array(e),r=s.reduce(((t,e)=>t+e/n),0);let o=0,a=0,l=0,f=r;for(let u=0;u<e;u++)if(l+=s[u],!(u<e-1&&l+s[u+1]<f)){for(;o<n-1&&f<l;)o++,f+=r;for(let t=a;t<=u;t++)i[t]=o;a=u+1}for(let u=a;u<e;u++)i[u]=n-1;return i}function a(t){const{minCutOff:n,maxCutOff:e,gamma:s,pixelType:i,rounding:r}=t,o=t.outMin||0,a=t.outMax||255;if(!["u8","u16","s8","s16"].includes(i))return null;const f=n.length;let u,m,c=0;"s8"===i?c=-127:"s16"===i&&(c=-32767);let h=256;["u16","s16"].includes(i)&&(h=65536);const g=[],p=[],x=a-o;for(u=0;u<f;u++)p[u]=e[u]-n[u],g[u]=0===p[u]?0:x/p[u];let M;const y=[];let v,w,z;if(s&&s.length>=f){const t=d(f,s);for(u=0;u<f;u++){for(z=[],m=0;m<h;m++)if(0!==p[u])if(v=m+c,M=(v-n[u])/p[u],w=1,s[u]>1&&(w-=(1/x)**(M*t[u])),v<e[u]&&v>n[u]){const t=w*x*M**(1/s[u])+o;z[m]="floor"===r?Math.floor(t):"round"===r?Math.round(t):t}else v>=e[u]?z[m]=a:z[m]=o;else z[m]=o;y[u]=z}}else for(u=0;u<f;u++){for(z=[],m=0;m<h;m++)if(v=m+c,v<=n[u])z[m]=o;else if(v>=e[u])z[m]=a;else{const t=(v-n[u])*g[u]+o;z[m]="floor"===r?Math.floor(t):"round"===r?Math.round(t):t}y[u]=z}if(null!=t.contrastOffset){const n=l(t.contrastOffset,t.brightnessOffset);for(u=0;u<f;u++)for(z=y[u],m=0;m<h;m++)z[m]=n[z[m]]}return{lut:y,offset:c}}function l(t,n){const e=Math.min(Math.max(t,-100),100),s=Math.min(Math.max(n??0,-100),100),i=255,r=128;let o=0,a=0;const l=new Uint8Array(256);for(o=0;o<256;o++)e>0&&e<100?a=(200*o-100*i+2*i*s)/(2*(100-e))+r:e<=0&&e>-100?a=(200*o-100*i+2*i*s)*(100+e)/2e4+r:100===e?(a=200*o-100*i+(i+1)*(100-e)+2*i*s,a=a>0?i:0):-100===e&&(a=r),l[o]=a>i?i:a<0?0:a;return l}function f(t,n,e){const s=[];for(let i=0;i<n.length;i++){let o=0,a=0,l=0;"min"in n[i]?({min:o,max:a,avg:l}=n[i]):[o,a,l]=n[i];let f=l??0;"u8"!==t&&(f=255*(f-o)/(a-o)),e&&(f*=r[i]),s.push(u(f))}return s}function u(t){if(t<=0||t>=255)return i;let n=0;150!==t&&(n=t<=150?45*Math.cos(.01047*t):17*Math.sin(.021*t));const e=255,s=t+n,r=Math.log(t/e),o=Math.log(s/e);if(0===o)return i;const a=r/o;return isNaN(a)?i:Math.min(9.9,Math.max(.01,a))}function m(t,n,e,s){let i=1/0,r=-1/0,o=0,a=0;const l=t.length;for(let d=0;d<l;d++){const e=t[d];n&&!n[d]||(i=e<i?e:i,r=e>r?e:r,o+=e,a++)}if(0===a)return{statistics:{min:0,max:0,avg:0,stddev:0},histogram:null};const f=o/a;let u=0;for(let d=0;d<l;d++)n&&!n[d]||(u+=(t[d]-f)**2);const m=n?n.filter((t=>t)).length:l,c={min:i,max:r,avg:f,stddev:m<=1?0:Math.sqrt(u/(m-1))};if(!s)return{statistics:c,histogram:null};if(["u8","s8","u4","u2","u1"].includes(e)){const e=r-i+1,s=new Uint32Array(e);for(let r=0;r<l;r++)n&&!n[r]||s[t[r]-i]++;return{statistics:c,histogram:{min:i-.5,max:r+.5,size:e,counts:s}}}const h=256,g=new Uint32Array(h),p=(r-i)/h;if(0===p)return{statistics:c,histogram:{min:i,max:r,size:1,counts:new Uint32Array(1).fill(a)}};const x=new Uint32Array(h+1);for(let d=0;d<l;d++)n&&!n[d]||x[Math.floor((t[d]-i)/p)]++;for(let d=0;d<h-1;d++)g[d]=x[d];return g[h-1]=x[h-1]+x[h],{statistics:c,histogram:{min:i,max:r,size:h,counts:g}}}function c(t){const{pixels:n,mask:e,pixelType:s}=t,i=n.map((t=>m(t,e,s,!0)));return{statistics:i.map((({statistics:t})=>t)),histograms:i.map((({histogram:t})=>t))}}function h(t){if(null==t||!t.pixels?.length)return null;const{pixels:n,mask:e,pixelType:s}=t,i=t.width*t.height,r=n.length;let o,a,l,f,u;const m=[],c=[];let h,g,p,x,d,M,y,v,w,z;const C=256;for(f=0;f<r;f++){if(h=new Uint32Array(C),p=n[f],"u8"===s)if(o=-.5,a=255.5,e)for(u=0;u<i;u++)e[u]&&h[p[u]]++;else for(u=0;u<i;u++)h[p[u]]++;else{let n=!1;t.statistics||(t.updateStatistics(),n=!0);const s=t.statistics;if(o=s[f].minValue,a=s[f].maxValue,l=(a-o)/C,0===l){!s||t.validPixelCount||n||t.updateStatistics();const e=(t.validPixelCount||t.width*t.height)/C;for(let t=0;t<C;t++)h[t]=Math.round(e*(t+1))-Math.round(e*t)}else{for(g=new Uint32Array(C+1),u=0;u<i;u++)e&&!e[u]||g[Math.floor((p[u]-o)/l)]++;for(u=0;u<C-1;u++)h[u]=g[u];h[C-1]=g[C-1]+g[C]}}for(m.push({min:o,max:a,size:C,counts:h}),x=0,d=0,v=0,u=0;u<C;u++)x+=h[u],d+=u*h[u];for(w=d/x,u=0;u<C;u++)v+=h[u]*(u-w)**2;z=Math.sqrt(v/(x-1)),l=(a-o)/C,M=(w+.5)*l+o,y=z*l,c.push({min:o,max:a,avg:M,stddev:y})}return{statistics:c,histograms:m}}function g(t){const n=[];for(let e=0;e<t.length;e++){const{min:s,max:i,size:r,counts:o}=t[e];let a=0,l=0;for(let t=0;t<r;t++)a+=o[t],l+=t*o[t];const f=l/a;let u=0;for(let t=0;t<r;t++)u+=o[t]*(t-f)**2;const m=(i-s)/r,c=(f+.5)*m+s,h=Math.sqrt(u/(a-1))*m;n.push({min:s,max:i,avg:c,stddev:h})}return n}function p(n,i){const{pixelBlock:r,bandIds:a,returnHistogramLut:l,rasterInfo:f}=i;let u=null,m=null,c=n.stretchType;if("number"==typeof c&&(c=s[c]),n.dra)if("minMax"===c&&null!=r&&r.statistics)u=r.statistics.map((t=>[t.minValue,t.maxValue,0,0]));else{const t=h(r);u=null!=t?t.statistics:null,m=null!=t?t.histograms:null}else u=n.statistics?.length>0?n.statistics:f.statistics,m=n.histograms||f.histograms;"percentClip"!==c&&"histogramEqualization"!==c||m?.length||(c="minMax");const g=u?.length||m?.length||f.bandCount,p=[],d=[];let M,y,v,w,z,C,O,b,k;u&&!Array.isArray(u[0])&&(u=u.map((t=>[t.min,t.max,t.avg,t.stddev])));const[A,U]=e(f.pixelType);if(!u?.length){for(u=[],b=0;b<g;b++)u.push([A,U,1,1]);"standardDeviation"===c&&(c="minMax")}switch(c){case"none":for(b=0;b<g;b++)p[b]=A,d[b]=U;break;case"minMax":for(b=0;b<g;b++)p[b]=u[b][0],d[b]=u[b][1];break;case"standardDeviation":for(b=0;b<g;b++)p[b]=u[b][2]-n.numberOfStandardDeviations*u[b][3],d[b]=u[b][2]+n.numberOfStandardDeviations*u[b][3],p[b]<u[b][0]&&(p[b]=u[b][0]),d[b]>u[b][1]&&(d[b]=u[b][1]);break;case"histogramEqualization":for(t(m),b=0;b<g;b++)p[b]=m[b].min,d[b]=m[b].max;break;case"percentClip":for(t(m),b=0;b<m.length;b++){for(M=m[b],z=new Uint32Array(M.size),w=[...M.counts],w.length>=20&&(w[0]=w[1]=w[2]=w[w.length-1]=w[w.length-2]=0),v=0,y=(M.max-M.min)/M.size,O=-.5===M.min&&1===y?.5:0,k=0;k<M.size;k++)v+=w[k],z[k]=v;for(C=(n.minPercent||0)*v/100,p[b]=M.min+O,k=0;k<M.size;k++)if(z[k]>C){p[b]=M.min+y*(k+O);break}for(C=(1-(n.maxPercent||0)/100)*v,d[b]=M.max+O,k=M.size-2;k>=0;k--)if(z[k]<C){d[b]=M.min+y*(k+2-O);break}if(d[b]<p[b]){const t=p[b];p[b]=d[b],d[b]=t}}break;default:for(b=0;b<g;b++)p[b]=u[b][0],d[b]=u[b][1]}let T,q,P;"histogramEqualization"===c?(t(m),q=m[0].size||256,T=0,l&&(P=m.map((t=>o(t))))):(q=n.max||255,T=n.min||0);return x({minCutOff:p,maxCutOff:d,outMax:q,outMin:T,histogramLut:P},a)}function x(t,n){if(null==n||0===n.length)return t;const e=Math.max.apply(null,n),{minCutOff:s,maxCutOff:i,outMin:r,outMax:o,histogramLut:a}=t;return s.length===n.length||s.length<=e?t:{minCutOff:n.map((t=>s[t])),maxCutOff:n.map((t=>i[t])),histogramLut:a?n.map((t=>a[t])):null,outMin:r,outMax:o}}function d(t,n){const e=new Float32Array(t);for(let s=0;s<t;s++)n[s]>1?n[s]>2?e[s]=6.5+(n[s]-2)**2.5:e[s]=6.5+100*(2-n[s])**4:e[s]=1;return e}function M(t,e){if(null==t||!t.pixels?.length)return t;const{mask:s,width:i,height:r,pixels:o}=t,{minCutOff:a,maxCutOff:l,gamma:f}=e,u=e.outMin||0,m=e.outMax||255,c=i*r,h=e.outputPixelType||"u8",g=t.pixels.map((()=>n.createEmptyBand(h,c))),p=g.length;let x,M,y,v,w;const z=m-u,C=[],O=[];for(x=0;x<p;x++)O[x]=l[x]-a[x],C[x]=0===O[x]?0:z/O[x];const b=h.startsWith("u")||h.startsWith("s"),k=f&&f.length>=p,A=!!e.isRenderer;if(k){const t=d(p,f);for(M=0;M<c;M++)if(null==s||s[M])for(x=0;x<p;x++)if(0!==O[x])if(y=o[x][M],w=(y-a[x])/O[x],v=1,f[x]>1&&(v-=(1/z)**(w*t[x])),y<l[x]&&y>a[x]){const t=v*z*w**(1/f[x])+u;g[x][M]=A?Math.floor(t):b?Math.round(t):t}else y>=l[x]?g[x][M]=m:g[x][M]=u;else g[x][M]=u}else for(M=0;M<c;M++)if(null==s||s[M])for(x=0;x<p;x++)if(y=o[x][M],y<l[x]&&y>a[x]){const t=(y-a[x])*C[x]+u;g[x][M]=A?Math.floor(t):b?Math.round(t):t}else y>=l[x]?g[x][M]=m:g[x][M]=u;const U=new n({width:i,height:r,mask:s,pixels:g,pixelType:h});return U.updateStatistics(),U}export{d as computeGammaCorrection,f as computeGammaValues,c as computeStatisticsHistograms,l as createContrastBrightnessLUT,o as createHistogramEqualizationLUT,a as createStretchLUT,g as estimateStatisticsFromHistograms,h as estimateStatisticsHistograms,p as getStretchCutoff,M as stretch};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcgis/core",
3
- "version": "4.27.0-next.20230321",
3
+ "version": "4.27.0-next.20230323",
4
4
  "homepage": "https://js.arcgis.com",
5
5
  "description": "ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API",
6
6
  "keywords": [
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../chunks/tslib.es6.js";import r from"../core/Accessor.js";import e from"../core/Error.js";import o from"../core/Logger.js";import{get as s}from"../core/maybe.js";import{isAbsolute as a,makeRelative as l}from"../core/urlUtils.js";import{property as p}from"../core/accessorSupport/decorators/property.js";import{cast as i}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as u}from"../core/accessorSupport/decorators/subclass.js";let c=class extends r{constructor(t){super(t),this.portalItem=null}normalizeCtorArgs(t){return t&&t.portalItem&&t.path?{...t,path:this._normalizePath(t.path,t.portalItem)}:t}set path(t){null!=t&&a(t)?o.getLogger(this.declaredClass).error("portalitemresource:invalid-path","A portal item resource path must be relative"):this._set("path",t)}_castPath(t){return this._normalizePath(t,this.portalItem)}get url(){return this.portalItem&&this.path?`${this.portalItem.itemUrl}/resources/${this.path}`:null}get itemRelativeUrl(){return this.portalItem&&this.path?`./resources/${this.path}`:null}fetch(t="json",r){const o=this.url;if(null==o)throw new e("portal-item-resource:fetch","Portal item resource does not refer to a valid item or path");return this.portalItem.portal.request(o,{responseType:t,query:{token:this.portalItem.apiKey},signal:s(r,"signal")})}async update(t,r){return(await import("./support/resourceUtils.js")).addOrUpdateResource(this,"update",t,r)}hasPath(){return null!=this.path}_normalizePath(t,r){return null==t?t:(t=t.replace(/^\/+/,""),null!=r&&a(t)&&(t=l(t,r.itemUrl)),t?.replace(/^\/+/,"").replace(/^(\.\/)?resources\//,""))}};t([p()],c.prototype,"portalItem",void 0),t([p({type:String,value:null})],c.prototype,"path",null),t([i("path")],c.prototype,"_castPath",null),t([p({type:String,readOnly:!0})],c.prototype,"url",null),t([p({type:String,readOnly:!0})],c.prototype,"itemRelativeUrl",null),c=t([u("esri.portal.PortalItemResource")],c);const m=c;export{m as default};
5
+ import{_ as t}from"../chunks/tslib.es6.js";import r from"../core/Accessor.js";import e from"../core/Error.js";import o from"../core/Logger.js";import{isAbsolute as s,makeRelative as a}from"../core/urlUtils.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import{cast as p}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";let u=class extends r{constructor(t){super(t),this.portalItem=null}normalizeCtorArgs(t){return t&&t.portalItem&&t.path?{...t,path:this._normalizePath(t.path,t.portalItem)}:t}set path(t){null!=t&&s(t)?o.getLogger(this.declaredClass).error("portalitemresource:invalid-path","A portal item resource path must be relative"):this._set("path",t)}_castPath(t){return this._normalizePath(t,this.portalItem)}get url(){return this.portalItem&&this.path?`${this.portalItem.itemUrl}/resources/${this.path}`:null}get itemRelativeUrl(){return this.portalItem&&this.path?`./resources/${this.path}`:null}fetch(t="json",r){const o=this.url;if(null==o)throw new e("portal-item-resource:fetch","Portal item resource does not refer to a valid item or path");return this.portalItem.portal.request(o,{responseType:t,query:{token:this.portalItem.apiKey},signal:r?.signal})}async update(t,r){return(await import("./support/resourceUtils.js")).addOrUpdateResource(this,"update",t,r)}hasPath(){return null!=this.path}_normalizePath(t,r){return null==t?t:(t=t.replace(/^\/+/,""),null!=r&&s(t)&&(t=a(t,r.itemUrl)),t?.replace(/^\/+/,"").replace(/^(\.\/)?resources\//,""))}};t([l()],u.prototype,"portalItem",void 0),t([l({type:String,value:null})],u.prototype,"path",null),t([p("path")],u.prototype,"_castPath",null),t([l({type:String,readOnly:!0})],u.prototype,"url",null),t([l({type:String,readOnly:!0})],u.prototype,"itemRelativeUrl",null),u=t([i("esri.portal.PortalItemResource")],u);const c=u;export{c as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../request.js";import t from"../../core/Error.js";import{get as r}from"../../core/maybe.js";import{join as a,getPathExtension as o}from"../../core/urlUtils.js";async function s(e,t={},o){await e.load(o);const s=a(e.itemUrl,"resources"),{start:n=1,num:u=10,sortOrder:c="asc",sortField:l="created"}=t,i={query:{start:n,num:u,sortOrder:c,sortField:l,token:e.apiKey},signal:r(o,"signal")},p=await e.portal.request(s,i);return{total:p.total,nextStart:p.nextStart,resources:p.resources.map((({created:t,size:r,resource:a})=>({created:new Date(t),size:r,resource:e.resourceFromPath(a)})))}}async function n(e,o,s,n){if(!e.hasPath())throw new t(`portal-item-resource-${o}:invalid-path`,"Resource does not have a valid path");const u=e.portalItem;await u.load(n);const c=a(u.userItemUrl,"add"===o?"addResources":"updateResources"),[i,p]=l(e.path),m=await d(s),h=new FormData;return i&&"."!==i&&h.append("resourcesPrefix",i),null!=n&&n.compress&&h.append("compress","true"),h.append("fileName",p),h.append("file",m,p),h.append("f","json"),null!=n&&n.access&&h.append("access",n.access),await u.portal.request(c,{method:"post",body:h,signal:r(n,"signal")}),e}async function u(e,o,s){if(!o.hasPath())throw new t("portal-item-resources-remove:invalid-path","Resource does not have a valid path");await e.load(s);const n=a(e.userItemUrl,"removeResources");await e.portal.request(n,{method:"post",query:{resource:o.path},signal:r(s,"signal")}),o.portalItem=null}async function c(e,t){await e.load(t);const o=a(e.userItemUrl,"removeResources");return e.portal.request(o,{method:"post",query:{deleteAll:!0},signal:r(t,"signal")})}function l(e){const t=e.lastIndexOf("/");return-1===t?[".",e]:[e.slice(0,t),e.slice(t+1)]}function i(e){const[t,r]=p(e),[a,o]=l(t);return[a,o,r]}function p(e){const t=o(e);return null==t?[e,""]:[e.slice(0,e.length-t.length-1),`.${t}`]}async function d(t){if(t instanceof Blob)return t;return(await e(t.url,{responseType:"blob"})).data}function m(e,t){if(!e.hasPath())return null;const[r,,o]=i(e.path);return e.portalItem.resourceFromPath(a(r,t+o))}function h(e,t){if(!e.hasPath())return null;const[r,,o]=i(e.path);return e.portalItem.resourceFromPath(a(r,t+o))}export{n as addOrUpdateResource,d as contentToBlob,s as fetchResources,m as getSiblingOfSameType,h as getSiblingOfSameTypeI,c as removeAllResources,u as removeResource,i as splitPrefixFileNameAndExtension};
5
+ import e from"../../request.js";import t from"../../core/Error.js";import{join as r,getPathExtension as a}from"../../core/urlUtils.js";async function s(e,t={},a){await e.load(a);const s=r(e.itemUrl,"resources"),{start:o=1,num:n=10,sortOrder:u="asc",sortField:l="created"}=t,c={query:{start:o,num:n,sortOrder:u,sortField:l,token:e.apiKey},signal:a?.signal},i=await e.portal.request(s,c);return{total:i.total,nextStart:i.nextStart,resources:i.resources.map((({created:t,size:r,resource:a})=>({created:new Date(t),size:r,resource:e.resourceFromPath(a)})))}}async function o(e,a,s,o){if(!e.hasPath())throw new t(`portal-item-resource-${a}:invalid-path`,"Resource does not have a valid path");const n=e.portalItem;await n.load(o);const u=r(n.userItemUrl,"add"===a?"addResources":"updateResources"),[c,i]=l(e.path),d=await p(s),m=new FormData;return c&&"."!==c&&m.append("resourcesPrefix",c),null!=o&&o.compress&&m.append("compress","true"),m.append("fileName",i),m.append("file",d,i),m.append("f","json"),null!=o&&o.access&&m.append("access",o.access),await n.portal.request(u,{method:"post",body:m,signal:o?.signal}),e}async function n(e,a,s){if(!a.hasPath())throw new t("portal-item-resources-remove:invalid-path","Resource does not have a valid path");await e.load(s);const o=r(e.userItemUrl,"removeResources");await e.portal.request(o,{method:"post",query:{resource:a.path},signal:s?.signal}),a.portalItem=null}async function u(e,t){await e.load(t);const a=r(e.userItemUrl,"removeResources");return e.portal.request(a,{method:"post",query:{deleteAll:!0},signal:t?.signal})}function l(e){const t=e.lastIndexOf("/");return-1===t?[".",e]:[e.slice(0,t),e.slice(t+1)]}function c(e){const[t,r]=i(e),[a,s]=l(t);return[a,s,r]}function i(e){const t=a(e);return null==t?[e,""]:[e.slice(0,e.length-t.length-1),`.${t}`]}async function p(t){if(t instanceof Blob)return t;return(await e(t.url,{responseType:"blob"})).data}function d(e,t){if(!e.hasPath())return null;const[a,,s]=c(e.path);return e.portalItem.resourceFromPath(r(a,t+s))}function m(e,t){if(!e.hasPath())return null;const[a,,s]=c(e.path);return e.portalItem.resourceFromPath(r(a,t+s))}export{o as addOrUpdateResource,p as contentToBlob,s as fetchResources,d as getSiblingOfSameType,m as getSiblingOfSameTypeI,u as removeAllResources,n as removeResource,c as splitPrefixFileNameAndExtension};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- const d="20230321",b="81d27c557d60d73825d3cb6eae7df76ba385400b";export{d as buildDate,b as commitHash};
5
+ const b="20230323",c="4551a883dbd00f48ebd475c45b4acbc09f941913";export{b as buildDate,c as commitHash};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../Color.js";import{isSymbol3D as t,isSymbol2D as o}from"../../symbols.js";import{forEach as n}from"../../core/asyncUtils.js";import"../../core/has.js";import{unwrapOrThrow as r,get as l}from"../../core/maybe.js";import{px2pt as i}from"../../core/screenUtils.js";import{O as s}from"../../chunks/vec3f64.js";import{effectFunctionsFromJSON as c}from"../../layers/effects/jsonUtils.js";import{getStroke as u}from"./gfxUtils.js";import{Symbol3DMaterial as a}from"./Symbol3DMaterial.js";const f=new e("white");function y(e){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const o=e.symbolLayers.getItemAt(t-1);return"outline"in o?l(o,"outline","size"):void 0}function m(e){if(!e)return 0;if(t(e)){const t=y(e);return null!=t?t:0}return i(u(e)?.width)}function p(e){if(null==e||!("symbolLayers"in e)||null==e.symbolLayers)return!1;switch(e.type){case"point-3d":return e.symbolLayers.some((e=>"object"===e.type));case"line-3d":return e.symbolLayers.some((e=>"path"===e.type));case"polygon-3d":return e.symbolLayers.some((e=>"object"===e.type||"extrude"===e.type));default:return!1}}function h(e){return r(e.resource).href}function b(n,r){if(!n)return null;let l=null;return t(n)?l=w(n):o(n)&&(l=n.color?new e(n.color):null),l?d(l,r):null}function w(t){const o=t.symbolLayers;if(!o)return null;let n=null;return o.forEach((e=>{"object"===e.type&&null!=e.resource?.href||(n="water"===e.type?e.color:null!=e.material?e.material.color:null)})),n?new e(n):null}function d(t,o){if(null==o||null==t)return t;const n=t.toRgba();return n[3]=n[3]*o,new e(n)}function j(e,t,o){const n=e.symbolLayers;if(!n)return;const r=e=>d(t=t??(null!=e?e:null)??(null!=o?f:null),o);n.forEach((e=>{if("object"!==e.type||null==e.resource?.href||t)if("water"===e.type)e.color=r(e.color);else{const t=null!=e.material?e.material.color:null,n=r(t);null==e.material?e.material=new a({color:n}):e.material.color=n,null!=o&&"outline"in e&&null!=e.outline&&null!=e.outline.color&&(e.outline.color=d(e.outline.color,o))}}))}function g(e,t,o){(t=t??e.color)&&(e.color=d(t,o)),null!=o&&"outline"in e&&e.outline&&e.outline.color&&(e.outline.color=d(e.outline.color,o))}function k(n,r,l){n&&(r||null!=l)&&(r&&(r=new e(r)),t(n)?j(n,r,l):o(n)&&g(n,r,l))}async function L(e,t){const o=e.symbolLayers;o&&await n(o,(async e=>z(e,t)))}async function z(e,t){switch(e.type){case"extrude":v(e,t);break;case"icon":case"line":case"text":S(e,t);break;case"path":E(e,t);break;case"object":await U(e,t)}}function S(e,t){const o=x(t);null!=o&&(e.size=o)}function x(e){for(const t of e)if("number"==typeof t)return t;return null}function v(e,t){e.size="number"==typeof t[2]?t[2]:0}async function U(e,t){const{resourceSize:o,symbolSize:n}=await C(e),r=O(t,o,n);e.width=I(t[0],n[0],o[0],r),e.depth=I(t[1],n[1],o[1],r),e.height=I(t[2],n[2],o[2],r)}function E(e,t){const o=O(t,s,[e.width,void 0,e.height]);e.width=I(t[0],e.width,1,o),e.height=I(t[2],e.height,1,o)}function O(e,t,o){for(let n=0;n<3;n++){const r=e[n];switch(r){case"symbol-value":{const e=o[n];return null!=e?e/t[n]:1}case"proportional":break;default:if(r&&t[n])return r/t[n]}}return 1}async function C(e){const t=await import("./symbolLayerUtils.js"),o=await t.computeObjectLayerResourceSize(e,10),{width:n,height:r,depth:l}=e,i=[n,l,r];let s=1;for(let c=0;c<3;c++){const e=i[c];if(null!=e){s=e/o[c];break}}for(let c=0;c<3;c++)null==i[c]&&(i[c]=o[c]*s);return{resourceSize:o,symbolSize:i}}function I(e,t,o,n){switch(e){case"proportional":return o*n;case"symbol-value":return null!=t?t:o;default:return e}}function M(e,t){const o=x(t);if(null!=o)switch(e.type){case"simple-marker":e.size=o;break;case"picture-marker":{const t=e.width/e.height;t>1?(e.width=o,e.height=o*t):(e.width=o*t,e.height=o);break}case"simple-line":e.width=o;break;case"text":e.font.size=o}}async function R(e,n){if(e&&n)return t(e)?L(e,n):void(o(e)&&M(e,n))}function A(e,n,r){if(e&&null!=n)if(t(e)){const t=e.symbolLayers;t&&t.forEach((e=>{if(e&&"object"===e.type)switch(r){case"tilt":e.tilt=n;break;case"roll":e.roll=n;break;default:e.heading=n}}))}else o(e)&&("simple-marker"!==e.type&&"picture-marker"!==e.type&&"text"!==e.type||(e.angle=n))}function D(e){if(!e)return null;const t=e.effects.filter((e=>"bloom"!==e.type)).map((e=>e.toJSON()));return c(t)}function J(e){return null!=e&&"polygon-3d"===e.type&&e.symbolLayers.some((e=>"extrude"===e.type))}async function N(e,t){const o=await e.fetchSymbol(t);return o||e.fetchCIMSymbol(t)}export{k as applyColorToSymbol,d as applyOpacityToColor,A as applyRotationToSymbol,R as applySizesToSymbol,N as fetchWebStyleSymbol,D as getCSSFilterFromEffectList,b as getColorFromSymbol,h as getIconHref,m as getSymbolOutlineSize,p as isVolumetricSymbol,J as symbolHasExtrudeSymbolLayer};
5
+ import e from"../../Color.js";import{isSymbol3D as t,isSymbol2D as o}from"../../symbols.js";import{forEach as n}from"../../core/asyncUtils.js";import"../../core/has.js";import{unwrapOrThrow as r}from"../../core/maybe.js";import{px2pt as l}from"../../core/screenUtils.js";import{O as i}from"../../chunks/vec3f64.js";import{effectFunctionsFromJSON as s}from"../../layers/effects/jsonUtils.js";import{getStroke as c}from"./gfxUtils.js";import{Symbol3DMaterial as u}from"./Symbol3DMaterial.js";const a=new e("white");function f(e){const t=e.symbolLayers&&e.symbolLayers.length;if(!t)return;const o=e.symbolLayers.getItemAt(t-1);return"outline"in o?o?.outline?.size:void 0}function y(e){if(!e)return 0;if(t(e)){const t=f(e);return null!=t?t:0}return l(c(e)?.width)}function m(e){if(null==e||!("symbolLayers"in e)||null==e.symbolLayers)return!1;switch(e.type){case"point-3d":return e.symbolLayers.some((e=>"object"===e.type));case"line-3d":return e.symbolLayers.some((e=>"path"===e.type));case"polygon-3d":return e.symbolLayers.some((e=>"object"===e.type||"extrude"===e.type));default:return!1}}function p(e){return r(e.resource).href}function h(n,r){if(!n)return null;let l=null;return t(n)?l=b(n):o(n)&&(l=n.color?new e(n.color):null),l?w(l,r):null}function b(t){const o=t.symbolLayers;if(!o)return null;let n=null;return o.forEach((e=>{"object"===e.type&&null!=e.resource?.href||(n="water"===e.type?e.color:null!=e.material?e.material.color:null)})),n?new e(n):null}function w(t,o){if(null==o||null==t)return t;const n=t.toRgba();return n[3]=n[3]*o,new e(n)}function d(e,t,o){const n=e.symbolLayers;if(!n)return;const r=e=>w(t=t??(null!=e?e:null)??(null!=o?a:null),o);n.forEach((e=>{if("object"!==e.type||null==e.resource?.href||t)if("water"===e.type)e.color=r(e.color);else{const t=null!=e.material?e.material.color:null,n=r(t);null==e.material?e.material=new u({color:n}):e.material.color=n,null!=o&&"outline"in e&&null!=e.outline&&null!=e.outline.color&&(e.outline.color=w(e.outline.color,o))}}))}function j(e,t,o){(t=t??e.color)&&(e.color=w(t,o)),null!=o&&"outline"in e&&e.outline&&e.outline.color&&(e.outline.color=w(e.outline.color,o))}function g(n,r,l){n&&(r||null!=l)&&(r&&(r=new e(r)),t(n)?d(n,r,l):o(n)&&j(n,r,l))}async function k(e,t){const o=e.symbolLayers;o&&await n(o,(async e=>L(e,t)))}async function L(e,t){switch(e.type){case"extrude":x(e,t);break;case"icon":case"line":case"text":z(e,t);break;case"path":U(e,t);break;case"object":await v(e,t)}}function z(e,t){const o=S(t);null!=o&&(e.size=o)}function S(e){for(const t of e)if("number"==typeof t)return t;return null}function x(e,t){e.size="number"==typeof t[2]?t[2]:0}async function v(e,t){const{resourceSize:o,symbolSize:n}=await O(e),r=E(t,o,n);e.width=C(t[0],n[0],o[0],r),e.depth=C(t[1],n[1],o[1],r),e.height=C(t[2],n[2],o[2],r)}function U(e,t){const o=E(t,i,[e.width,void 0,e.height]);e.width=C(t[0],e.width,1,o),e.height=C(t[2],e.height,1,o)}function E(e,t,o){for(let n=0;n<3;n++){const r=e[n];switch(r){case"symbol-value":{const e=o[n];return null!=e?e/t[n]:1}case"proportional":break;default:if(r&&t[n])return r/t[n]}}return 1}async function O(e){const t=await import("./symbolLayerUtils.js"),o=await t.computeObjectLayerResourceSize(e,10),{width:n,height:r,depth:l}=e,i=[n,l,r];let s=1;for(let c=0;c<3;c++){const e=i[c];if(null!=e){s=e/o[c];break}}for(let c=0;c<3;c++)null==i[c]&&(i[c]=o[c]*s);return{resourceSize:o,symbolSize:i}}function C(e,t,o,n){switch(e){case"proportional":return o*n;case"symbol-value":return null!=t?t:o;default:return e}}function I(e,t){const o=S(t);if(null!=o)switch(e.type){case"simple-marker":e.size=o;break;case"picture-marker":{const t=e.width/e.height;t>1?(e.width=o,e.height=o*t):(e.width=o*t,e.height=o);break}case"simple-line":e.width=o;break;case"text":e.font.size=o}}async function M(e,n){if(e&&n)return t(e)?k(e,n):void(o(e)&&I(e,n))}function R(e,n,r){if(e&&null!=n)if(t(e)){const t=e.symbolLayers;t&&t.forEach((e=>{if(e&&"object"===e.type)switch(r){case"tilt":e.tilt=n;break;case"roll":e.roll=n;break;default:e.heading=n}}))}else o(e)&&("simple-marker"!==e.type&&"picture-marker"!==e.type&&"text"!==e.type||(e.angle=n))}function A(e){if(!e)return null;const t=e.effects.filter((e=>"bloom"!==e.type)).map((e=>e.toJSON()));return s(t)}function D(e){return null!=e&&"polygon-3d"===e.type&&e.symbolLayers.some((e=>"extrude"===e.type))}async function J(e,t){const o=await e.fetchSymbol(t);return o||e.fetchCIMSymbol(t)}export{g as applyColorToSymbol,w as applyOpacityToColor,R as applyRotationToSymbol,M as applySizesToSymbol,J as fetchWebStyleSymbol,A as getCSSFilterFromEffectList,h as getColorFromSymbol,p as getIconHref,y as getSymbolOutlineSize,m as isVolumetricSymbol,D as symbolHasExtrudeSymbolLayer};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{throwIfNotAbortError as e,isAbortError as t,eachAlways as s}from"../../../../core/promiseUtils.js";import{addQueryParameters as r}from"../../../../core/urlUtils.js";import{open as i}from"../../../../core/workers/workers.js";import o from"./GlyphMosaic.js";import a from"./GlyphSource.js";import l from"./SpriteMosaic.js";import c from"../../tiling/TileKey.js";class n{constructor(e,t,s){this._layer=e,this._styleRepository=t,this.devicePixelRatio=s,this._spriteMosaic=null,this._glyphMosaic=null,this._connection=null}destroy(){this._connection?.close(),this._connection=null,this._styleRepository=null,this._layer=null,this._spriteMosaic=null,this._glyphMosaic=null}get spriteMosaic(){return this._spriteSourcePromise.then((()=>this._spriteMosaic))}get glyphMosaic(){return this._glyphMosaic}async start(t){this._spriteSourcePromise=this._layer.loadSpriteSource(this.devicePixelRatio,t),this._spriteSourcePromise.then((e=>{this._spriteMosaic=new l(1024,1024,250),this._spriteMosaic.setSpriteSource(e)}));const s=this._layer.currentStyleInfo.glyphsUrl,c=new a(s?r(s,{...this._layer.customParameters,token:this._layer.apiKey}):null);this._glyphMosaic=new o(1024,1024,c),this._broadcastPromise=i("WorkerTileHandler",{client:this,schedule:t.schedule,signal:t.signal}).then((s=>{if(this._connection=s,this._layer&&!this._connection.closed){const r=s.broadcast("setStyle",this._layer.currentStyleInfo.style,t);Promise.all(r).catch((t=>e(t)))}}))}async updateStyle(e){return await this._broadcastPromise,this._broadcastPromise=Promise.all(this._connection.broadcast("updateStyle",e)),this._broadcastPromise}setSpriteSource(e){const t=new l(1024,1024,250);return t.setSpriteSource(e),this._spriteMosaic=t,this._spriteSourcePromise=Promise.resolve(e),t}async setStyle(e,t){await this._broadcastPromise,this._styleRepository=e,this._spriteSourcePromise=this._layer.loadSpriteSource(this.devicePixelRatio,null),this._spriteSourcePromise.then((e=>{this._spriteMosaic=new l(1024,1024,250),this._spriteMosaic.setSpriteSource(e)}));const s=new a(this._layer.currentStyleInfo.glyphsUrl?r(this._layer.currentStyleInfo.glyphsUrl,{...this._layer.customParameters,token:this._layer.apiKey}):null);return this._glyphMosaic=new o(1024,1024,s),this._broadcastPromise=Promise.all(this._connection.broadcast("setStyle",t)),this._broadcastPromise}fetchTileData(e,t){return this._getRefKeys(e,t).then((e=>{const s=this._layer.sourceNameToSource,r=[];for(const t in s)r.push(t);return this._getSourcesData(r,e,t)}))}parseTileData(e,t){const s=e&&e.data;if(!s)return Promise.resolve(null);const{sourceName2DataAndRefKey:r,transferList:i}=s;return 0===Object.keys(r).length?Promise.resolve(null):this._broadcastPromise.then((()=>this._connection.invoke("createTileAndParse",{key:e.key.id,sourceName2DataAndRefKey:r,styleLayerUIDs:e.styleLayerUIDs},{...t,transferList:i})))}async getSprites(e){return await this._spriteSourcePromise,this._spriteMosaic.getSpriteItems(e)}getGlyphs(e){return this._glyphMosaic.getGlyphItems(e.font,e.codePoints)}async _getTilePayload(e,s,r){const i=c.pool.acquire(e.id),o=this._layer.sourceNameToSource[s],{level:a,row:l,col:n}=i;c.pool.release(i);try{return{protobuff:await o.requestTile(a,l,n,r),sourceName:s}}catch(h){if(t(h))throw h;return{protobuff:null,sourceName:s}}}_getRefKeys(e,t){const r=this._layer.sourceNameToSource,i=new Array;for(const s in r){const o=r[s].getRefKey(e,t);i.push(o)}return s(i)}_getSourcesData(e,t,r){const i=[];for(let s=0;s<t.length;s++)if(null==t[s].value||null==e[s])i.push(null);else{const o=this._getTilePayload(t[s].value,e[s],r);i.push(o)}return s(i).then((e=>{const s={},r=[];for(let i=0;i<e.length;i++){const o=e[i].value;if(o&&(o.protobuff&&o.protobuff.byteLength>0)){const e=t[i].value.id;s[o.sourceName]={refKey:e,protobuff:o.protobuff},r.push(o.protobuff)}}return{sourceName2DataAndRefKey:s,transferList:r}}))}}export{n as TileHandler};
5
+ import{abortMaybe as t}from"../../../../core/maybe.js";import{throwIfNotAbortError as e,throwIfAbortError as s,isAbortError as r,eachAlways as i}from"../../../../core/promiseUtils.js";import{addQueryParameters as o}from"../../../../core/urlUtils.js";import{open as n}from"../../../../core/workers/workers.js";import l from"./GlyphMosaic.js";import a from"./GlyphSource.js";import c from"./SpriteMosaic.js";import u from"../../tiling/TileKey.js";class h{constructor(t,e,s){this._layer=t,this._styleRepository=e,this.devicePixelRatio=s,this._spriteMosaic=null,this._glyphMosaic=null,this._connection=null,this._spriteSourceAbortController=null,this._startOptionsInputSignal=null,this._inputSignalEventListener=null}destroy(){this._connection?.close(),this._connection=null,this._styleRepository=null,this._layer=null,this._spriteMosaic=null,this._glyphMosaic=null,this._spriteSourceAbortController=t(this._spriteSourceAbortController),this._spriteSourcePromise=null,this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener("abort",this._inputSignalEventListener),this._startOptionsInputSignal=null,this._inputSignalEventListener=null}get spriteMosaic(){return this._spriteSourcePromise.then((()=>this._spriteMosaic))}get glyphMosaic(){return this._glyphMosaic}async start(t){this._requestSprite(t);const s=this._layer.currentStyleInfo.glyphsUrl,r=new a(s?o(s,{...this._layer.customParameters,token:this._layer.apiKey}):null);this._glyphMosaic=new l(1024,1024,r),this._broadcastPromise=n("WorkerTileHandler",{client:this,schedule:t.schedule,signal:t.signal}).then((s=>{if(this._layer&&(this._connection?.close(),this._connection=s,this._layer&&!this._connection.closed)){const r=s.broadcast("setStyle",this._layer.currentStyleInfo.style,t);Promise.all(r).catch((t=>e(t)))}}))}_requestSprite(t){this._spriteSourceAbortController?.abort();const e=new AbortController;this._spriteSourceAbortController=e;const r=t?.signal;this._inputSignalEventListener&&this._startOptionsInputSignal?.removeEventListener("abort",this._inputSignalEventListener),this._startOptionsInputSignal=null,r&&(this._inputSignalEventListener=p(e),r.addEventListener("abort",this._inputSignalEventListener,{once:!0}));const{signal:i}=e,o={...t,signal:i};this._spriteSourcePromise=this._layer.loadSpriteSource(this.devicePixelRatio,o),this._spriteSourcePromise.then((t=>{s(i),this._spriteMosaic=new c(1024,1024,250),this._spriteMosaic.setSpriteSource(t)}))}async updateStyle(t){return await this._broadcastPromise,this._broadcastPromise=Promise.all(this._connection.broadcast("updateStyle",t)),this._broadcastPromise}setSpriteSource(t){const e=new c(1024,1024,250);return e.setSpriteSource(t),this._spriteMosaic=e,this._spriteSourcePromise=Promise.resolve(t),this._spriteSourceAbortController=null,e}async setStyle(t,e){await this._broadcastPromise,this._styleRepository=t,this._requestSprite();const s=new a(this._layer.currentStyleInfo.glyphsUrl?o(this._layer.currentStyleInfo.glyphsUrl,{...this._layer.customParameters,token:this._layer.apiKey}):null);return this._glyphMosaic=new l(1024,1024,s),this._broadcastPromise=Promise.all(this._connection.broadcast("setStyle",e)),this._broadcastPromise}fetchTileData(t,e){return this._getRefKeys(t,e).then((t=>{const s=this._layer.sourceNameToSource,r=[];for(const e in s)r.push(e);return this._getSourcesData(r,t,e)}))}parseTileData(t,e){const s=t&&t.data;if(!s)return Promise.resolve(null);const{sourceName2DataAndRefKey:r,transferList:i}=s;return 0===Object.keys(r).length?Promise.resolve(null):this._broadcastPromise.then((()=>this._connection.invoke("createTileAndParse",{key:t.key.id,sourceName2DataAndRefKey:r,styleLayerUIDs:t.styleLayerUIDs},{...e,transferList:i})))}async getSprites(t){return await this._spriteSourcePromise,this._spriteMosaic.getSpriteItems(t)}getGlyphs(t){return this._glyphMosaic.getGlyphItems(t.font,t.codePoints)}async _getTilePayload(t,e,s){const i=u.pool.acquire(t.id),o=this._layer.sourceNameToSource[e],{level:n,row:l,col:a}=i;u.pool.release(i);try{return{protobuff:await o.requestTile(n,l,a,s),sourceName:e}}catch(c){if(r(c))throw c;return{protobuff:null,sourceName:e}}}_getRefKeys(t,e){const s=this._layer.sourceNameToSource,r=new Array;for(const i in s){const o=s[i].getRefKey(t,e);r.push(o)}return i(r)}_getSourcesData(t,e,s){const r=[];for(let i=0;i<e.length;i++)if(null==e[i].value||null==t[i])r.push(null);else{const o=this._getTilePayload(e[i].value,t[i],s);r.push(o)}return i(r).then((t=>{const s={},r=[];for(let i=0;i<t.length;i++){const o=t[i].value;if(o&&(o.protobuff&&o.protobuff.byteLength>0)){const t=e[i].value.id;s[o.sourceName]={refKey:t,protobuff:o.protobuff},r.push(o.protobuff)}}return{sourceName2DataAndRefKey:s,transferList:r}}))}}function p(t){return()=>t.abort()}export{h as TileHandler};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../Viewpoint.js";import e from"../../core/Collection.js";import{get as n}from"../../core/maybe.js";import{getMetersPerUnitForSR as r}from"../../core/unitUtils.js";import{t as o}from"../../chunks/common.js";import{f as a,r as i,t as c,a as s,s as u,b as f,c as l}from"../../chunks/mat2d.js";import{c as m}from"../../chunks/mat2df64.js";import{b as y,s as p,e as g,n as x,a as h,f as b,g as w,h as d,i as j,j as G,t as R,c as A}from"../../chunks/vec2.js";import{f as k,a as S}from"../../chunks/vec2f64.js";import v from"../../geometry/Extent.js";import M from"../../geometry/Geometry.js";import F from"../../geometry/Point.js";import{isLoaded as N,canProjectWithoutEngine as z,load as I,project as V}from"../../geometry/projection.js";import q from"../../geometry/SpatialReference.js";import{equals as L,isValid as P,getInfo as C}from"../../geometry/support/spatialReferenceUtils.js";const E=96,O=39.37,Q=180/Math.PI;function U(t){return t.wkid?t:t.spatialReference||q.WGS84}function B(t,e){return e.type?p(t,e.x,e.y):A(t,e)}function D(t){return r(t)}function T(t,e){const n=Math.max(1,e[0]),r=Math.max(1,e[1]);return Math.max(t.width/n,t.height/r)*at(t.spatialReference)}async function W(t,r,o,a){let i,c;if(!t)return null;if(Array.isArray(t)&&!t.length)return null;if(e.isCollection(t)&&(t=t.toArray()),Array.isArray(t)&&t.length&&"object"==typeof t[0]){const e=t.every((t=>"attributes"in t)),n=t.some((t=>!t.geometry));let i=t;if(e&&n&&r&&r.allLayerViews){const e=new Map;for(const r of t){const t=r.layer,n=e.get(t)||[],o=r.attributes[t.objectIdField];null!=o&&n.push(o),e.set(t,n)}const n=[];e.forEach(((t,e)=>{const o=r.allLayerViews.find((t=>t.layer.id===e.id));if(o&&"queryFeatures"in o){const r=e.createQuery();r.objectIds=t,r.returnGeometry=!0,n.push(o.queryFeatures(r))}}));const o=await Promise.all(n),a=[];for(const t of o)if(t&&t.features&&t.features.length)for(const e of t.features)null!=e.geometry&&a.push(e.geometry);i=a}for(const t of i)a=await W(t,r,o,a);return a}if(Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1])i=new F(t);else if(t instanceof M)i=t;else if("geometry"in t)if(t.geometry)i=t.geometry;else if(t.layer){const e=t.layer,o=r.allLayerViews.find((t=>t.layer.id===e.id));if(o&&"queryFeatures"in o){const r=e.createQuery();r.objectIds=[t.attributes[e.objectIdField]],r.returnGeometry=!0;const a=await o.queryFeatures(r);i=n(a,"features",0,"geometry")}}if(null==i)return null;if(c="point"===i.type?new v({xmin:i.x,ymin:i.y,xmax:i.x,ymax:i.y,spatialReference:i.spatialReference}):i.extent,!c)return null;N()||z(c.spatialReference,o)||await I();const s=V(c,o);return s?a=a?a.union(s):s:null}function H(t){if(t&&(!Array.isArray(t)||"number"!=typeof t[0])&&("object"==typeof t||Array.isArray(t)&&"object"==typeof t[0])){if("layer"in t&&t.layer&&t.layer.minScale&&t.layer.maxScale){const e=t.layer;return{min:e.minScale,max:e.maxScale}}if(Array.isArray(t)&&t.length&&t.every((t=>"layer"in t))){let e=0,n=0;for(const r of t){const t=r.layer;t&&t.minScale&&t.maxScale&&(e=t.minScale<e?t.minScale:e,n=t.maxScale>n?t.maxScale:n)}return e&&n?{min:e,max:n}:null}}}function J(t,e){return L(U(t),e)?t:V(t,e)}async function K(e,n){if(!e||!n)return new t({targetGeometry:new F,scale:0,rotation:0});let r=n.spatialReference;const{constraints:o,padding:a,viewpoint:i,size:c}=n,s=[a?c[0]-a.left-a.right:c[0],a?c[1]-a.top-a.bottom:c[1]];let u=null;e instanceof t?u=e:e.viewpoint?u=e.viewpoint:e.target&&"esri.Viewpoint"===e.target.declaredClass&&(u=e.target);let f=null;u&&u.targetGeometry?f=u.targetGeometry:e instanceof v?f=e:(e||e&&("center"in e||"extent"in e||"target"in e))&&(f=await W(e.center,n,r)||await W(e.extent,n,r)||await W(e.target,n,r)||await W(e,n,r)),!f&&i&&i.targetGeometry?f=i.targetGeometry:!f&&n.extent&&(f=n.extent),r||(r=U(n.spatialReference||n.extent||f)),N()||L(f.spatialReference,r)||z(f,r)||await I();const l=J(f.center??f,r);let m=0;if(u&&null!=u.targetGeometry&&"point"===u.targetGeometry.type)m=u.scale;else if("scale"in e&&e.scale)m=e.scale;else if("zoom"in e&&-1!==e.zoom&&o&&o.effectiveLODs)m=o.zoomToScale(e.zoom);else if(Array.isArray(f)||"point"===f.type||"extent"===f.type&&0===f.width&&0===f.height){const t=J(n.extent,r);m=null!=t?T(t,s):n.extent?T(n.extent,s):i.scale}else m=T(J(f.extent,r),s);const y=H(e);y&&(y.min&&y.min>m?m=y.min:y.max&&y.max<m&&(m=y.max));let p=0;u?p=u.rotation:e.hasOwnProperty("rotation")?p=e.rotation:i&&(p=i.rotation);let g=new t({targetGeometry:l,scale:m,rotation:p});return o&&(g=o.fit(g),o.constrainByGeometry(g),o.rotationEnabled||(g.rotation=p)),g}function X(t,e){const n=t.targetGeometry,r=e.targetGeometry;return n.x=r.x,n.y=r.y,n.spatialReference=r.spatialReference,t.scale=e.scale,t.rotation=e.rotation,t}function Y(t,e,n){return n?p(t,.5*(e[0]-n.right+n.left),.5*(e[1]-n.bottom+n.top)):y(t,e,.5)}const Z=function(){const t=S();return function(e,n,r){const o=n.targetGeometry;B(t,o);const a=.5*nt(n);return e.xmin=t[0]-a*r[0],e.ymin=t[1]-a*r[1],e.xmax=t[0]+a*r[0],e.ymax=t[1]+a*r[1],e.spatialReference=o.spatialReference,e}}();function $(t,e,n,r,o){return pt(t,e,n.center),t.scale=T(n,r),o&&o.constraints&&o.constraints.constrain(t),t}function _(t,e,n,r){return st(t,e,n,r),l(t,t)}const tt=function(){const t=S();return function(e,n,r){return g(e,it(e,n),Y(t,n,r))}}(),et=function(){const t=m(),e=S();return function(n,r,o,s){const u=nt(r),f=ot(r);return p(e,u,u),a(t,e),i(t,t,f),c(t,t,tt(e,o,s)),c(t,t,[0,s.top-s.bottom]),p(n,t[4],t[5])}}();function nt(t){return t.scale*rt(t.targetGeometry)}function rt(t){return null!=t&&P(t.spatialReference)?1/(D(t.spatialReference)*O*E):1}function ot(t){return o(t.rotation)||0}function at(t){return P(t)?D(t)*O*E:1}function it(t,e){return y(t,e,.5)}const ct=function(){const t=S(),e=S(),n=S();return function(r,o,a,f,l,m){return x(t,o),y(e,a,.5*m),p(n,1/f*m,-1/f*m),s(r,e),l&&i(r,r,l),u(r,r,n),c(r,r,t),r}}(),st=function(){const t=S();return function(e,n,r,o){const a=nt(n),i=ot(n);return B(t,n.targetGeometry),ct(e,t,r,a,i,o)}}(),ut=function(){const t=S();return function(e,n,r,o){const a=nt(n);return B(t,n.targetGeometry),ct(e,t,r,a,0,o)}}();function ft(t){const e=C(t);return e?e.valid[1]-e.valid[0]:0}function lt(t,e){return Math.round(ft(t)/e)}const mt=function(){const t=S(),e=S(),n=[0,0,0];return function(r,o,a){h(t,r,o),b(t,t),h(e,r,a),b(e,e),w(n,t,e);let i=Math.acos(d(t,e)/(j(t)*j(e)))*Q;return n[2]<0&&(i=-i),isNaN(i)&&(i=0),i}}(),yt=function(){const t=S();return function(e,n,r,o){const a=e.targetGeometry;return X(e,n),et(t,n,r,o),a.x+=t[0],a.y+=t[1],e}}(),pt=function(t,e,n){X(t,e);const r=t.targetGeometry;return r.x=n.x,r.y=n.y,r.spatialReference=n.spatialReference,t},gt=function(){const t=S();return function(e,n,r,o,a){a||(a="center"),g(t,r,o),y(t,t,.5);const i=t[0],c=t[1];switch(a){case"center":p(t,0,0);break;case"left":p(t,-i,0);break;case"top":p(t,0,c);break;case"right":p(t,i,0);break;case"bottom":p(t,0,-c);break;case"top-left":p(t,-i,c);break;case"bottom-left":p(t,-i,-c);break;case"top-right":p(t,i,c);break;case"bottom-right":p(t,i,-c)}return At(e,n,t),e}}();function xt(t,e,n){return X(t,e),t.rotation+=n,t}function ht(t,e,n){return X(t,e),t.rotation=n,t}const bt=function(){const t=S();return function(e,n,r,o,a){return X(e,n),isNaN(r)||0===r||(Gt(t,o,n,a),e.scale=n.scale*r,Rt(t,t,e,a),At(e,e,p(t,t[0]-o[0],o[1]-t[1]))),e}}();function wt(t,e,n){return X(t,e),t.scale=n,t}const dt=function(){const t=S();return function(e,n,r,o,a,i){return X(e,n),isNaN(r)||0===r||(Gt(t,a,n,i),e.scale=n.scale*r,e.rotation+=o,Rt(t,t,e,i),At(e,e,p(t,t[0]-a[0],a[1]-t[1]))),e}}(),jt=function(){const t=S(),e=S();return function(n,r,o,a,i,c,s){return tt(e,c,s),G(t,i,e),a?dt(n,r,o,a,t,c):bt(n,r,o,t,c)}}(),Gt=function(){const t=m();return function(e,n,r,o){return R(e,n,_(t,r,o,1))}}(),Rt=function(){const t=m();return function(e,n,r,o){return R(e,n,st(t,r,o,1))}}(),At=function(){const t=S(),e=m();return function(n,r,o){X(n,r);const a=nt(r),i=n.targetGeometry;return f(e,ot(r)),u(e,e,k(a,a)),R(t,o,e),i.x+=t[0],i.y+=t[1],n}}();export{yt as addPadding,mt as angleBetween,pt as centerAt,X as copy,K as create,T as extentToScale,Y as getAnchor,Z as getExtent,ct as getMatrix,et as getPaddingMapTranslation,tt as getPaddingScreenTranslation,nt as getResolution,at as getResolutionToScaleFactor,st as getTransform,ut as getTransformNoRotation,lt as getWorldScreenWidth,ft as getWorldWidth,jt as padAndScaleAndRotateBy,gt as resize,xt as rotateBy,ht as rotateTo,dt as scaleAndRotateBy,wt as scaleTo,$ as setExtent,Gt as toMap,Rt as toScreen,At as translateBy};
5
+ import t from"../../Viewpoint.js";import e from"../../core/Collection.js";import{getMetersPerUnitForSR as n}from"../../core/unitUtils.js";import{t as r}from"../../chunks/common.js";import{f as o,r as a,t as i,a as c,s,b as u,c as f}from"../../chunks/mat2d.js";import{c as l}from"../../chunks/mat2df64.js";import{b as m,s as y,e as p,n as g,a as x,f as h,g as b,h as w,i as d,j,t as G,c as R}from"../../chunks/vec2.js";import{f as A,a as k}from"../../chunks/vec2f64.js";import S from"../../geometry/Extent.js";import v from"../../geometry/Geometry.js";import M from"../../geometry/Point.js";import{isLoaded as F,canProjectWithoutEngine as N,load as z,project as I}from"../../geometry/projection.js";import V from"../../geometry/SpatialReference.js";import{equals as q,isValid as L,getInfo as P}from"../../geometry/support/spatialReferenceUtils.js";const C=96,E=39.37,O=180/Math.PI;function Q(t){return t.wkid?t:t.spatialReference||V.WGS84}function U(t,e){return e.type?y(t,e.x,e.y):R(t,e)}function B(t){return n(t)}function D(t,e){const n=Math.max(1,e[0]),r=Math.max(1,e[1]);return Math.max(t.width/n,t.height/r)*ot(t.spatialReference)}async function T(t,n,r,o){let a,i;if(!t)return null;if(Array.isArray(t)&&!t.length)return null;if(e.isCollection(t)&&(t=t.toArray()),Array.isArray(t)&&t.length&&"object"==typeof t[0]){const e=t.every((t=>"attributes"in t)),a=t.some((t=>!t.geometry));let i=t;if(e&&a&&n&&n.allLayerViews){const e=new Map;for(const n of t){const t=n.layer,r=e.get(t)||[],o=n.attributes[t.objectIdField];null!=o&&r.push(o),e.set(t,r)}const r=[];e.forEach(((t,e)=>{const o=n.allLayerViews.find((t=>t.layer.id===e.id));if(o&&"queryFeatures"in o){const n=e.createQuery();n.objectIds=t,n.returnGeometry=!0,r.push(o.queryFeatures(n))}}));const o=await Promise.all(r),a=[];for(const t of o)if(t&&t.features&&t.features.length)for(const e of t.features)null!=e.geometry&&a.push(e.geometry);i=a}for(const t of i)o=await T(t,n,r,o);return o}if(Array.isArray(t)&&2===t.length&&"number"==typeof t[0]&&"number"==typeof t[1])a=new M(t);else if(t instanceof v)a=t;else if("geometry"in t)if(t.geometry)a=t.geometry;else if(t.layer){const e=t.layer,r=n.allLayerViews.find((t=>t.layer.id===e.id));if(r&&"queryFeatures"in r){const n=e.createQuery();n.objectIds=[t.attributes[e.objectIdField]],n.returnGeometry=!0;const o=await r.queryFeatures(n);a=o?.features?.[0]?.geometry}}if(null==a)return null;if(i="point"===a.type?new S({xmin:a.x,ymin:a.y,xmax:a.x,ymax:a.y,spatialReference:a.spatialReference}):a.extent,!i)return null;F()||N(i.spatialReference,r)||await z();const c=I(i,r);return c?o=o?o.union(c):c:null}function W(t){if(t&&(!Array.isArray(t)||"number"!=typeof t[0])&&("object"==typeof t||Array.isArray(t)&&"object"==typeof t[0])){if("layer"in t&&t.layer&&t.layer.minScale&&t.layer.maxScale){const e=t.layer;return{min:e.minScale,max:e.maxScale}}if(Array.isArray(t)&&t.length&&t.every((t=>"layer"in t))){let e=0,n=0;for(const r of t){const t=r.layer;t&&t.minScale&&t.maxScale&&(e=t.minScale<e?t.minScale:e,n=t.maxScale>n?t.maxScale:n)}return e&&n?{min:e,max:n}:null}}}function H(t,e){return q(Q(t),e)?t:I(t,e)}async function J(e,n){if(!e||!n)return new t({targetGeometry:new M,scale:0,rotation:0});let r=n.spatialReference;const{constraints:o,padding:a,viewpoint:i,size:c}=n,s=[a?c[0]-a.left-a.right:c[0],a?c[1]-a.top-a.bottom:c[1]];let u=null;e instanceof t?u=e:e.viewpoint?u=e.viewpoint:e.target&&"esri.Viewpoint"===e.target.declaredClass&&(u=e.target);let f=null;u&&u.targetGeometry?f=u.targetGeometry:e instanceof S?f=e:(e||e&&("center"in e||"extent"in e||"target"in e))&&(f=await T(e.center,n,r)||await T(e.extent,n,r)||await T(e.target,n,r)||await T(e,n,r)),!f&&i&&i.targetGeometry?f=i.targetGeometry:!f&&n.extent&&(f=n.extent),r||(r=Q(n.spatialReference||n.extent||f)),F()||q(f.spatialReference,r)||N(f,r)||await z();const l=H(f.center??f,r);let m=0;if(u&&null!=u.targetGeometry&&"point"===u.targetGeometry.type)m=u.scale;else if("scale"in e&&e.scale)m=e.scale;else if("zoom"in e&&-1!==e.zoom&&o&&o.effectiveLODs)m=o.zoomToScale(e.zoom);else if(Array.isArray(f)||"point"===f.type||"extent"===f.type&&0===f.width&&0===f.height){const t=H(n.extent,r);m=null!=t?D(t,s):n.extent?D(n.extent,s):i.scale}else m=D(H(f.extent,r),s);const y=W(e);y&&(y.min&&y.min>m?m=y.min:y.max&&y.max<m&&(m=y.max));let p=0;u?p=u.rotation:e.hasOwnProperty("rotation")?p=e.rotation:i&&(p=i.rotation);let g=new t({targetGeometry:l,scale:m,rotation:p});return o&&(g=o.fit(g),o.constrainByGeometry(g),o.rotationEnabled||(g.rotation=p)),g}function K(t,e){const n=t.targetGeometry,r=e.targetGeometry;return n.x=r.x,n.y=r.y,n.spatialReference=r.spatialReference,t.scale=e.scale,t.rotation=e.rotation,t}function X(t,e,n){return n?y(t,.5*(e[0]-n.right+n.left),.5*(e[1]-n.bottom+n.top)):m(t,e,.5)}const Y=function(){const t=k();return function(e,n,r){const o=n.targetGeometry;U(t,o);const a=.5*et(n);return e.xmin=t[0]-a*r[0],e.ymin=t[1]-a*r[1],e.xmax=t[0]+a*r[0],e.ymax=t[1]+a*r[1],e.spatialReference=o.spatialReference,e}}();function Z(t,e,n,r,o){return yt(t,e,n.center),t.scale=D(n,r),o&&o.constraints&&o.constraints.constrain(t),t}function $(t,e,n,r){return ct(t,e,n,r),f(t,t)}const _=function(){const t=k();return function(e,n,r){return p(e,at(e,n),X(t,n,r))}}(),tt=function(){const t=l(),e=k();return function(n,r,c,s){const u=et(r),f=rt(r);return y(e,u,u),o(t,e),a(t,t,f),i(t,t,_(e,c,s)),i(t,t,[0,s.top-s.bottom]),y(n,t[4],t[5])}}();function et(t){return t.scale*nt(t.targetGeometry)}function nt(t){return null!=t&&L(t.spatialReference)?1/(B(t.spatialReference)*E*C):1}function rt(t){return r(t.rotation)||0}function ot(t){return L(t)?B(t)*E*C:1}function at(t,e){return m(t,e,.5)}const it=function(){const t=k(),e=k(),n=k();return function(r,o,u,f,l,p){return g(t,o),m(e,u,.5*p),y(n,1/f*p,-1/f*p),c(r,e),l&&a(r,r,l),s(r,r,n),i(r,r,t),r}}(),ct=function(){const t=k();return function(e,n,r,o){const a=et(n),i=rt(n);return U(t,n.targetGeometry),it(e,t,r,a,i,o)}}(),st=function(){const t=k();return function(e,n,r,o){const a=et(n);return U(t,n.targetGeometry),it(e,t,r,a,0,o)}}();function ut(t){const e=P(t);return e?e.valid[1]-e.valid[0]:0}function ft(t,e){return Math.round(ut(t)/e)}const lt=function(){const t=k(),e=k(),n=[0,0,0];return function(r,o,a){x(t,r,o),h(t,t),x(e,r,a),h(e,e),b(n,t,e);let i=Math.acos(w(t,e)/(d(t)*d(e)))*O;return n[2]<0&&(i=-i),isNaN(i)&&(i=0),i}}(),mt=function(){const t=k();return function(e,n,r,o){const a=e.targetGeometry;return K(e,n),tt(t,n,r,o),a.x+=t[0],a.y+=t[1],e}}(),yt=function(t,e,n){K(t,e);const r=t.targetGeometry;return r.x=n.x,r.y=n.y,r.spatialReference=n.spatialReference,t},pt=function(){const t=k();return function(e,n,r,o,a){a||(a="center"),p(t,r,o),m(t,t,.5);const i=t[0],c=t[1];switch(a){case"center":y(t,0,0);break;case"left":y(t,-i,0);break;case"top":y(t,0,c);break;case"right":y(t,i,0);break;case"bottom":y(t,0,-c);break;case"top-left":y(t,-i,c);break;case"bottom-left":y(t,-i,-c);break;case"top-right":y(t,i,c);break;case"bottom-right":y(t,i,-c)}return Rt(e,n,t),e}}();function gt(t,e,n){return K(t,e),t.rotation+=n,t}function xt(t,e,n){return K(t,e),t.rotation=n,t}const ht=function(){const t=k();return function(e,n,r,o,a){return K(e,n),isNaN(r)||0===r||(jt(t,o,n,a),e.scale=n.scale*r,Gt(t,t,e,a),Rt(e,e,y(t,t[0]-o[0],o[1]-t[1]))),e}}();function bt(t,e,n){return K(t,e),t.scale=n,t}const wt=function(){const t=k();return function(e,n,r,o,a,i){return K(e,n),isNaN(r)||0===r||(jt(t,a,n,i),e.scale=n.scale*r,e.rotation+=o,Gt(t,t,e,i),Rt(e,e,y(t,t[0]-a[0],a[1]-t[1]))),e}}(),dt=function(){const t=k(),e=k();return function(n,r,o,a,i,c,s){return _(e,c,s),j(t,i,e),a?wt(n,r,o,a,t,c):ht(n,r,o,t,c)}}(),jt=function(){const t=l();return function(e,n,r,o){return G(e,n,$(t,r,o,1))}}(),Gt=function(){const t=l();return function(e,n,r,o){return G(e,n,ct(t,r,o,1))}}(),Rt=function(){const t=k(),e=l();return function(n,r,o){K(n,r);const a=et(r),i=n.targetGeometry;return u(e,rt(r)),s(e,e,A(a,a)),G(t,o,e),i.x+=t[0],i.y+=t[1],n}}();export{mt as addPadding,lt as angleBetween,yt as centerAt,K as copy,J as create,D as extentToScale,X as getAnchor,Y as getExtent,it as getMatrix,tt as getPaddingMapTranslation,_ as getPaddingScreenTranslation,et as getResolution,ot as getResolutionToScaleFactor,ct as getTransform,st as getTransformNoRotation,ft as getWorldScreenWidth,ut as getWorldWidth,dt as padAndScaleAndRotateBy,pt as resize,gt as rotateBy,xt as rotateTo,wt as scaleAndRotateBy,bt as scaleTo,Z as setExtent,jt as toMap,Gt as toScreen,Rt as translateBy};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import{HandleOwner as a}from"../../../../core/HandleOwner.js";import o from"../../../../core/Handles.js";import{equals as s}from"../../../../core/lang.js";import{destroyMaybe as r,applySome as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{watch as d,sync as c,syncAndInitial as m,initial as h,when as g}from"../../../../core/reactiveUtils.js";import{property as f}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as M}from"../../../../chunks/vec3f64.js";import{clonePoint as y}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as v,LengthDimensionConstraint as C,applyConstraint as S,computeConstraint as b,constraintDependencies as w}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as P,createPointManipulator as O,pointManipulatorHandles as D,createOffsetManipulator as j,offsetManipulatorHandles as H,createOrientationManipulator as T,headingManipulatorHandles as G,rotationManipulatorHandles as I,createMeasureTypeManipulator as z,measureTypeManipulatorHandles as x,updateOffsetManipulatorTransform as V,updateHeadingManipulatorTransform as U,updateRotationManipulatorTransform as R,updateMeasureTypeManipulatorTransform as A,unfocusedOffsetWidth as k,focusedOffsetWidth as E,updateOrientationManipulator as F}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as L,arePointsVerticallyAligned as q,computeGeometryFromDimension as B,computationToGeometryDependencies as N}from"./lengthDimensionUtils.js";import{settings as J}from"./settings.js";import{getRotateHeadingTexture as K}from"../Slice/images/Factory.js";import{SnappingVisualizer3D as Q}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as W}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as X}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as Y}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as Z}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as $}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as tt}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as et}from"../../../interactive/coordinateHelper.js";import{EditGeometry as it}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as nt}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as at}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as ot}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as st}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as rt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as pt}from"../../../interactive/snapping/snappingUtils.js";import lt from"../../../../geometry/Point.js";let ut=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new o,this._getSnappingContext=l((t=>new ot({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new nt(new it("point",et(!0,!1,this.view.spatialReference))),visualizer:new Q}))),this._snappingManagerResult=at(t.view),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=dt(),this._focusedOffsetManipulatorMaterial=dt(),this._thinOffsetManipulatorMaterial=dt(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:$(2)}),this._constraintSnappingIndicator=new W({view:t.view,attached:!0,width:1,color:e.toUnitRGBA(J.constraint.color),renderOccluded:Y.OccludeAndTransparent,stipplePattern:$(5)});const i=e.toUnitRGBA(J.disabledPointIndicator.color);i[3]*=J.disabledPointIndicator.opacity,this._stagedStartIndicator=new X({view:t.view,attached:!1,color:i,size:2*J.disabledPointIndicator.radius,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,outlineSize:0,renderOccluded:Y.OccludeAndTransparent})}initialize(){this._snappingOperation=new rt({view:this.view});const{color:t,contrastColor:e}=J.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=K(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,premultiplyAlpha:i}),this._orientationManipulatorMaterial=new Z({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:Y.Opaque});const{computations:n}=this.analysisViewData;for(const a of n)this._addComputation(a);this.addHandles([n.on("after-add",(t=>this._addComputation(t.item))),n.on("after-remove",(t=>this._removeComputation(t.item)))]),this.addHandles([d((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=y(t,new lt);this._applyPointUpdate(e,{endPoint:i})}),c),d((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const o of[n,e?.selectedComputation])if(null!=o){const e=this._computationManipulators.get(o);this._updateManipulators(o,e,t)}}else for(const[o,s]of this._computationManipulators)this._updateManipulators(o,s,t)}),m),d((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),h),d((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),d((()=>p(this._stagedComputation,(t=>{const e=t.elevationAlignedStartPoint,i=M();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}))),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),pt(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this.updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);v(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=r(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose(),this._orientationManipulatorTexture.release()}get updating(){return this.updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1);return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[g((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...m,equals:s}),d((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case C.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case C.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case C.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),c)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[d((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),o=()=>{n.attached=e.grabbing||a.grabbing};o(),this.addHandles([e.events.on("grab-changed",o),a.events.on("grab-changed",o)],t)}else n.attached=!1})),d((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==C.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this.updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const o=new n({startPoint:y(a,new lt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=o,this._resetSnappingState(),o}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=y(n,new lt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_addComputation(t){if(this._computationManipulators.has(t))return;const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),o=this._setupHeadingManipulator(t),s=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new P({start:e,end:n,offset:a,heading:o,rotation:s,direct:r,horizontal:p,vertical:l});this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values())}_removeComputation(t){const e=this._computationManipulators.get(t);if(null!=e){this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of e.values())this.manipulators.remove(t)}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([d((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...m,equals:s})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=O(i,{metadata:n}),o=D(a,{isStart:e.isStart,createSnappingPipelineStep:t=>st({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this.updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(o,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=j(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=H(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=I(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=z(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=x(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:o,firstGrabbedManipulator:s}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=o===t,m=L(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==s||i===s);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const _ of[u,d])h.measureType===i.Direct&&0!==h.offset||(_.available=!1);q(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:f}=this.view;V(l,g,f),u.available&&U(u,t,f),d.available&&R(d,t,f),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&A(e,t,i,f)}))}_updateManipulatorStyle(t){const e=k(t),i=E(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:o,rotation:s}of this._computationManipulators.values())a.radius=i/2,F(o,n),F(s,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=N(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=B(n,i.renderCoordsHelper);if(null==a)return;const o=this._computeConstraint({...n,geometry:a});S(t,e,{...n,constraint:o,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,ct);const e=this.view.state.camera.computeRenderPixelSizeAt(ct);t.dimension.offset=J.initialOffsetPx*e}_computeConstraint(t){return b(w(t,this._snappingManager.options),this.view)}get testInfo(){const t=t=>this.analysisViewData.computations.find((e=>e.dimension===t));return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=Y.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:Y.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};function dt(){const{color:t,opacity:i}=J.offsetManipulator;return new tt({color:[...e.toUnitRGB(t),i],width:1,renderOccluded:Y.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0})}t([f({constructOnly:!0})],ut.prototype,"analysis",void 0),t([f({constructOnly:!0})],ut.prototype,"analysisViewData",void 0),t([f({constructOnly:!0})],ut.prototype,"manipulators",void 0),t([f({constructOnly:!0})],ut.prototype,"parentTool",void 0),t([f({constructOnly:!0,nonNullable:!0})],ut.prototype,"view",void 0),t([f({readOnly:!0})],ut.prototype,"updating",null),t([f()],ut.prototype,"firstGrabbedManipulator",null),t([f()],ut.prototype,"hasGrabbedManipulators",null),t([f()],ut.prototype,"snappingOptions",null),t([f()],ut.prototype,"_stagedDimension",void 0),t([f()],ut.prototype,"_activeComputation",null),t([f()],ut.prototype,"_stagedComputation",null),ut=t([_("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ut);const ct=M();export{ut as LengthDimensionSubTool};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import"../../../../geometry.js";import{LengthDimensionMeasureType as i}from"../../../../analysis/dimensionUtils.js";import n from"../../../../analysis/LengthDimension.js";import{HandleOwner as a}from"../../../../core/HandleOwner.js";import o from"../../../../core/Handles.js";import{equals as s}from"../../../../core/lang.js";import{destroyMaybe as r,applySome as p}from"../../../../core/maybe.js";import{memoize as l}from"../../../../core/memoize.js";import{ignoreAbortErrors as u}from"../../../../core/promiseUtils.js";import{watch as d,sync as c,syncAndInitial as m,initial as h,when as g}from"../../../../core/reactiveUtils.js";import{property as f}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as M}from"../../../../chunks/vec3f64.js";import{clonePoint as y}from"../../../../layers/graphics/hydratedFeatures.js";import{reapplyConstraint as v,LengthDimensionConstraint as C,applyConstraint as S,computeConstraint as b,constraintDependencies as w}from"./lengthDimensionConstraintUtils.js";import{LengthDimensionManipulators as P,createPointManipulator as O,pointManipulatorHandles as D,createOffsetManipulator as j,offsetManipulatorHandles as H,createOrientationManipulator as T,headingManipulatorHandles as G,rotationManipulatorHandles as I,createMeasureTypeManipulator as z,measureTypeManipulatorHandles as x,updateOffsetManipulatorTransform as V,updateHeadingManipulatorTransform as U,updateRotationManipulatorTransform as R,updateMeasureTypeManipulatorTransform as A,unfocusedOffsetWidth as k,focusedOffsetWidth as E,updateOrientationManipulator as F}from"./lengthDimensionManipulatorUtils.js";import{isValidComputation as L,arePointsVerticallyAligned as q,computeGeometryFromDimension as B,computationToGeometryDependencies as N}from"./lengthDimensionUtils.js";import{settings as J}from"./settings.js";import{getRotateHeadingTexture as K}from"../Slice/images/Factory.js";import{SnappingVisualizer3D as Q}from"../../interactive/SnappingVisualizer3D.js";import{LineVisualElement as W}from"../../interactive/visualElements/LineVisualElement.js";import{VerticesVisualElement as X}from"../../interactive/visualElements/VerticesVisualElement.js";import{RenderOccludedFlag as Y}from"../../webgl-engine/lib/Material.js";import{ImageMaterial as Z}from"../../webgl-engine/materials/ImageMaterial.js";import{createStipplePatternSimple as $}from"../../webgl-engine/materials/lineStippleUtils.js";import{RibbonLineMaterial as tt}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{createCoordinateHelper as et}from"../../../interactive/coordinateHelper.js";import{EditGeometry as it}from"../../../interactive/editGeometry/EditGeometry.js";import{EditGeometryOperations as nt}from"../../../interactive/editGeometry/EditGeometryOperations.js";import{acquire as at}from"../../../interactive/snapping/SceneSnappingManagerPool.js";import{SnappingContext as ot}from"../../../interactive/snapping/SnappingContext.js";import{createSnapDragEventPipelineStep as st}from"../../../interactive/snapping/SnappingDragPipelineStep.js";import{SnappingOperation as rt}from"../../../interactive/snapping/SnappingOperation.js";import{setupSnappingToggleHandles as pt}from"../../../interactive/snapping/snappingUtils.js";import lt from"../../../../geometry/Point.js";let ut=class extends a{constructor(t){super(t),this._stagedDimension=null,this._computationManipulators=new Map,this._computationHandles=new o,this._getSnappingContext=l((t=>new ot({elevationInfo:{mode:"absolute-height",offset:0},pointer:t,editGeometryOperations:new nt(new it("point",et(!0,!1,this.view.spatialReference))),visualizer:new Q}))),this._snappingManagerResult=at(t.view),this.addHandles(this._snappingManagerResult),this._unfocusedOffsetManipulatorMaterial=dt(),this._focusedOffsetManipulatorMaterial=dt(),this._thinOffsetManipulatorMaterial=dt(),this._thinOffsetManipulatorMaterial.setParameters({stipplePattern:$(2)}),this._constraintSnappingIndicator=new W({view:t.view,attached:!0,width:1,color:e.toUnitRGBA(J.constraint.color),renderOccluded:Y.OccludeAndTransparent,stipplePattern:$(5)});const i=e.toUnitRGBA(J.disabledPointIndicator.color);i[3]*=J.disabledPointIndicator.opacity,this._stagedStartIndicator=new X({view:t.view,attached:!1,color:i,size:2*J.disabledPointIndicator.radius,elevationInfo:{mode:"absolute-height",offset:0},spatialReference:t.view.renderCoordsHelper.spatialReference,outlineSize:0,renderOccluded:Y.OccludeAndTransparent})}initialize(){this._snappingOperation=new rt({view:this.view});const{color:t,contrastColor:e}=J.orientationManipulator,i=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._orientationManipulatorTexture=K(this.view.toolViewManager.textures,{accentColor:t,contrastColor:e,preMultiplyAlpha:i}),this._orientationManipulatorMaterial=new Z({transparent:!0,writeDepth:!1,textureId:this._orientationManipulatorTexture.texture.id,renderOccluded:Y.Opaque});const{computations:n}=this.analysisViewData;for(const a of n)this._addComputation(a);this.addHandles([n.on("after-add",(t=>this._addComputation(t.item))),n.on("after-remove",(t=>this._removeComputation(t.item)))]),this.addHandles([d((()=>({stagedPoint:this._snappingOperation.stagedPoint,stagedComputation:this._stagedComputation})),(({stagedPoint:t,stagedComputation:e})=>{if(null==e||null==t)return;const i=y(t,new lt);this._applyPointUpdate(e,{endPoint:i})}),c),d((()=>({stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator})),((t,e)=>{const{stagedDimension:i,selectedComputation:n,firstGrabbedManipulator:a}=t;if(i===e?.stagedDimension&&a===e?.firstGrabbedManipulator){for(const o of[n,e?.selectedComputation])if(null!=o){const e=this._computationManipulators.get(o);this._updateManipulators(o,e,t)}}else for(const[o,s]of this._computationManipulators)this._updateManipulators(o,s,t)}),m),d((()=>this.analysis.style.lineSize),(t=>{this._updateManipulatorStyle(t)}),h),d((()=>this.view.state.camera),(()=>{null!=this._stagedComputation&&this._updateStagedDimensionOffset(this._stagedComputation)})),d((()=>p(this._stagedComputation,(t=>{const e=t.elevationAlignedStartPoint,i=M();return null!=e&&this.view.renderCoordsHelper.toRenderCoords(e,i)?i:null}))),(t=>{null!=t?(this._stagedStartIndicator.vertices=[t],this._stagedStartIndicator.attached=!0):this._stagedStartIndicator.attached=!1}))]),this.addHandles(this._constraintHandles),this.addHandles(this._snappingIndicatorHandles),pt(this,(()=>{const t=this._activeComputation,e=this._stagedComputation;if(null==t||null!=e){const t=this.view.inputManager.latestPointerType??"mouse",e=this._getSnappingContext(t);this.updatingHandles.addPromise(u(this._snappingOperation.resnap(this._snappingManager,e)))}if(null!=t){const{start:e,end:i}=this._computationManipulators.get(t);if(e.grabbing||i.grabbing){const i=e.grabbing?"start":"end",n=this._computeConstraint(t);v(t,i,{constraint:n,view:this.view})}}}))}destroy(){this._snappingOperation=r(this._snappingOperation),this._computationHandles.destroy(),this._constraintSnappingIndicator.destroy(),this._stagedStartIndicator.destroy(),this._orientationManipulatorMaterial.dispose(),this._orientationManipulatorTexture.release()}get updating(){return this.updatingHandles.updating||this._snappingManager.updating}get firstGrabbedManipulator(){return this.parentTool.firstGrabbedManipulator}get hasGrabbedManipulators(){return this.parentTool.hasGrabbedManipulators}get snappingOptions(){return this._snappingManager.options}get _snappingManager(){return this._snappingManagerResult.snappingManager}get _activeComputation(){if(null!=this._stagedComputation)return this._stagedComputation;const{selectedComputation:t}=this.analysisViewData;return this.hasGrabbedManipulators&&null!=t?t:null}get _stagedComputation(){const t=this._stagedDimension,e=this.analysisViewData.computations.at(-1);return null==t||null==e||e.dimension!==t?null:e}get _constraintHandles(){return[g((()=>this.analysisViewData.selectedComputation),(t=>{t.previousConstraint=this._computeConstraint(t)}),{...m,equals:s}),d((()=>{const t=this._activeComputation;if(null==t)return null;const{measureType:e,orientation:i}=t.dimension;return{measureType:e,orientation:i,computation:t}}),((t,e)=>{if(null!=t&&null==e){const{measureType:e,orientation:n,computation:a}=t;switch(a.previousConstraint){case C.Horizontal:a.preConstraintProperties={measureType:i.Horizontal,orientation:0};break;case C.Vertical:a.preConstraintProperties={measureType:i.Vertical,orientation:0};break;case C.Direct:a.preConstraintProperties={measureType:i.Direct,orientation:n};break;default:a.preConstraintProperties={measureType:e,orientation:n}}}null==t&&null!=e&&(e.computation.preConstraintProperties=null)}),c)]}get _snappingIndicatorHandles(){const t="snapping-indicator-event-handles";return[d((()=>({stagedComputation:this._stagedComputation,activeComputation:this._activeComputation})),(({stagedComputation:e,activeComputation:i})=>{const n=this._constraintSnappingIndicator;if(this.removeHandles(t),null!=i)if(i===e)n.attached=!0;else{const{start:e,end:a}=this._computationManipulators.get(i),o=()=>{n.attached=e.grabbing||a.grabbing};o(),this.addHandles([e.events.on("grab-changed",o),a.events.on("grab-changed",o)],t)}else n.attached=!1})),d((()=>{const t=this._activeComputation;return null!=t?{geometry:t.geometry,constraint:t.previousConstraint}:{}}),(({geometry:t,constraint:e})=>{const i=this._constraintSnappingIndicator;null!=t&&null!=e&&e!==C.Direct?(i.visible=!0,i.setGeometryFromSegment(t.directSegment)):i.visible=!1}))]}removeStaged(){return null!=this._stagedDimension&&(this.analysis.dimensions.remove(this._stagedDimension),this._stagedDimension=null,!0)}onDeactivate(){this.removeStaged(),this._resetSnappingState()}onClick(t){const{_stagedDimension:e}=this;if(null==e){const e=this._onUnstagedClick(t);return this.analysis.dimensions.add(e),null}return this._onStagedClick(t),e}onPointerMove({mapPoint:t,pointerType:e}){if("touch"===e)return;const i=this._getSnappingContext(e);this.updatingHandles.addPromise(u(this._snappingOperation.snap({point:t},this._snappingManager,i)))}onManipulatorSelectionChanged(){if(null!=this.analysisViewData.selectedComputation){this._computationManipulators.get(this.analysisViewData.selectedComputation).offset.selected||(this.analysisViewData.selectedDimension=null)}}_onUnstagedClick({mapPoint:t,pointerType:e}){let a=t;if("mouse"===e){const i=this._getSnappingContext(e);a=this._snappingManager.update({point:t,context:i})}const o=new n({startPoint:y(a,new lt),endPoint:null,measureType:i.Horizontal});return this._stagedDimension=o,this._resetSnappingState(),o}_onStagedClick({mapPoint:t,pointerType:e}){const i=this._stagedComputation;if(null==i)return;let n=t;if("mouse"===e){const i=this._getSnappingContext(e);n=this._snappingManager.update({point:t,context:i})}const a=y(n,new lt);this._applyPointUpdate(i,{endPoint:a}),this._stagedDimension=null,this._resetSnappingState()}_resetSnappingState(){this._snappingManager.doneSnapping(),this._snappingOperation.abort(),this._snappingOperation.stagedPoint=null}_addComputation(t){if(this._computationManipulators.has(t))return;const e=this._setupPointManipulator(t,{isStart:!0}),n=this._setupPointManipulator(t,{isStart:!1}),a=this._setupOffsetManipulator(t),o=this._setupHeadingManipulator(t),s=this._setupRotationManipulator(t),r=this._setupMeasureTypeManipulator(t,i.Direct),p=this._setupMeasureTypeManipulator(t,i.Horizontal),l=this._setupMeasureTypeManipulator(t,i.Vertical),u=new P({start:e,end:n,offset:a,heading:o,rotation:s,direct:r,horizontal:p,vertical:l});this._setupComputationToManipulatorsSync(t,u),this._computationManipulators.set(t,u),this.manipulators.addMany(u.values())}_removeComputation(t){const e=this._computationManipulators.get(t);if(null!=e){this._computationHandles.remove(t),this._computationManipulators.delete(t);for(const t of e.values())this.manipulators.remove(t)}}_setupComputationToManipulatorsSync(t,e){this._computationHandles.add([d((()=>t.geometry),(()=>this._updateManipulators(t,e)),{...m,equals:s})],t)}_setupPointManipulator(t,e){const{view:i}=this,{dimension:n}=t,a=O(i,{metadata:n}),o=D(a,{isStart:e.isStart,createSnappingPipelineStep:t=>st({snappingContext:this._getSnappingContext(t),snappingManager:this._snappingManager,updatingHandles:this.updatingHandles}),dimension:n,onUpdate:e=>this._applyPointUpdate(t,e),view:i});return this._computationHandles.add(o,t),a}_setupOffsetManipulator(t){const{view:e}=this,i=j(e,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,metadata:t.dimension}),n=H(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupHeadingManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=G(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupRotationManipulator(t){const{view:e}=this,i=T(e,{lineSizePt:this.analysis.style.lineSize,material:this._orientationManipulatorMaterial,metadata:t.dimension}),n=I(i,{computation:t,view:e});return this._computationHandles.add(n,t),i}_setupMeasureTypeManipulator(t,e){const{view:i}=this,n=z(i,{lineSizePt:this.analysis.style.lineSize,unfocusedMaterial:this._unfocusedOffsetManipulatorMaterial,focusedMaterial:this._focusedOffsetManipulatorMaterial,thinOffsetManipulatorMaterial:this._thinOffsetManipulatorMaterial,metadata:t.dimension}),a=x(n,{computation:t,manipulatorMeasureType:e,view:i});return this._computationHandles.add(a,t),n}_updateManipulators(t,e,n={stagedDimension:this._stagedDimension,selectedComputation:this.analysisViewData.selectedComputation,firstGrabbedManipulator:this.firstGrabbedManipulator}){const{stagedDimension:a,selectedComputation:o,firstGrabbedManipulator:s}=n,{start:r,end:p,offset:l,heading:u,rotation:d}=e,c=o===t,m=L(t),{dimension:h}=t;for(const i of e.values()){const t=m&&null==a&&(null==s||i===s);i===l?(i.available=t,i.selected=c):i.available=t&&c}if(!m)return;null!=this._computeConstraint(t)?e.forEachMeasureTypeManipulator((t=>t.available=!1)):e.manipulatorForMeasureType(h.measureType).available=!1;for(const _ of[u,d])h.measureType===i.Direct&&0!==h.offset||(_.available=!1);q(t)?d.available=!1:u.available=!1;const{geometry:g}=t;r.renderLocation=g.directSegment.startRenderSpace,p.renderLocation=g.directSegment.endRenderSpace;const{renderCoordsHelper:f}=this.view;V(l,g,f),u.available&&U(u,t,f),d.available&&R(d,t,f),e.forEachMeasureTypeManipulator(((e,i)=>{e.available&&A(e,t,i,f)}))}_updateManipulatorStyle(t){const e=k(t),i=E(t),n={lineSizePt:t,material:this._orientationManipulatorMaterial};for(const{offset:a,heading:o,rotation:s}of this._computationManipulators.values())a.radius=i/2,F(o,n),F(s,n);this._unfocusedOffsetManipulatorMaterial.setParameters({width:e}),this._focusedOffsetManipulatorMaterial.setParameters({width:i})}_applyPointUpdate(t,e){const{view:i}=this,n=N(t);"startPoint"in e&&(n.elevationAlignedStartPoint=e.startPoint),"endPoint"in e&&(n.elevationAlignedEndPoint=e.endPoint);const a=B(n,i.renderCoordsHelper);if(null==a)return;const o=this._computeConstraint({...n,geometry:a});S(t,e,{...n,constraint:o,unconstrainedGeometry:a,view:i}),t===this._stagedComputation&&this._updateStagedDimensionOffset(t)}_updateStagedDimensionOffset(t){if(null==t.geometry)return;t.geometry.directSegment.eval(.5,ct);const e=this.view.state.camera.computeRenderPixelSizeAt(ct);t.dimension.offset=J.initialOffsetPx*e}_computeConstraint(t){return b(w(t,this._snappingManager.options),this.view)}get testInfo(){const t=t=>this.analysisViewData.computations.find((e=>e.dimension===t));return{disableManipulatorPartialOcclusion:()=>{this._stagedStartIndicator.renderOccluded=Y.Occlude,this.manipulators.forEach((({manipulator:t})=>{for(const{geometry:e}of t.renderObjects)e.material.setParameters({renderOccluded:Y.Occlude})}))},getManipulatorsForDimension:e=>this._computationManipulators.get(t(e)),getComputationForDimension:e=>t(e),getConstraintForDimension:e=>{const i=t(e);return null!=i?this._computeConstraint(i):null},stagedDimension:this._stagedDimension,stagedStartIndicator:this._stagedStartIndicator,constraintSnappingIndicator:this._constraintSnappingIndicator,snappingManager:this._snappingManager}}};function dt(){const{color:t,opacity:i}=J.offsetManipulator;return new tt({color:[...e.toUnitRGB(t),i],width:1,renderOccluded:Y.OccludeAndTransparent,writeDepth:!1,hasPolygonOffset:!0})}t([f({constructOnly:!0})],ut.prototype,"analysis",void 0),t([f({constructOnly:!0})],ut.prototype,"analysisViewData",void 0),t([f({constructOnly:!0})],ut.prototype,"manipulators",void 0),t([f({constructOnly:!0})],ut.prototype,"parentTool",void 0),t([f({constructOnly:!0,nonNullable:!0})],ut.prototype,"view",void 0),t([f({readOnly:!0})],ut.prototype,"updating",null),t([f()],ut.prototype,"firstGrabbedManipulator",null),t([f()],ut.prototype,"hasGrabbedManipulators",null),t([f()],ut.prototype,"snappingOptions",null),t([f()],ut.prototype,"_stagedDimension",void 0),t([f()],ut.prototype,"_activeComputation",null),t([f()],ut.prototype,"_stagedComputation",null),ut=t([_("esri.views.3d.analysis.Dimension.LengthDimensionSubTool")],ut);const ct=M();export{ut as LengthDimensionSubTool};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../Color.js";import"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{i as a,k as s}from"../../../../chunks/mat4.js";import{c}from"../../../../chunks/mat4f64.js";import{g as m,c as l,b as d,f as u,e as p,k as f,l as g,s as h,w as y}from"../../../../chunks/vec3.js";import{c as v,Z as S,f as M}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as j,create as x,signedDistance as w,normal as H}from"../../../../geometry/support/plane.js";import{sv3d as P}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as C}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as T,computeGeometryFromDimension as b,computationToGeometryDependencies as k,headingFromGeometry as O,computeOffsetForPoint as R,computeSegmentForMeasureType as U,computeOffsetAxis as z,directUp as D,directStartToEnd as F,dimensionStartToEnd as E}from"./lengthDimensionUtils.js";import{settings as L}from"./settings.js";import{Manipulator3D as A}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as G,worldScaledManipulatorSettings as B,createRotateManipulator as I,updateRotateManipulator as W,calculateInputRotationTransform as N,calculateTranslateRotateFromBases as V}from"../../interactive/manipulatorUtils.js";import{RenderObject as Z}from"../../interactive/RenderObject.js";import{screenToMap3D as q,screenToRenderPlane as J,hideManipulatorWhileDragging as K}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as Q}from"../../interactive/visualElements/support/Segment.js";import{MARKER_SIZE_PER_LINE_WIDTH as X}from"../../support/engineContent/marker.js";import{createPolylineGeometry as Y}from"../../webgl-engine/lib/GeometryUtil.js";import{createManipulatorDragEventPipeline as $,resetProperties as _,EventPipeline as ee}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as te,ManipulatorStateFlags as ne}from"../../../interactive/interfaces.js";import re from"../../../../geometry/Point.js";class oe{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find((t=>this.hasOwnProperty(t)&&e===this[t]))}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const n of t)e(this.manipulatorForMeasureType(n),n)}manipulatorForMeasureType(e){switch(e){case n.Direct:return this.direct;case n.Horizontal:return this.horizontal;case n.Vertical:return this.vertical}}}function ie(t,n){const r=G(t,e.toUnitRGB(L.pointManipulators.color),L.pointManipulators.opacity,Fe);return r.available=!1,r.grabCursor="crosshair",r.radius=L.pointManipulators.radius,r.metadata=n.metadata,r.collisionPriority=1,r}function ae(e,t){const n=[M(-.5,0,0),M(.5,0,0)],{lengthFraction:r}=L.offsetManipulator,o=Y(t.unfocusedMaterial,n.map((e=>m(v(),e,r)))),i=o.instantiate({material:t.focusedMaterial});return new A({view:e,renderObjects:[new Z(o,ne.Unfocused|ne.Selected|Fe),new Z(i,ne.Focused|Fe)],collisionType:{type:"line",paths:[n]},radius:De(t.lineSizePt)/2,metadata:t.metadata,available:!1,...B})}function se(t,{lineSizePt:n,material:r}){const{calloutOffsetPx:o,calloutWidth:a,discScale:s,focusMultiplier:c,color:m}=L.orientationManipulator;return{calloutLength:.25*X*L.markers.lineSizeFraction*i(n)+o,calloutColor:e.toUnitRGB(m),calloutOpacity:m.a,calloutWidth:a,customStateMask:Fe,discScale:s,focusMultiplier:c,material:r,metadata:t}}function ce(e,t){return I(e,se(t.metadata,t))}function me(e,t){W(e,se(e.metadata,t))}function le(e,t){const n=[M(-.5,0,0),M(.5,0,0)],{lengthFraction:r}=L.offsetManipulator,o=Y(t.thinOffsetManipulatorMaterial,n),i=Y(t.unfocusedMaterial,n.map((e=>m(v(),e,r)))),a=i.instantiate({material:t.focusedMaterial});return new A({view:e,renderObjects:[new Z(i,ne.Unfocused|Fe),new Z(a,ne.Focused|Fe),new Z(o,Fe)],collisionType:{type:"line",paths:[n]},radius:De(t.lineSizePt)/2,available:!1,metadata:t.metadata,...B})}function de(e,{isStart:t,createSnappingPipelineStep:n,dimension:r,onUpdate:o,view:i}){const a=t?"startPoint":"endPoint",s=$(e,((e,t,s,c)=>{const m=K(e),{snappingStep:l,cancelSnapping:d}=n(c);s=s.next(m).next(_(r,[a,"measureType","orientation"])).next(d),t.next(m).next(q(i)).next(...l).next((e=>{const t=C(e.mapEnd,new re);o("startPoint"===a?{startPoint:t}:{endPoint:t})}))}));return[s]}function ue(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{if(!T(t)||!e.selected)return;const{geometry:i,dimension:a}=t,s=K(e);r.next(s).next(Se(n,a,i.dimensionSegment,i.primaryOffsetAxis)),o.next(s).next(_(a,["offset"]))}))]}function pe(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{he({cancel:o,computation:t,settingHeading:!0,steps:r,view:n})}))]}function fe(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{he({cancel:o,computation:t,settingHeading:!1,steps:r,view:n})})),e.events.on("immediate-click",(e=>{ge(e,t,n)}))]}function ge(e,t,n){const{dimension:o,geometry:i}=t;if(90===o.orientation||270===o.orientation)return o.orientation=0,void e.stopPropagation();if(null==i)return;const{renderCoordsHelper:a}=n,s=b({...k(t),orientation:90},a),c=b({...k(t),orientation:270},a);if(null==s||null==c)return;const m=O(s,a),l=O(c,a),d=Me(i,n),u=r.shortestSignedDiff(d,m),p=r.shortestSignedDiff(d,l);o.orientation=Math.abs(u)<Math.abs(p)?90:270,e.stopPropagation()}function he(e){const{cancel:t,computation:n,settingHeading:r,steps:i,view:a}=e;if(!T(n))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:m}=n,d=v(),u=be(v(),m,m.directSegment,s),p=ke(P.get(),{forHeading:r,geometry:m,renderCoordsHelper:s}),f=j(u,p,x()),g=r?c.orientation??O(m,a.renderCoordsHelper):c.orientation??0;i.next(J(a,f)).next((e=>{"start"===e.action&&l(d,e.renderStart);const t=H(f),n=N(d,e.renderEnd,u,t);let i=g-o(n);r||(i=ye(i)),c.orientation=i})),t.next(_(c,["orientation"]))}function ye(e){const t=r.normalize(e)%90;return t<L.orientationSnapThresholdDegrees?e-t:90-t<L.orientationSnapThresholdDegrees?e+(90-t):e}function ve(e,{computation:t,manipulatorMeasureType:r,view:o}){let i=n.Direct,a=0,s=0;return[e.events.on("grab-changed",(n=>{if("start"!==n.action||!T(t))return;const{dimension:c,geometry:m}=t;i=c.measureType,a=c.offset,s=c.orientation;const d=l(P.get(),e.renderLocation);c.measureType=r,c.offset=R(d,r,m,o.renderCoordsHelper),c.orientation=0})),$(e,((e,n,c)=>{if(!T(t))return;const{geometry:m,dimension:l}=t,{renderCoordsHelper:d}=o,u=U(Ge,r,t,d),p=z(P.get(),{measureType:r,directSegment:m.directSegment,renderCoordsHelper:d}),f=K(e);n.next(f).next(Se(o,l,u,p)),c.next(f).next((e=>(l.measureType=i,l.offset=a,l.orientation=s,e)))}))]}function Se(e,t,n,r){const o=d(P.get(),n.endRenderSpace,n.startRenderSpace);u(o,o,r);const i=j(n.startRenderSpace,o,x()),a=j(n.startRenderSpace,r,x()),s=t.offset;let c,m=0;const l=new ee;return l.next(J(e,i)).next((n=>{"start"===n.action&&(m=w(a,n.renderStart));const r=(w(a,n.renderEnd)-m)*e.renderCoordsHelper.unitInMeters;t.offset=s+r,c=n})),e=>(l.execute(e),c)}function Me(e,t){const{directSegment:n}=e,{renderCoordsHelper:r}=t,o=D(P.get(),e,r),i=F(P.get(),e),a=u(P.get(),i,o),{viewForward:s}=t.state.camera;p(a,s)>0&&m(a,a,-1);const c=n.eval(.5,P.get());return r.headingAtPosition(c,a)}function je(e,t,n){const{dimensionSegment:r,primaryOffsetAxis:o}=t,i=E(Ee,t),c=f(i,S)?a(Ae):V(i,o,S,Ae),m=Math.max(g(i),L.offsetManipulator.minLengthMeters/n.unitInMeters);s(c,c,h(Ee,m,m,m)),e.modelTransform=c,e.renderLocation=r.eval(.5,Ee)}function xe(e,t,n){He(e,t,n,{forHeading:!0})}function we(e,t,n){He(e,t,n,{forHeading:!1})}function He(e,t,n,{forHeading:r}){const{dimension:o,geometry:i}=t,{primaryOffsetAxis:a}=i,s=m(Pe,a,o.offset>=0?1:-1),c=ke(Ce,{forHeading:r,geometry:i,renderCoordsHelper:n});u(c,c,s);const l=V(s,c,S,Ae);e.modelTransform=l,e.renderLocation=be(Ee,i,i.dimensionSegment,n)}const Pe=v(),Ce=v();function Te(e,t,n,r){const{geometry:o}=t,i=U(Ge,n,t,r),a=z(Ee,{measureType:n,directSegment:o.directSegment,renderCoordsHelper:r}),c=y(Le,i.endRenderSpace,i.startRenderSpace),m=V(c,a,S,Ae),l=g(c);s(m,m,h(Le,l,l,l)),e.modelTransform=m,e.renderLocation=i.eval(.5,Le)}function be(e,t,n,r){const{startRenderSpace:o,endRenderSpace:i}=n,a=Oe(t,r)?o:i;return l(e,a)}function ke(e,{forHeading:t,geometry:n,renderCoordsHelper:r}){return t?D(e,n,r):E(e,n,{invert:!0})}function Oe(e,t){const n=F(Re,e),r=D(Ue,e,t);return p(n,r)>0}const Re=v(),Ue=v();function ze(e){return i(e)+L.offsetManipulator.linePaddingPx}function De(e){return i(e)+L.offsetManipulator.focusedLinePaddingPx}const Fe=te.Custom1,Ee=v(),Le=v(),Ae=c(),Ge=new Q;export{Fe as DidPointerMoveRecentlyFlag,oe as LengthDimensionManipulators,Me as automaticHeadingFromCamera,le as createMeasureTypeManipulator,ae as createOffsetManipulator,ce as createOrientationManipulator,ie as createPointManipulator,De as focusedOffsetWidth,pe as headingManipulatorHandles,ve as measureTypeManipulatorHandles,ue as offsetManipulatorHandles,de as pointManipulatorHandles,fe as rotationManipulatorHandles,ye as snapOrientationToNearestRightAngle,ze as unfocusedOffsetWidth,xe as updateHeadingManipulatorTransform,Te as updateMeasureTypeManipulatorTransform,je as updateOffsetManipulatorTransform,me as updateOrientationManipulator,we as updateRotationManipulatorTransform};
5
+ import e from"../../../../Color.js";import"../../../../geometry.js";import{lengthDimensionMeasureType as t,LengthDimensionMeasureType as n}from"../../../../analysis/dimensionUtils.js";import{cyclicalDegrees as r}from"../../../../core/Cyclical.js";import{rad2deg as o}from"../../../../core/mathUtils.js";import{pt2px as i}from"../../../../core/screenUtils.js";import{i as a,k as s}from"../../../../chunks/mat4.js";import{c}from"../../../../chunks/mat4f64.js";import{g as m,c as d,b as l,f as u,e as p,k as f,l as g,s as h,w as y}from"../../../../chunks/vec3.js";import{c as v,Z as S,f as M}from"../../../../chunks/vec3f64.js";import{fromPositionAndNormal as j,create as x,signedDistance as w,normal as H}from"../../../../geometry/support/plane.js";import{sv3d as P}from"../../../../geometry/support/vectorStacks.js";import{clonePoint as C}from"../../../../layers/graphics/hydratedFeatures.js";import{isValidComputation as T,computeGeometryFromDimension as b,computationToGeometryDependencies as k,headingFromGeometry as R,computeOffsetForPoint as U,computeSegmentForMeasureType as z,computeOffsetAxis as O,directUp as D,directStartToEnd as F,dimensionStartToEnd as E}from"./lengthDimensionUtils.js";import{settings as L}from"./settings.js";import{Manipulator3D as A}from"../../interactive/Manipulator3D.js";import{createSphereManipulator as G,worldScaledManipulatorSettings as B,createRotateManipulator as I,updateRotateManipulator as W,calculateInputRotationTransform as N,calculateTranslateRotateFromBases as V}from"../../interactive/manipulatorUtils.js";import{RenderObject as Z}from"../../interactive/RenderObject.js";import{screenToMap3D as q,screenToRenderPlane as J,hideManipulatorWhileDragging as K}from"../../interactive/editingTools/dragEventPipeline3D.js";import{EuclideanSegment as Q}from"../../interactive/visualElements/support/Segment.js";import{MARKER_SIZE_PER_LINE_WIDTH as X}from"../../support/engineContent/marker.js";import{createPolylineGeometry as Y}from"../../webgl-engine/lib/GeometryUtil.js";import{createManipulatorDragEventPipeline as $,resetProperties as _,EventPipeline as ee}from"../../../interactive/dragEventPipeline.js";import{ManipulatorStateCustomFlags as te,ManipulatorStateFlags as ne}from"../../../interactive/interfaces.js";import re from"../../../../geometry/Point.js";class oe{constructor(e){this.start=e.start,this.end=e.end,this.offset=e.offset,this.heading=e.heading,this.rotation=e.rotation,this.direct=e.direct,this.horizontal=e.horizontal,this.vertical=e.vertical}manipulatorName(e){return Object.keys(this).find((t=>this.hasOwnProperty(t)&&e===this[t]))}values(){return[this.start,this.end,this.offset,this.heading,this.rotation,this.direct,this.horizontal,this.vertical]}forEachMeasureTypeManipulator(e){for(const n of t)e(this.manipulatorForMeasureType(n),n)}manipulatorForMeasureType(e){switch(e){case n.Direct:return this.direct;case n.Horizontal:return this.horizontal;case n.Vertical:return this.vertical}}}function ie(t,n){const r=G(t,e.toUnitRGB(L.pointManipulators.color),L.pointManipulators.opacity,Fe);return r.available=!1,r.grabCursor="crosshair",r.radius=L.pointManipulators.radius,r.metadata=n.metadata,r.collisionPriority=1,r}function ae(e,t){const n=[M(-.5,0,0),M(.5,0,0)],{lengthFraction:r}=L.offsetManipulator,o=Y(t.unfocusedMaterial,n.map((e=>m(v(),e,r)))),i=o.instantiate({material:t.focusedMaterial});return new A({view:e,renderObjects:[new Z(o,ne.Unfocused|ne.Selected|Fe),new Z(i,ne.Focused|Fe)],collisionType:{type:"line",paths:[n]},radius:De(t.lineSizePt)/2,metadata:t.metadata,available:!1,...B})}function se(t,{lineSizePt:n,material:r}){const{calloutOffsetPx:o,calloutWidth:a,discScale:s,focusMultiplier:c,color:m}=L.orientationManipulator;return{calloutLength:.25*X*L.markers.lineSizeFraction*i(n)+o,calloutColor:e.toUnitRGBA(m),calloutWidth:a,customStateMask:Fe,discScale:s,focusMultiplier:c,material:r,metadata:t}}function ce(e,t){return I(e,se(t.metadata,t))}function me(e,t){W(e,se(e.metadata,t))}function de(e,t){const n=[M(-.5,0,0),M(.5,0,0)],{lengthFraction:r}=L.offsetManipulator,o=Y(t.thinOffsetManipulatorMaterial,n),i=Y(t.unfocusedMaterial,n.map((e=>m(v(),e,r)))),a=i.instantiate({material:t.focusedMaterial});return new A({view:e,renderObjects:[new Z(i,ne.Unfocused|Fe),new Z(a,ne.Focused|Fe),new Z(o,Fe)],collisionType:{type:"line",paths:[n]},radius:De(t.lineSizePt)/2,available:!1,metadata:t.metadata,...B})}function le(e,{isStart:t,createSnappingPipelineStep:n,dimension:r,onUpdate:o,view:i}){const a=t?"startPoint":"endPoint",s=$(e,((e,t,s,c)=>{const m=K(e),{snappingStep:d,cancelSnapping:l}=n(c);s=s.next(m).next(_(r,[a,"measureType","orientation"])).next(l),t.next(m).next(q(i)).next(...d).next((e=>{const t=C(e.mapEnd,new re);o("startPoint"===a?{startPoint:t}:{endPoint:t})}))}));return[s]}function ue(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{if(!T(t)||!e.selected)return;const{geometry:i,dimension:a}=t,s=K(e);r.next(s).next(Se(n,a,i.dimensionSegment,i.primaryOffsetAxis)),o.next(s).next(_(a,["offset"]))}))]}function pe(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{he({cancel:o,computation:t,settingHeading:!0,steps:r,view:n})}))]}function fe(e,{computation:t,view:n}){return[$(e,((e,r,o)=>{he({cancel:o,computation:t,settingHeading:!1,steps:r,view:n})})),e.events.on("immediate-click",(e=>{ge(e,t,n)}))]}function ge(e,t,n){const{dimension:o,geometry:i}=t;if(90===o.orientation||270===o.orientation)return o.orientation=0,void e.stopPropagation();if(null==i)return;const{renderCoordsHelper:a}=n,s=b({...k(t),orientation:90},a),c=b({...k(t),orientation:270},a);if(null==s||null==c)return;const m=R(s,a),d=R(c,a),l=Me(i,n),u=r.shortestSignedDiff(l,m),p=r.shortestSignedDiff(l,d);o.orientation=Math.abs(u)<Math.abs(p)?90:270,e.stopPropagation()}function he(e){const{cancel:t,computation:n,settingHeading:r,steps:i,view:a}=e;if(!T(n))return;const{renderCoordsHelper:s}=a,{dimension:c,geometry:m}=n,l=v(),u=be(v(),m,m.directSegment,s),p=ke(P.get(),{forHeading:r,geometry:m,renderCoordsHelper:s}),f=j(u,p,x()),g=r?c.orientation??R(m,a.renderCoordsHelper):c.orientation??0;i.next(J(a,f)).next((e=>{"start"===e.action&&d(l,e.renderStart);const t=H(f),n=N(l,e.renderEnd,u,t);let i=g-o(n);r||(i=ye(i)),c.orientation=i})),t.next(_(c,["orientation"]))}function ye(e){const t=r.normalize(e)%90;return t<L.orientationSnapThresholdDegrees?e-t:90-t<L.orientationSnapThresholdDegrees?e+(90-t):e}function ve(e,{computation:t,manipulatorMeasureType:r,view:o}){let i=n.Direct,a=0,s=0;return[e.events.on("grab-changed",(n=>{if("start"!==n.action||!T(t))return;const{dimension:c,geometry:m}=t;i=c.measureType,a=c.offset,s=c.orientation;const l=d(P.get(),e.renderLocation);c.measureType=r,c.offset=U(l,r,m,o.renderCoordsHelper),c.orientation=0})),$(e,((e,n,c)=>{if(!T(t))return;const{geometry:m,dimension:d}=t,{renderCoordsHelper:l}=o,u=z(Ge,r,t,l),p=O(P.get(),{measureType:r,directSegment:m.directSegment,renderCoordsHelper:l}),f=K(e);n.next(f).next(Se(o,d,u,p)),c.next(f).next((e=>(d.measureType=i,d.offset=a,d.orientation=s,e)))}))]}function Se(e,t,n,r){const o=l(P.get(),n.endRenderSpace,n.startRenderSpace);u(o,o,r);const i=j(n.startRenderSpace,o,x()),a=j(n.startRenderSpace,r,x()),s=t.offset;let c,m=0;const d=new ee;return d.next(J(e,i)).next((n=>{"start"===n.action&&(m=w(a,n.renderStart));const r=(w(a,n.renderEnd)-m)*e.renderCoordsHelper.unitInMeters;t.offset=s+r,c=n})),e=>(d.execute(e),c)}function Me(e,t){const{directSegment:n}=e,{renderCoordsHelper:r}=t,o=D(P.get(),e,r),i=F(P.get(),e),a=u(P.get(),i,o),{viewForward:s}=t.state.camera;p(a,s)>0&&m(a,a,-1);const c=n.eval(.5,P.get());return r.headingAtPosition(c,a)}function je(e,t,n){const{dimensionSegment:r,primaryOffsetAxis:o}=t,i=E(Ee,t),c=f(i,S)?a(Ae):V(i,o,S,Ae),m=Math.max(g(i),L.offsetManipulator.minLengthMeters/n.unitInMeters);s(c,c,h(Ee,m,m,m)),e.modelTransform=c,e.renderLocation=r.eval(.5,Ee)}function xe(e,t,n){He(e,t,n,{forHeading:!0})}function we(e,t,n){He(e,t,n,{forHeading:!1})}function He(e,t,n,{forHeading:r}){const{dimension:o,geometry:i}=t,{primaryOffsetAxis:a}=i,s=m(Pe,a,o.offset>=0?1:-1),c=ke(Ce,{forHeading:r,geometry:i,renderCoordsHelper:n});u(c,c,s);const d=V(s,c,S,Ae);e.modelTransform=d,e.renderLocation=be(Ee,i,i.dimensionSegment,n)}const Pe=v(),Ce=v();function Te(e,t,n,r){const{geometry:o}=t,i=z(Ge,n,t,r),a=O(Ee,{measureType:n,directSegment:o.directSegment,renderCoordsHelper:r}),c=y(Le,i.endRenderSpace,i.startRenderSpace),m=V(c,a,S,Ae),d=g(c);s(m,m,h(Le,d,d,d)),e.modelTransform=m,e.renderLocation=i.eval(.5,Le)}function be(e,t,n,r){const{startRenderSpace:o,endRenderSpace:i}=n,a=Re(t,r)?o:i;return d(e,a)}function ke(e,{forHeading:t,geometry:n,renderCoordsHelper:r}){return t?D(e,n,r):E(e,n,{invert:!0})}function Re(e,t){const n=F(Ue,e),r=D(ze,e,t);return p(n,r)>0}const Ue=v(),ze=v();function Oe(e){return i(e)+L.offsetManipulator.linePaddingPx}function De(e){return i(e)+L.offsetManipulator.focusedLinePaddingPx}const Fe=te.Custom1,Ee=v(),Le=v(),Ae=c(),Ge=new Q;export{Fe as DidPointerMoveRecentlyFlag,oe as LengthDimensionManipulators,Me as automaticHeadingFromCamera,de as createMeasureTypeManipulator,ae as createOffsetManipulator,ce as createOrientationManipulator,ie as createPointManipulator,De as focusedOffsetWidth,pe as headingManipulatorHandles,ve as measureTypeManipulatorHandles,ue as offsetManipulatorHandles,le as pointManipulatorHandles,fe as rotationManipulatorHandles,ye as snapOrientationToNearestRightAngle,Oe as unfocusedOffsetWidth,xe as updateHeadingManipulatorTransform,Te as updateMeasureTypeManipulatorTransform,je as updateOffsetManipulatorTransform,me as updateOrientationManipulator,we as updateRotationManipulatorTransform};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../../Color.js";import{getAccentColor as s,getContrastColor as i}from"../../../../core/analysisThemeUtils.js";const n={get main(){return s()},get mainTransparent(){return s(.5)},get contrast(){return i()}};class o{constructor(){this.color=n.main,this.opacity=.5,this.radius=5}}class r{constructor(){this.color=new t([127,127,127]),this.opacity=.5,this.radius=5}}class e{constructor(){this.lineSizeFraction=.8}}class a{constructor(){this.color=n.main,this.opacity=.5,this.linePaddingPx=4,this.focusedLinePaddingPx=6,this.lengthFraction=.5,this.minLengthMeters=.1}}class c{constructor(){this.calloutOffsetPx=18,this.calloutWidth=2,this.discScale=.3,this.focusMultiplier=2,this.color=n.mainTransparent,this.contrastColor=n.contrast}}class h{constructor(){this.lineSizeFraction=.25}}class l{constructor(){this.marginPx=20,this.minScreenLengthFontSizeFactor=5}}class u{constructor(){this.color=n.mainTransparent}}class m{constructor(){this.pointManipulators=new o,this.offsetManipulator=new a,this.orientationManipulator=new c,this.markers=new e,this.labels=new l,this.offsetLine=new h,this.constraint=new u,this.constraintThresholdPx=10,this.initialOffsetPx=50,this.orientationSnapThresholdDegrees=5,this.disabledPointIndicator=new r,this.smallScreenLengthLineSizeFactor=2,this.pointerMoveTimeoutMs=2500}}let p=new m;function d(){p=new m}export{d as reloadSettings,p as settings};
5
+ import t from"../../../../Color.js";import{getAccentColor as s,getTransparentAccentColor as i,getOpaqueContrastColor as o}from"../../../../core/analysisThemeUtils.js";class n{constructor(){this.color=s(),this.opacity=.5,this.radius=5}}class r{constructor(){this.color=new t([127,127,127]),this.opacity=.5,this.radius=5}}class e{constructor(){this.lineSizeFraction=.8}}class c{constructor(){this.color=s(),this.opacity=.5,this.linePaddingPx=4,this.focusedLinePaddingPx=6,this.lengthFraction=.5,this.minLengthMeters=.1}}class h{constructor(){this.calloutOffsetPx=18,this.calloutWidth=2,this.discScale=.3,this.focusMultiplier=2,this.color=i(),this.contrastColor=o()}}class a{constructor(){this.lineSizeFraction=.25}}class l{constructor(){this.marginPx=20,this.minScreenLengthFontSizeFactor=5}}class u{constructor(){this.color=s(.5)}}class d{constructor(){this.pointManipulators=new n,this.offsetManipulator=new c,this.orientationManipulator=new h,this.markers=new e,this.labels=new l,this.offsetLine=new a,this.constraint=new u,this.constraintThresholdPx=10,this.initialOffsetPx=50,this.orientationSnapThresholdDegrees=5,this.disabledPointIndicator=new r,this.smallScreenLengthLineSizeFactor=2,this.pointerMoveTimeoutMs=2500}}let f=new d;function p(){f=new d}export{p as reloadSettings,f as settings};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../analysis/SlicePlane.js";import{clock as i}from"../../../../core/clock.js";import a from"../../../../core/Handles.js";import{releaseMaybe as s,destroyMaybe as n,removeMaybe as r}from"../../../../core/maybe.js";import{watch as l,sync as o,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{addFrameTask as p}from"../../../../core/scheduling.js";import{createScreenPoint as u,screenPointObjectToArray as c,createScreenPointArray as d}from"../../../../core/screenUtils.js";import{property as _}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as v}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as P,E as y,m}from"../../../../chunks/mat4.js";import{e as g,l as w,c as f,g as M,a as D,m as T,n as V,s as b}from"../../../../chunks/vec3.js";import{a as k,c as E}from"../../../../chunks/vec3f64.js";import{a as S,c as H,n as x,f as I}from"../../../../chunks/boundedPlane.js";import{signedDistance as R,create as j,intersectRay as O,normal as C}from"../../../../geometry/support/plane.js";import{create as z}from"../../../../geometry/support/ray.js";import{sv3d as G,sm4d as U,sv2d as L}from"../../../../geometry/support/vectorStacks.js";import{POINTER_MOVE_TIMER_MS as A,PLANE_PREVIEW_OUTLINE_WIDTH as K,forceVerticalModifier as B,forceHorizontalModifier as F,PLANE_OUTLINE_COLOR as N,PLANE_BACKGROUND_COLOR as q,PREVIEW_FADE_DOT_THRESHOLD as Z,PREVIEW_FADE_DURATION_SECONDS as J,INITIAL_DEPTH_OFFSET_FRAC as Q}from"./sliceToolConfig.js";import{createShiftManipulator as W,createRotateManipulator as X,createResizeManipulator as Y,createGridVisualElement as $,createOutlineVisualElement as tt,planeToShape as et,createRotatePlane as it,RotationAxis as at,resizePlane as st,calculatePlaneHalfSize as nt,SliceOrientation as rt,createPlane as lt,DidPointerMoveRecentlyFlag as ot,calculateBoundedPlaneTranslateRotate as ht,updateShiftRestartHandle as pt,updateRotateHeadingHandle as ut,updateRotateTiltHandle as ct,updateResizeHandle as dt,createShiftPlane as _t}from"./sliceToolUtils.js";import{getRotateHeadingTexture as vt,getTiltRotateTexture as Pt}from"./images/Factory.js";import{calculateInputRotationTransform as yt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as mt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as gt}from"../../support/geometryUtils/ray.js";import{newIntersector as wt}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as ft}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Mt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Dt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as Tt}from"../../../support/screenUtils.js";var Vt;let bt=Vt=class extends Mt{constructor(t){super(t),this._clock=i,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._handles=new a,this._viewHandles=new a,this._frameTask=null,this._pointerMoveTimerMs=A,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=S(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=u(),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._intersector=wt(t.view.state.viewingMode),this._intersector.options.store=ft.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result;this._rotateHeadingImage=vt(this.view.toolViewManager.textures,{premultiplyAlpha:t}),this._rotateTiltImage=Pt(this.view.toolViewManager.textures);const e=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&H(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=W(this.view),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),e(this.shiftManipulator)})),this._handles.add(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=X(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),e(this.rotateHeadingManipulator)})),this._handles.add(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=X(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),e(this.rotateTiltManipulator)})),this._handles.add(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,i)=>{const a=Y(this.view,t);return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,i),e(a)})),this._handles.add(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=$(this.view),this._previewPlaneOutlineVisualElement=tt(this.view),this._previewPlaneOutlineVisualElement.width=K,this._handles.add(l((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),o));const i=l((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),h);this._handles.add([i,l((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=s(this._rotateHeadingImage),this._rotateTiltImage=s(this._rotateTiltImage),this._handles=n(this._handles),this._viewHandles=n(this._viewHandles),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=n(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=n(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this._handles.remove("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!Et(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!Et(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!Et(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=Tt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(Tt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=Tt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),H(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const i=Tt(t),a=S();if(this._pickPlane(i,!1,this._activeKeyModifiers,a)){if(H(a,this._startPlane),this.analysis.shape=et(a,this.view,this.view.spatialReference,new e),"pointer-drag"===t.type){const e=this._calculatePickRay(i);this.inputState=kt(e,t.pointerId,a.origin,a)}return!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(Tt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===B||t.key===F)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==B&&t.key!==F||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);H(this.analysisViewData.plane,this._startPlane),this.inputState=kt(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?H(this.analysisViewData.plane,S()):null;e.next(mt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(g(x(this.analysisViewData.plane),e.ray.direction)/w(e.ray.direction)))/i,1),s=-R(this._startPlane.plane,e.renderEnd),n=-R(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=f(G.get(),this._startPlane.origin),i=f(G.get(),x(this._startPlane));M(i,i,-t.depth),D(i,i,e);const a=I(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,S());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=it(this.analysisViewData.plane,this.view.renderCoordsHelper,at.HEADING,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(H(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?H(this.analysisViewData.plane,S()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=it(this.analysisViewData.plane,this.view.renderCoordsHelper,at.TILT,j()),i=this._calculatePickRay(t.screenPoint),a=E();O(e,i,a)&&(H(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?H(this.analysisViewData.plane,S()):null;e.next(mt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=C(t.rotatePlane),a=yt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=P(U.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=T(G.get(),this._startPlane.basis1,e),a=T(G.get(),this._startPlane.basis2,e),s=I(this.analysisViewData.plane.origin,i,a,S());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=G.get();O(this.analysisViewData.plane.plane,i,a)&&(H(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:k(a)})}_createResizeDragPipeline(t){return Dt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=H(this.analysisViewData.plane,S());e.next(mt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=st(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,H(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:S();if(i=null!=i?H(i,St):null,this._pickPlane(t,!0,e,a)){const t=Z;let e=!1;null!=i&&(e=g(i.plane,a.plane)<t||g(V(G.get(),i.basis1),V(G.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=p({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*J),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=r(this._frameTask)}_calculatePickRay(t){const e=z(),i=c(t,Ht);return gt(this.view.state.camera,i,e),V(e.direction,e.direction),e}_pickMinResult(t){const e=c(t,L.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=G.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(G.get()),l=this.view.state.camera;g(r,l.viewForward)>0&&M(r,r,-1);const o=nt(n,l),h=(e?1:-1)*o*Q,p=M(G.get(),r,h);D(p,p,n);const u=this.analysis.tiltEnabled?rt.TILTED:rt.HORIZONTAL_OR_VERTICAL,c=i[B]?rt.VERTICAL:i[F]?rt.HORIZONTAL:u;return lt(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=r(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=ot,this.rotateHeadingManipulator.state|=ot,this.rotateTiltManipulator.state|=ot,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~ot,this.rotateHeadingManipulator.state&=~ot,this.rotateTiltManipulator.state&=~ot}),this._pointerMoveTimerMs)}_updateManipulators(){if(Vt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=ht(t,U.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),pt(this.shiftManipulator,i,t,this.view.state.camera),ut(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),ct(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>dt(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=b(G.get(),w(t.basis1),w(t.basis2),1),s=y(U.get(),a),n=m(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=[N[0],N[1],N[2],N[3]*this._previewPlaneOpacity];this._previewPlaneOutlineVisualElement.color=t;const e=[q[0],q[1],q[2],q[3]*this._previewPlaneOpacity],i=[0,0,0,0];this._previewPlaneGridVisualElement.backgroundColor=e,this._previewPlaneGridVisualElement.gridColor=i}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function kt(t,e,i,a){const s=_t(i,x(a),t.direction,j()),n=E();return O(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function Et(t){return"mouse"!==t.pointerType||0===t.button}bt.disableEngineLayers=!1,t([_()],bt.prototype,"_clock",void 0),t([_({constructOnly:!0})],bt.prototype,"view",void 0),t([_()],bt.prototype,"analysisViewData",void 0),t([_({readOnly:!0})],bt.prototype,"state",null),t([_({readOnly:!0})],bt.prototype,"cursor",null),t([_()],bt.prototype,"analysis",null),t([_()],bt.prototype,"removeIncompleteOnCancel",void 0),t([_({readOnly:!0})],bt.prototype,"layersMode",void 0),t([_({value:null})],bt.prototype,"inputState",null),t([_()],bt.prototype,"_isPlacingSlicePlane",null),t([_()],bt.prototype,"_creatingPointerId",null),bt=Vt=t([v("esri.views.3d.analysis.Slice.SliceTool")],bt);const St=S(),Ht=d(),xt=bt;export{xt as default};
5
+ import{_ as t}from"../../../../chunks/tslib.es6.js";import e from"../../../../Color.js";import i from"../../../../analysis/SlicePlane.js";import{clock as a}from"../../../../core/clock.js";import s from"../../../../core/Handles.js";import{releaseMaybe as n,destroyMaybe as r,removeMaybe as l}from"../../../../core/maybe.js";import{watch as o,sync as h,syncAndInitial as p}from"../../../../core/reactiveUtils.js";import{addFrameTask as u}from"../../../../core/scheduling.js";import{createScreenPoint as c,screenPointObjectToArray as d,createScreenPointArray as _}from"../../../../core/screenUtils.js";import{property as v}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as P}from"../../../../core/accessorSupport/decorators/subclass.js";import{d as y,E as m,m as g}from"../../../../chunks/mat4.js";import{e as w,l as f,c as M,g as T,a as D,m as V,n as b,s as k}from"../../../../chunks/vec3.js";import{a as E,c as S}from"../../../../chunks/vec3f64.js";import{Z as H}from"../../../../chunks/vec4f64.js";import{a as x,c as R,n as I,f as C}from"../../../../chunks/boundedPlane.js";import{signedDistance as j,create as O,intersectRay as z,normal as G}from"../../../../geometry/support/plane.js";import{create as U}from"../../../../geometry/support/ray.js";import{sv3d as A,sm4d as L,sv2d as B}from"../../../../geometry/support/vectorStacks.js";import{settings as K}from"./settings.js";import{POINTER_MOVE_TIMER_MS as F,PLANE_PREVIEW_OUTLINE_WIDTH as N,forceVerticalModifier as Z,forceHorizontalModifier as q,PREVIEW_FADE_DOT_THRESHOLD as W,PREVIEW_FADE_DURATION_SECONDS as J,INITIAL_DEPTH_OFFSET_FRAC as Q}from"./sliceToolConfig.js";import{createShiftManipulator as X,OffsetMode as Y,createRotateManipulator as $,createResizeManipulator as tt,createGridVisualElement as et,createOutlineVisualElement as it,planeToShape as at,createRotatePlane as st,RotationAxis as nt,resizePlane as rt,calculatePlaneHalfSize as lt,SliceOrientation as ot,createPlane as ht,DidPointerMoveRecentlyFlag as pt,calculateBoundedPlaneTranslateRotate as ut,updateShiftRestartHandle as ct,updateRotateHeadingHandle as dt,updateRotateTiltHandle as _t,updateResizeHandle as vt,createShiftPlane as Pt}from"./sliceToolUtils.js";import{getRotateHeadingTexture as yt,getTiltRotateTexture as mt}from"./images/Factory.js";import{calculateInputRotationTransform as gt}from"../../interactive/manipulatorUtils.js";import{screenToRenderPlane as wt}from"../../interactive/editingTools/dragEventPipeline3D.js";import{fromScreen as ft}from"../../support/geometryUtils/ray.js";import{newIntersector as Mt}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as Tt}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{AnalysisToolBase as Dt}from"../../../interactive/AnalysisToolBase.js";import{createManipulatorDragEventPipeline as Vt}from"../../../interactive/dragEventPipeline.js";import{createScreenPointFromEvent as bt}from"../../../support/screenUtils.js";var kt;let Et=kt=class extends Dt{constructor(t){super(t),this._clock=a,this._previewPlaneOpacity=1,this.removeIncompleteOnCancel=!1,this.layersMode="none",this.shiftManipulator=null,this.rotateHeadingManipulator=null,this.rotateTiltManipulator=null,this.resizeManipulators=null,this._handles=new s,this._viewHandles=new s,this._frameTask=null,this._pointerMoveTimerMs=F,this._prevPointerMoveTimeout=null,this._previewPlaneGridVisualElement=null,this._previewPlaneOutlineVisualElement=null,this._startPlane=x(),this._previewPlane=null,this._activeKeyModifiers={},this._lastCursorPosition=c(),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._intersector=Mt(t.view.state.viewingMode),this._intersector.options.store=Tt.MIN}initialize(){if(null==this.analysis)throw new Error("SliceTool requires valid analysis, but null was provided.");const t=!this.view._stage?.renderView.renderingContext.driverTest.svgPremultipliesAlpha.result,e={accentColor:K.rotateManipulators.color,contrastColor:K.rotateManipulators.contrastColor,preMultiplyAlpha:t};this._rotateHeadingImage=yt(this.view.toolViewManager.textures,e),this._rotateTiltImage=mt(this.view.toolViewManager.textures,e);const i=t=>{this._updateManipulatorsInteractive(t),t.grabbing||(null!=this.analysisViewData.plane&&R(this.analysisViewData.plane,this._startPlane),this.inputState=null)};this.shiftManipulator=X(this.view,{offsetMode:Y.CENTER_ON_ARROW,calloutColor:K.callouts.color,color:K.shiftManipulator.color,outlineColor:K.shiftManipulator.outlineColor}),this.manipulators.add(this.shiftManipulator),this.shiftManipulator.events.on("grab-changed",(t=>{this._onShiftGrab(t),i(this.shiftManipulator)})),this._handles.add(this._createShiftDragPipeline(this.shiftManipulator)),this.rotateHeadingManipulator=$(this.view,this._rotateHeadingImage.texture),this.manipulators.add(this.rotateHeadingManipulator),this.rotateHeadingManipulator.events.on("grab-changed",(t=>{this._onRotateHeadingGrab(t),i(this.rotateHeadingManipulator)})),this._handles.add(this._createRotateHeadingDragPipeline(this.rotateHeadingManipulator)),this.rotateTiltManipulator=$(this.view,this._rotateTiltImage.texture),this.manipulators.add(this.rotateTiltManipulator),this.rotateTiltManipulator.events.on("grab-changed",(t=>{this._onRotateTiltGrab(t),i(this.rotateTiltManipulator)})),this._handles.add(this._createRotateTiltDragPipeline(this.rotateTiltManipulator)),this.resizeManipulators=this._resizeHandles.map(((t,e)=>{const a=tt(this.view,t,{color:K.resizeManipulators.color});return a.events.on("grab-changed",(t=>{this._onResizeGrab(t,e),i(a)})),this._handles.add(this._createResizeDragPipeline(a)),a})),this.manipulators.addMany(this.resizeManipulators),this._previewPlaneGridVisualElement=et(this.view),this._previewPlaneOutlineVisualElement=it(this.view),this._previewPlaneOutlineVisualElement.width=N,this._handles.add(o((()=>[this.analysisViewData.plane,this.analysis.tiltEnabled]),(()=>this._updateManipulators()),h));const a=o((()=>this.state),(t=>{"sliced"===t&&this.finishToolCreation()}),p);this._handles.add([a,o((()=>this.view.state.camera),(()=>this._onCameraChange()))])}destroy(){this._rotateHeadingImage=n(this._rotateHeadingImage),this._rotateTiltImage=n(this._rotateTiltImage),this._handles=r(this._handles),this._viewHandles=r(this._viewHandles),this._removeFrameTask(),this._clearPointerMoveTimeout(),this._previewPlaneOutlineVisualElement=r(this._previewPlaneOutlineVisualElement),this._previewPlaneGridVisualElement=r(this._previewPlaneGridVisualElement)}get state(){const t=!!this.analysisViewData.plane,e=!!this.inputState;return t?t&&e?"slicing":t&&!e?"sliced":"ready":"ready"}get cursor(){return this._isPlacingSlicePlane||"exclude"===this.layersMode?"crosshair":null!=this._creatingPointerId?"grabbing":null}set analysis(t){if(null==t)throw new Error("SliceTool requires valid analysis, but null was provided.");this._handles.remove("analysis"),this._set("analysis",t)}get inputState(){return this._get("inputState")}set inputState(t){this._set("inputState",t),this.analysisViewData.showGrid=null!=t&&"resize"===t.type,this._updateMaterials()}get _isPlacingSlicePlane(){return!this.inputState&&!this.analysisViewData.plane&&this.active}get _creatingPointerId(){return null!=this.inputState&&"shift"===this.inputState.type?this.inputState.creatingPointerId:null}enterExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","exclude"),this.active||(this.view.activeTool=this))}exitExcludeLayerMode(){null!=this.analysisViewData.plane&&(this._set("layersMode","none"),this.active&&(this.view.activeTool=null))}onDeactivate(){this._set("layersMode","none"),this._updatePreviewPlane(null)}onShow(){this._updateVisibility(!0)}onHide(){this._updateVisibility(!1)}_updateVisibility(t){this._updateManipulators(),t||this._clearPointerMoveTimeout()}onInputEvent(t){switch(t.type){case"pointer-drag":if(!Ht(t))return;this._isPlacingSlicePlane?this._onClickPlacePlane(t)&&t.stopPropagation():this._onPointerDrag(t)&&t.stopPropagation();break;case"pointer-move":this._onPointerMove(t);break;case"pointer-up":this._onPointerUp(t)&&t.stopPropagation();break;case"immediate-click":if(!Ht(t))return;this._onClickPlacePlane(t)&&t.stopPropagation();break;case"click":if(!Ht(t))return;this._onClickExcludeLayer(t)&&t.stopPropagation();break;case"drag":this.inputState&&t.stopPropagation();break;case"key-down":this._onKeyDown(t)&&t.stopPropagation();break;case"key-up":this._onKeyUp(t)&&t.stopPropagation()}}onEditableChange(){this.analysisViewData.editable=this.internallyEditable}_onPointerDrag(t){const e=this.inputState;if(t.pointerId===this._creatingPointerId&&null!=e&&"shift"===e.type){const i=bt(t);return this.shiftManipulator.events.emit("drag",{action:e.hasBeenDragged?"update":"start",pointerType:t.pointerType,start:i,screenPoint:i}),e.hasBeenDragged=!0,!0}return!1}_onPointerMove(t){this._lastCursorPosition.x=t.x,this._lastCursorPosition.y=t.y,this._resetPointerMoveTimeout(),"touch"!==t.pointerType&&this._updatePreviewPlane(bt(t),this._activeKeyModifiers)}_onCameraChange(){this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),this._updateManipulators()}_onPointerUp(t){if(t.pointerId===this._creatingPointerId&&null!=this.analysisViewData.plane){const e=bt(t);return this.shiftManipulator.events.emit("drag",{action:"end",start:e,screenPoint:e}),R(this.analysisViewData.plane,this._startPlane),this.inputState=null,!0}return!1}_onClickPlacePlane(t){if("exclude"===this.layersMode)return!1;if(this._isPlacingSlicePlane){const e=bt(t),a=x();if(this._pickPlane(e,!1,this._activeKeyModifiers,a)){if(R(a,this._startPlane),this.analysis.shape=at(a,this.view,this.view.spatialReference,new i),"pointer-drag"===t.type){const i=this._calculatePickRay(e);this.inputState=St(i,t.pointerId,a.origin,a)}return!0}}return!1}_onClickExcludeLayer(t){return!("exclude"!==this.layersMode||!this.created)&&(this.view.hitTest(bt(t)).then((t=>{if(t.results.length){const e=t.results[0],i="graphic"===e?.type&&e.graphic;if(i){const t=i.sourceLayer||i.layer;t&&this.analysis.excludedLayers.push(t)}}else t.ground.layer?this.analysis.excludedLayers.push(t.ground.layer):this.analysis.excludeGroundSurface=!0})),this._set("layersMode","none"),this.active&&(this.view.activeTool=null),!0)}_onKeyDown(t){return(t.key===Z||t.key===q)&&(this._activeKeyModifiers[t.key]=!0,null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onKeyUp(t){return!(t.key!==Z&&t.key!==q||!this._activeKeyModifiers[t.key])&&(delete this._activeKeyModifiers[t.key],null!=this._previewPlane&&this._updatePreviewPlane(this._lastCursorPosition,this._activeKeyModifiers),!0)}_onShiftGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=this._calculatePickRay(t.screenPoint);R(this.analysisViewData.plane,this._startPlane),this.inputState=St(e,null,this.shiftManipulator.renderLocation,this.analysisViewData.plane)}_createShiftDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"shift"!==a.type)return;const s=null!=this.analysisViewData.plane?R(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.shiftPlane)).next(this._shiftDragAdjustSensitivity(a)).next(this._shiftDragUpdatePlane(a)),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_shiftDragAdjustSensitivity(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=.001,a=Math.min((1-Math.abs(w(I(this.analysisViewData.plane),e.ray.direction)/f(e.ray.direction)))/i,1),s=-j(this._startPlane.plane,e.renderEnd),n=-j(this._startPlane.plane,t.startPoint);return t.depth=t.depth*(1-a)+s*a-n,e}}_shiftDragUpdatePlane(t){return()=>{if(null==this.analysisViewData.plane)return;const e=M(A.get(),this._startPlane.origin),i=M(A.get(),I(this._startPlane));T(i,i,-t.depth),D(i,i,e);const a=C(i,this.analysisViewData.plane.basis1,this.analysisViewData.plane.basis2,x());this._updateBoundedPlane(a)}}_onRotateHeadingGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.HEADING,O()),i=this._calculatePickRay(t.screenPoint),a=S();z(e,i,a)&&(R(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateHeadingDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?R(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_onRotateTiltGrab(t){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const e=st(this.analysisViewData.plane,this.view.renderCoordsHelper,nt.TILT,O()),i=this._calculatePickRay(t.screenPoint),a=S();z(e,i,a)&&(R(this.analysisViewData.plane,this._startPlane),this.inputState={type:"rotate",rotatePlane:e,startPoint:a})}_createRotateTiltDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"rotate"!==a.type)return;const s=null!=this.analysisViewData.plane?R(this.analysisViewData.plane,x()):null;e.next(wt(this.view,a.rotatePlane)).next(this._rotateDragRenderPlaneToRotate(a)).next(this._rotateDragUpdatePlaneFromRotate()),i.next((()=>{null!=s&&this._updateBoundedPlane(s)}))}))}_rotateDragRenderPlaneToRotate(t){return e=>{if(null==this.analysisViewData.plane)return null;const i=G(t.rotatePlane),a=gt(t.startPoint,e.renderEnd,this.analysisViewData.plane.origin,i);return{...e,rotateAxis:i,rotateAngle:a}}}_rotateDragUpdatePlaneFromRotate(){return t=>{if(null==this.analysisViewData.plane)return;const e=y(L.get(),t.rotateAngle,t.rotateAxis);if(null==e)return;const i=V(A.get(),this._startPlane.basis1,e),a=V(A.get(),this._startPlane.basis2,e),s=C(this.analysisViewData.plane.origin,i,a,x());this._updateBoundedPlane(s)}}_onResizeGrab(t,e){if("start"!==t.action||null==this.analysisViewData.plane||!t.screenPoint)return;const i=this._calculatePickRay(t.screenPoint),a=A.get();z(this.analysisViewData.plane.plane,i,a)&&(R(this.analysisViewData.plane,this._startPlane),this.inputState={type:"resize",activeHandleIdx:e,startPoint:E(a)})}_createResizeDragPipeline(t){return Vt(t,((t,e,i)=>{const a=this.inputState;if(null==a||"resize"!==a.type||null==this.analysisViewData.plane)return;const s=R(this.analysisViewData.plane,x());e.next(wt(this.view,this.analysisViewData.plane.plane)).next(this._resizeDragUpdatePlane(a)),i.next((()=>{this._updateBoundedPlane(s)}))}))}_resizeDragUpdatePlane(t){return e=>{if(null==this.analysisViewData.plane)return;const i=this._resizeHandles[t.activeHandleIdx],a=rt(i,t.startPoint,e.renderEnd,this.view.state.camera,this._startPlane,R(this.analysisViewData.plane));this._updateBoundedPlane(a)}}_updateBoundedPlane(t){const e=this.analysisViewData;if(null==e)throw new Error("valid internal object expected");e.plane=t}_updatePreviewPlane(t,e={}){let i=this._previewPlane;if(this._previewPlane=null,null==t)return this._removeFrameTask(),void this._updateManipulators();if(!this.analysisViewData.plane&&this.active){const a=null!=i?i:x();if(i=null!=i?R(i,xt):null,this._pickPlane(t,!0,e,a)){const t=W;let e=!1;null!=i&&(e=w(i.plane,a.plane)<t||w(b(A.get(),i.basis1),b(A.get(),a.basis1))<t),e&&(this._previewPlaneOpacity=0),this._previewPlane=a}}null!=this._previewPlane&&null==this._frameTask&&0===this._previewPlaneOpacity?this._frameTask=u({update:({deltaTime:t})=>{this._previewPlaneOpacity=Math.min(this._previewPlaneOpacity+t/(1e3*J),1),this._updateManipulators(),1===this._previewPlaneOpacity&&this._removeFrameTask()}}):null==this._previewPlane&&null!=this._frameTask?this._removeFrameTask():null!=this._previewPlane&&this._updateManipulators()}_removeFrameTask(){this._frameTask=l(this._frameTask)}_calculatePickRay(t){const e=U(),i=d(t,Rt);return ft(this.view.state.camera,i,e),b(e.direction,e.direction),e}_pickMinResult(t){const e=d(t,B.get());return this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(e,this._intersector),this._intersector.results.min}_pickPlane(t,e,i,a){const s=this._pickMinResult(t),n=A.get();if(!s.getIntersectionPoint(n))return!1;const r=s.getTransformedNormal(A.get()),l=this.view.state.camera;w(r,l.viewForward)>0&&T(r,r,-1);const o=lt(n,l),h=(e?1:-1)*o*Q,p=T(A.get(),r,h);D(p,p,n);const u=this.analysis.tiltEnabled?ot.TILTED:ot.HORIZONTAL_OR_VERTICAL,c=i[Z]?ot.VERTICAL:i[q]?ot.HORIZONTAL:u;return ht(p,r,o,o,l,c,this.view.renderCoordsHelper,a),!0}_clearPointerMoveTimeout(){this._prevPointerMoveTimeout=l(this._prevPointerMoveTimeout)}_resetPointerMoveTimeout(){this._clearPointerMoveTimeout(),this.shiftManipulator.state|=pt,this.rotateHeadingManipulator.state|=pt,this.rotateTiltManipulator.state|=pt,this._prevPointerMoveTimeout=this._clock.setTimeout((()=>{this.shiftManipulator.state&=~pt,this.rotateHeadingManipulator.state&=~pt,this.rotateTiltManipulator.state&=~pt}),this._pointerMoveTimerMs)}_updateManipulators(){if(kt.disableEngineLayers)return;let t,e=!1;if(null!=this.analysisViewData.plane)t=this.analysisViewData.plane,e=!1;else{if(null==this._previewPlane)return this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.visible=!1,void(this._previewPlaneGridVisualElement.visible=!1);t=this._previewPlane,e=!0}const i=ut(t,L.get());e?(this.shiftManipulator.available=!1,this.rotateHeadingManipulator.available=!1,this.rotateTiltManipulator.available=!1,this.resizeManipulators.forEach((t=>t.available=!1)),this._previewPlaneOutlineVisualElement.attached=!0,this._previewPlaneGridVisualElement.attached=!0,this._previewPlaneOutlineVisualElement.visible=!0,this._previewPlaneGridVisualElement.visible=!0):(this.shiftManipulator.available=!0,this.rotateHeadingManipulator.available=!0,this.rotateTiltManipulator.available=this.analysis.tiltEnabled,this.resizeManipulators.forEach((t=>t.available=!0)),ct(this.shiftManipulator,i,t,this.view.state.camera),dt(this.rotateHeadingManipulator,i,t,this.view.renderCoordsHelper),_t(this.rotateTiltManipulator,i,t),this.resizeManipulators.forEach(((e,a)=>vt(e,this._resizeHandles[a],i,t))),this._previewPlaneOutlineVisualElement.visible=!1,this._previewPlaneGridVisualElement.visible=!1);const a=k(A.get(),f(t.basis1),f(t.basis2),1),s=m(L.get(),a),n=g(s,i,s);this._previewPlaneOutlineVisualElement.transform=n,this._previewPlaneGridVisualElement.transform=n,this._updateMaterials()}_updateMaterials(){const t=e.toUnitRGBA(K.plane.outlineColor);t[3]*=this._previewPlaneOpacity;const i=e.toUnitRGBA(K.plane.color);i[3]*=this._previewPlaneOpacity,this._previewPlaneOutlineVisualElement.color=t,this._previewPlaneGridVisualElement.backgroundColor=i,this._previewPlaneGridVisualElement.gridColor=H}_updateManipulatorsInteractive(t){if(!t.grabbing)return this.shiftManipulator.interactive=!0,this.rotateHeadingManipulator.interactive=!0,this.rotateTiltManipulator.interactive=!0,void this.resizeManipulators.forEach((t=>{t.interactive=!0}));this.shiftManipulator.interactive=this.shiftManipulator===t,this.rotateHeadingManipulator.interactive=this.rotateHeadingManipulator===t,this.rotateTiltManipulator.interactive=this.rotateTiltManipulator===t,this.resizeManipulators.forEach((e=>{e.interactive=e===t}))}testData(){return{plane:this.analysisViewData.plane,setPointerMoveTimerMs:t=>{this._pointerMoveTimerMs=t}}}};function St(t,e,i,a){const s=Pt(i,I(a),t.direction,O()),n=S();return z(s,t,n)?{type:"shift",creatingPointerId:e,hasBeenDragged:!1,shiftPlane:s,depth:0,startPoint:n}:null}function Ht(t){return"mouse"!==t.pointerType||0===t.button}Et.disableEngineLayers=!1,t([v()],Et.prototype,"_clock",void 0),t([v({constructOnly:!0})],Et.prototype,"view",void 0),t([v()],Et.prototype,"analysisViewData",void 0),t([v({readOnly:!0})],Et.prototype,"state",null),t([v({readOnly:!0})],Et.prototype,"cursor",null),t([v()],Et.prototype,"analysis",null),t([v()],Et.prototype,"removeIncompleteOnCancel",void 0),t([v({readOnly:!0})],Et.prototype,"layersMode",void 0),t([v({value:null})],Et.prototype,"inputState",null),t([v()],Et.prototype,"_isPlacingSlicePlane",null),t([v()],Et.prototype,"_creatingPointerId",null),Et=kt=t([P("esri.views.3d.analysis.Slice.SliceTool")],Et);const xt=x(),Rt=_(),It=Et;export{It as default};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.27/esri/copyright.txt for details.
4
4
  */
5
- import{_ as i}from"../../../../chunks/tslib.es6.js";import e from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyMaybe as t}from"../../../../core/maybe.js";import{watch as r,syncAndInitial as l}from"../../../../core/reactiveUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{E as n,m}from"../../../../chunks/mat4.js";import{s as p,l as u}from"../../../../chunks/vec3.js";import{Z as h}from"../../../../chunks/vec4f64.js";import{sv3d as c,sm4d as d}from"../../../../geometry/support/vectorStacks.js";import{PLANE_OUTLINE_COLOR as v,PLANE_PREVIEW_OUTLINE_WIDTH as _,PLANE_OUTLINE_WIDTH as w,PLANE_BACKGROUND_COLOR as V,GRID_COLOR as E}from"./sliceToolConfig.js";import{createGridVisualElement as f,createOutlineVisualElement as g,calculateBoundedPlaneTranslateRotate as j}from"./sliceToolUtils.js";import{createStipplePatternSimple as y}from"../../webgl-engine/materials/lineStippleUtils.js";let b=class extends e{constructor(i){super(i),this._handles=new s,this._gridVisualElement=null,this._outlineVisualElement=null,this.showGrid=!1,this.preview=!0}initialize(){const i=this.analysisViewData;if(null==i)throw new Error("expected internal object to be valid");this._gridVisualElement=f(this.view),this._outlineVisualElement=g(this.view),this._handles.add([r((()=>({visible:null!=i.plane&&this.analysisViewData.visible,active:this.analysisViewData.active,preview:this.preview,showGrid:this.showGrid})),(i=>this._updateMaterials(i)),l),r((()=>i.plane),(i=>this._updatePlane(i)),l)],"internal")}destroy(){this._handles.destroy(),this._gridVisualElement=t(this._gridVisualElement),this._outlineVisualElement=t(this._outlineVisualElement),this.set("view",null)}_updatePlane(i){if(null==i)return;this._gridVisualElement.attached=!0,this._outlineVisualElement.attached=!0;const e=p(c.get(),u(i.basis1),u(i.basis2),1),s=n(d.get(),e),t=j(i,d.get()),r=m(s,t,s);this._outlineVisualElement.transform=r,this._gridVisualElement.transform=r}_updateMaterials({visible:i,active:e,preview:s,showGrid:t}){this._outlineVisualElement.color=v,this._outlineVisualElement.width=s?_:w,this._outlineVisualElement.stipplePattern=e?null:y(5),this._gridVisualElement.backgroundColor=V,this._gridVisualElement.gridColor=t?E:h,this._gridVisualElement.visible=i,this._outlineVisualElement.visible=i}};i([o()],b.prototype,"view",void 0),i([o()],b.prototype,"analysis",void 0),i([o()],b.prototype,"analysisViewData",void 0),i([o()],b.prototype,"showGrid",void 0),i([o()],b.prototype,"preview",void 0),b=i([a("esri.views.3d.analysis.Slice.SliceVisualization")],b);export{b as SliceVisualization};
5
+ import{_ as i}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import e from"../../../../core/Accessor.js";import s from"../../../../core/Handles.js";import{destroyMaybe as o}from"../../../../core/maybe.js";import{watch as r,syncAndInitial as l}from"../../../../core/reactiveUtils.js";import{property as a}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/accessorSupport/ensureType.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import{subclass as n}from"../../../../core/accessorSupport/decorators/subclass.js";import{E as m,m as p}from"../../../../chunks/mat4.js";import{s as u,l as h}from"../../../../chunks/vec3.js";import{Z as c}from"../../../../chunks/vec4f64.js";import{sv3d as d,sm4d as v}from"../../../../geometry/support/vectorStacks.js";import{settings as _}from"./settings.js";import{PLANE_PREVIEW_OUTLINE_WIDTH as w,PLANE_OUTLINE_WIDTH as V}from"./sliceToolConfig.js";import{createGridVisualElement as f,createOutlineVisualElement as E,calculateBoundedPlaneTranslateRotate as g}from"./sliceToolUtils.js";import{createStipplePatternSimple as j}from"../../webgl-engine/materials/lineStippleUtils.js";let y=class extends e{constructor(i){super(i),this._handles=new s,this._gridVisualElement=null,this._outlineVisualElement=null,this.showGrid=!1,this.preview=!0}initialize(){const i=this.analysisViewData;if(null==i)throw new Error("expected internal object to be valid");this._gridVisualElement=f(this.view),this._outlineVisualElement=E(this.view),this._handles.add([r((()=>({visible:null!=i.plane&&this.analysisViewData.visible,active:this.analysisViewData.active,preview:this.preview,showGrid:this.showGrid})),(i=>this._updateMaterials(i)),l),r((()=>i.plane),(i=>this._updatePlane(i)),l)],"internal")}destroy(){this._handles.destroy(),this._gridVisualElement=o(this._gridVisualElement),this._outlineVisualElement=o(this._outlineVisualElement),this.set("view",null)}_updatePlane(i){if(null==i)return;this._gridVisualElement.attached=!0,this._outlineVisualElement.attached=!0;const t=u(d.get(),h(i.basis1),h(i.basis2),1),e=m(v.get(),t),s=g(i,v.get()),o=p(e,s,e);this._outlineVisualElement.transform=o,this._gridVisualElement.transform=o}_updateMaterials({visible:i,active:e,preview:s,showGrid:o}){this._outlineVisualElement.color=t.toUnitRGBA(_.plane.outlineColor),this._outlineVisualElement.width=s?w:V,this._outlineVisualElement.stipplePattern=e?null:j(5),this._gridVisualElement.backgroundColor=t.toUnitRGBA(_.plane.color),this._gridVisualElement.gridColor=o?t.toUnitRGBA(_.plane.gridColor):c,this._gridVisualElement.visible=i,this._outlineVisualElement.visible=i}};i([a()],y.prototype,"view",void 0),i([a()],y.prototype,"analysis",void 0),i([a()],y.prototype,"analysisViewData",void 0),i([a()],y.prototype,"showGrid",void 0),i([a()],y.prototype,"preview",void 0),y=i([n("esri.views.3d.analysis.Slice.SliceVisualization")],y);export{y as SliceVisualization};