@arcgis/core 4.24.0-next.20220511 → 4.24.0-next.20220516

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 (423) hide show
  1. package/analysis/LengthDimension.js +1 -1
  2. package/assets/components/assets/icon/compactness16.json +1 -0
  3. package/assets/components/assets/icon/compactness24.json +1 -0
  4. package/assets/components/assets/icon/compactness32.json +1 -0
  5. package/assets/components/assets/icon/configure16.json +1 -0
  6. package/assets/components/assets/icon/configure24.json +1 -0
  7. package/assets/components/assets/icon/configure32.json +1 -0
  8. package/assets/components/assets/icon/debugScript16.json +1 -0
  9. package/assets/components/assets/icon/debugScript24.json +1 -0
  10. package/assets/components/assets/icon/debugScript32.json +1 -0
  11. package/assets/components/assets/icon/dissolveFeatures16.json +1 -0
  12. package/assets/components/assets/icon/dissolveFeatures24.json +1 -0
  13. package/assets/components/assets/icon/dissolveFeatures32.json +1 -0
  14. package/assets/components/assets/icon/distanceType16.json +1 -0
  15. package/assets/components/assets/icon/distanceType24.json +1 -0
  16. package/assets/components/assets/icon/distanceType32.json +1 -0
  17. package/assets/components/assets/icon/gridDiamond16.json +1 -0
  18. package/assets/components/assets/icon/gridDiamond24.json +1 -0
  19. package/assets/components/assets/icon/gridDiamond32.json +1 -0
  20. package/assets/components/assets/icon/gridHexagon16.json +1 -0
  21. package/assets/components/assets/icon/gridHexagon24.json +1 -0
  22. package/assets/components/assets/icon/gridHexagon32.json +1 -0
  23. package/assets/components/assets/icon/gridTriangle16.json +1 -0
  24. package/assets/components/assets/icon/gridTriangle24.json +1 -0
  25. package/assets/components/assets/icon/gridTriangle32.json +1 -0
  26. package/assets/components/assets/icon/insets16.json +1 -0
  27. package/assets/components/assets/icon/insets24.json +1 -0
  28. package/assets/components/assets/icon/insets32.json +1 -0
  29. package/assets/components/assets/icon/maximumTerritoryDistance16.json +1 -0
  30. package/assets/components/assets/icon/maximumTerritoryDistance24.json +1 -0
  31. package/assets/components/assets/icon/maximumTerritoryDistance32.json +1 -0
  32. package/assets/components/assets/icon/minDistanceBetweenCenters16.json +1 -0
  33. package/assets/components/assets/icon/minDistanceBetweenCenters24.json +1 -0
  34. package/assets/components/assets/icon/minDistanceBetweenCenters32.json +1 -0
  35. package/assets/components/assets/icon/numberOfTerritories16.json +1 -0
  36. package/assets/components/assets/icon/numberOfTerritories24.json +1 -0
  37. package/assets/components/assets/icon/numberOfTerritories32.json +1 -0
  38. package/assets/components/assets/icon/overlapFeatures16.json +1 -0
  39. package/assets/components/assets/icon/overlapFeatures24.json +1 -0
  40. package/assets/components/assets/icon/overlapFeatures32.json +1 -0
  41. package/assets/components/assets/icon/profileVariables16.json +1 -0
  42. package/assets/components/assets/icon/profileVariables24.json +1 -0
  43. package/assets/components/assets/icon/profileVariables32.json +1 -0
  44. package/assets/components/assets/icon/rasterAnalysis16.json +1 -0
  45. package/assets/components/assets/icon/rasterAnalysis24.json +1 -0
  46. package/assets/components/assets/icon/rasterAnalysis32.json +1 -0
  47. package/assets/components/assets/icon/recurrence16.json +1 -0
  48. package/assets/components/assets/icon/recurrence24.json +1 -0
  49. package/assets/components/assets/icon/recurrence32.json +1 -0
  50. package/assets/components/assets/icon/splitFeatures16.json +1 -0
  51. package/assets/components/assets/icon/splitFeatures24.json +1 -0
  52. package/assets/components/assets/icon/splitFeatures32.json +1 -0
  53. package/assets/components/assets/icon/territoryBufferDistance16.json +1 -0
  54. package/assets/components/assets/icon/territoryBufferDistance24.json +1 -0
  55. package/assets/components/assets/icon/territoryBufferDistance32.json +1 -0
  56. package/assets/components/assets/icon/testData16.json +1 -0
  57. package/assets/components/assets/icon/testData24.json +1 -0
  58. package/assets/components/assets/icon/testData32.json +1 -0
  59. package/assets/esri/core/workers/RemoteClient.js +1 -1
  60. package/assets/esri/core/workers/chunks/0ecaa28b8bff1d779d66.js +1 -0
  61. package/assets/esri/core/workers/chunks/161ad66d11d80a9048bb.js +1 -0
  62. package/assets/esri/core/workers/chunks/{adae54f116f311d72d97.js → 1aba8c73c62a64e0658c.js} +1 -1
  63. package/assets/esri/core/workers/chunks/1d109cd048170e2d529a.js +1 -0
  64. package/assets/esri/core/workers/chunks/329b005a06c0e7f0e9f1.js +1 -0
  65. package/assets/esri/core/workers/chunks/366e5c1abd1ab6d3e548.js +1 -0
  66. package/assets/esri/core/workers/chunks/3e94e35f44aadbb332ff.js +1 -0
  67. package/assets/esri/core/workers/chunks/{9f4d892abf55e8625bc9.js → 44403c3ecc7d949a577c.js} +1 -1
  68. package/assets/esri/core/workers/chunks/46411f32b29a0e783105.js +1 -0
  69. package/assets/esri/core/workers/chunks/6281b15009712a5dee3c.js +1 -0
  70. package/assets/esri/core/workers/chunks/66f627d68dbb0fdb725f.js +1 -0
  71. package/assets/esri/core/workers/chunks/672da24bbf86718bf48d.js +1 -0
  72. package/assets/esri/core/workers/chunks/{c51c9b5da855f84b9a48.js → 7391422fc51acb96a25d.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{f435dc615fdc8917f6ca.js → 7cf3cff7b28ff007dbad.js} +1 -1
  74. package/assets/esri/core/workers/chunks/7ea06c86adfc827fda08.js +1 -0
  75. package/assets/esri/core/workers/chunks/{a054a52712a118c6d505.js → 82bc24bdc9c6ebaf58c0.js} +1 -1
  76. package/assets/esri/core/workers/chunks/{b089058b64db3912478f.js → 86ce33b38887e7dec7f9.js} +1 -1
  77. package/assets/esri/core/workers/chunks/8965ab74e03506e3475e.js +1 -0
  78. package/assets/esri/core/workers/chunks/{5405f478af3563580926.js → 8b497d9c37a8f577a467.js} +1 -1
  79. package/assets/esri/core/workers/chunks/919d0d8b1c2176760973.js +1 -0
  80. package/assets/esri/core/workers/chunks/92898387584524a8e626.js +1 -0
  81. package/assets/esri/core/workers/chunks/a508d936296185456b9a.js +1 -0
  82. package/assets/esri/core/workers/chunks/ab2a0480dc2b608deda3.js +1 -0
  83. package/assets/esri/core/workers/chunks/ab97a35f7a7d5cf1da19.js +2 -0
  84. package/assets/esri/core/workers/chunks/{dcd0653191cd4a1ccaae.js.LICENSE.txt → ab97a35f7a7d5cf1da19.js.LICENSE.txt} +1 -1
  85. package/assets/esri/core/workers/chunks/ae554c88e862a5761f2e.js +1 -0
  86. package/assets/esri/core/workers/chunks/ae5ce55cd1a32525f101.js +1 -0
  87. package/assets/esri/core/workers/chunks/b597c04a4abb98e29d1c.js +1 -0
  88. package/assets/esri/core/workers/chunks/{287c484fd40eee643f3a.js → b78c3e9d31c4a562cdf0.js} +1 -1
  89. package/assets/esri/core/workers/chunks/be4bf1e4cbe2a593f8b3.js +1 -0
  90. package/assets/esri/core/workers/chunks/{b7572b0921b23aef8b9d.js → c40d9caf5189be2c698e.js} +1 -1
  91. package/assets/esri/core/workers/chunks/{b28539c5a6bedb71b038.js → d63f736b3560c577a8a4.js} +1 -1
  92. package/assets/esri/core/workers/chunks/dd6c9a114ad38cf622ba.js +1 -0
  93. package/assets/esri/core/workers/chunks/e6b0f74226b9394bfa7a.js +1 -0
  94. package/assets/esri/images/portal/notebook16.png +0 -0
  95. package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
  96. package/assets/esri/themes/base/widgets/_Editor.scss +3 -2
  97. package/assets/esri/themes/base/widgets/_Tooltip.scss +15 -1
  98. package/assets/esri/themes/dark/main.css +1 -1
  99. package/assets/esri/themes/light/main.css +1 -1
  100. package/assets/esri/themes/light/view.css +1 -1
  101. package/assets/esri/views/interactive/tooltip/t9n/Tooltip.json +1 -0
  102. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ar.json +1 -0
  103. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bg.json +1 -0
  104. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_bs.json +1 -0
  105. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ca.json +1 -0
  106. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_cs.json +1 -0
  107. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_da.json +1 -0
  108. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_de.json +1 -0
  109. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_el.json +1 -0
  110. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_en.json +1 -0
  111. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_es.json +1 -0
  112. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_et.json +1 -0
  113. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fi.json +1 -0
  114. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_fr.json +1 -0
  115. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_he.json +1 -0
  116. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hr.json +1 -0
  117. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_hu.json +1 -0
  118. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_id.json +1 -0
  119. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_it.json +1 -0
  120. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ja.json +1 -0
  121. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ko.json +1 -0
  122. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lt.json +1 -0
  123. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_lv.json +1 -0
  124. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nb.json +1 -0
  125. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_nl.json +1 -0
  126. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pl.json +1 -0
  127. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-BR.json +1 -0
  128. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_pt-PT.json +1 -0
  129. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ro.json +1 -0
  130. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_ru.json +1 -0
  131. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sk.json +1 -0
  132. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sl.json +1 -0
  133. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sr.json +1 -0
  134. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_sv.json +1 -0
  135. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_th.json +1 -0
  136. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_tr.json +1 -0
  137. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_uk.json +1 -0
  138. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_vi.json +1 -0
  139. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-CN.json +1 -0
  140. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-HK.json +1 -0
  141. package/assets/esri/views/interactive/tooltip/t9n/Tooltip_zh-TW.json +1 -0
  142. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace.json +1 -1
  143. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
  144. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
  145. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
  146. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
  147. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
  148. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
  149. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
  150. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
  151. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
  152. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
  153. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
  154. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
  155. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
  156. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
  157. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
  158. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
  159. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
  160. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
  161. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
  162. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
  163. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
  164. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nb.json +1 -1
  165. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
  166. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
  167. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
  168. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
  169. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
  170. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
  171. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
  172. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
  173. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
  174. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
  175. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
  176. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
  177. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
  178. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
  179. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
  180. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
  181. package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
  182. package/chunks/BlendLayers.glsl.js +9 -5
  183. package/chunks/Clouds.glsl.js +29 -11
  184. package/chunks/EdgeShader.glsl.js +3 -4
  185. package/chunks/NoiseTextureAtlas.glsl.js +184 -241
  186. package/chunks/Precipitation.glsl.js +1 -1
  187. package/chunks/vxlLayer.js +1 -1
  188. package/core/quantityFormatUtils.js +1 -1
  189. package/core/unitFormatUtils.js +1 -1
  190. package/interfaces.d.ts +895 -32
  191. package/layers/FeatureLayer.js +1 -1
  192. package/layers/GeoJSONLayer.js +1 -1
  193. package/layers/OGCFeatureLayer.js +1 -1
  194. package/layers/RouteLayer.js +1 -1
  195. package/layers/SceneLayer.js +1 -1
  196. package/layers/StreamLayer.js +1 -1
  197. package/layers/SubtypeGroupLayer.js +1 -1
  198. package/layers/WFSLayer.js +1 -1
  199. package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
  200. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  201. package/layers/mixins/ArcGISImageService.js +1 -1
  202. package/layers/save/featureLayerUtils.js +1 -1
  203. package/layers/support/AggregateField.d.ts +4 -0
  204. package/layers/support/AggregateField.js +1 -1
  205. package/layers/support/FeatureReductionBinning.d.ts +4 -0
  206. package/layers/support/FeatureReductionBinning.js +1 -1
  207. package/layers/support/OutStatistic.d.ts +4 -0
  208. package/layers/support/Sublayer.js +1 -1
  209. package/layers/support/SubtypeSublayer.js +1 -1
  210. package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
  211. package/layers/support/rasterDatasets/wcsCoverageParser.js +1 -1
  212. package/layers/support/rasterFormats/TiffDecoder.js +1 -1
  213. package/layers/support/rasterFunctions/stretchUtils.js +1 -1
  214. package/package.json +3 -3
  215. package/portal/support/portalItemUtils.js +1 -1
  216. package/renderers/PieChartRenderer.d.ts +4 -0
  217. package/renderers/PieChartRenderer.js +5 -0
  218. package/renderers/Renderer.js +1 -1
  219. package/renderers/support/AuthoringInfo.js +1 -1
  220. package/renderers/support/RasterSymbolizer.js +1 -1
  221. package/renderers/support/clickToleranceUtils.js +1 -1
  222. package/renderers/support/rasterRendererHelper.js +1 -1
  223. package/renderers/support/types.js +1 -1
  224. package/renderers/support/utils.js +1 -1
  225. package/renderers.js +1 -1
  226. package/request.js +1 -1
  227. package/rest/imageService/fetchRasterInfo.js +5 -0
  228. package/rest/imageService/getCatalogItemRasterInfo.js +5 -0
  229. package/rest/print.js +1 -1
  230. package/smartMapping/renderers/color.js +1 -1
  231. package/smartMapping/renderers/dotDensity.js +1 -1
  232. package/smartMapping/renderers/heatmap.js +1 -1
  233. package/smartMapping/renderers/location.js +1 -1
  234. package/smartMapping/renderers/size.js +1 -1
  235. package/smartMapping/renderers/type.js +1 -1
  236. package/support/arcadeUtils.js +1 -1
  237. package/support/revision.js +1 -1
  238. package/{widgets/support/widgetThemeUtils.js → support/themeUtils.js} +0 -0
  239. package/symbols/cim/CIMSymbolHelper.js +1 -1
  240. package/symbols/cim/CurveHelper.js +1 -1
  241. package/symbols/cim/ExpandedCIM.js +1 -1
  242. package/symbols/cim/cimAnalyzer.js +1 -1
  243. package/symbols/cim/enums.js +1 -1
  244. package/symbols/cim/placements/PlacementInsidePolygon.js +1 -1
  245. package/views/2d/engine/brushes.js +1 -1
  246. package/views/2d/engine/vectorTiles/GlyphSource.js +1 -1
  247. package/views/2d/engine/vectorTiles/style/Filter.js +1 -1
  248. package/views/2d/engine/vectorTiles/style/StyleRepository.js +1 -1
  249. package/views/2d/engine/webgl/AttributeStoreView.js +1 -1
  250. package/views/2d/engine/webgl/Painter.js +1 -1
  251. package/views/2d/engine/webgl/SpriteMosaic.js +1 -1
  252. package/views/2d/engine/webgl/TextureManager.js +1 -1
  253. package/views/2d/engine/webgl/Utils.js +1 -1
  254. package/views/2d/engine/webgl/animatedFormats/BaseAnimatableTextureResource.js +5 -0
  255. package/views/2d/engine/webgl/animatedFormats/apng.js +1 -1
  256. package/views/2d/engine/webgl/animatedFormats/gif.js +1 -1
  257. package/views/2d/engine/webgl/animatedFormats/utils.js +5 -0
  258. package/views/2d/engine/webgl/brushes/WGLBrushPieChart.js +5 -0
  259. package/views/2d/engine/webgl/brushes/WGLGeometryBrush.js +1 -1
  260. package/views/2d/engine/webgl/brushes/WGLGeometryBrushFill.js +1 -1
  261. package/views/2d/engine/webgl/brushes/WGLGeometryBrushMarker.js +1 -1
  262. package/views/2d/engine/webgl/color.js +1 -1
  263. package/views/2d/engine/webgl/definitions.js +1 -1
  264. package/views/2d/engine/webgl/enums.js +1 -1
  265. package/views/2d/engine/webgl/grouping.js +5 -0
  266. package/views/2d/engine/webgl/mesh/templates/WGLBaseFillTemplate.js +1 -1
  267. package/views/2d/engine/webgl/mesh/templates/WGLBaseLineTemplate.js +1 -1
  268. package/views/2d/engine/webgl/mesh/templates/WGLDynamicFillTemplate.js +1 -1
  269. package/views/2d/engine/webgl/mesh/templates/WGLDynamicMarkerTemplate.js +1 -1
  270. package/views/2d/engine/webgl/mesh/templates/WGLDynamicMeshTemplate.js +1 -1
  271. package/views/2d/engine/webgl/mesh/templates/WGLFillTemplate.js +1 -1
  272. package/views/2d/engine/webgl/mesh/templates/WGLMarkerTemplate.js +1 -1
  273. package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
  274. package/views/2d/engine/webgl/techniques/dotDensity/TechniqueDotDensity.js +1 -1
  275. package/views/2d/engine/webgl/techniques/pieChart/TechniquePieChart.js +5 -0
  276. package/views/2d/engine/webgl/techniques/utils.js +1 -1
  277. package/views/2d/engine/webgl/util/Matcher.js +1 -1
  278. package/views/2d/layers/features/schemaUtils.js +1 -1
  279. package/views/2d/layers/features/support/AttributeStore.js +1 -1
  280. package/views/2d/layers/features/tileRenderers/SymbolTileRenderer.js +1 -1
  281. package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
  282. package/views/2d/layers/imagery/ImageryTileView2D.js +1 -1
  283. package/views/3d/analysis/AreaMeasurementAnalysisView3D.js +1 -1
  284. package/views/3d/analysis/Dimensioning/DimensioningTool.js +1 -1
  285. package/views/3d/analysis/Dimensioning/LengthDimensionComputation.js +5 -0
  286. package/views/3d/analysis/Dimensioning/LengthDimensionVisualization.js +1 -1
  287. package/views/3d/analysis/DimensioningAnalysisView3D.js +1 -1
  288. package/views/3d/analysis/LengthDimensionResult.d.ts +4 -0
  289. package/views/3d/analysis/LengthDimensionResult.js +5 -0
  290. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  291. package/views/3d/analysis/LineOfSightAnalysisView3D.js +1 -1
  292. package/views/3d/analysis/Slice/SliceController.js +1 -1
  293. package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
  294. package/views/3d/camera/constraintUtils/altitude.js +1 -1
  295. package/views/3d/camera/constraintUtils/tilt.js +1 -1
  296. package/views/3d/environment/Clouds.glsl.js +1 -1
  297. package/views/3d/environment/CloudsGenerator.js +1 -1
  298. package/views/3d/environment/CloudsPresets.js +1 -1
  299. package/views/3d/environment/EnvironmentRenderer.js +1 -1
  300. package/views/3d/environment/Fog.js +1 -1
  301. package/views/3d/environment/NoiseTextureAtlas.glsl.js +1 -1
  302. package/views/3d/environment/NoiseTextureAtlas.js +1 -1
  303. package/views/3d/environment/NoiseTextureAtlasConfiguration.js +5 -0
  304. package/views/3d/environment/NoiseTextureAtlasDimensions.js +5 -0
  305. package/views/3d/environment/NoiseTextureAtlasTechnique.js +1 -1
  306. package/views/3d/environment/Precipitation.js +1 -1
  307. package/views/3d/environment/SnowyWeather.d.ts +4 -0
  308. package/views/3d/interactive/SegmentLabels3D.js +1 -1
  309. package/views/3d/interactive/editingTools/manipulations/Manipulation.js +1 -1
  310. package/views/3d/interactive/editingTools/reshapeGraphic/ReshapeOperation.js +1 -1
  311. package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
  312. package/views/3d/interactive/editingTools/transformGraphic/GraphicScaleRotateTransform.js +1 -1
  313. package/views/3d/interactive/editingTools/transformGraphic/GraphicTransformTool.js +1 -1
  314. package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js +1 -1
  315. package/views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DView.js +1 -1
  316. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  317. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DView.js +1 -1
  318. package/views/3d/interactive/visualElements/LabelVisualElement.js +1 -1
  319. package/views/3d/layers/DynamicLayerView3D.js +1 -1
  320. package/views/3d/layers/I3SMeshView3D.js +1 -1
  321. package/views/3d/layers/MediaLayerView3D.js +1 -1
  322. package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
  323. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  324. package/views/3d/layers/graphics/Graphics3DLodInstanceGraphicLayer.js +1 -1
  325. package/views/3d/layers/graphics/Graphics3DObject3DGraphicLayer.js +1 -1
  326. package/views/3d/layers/graphics/graphicUtils.js +1 -1
  327. package/views/3d/layers/i3s/I3SIndex.js +1 -1
  328. package/views/3d/layers/i3s/I3SIntersectionHandler.js +1 -1
  329. package/views/3d/terrain/BlendLayersTechnique.js +1 -1
  330. package/views/3d/terrain/OverlayRenderer.js +1 -1
  331. package/views/3d/terrain/TerrainConst.js +1 -1
  332. package/views/3d/terrain/TerrainRenderer.js +1 -1
  333. package/views/3d/terrain/TerrainSurface.js +1 -1
  334. package/views/3d/terrain/TileCompositor.js +1 -1
  335. package/views/3d/terrain/TileRenderer.js +1 -1
  336. package/views/3d/terrain/terrainUtils.js +1 -1
  337. package/views/3d/webgl-engine/collections/Component/ComponentData.js +1 -1
  338. package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
  339. package/views/3d/webgl-engine/collections/Component/IntersectionGeometry.js +1 -1
  340. package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js +5 -5
  341. package/views/3d/webgl-engine/core/shaderLibrary/terrain/BackgroundGrid.glsl.js +32 -0
  342. package/views/3d/webgl-engine/core/shaderLibrary/terrain/TerrainTexture.glsl.js +9 -32
  343. package/views/3d/webgl-engine/core/shaderLibrary/util/BlendLayers.glsl.js +1 -1
  344. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  345. package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
  346. package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
  347. package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderTechniqueConfiguration.js +1 -1
  348. package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
  349. package/views/3d/webgl-engine/lib/verticalOffsetUtils.js +1 -1
  350. package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
  351. package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +37 -31
  352. package/views/draw/DrawOperation.js +1 -1
  353. package/views/interactive/SegmentLabels.js +1 -1
  354. package/views/interactive/snapping/FeatureSnappingEngine.js +1 -1
  355. package/views/interactive/snapping/SceneSnappingEngine.js +5 -0
  356. package/views/interactive/snapping/SnappingManager.js +1 -1
  357. package/views/interactive/snapping/snappingFactory.js +5 -0
  358. package/views/interactive/tooltip/DrawTooltipInfos.js +5 -0
  359. package/views/interactive/tooltip/ExtentTooltipInfos.js +5 -0
  360. package/views/interactive/tooltip/Tooltip.js +1 -1
  361. package/views/interactive/tooltip/TransformTooltipInfos.js +5 -0
  362. package/views/interactive/tooltip/content/TooltipContent.js +1 -1
  363. package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
  364. package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
  365. package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
  366. package/views/interactive/tooltip/content/TooltipContentExtentMoveXY.js +5 -0
  367. package/views/interactive/tooltip/content/TooltipContentExtentMoveZ.js +5 -0
  368. package/views/interactive/tooltip/content/TooltipContentExtentRotate.js +5 -0
  369. package/views/interactive/tooltip/content/TooltipContentExtentScale.js +5 -0
  370. package/views/interactive/tooltip/content/TooltipContentTransformAbsolute.js +5 -0
  371. package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +5 -0
  372. package/views/interactive/tooltip/content/TooltipContentTransformScale.js +5 -0
  373. package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
  374. package/views/interactive/tooltip/content/tooltipContentFactory.js +1 -1
  375. package/views/interactive/tooltip/support/ValueByValue.js +5 -0
  376. package/views/interactive/tooltip/support/measurements.js +1 -1
  377. package/views/overlay/TextOverlayItem.js +1 -1
  378. package/views/support/lengthMeasurementUtils.js +1 -1
  379. package/views/ui/UI.js +1 -1
  380. package/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.js +1 -1
  381. package/widgets/BasemapLayerList.js +1 -1
  382. package/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.js +1 -1
  383. package/widgets/Editor/workflowUtils.js +1 -1
  384. package/widgets/Editor.js +1 -1
  385. package/widgets/ElevationProfile/support/chartUtils.js +1 -1
  386. package/widgets/Feature/FeatureMedia.js +1 -1
  387. package/widgets/LayerList.js +1 -1
  388. package/widgets/Legend/support/sizeRampUtils.js +1 -1
  389. package/widgets/Popup/PopupViewModel.js +1 -1
  390. package/widgets/Popup/actionUtils.js +1 -1
  391. package/widgets/Sketch/SketchViewModel.js +1 -1
  392. package/widgets/TimeSlider.js +1 -1
  393. package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
  394. package/widgets/UtilityNetworkTrace.js +1 -1
  395. package/widgets/support/InteractiveAnalysisViewModel.js +1 -1
  396. package/widgets/support/widget.js +1 -1
  397. package/arcade/featureset/support/ArcadeExporter.js +0 -5
  398. package/assets/esri/core/workers/chunks/0564f1cfa3d17ff1aad3.js +0 -1
  399. package/assets/esri/core/workers/chunks/0806d5d706a864542bfb.js +0 -1
  400. package/assets/esri/core/workers/chunks/52478ee2d2a1354b6900.js +0 -1
  401. package/assets/esri/core/workers/chunks/5759af97f96f24c40105.js +0 -1
  402. package/assets/esri/core/workers/chunks/7bc828fbdd54c0b28aac.js +0 -1
  403. package/assets/esri/core/workers/chunks/875f26ee040f3d75c0db.js +0 -1
  404. package/assets/esri/core/workers/chunks/88384e7cafbfd2348598.js +0 -1
  405. package/assets/esri/core/workers/chunks/89acd5f888d6b8df4aad.js +0 -1
  406. package/assets/esri/core/workers/chunks/9d7533aaeac3b8d145c4.js +0 -1
  407. package/assets/esri/core/workers/chunks/a3bb600bfcb0282622f1.js +0 -1
  408. package/assets/esri/core/workers/chunks/b50ae3dc7e43ff452568.js +0 -1
  409. package/assets/esri/core/workers/chunks/b5b7bcbc19b3430903ee.js +0 -1
  410. package/assets/esri/core/workers/chunks/b758f3c419edc2306784.js +0 -1
  411. package/assets/esri/core/workers/chunks/cf47b605c31063e88357.js +0 -1
  412. package/assets/esri/core/workers/chunks/cfbb332d144e65a4a55d.js +0 -1
  413. package/assets/esri/core/workers/chunks/db937849b2c1af87b481.js +0 -1
  414. package/assets/esri/core/workers/chunks/dc3ed59f450283d97a19.js +0 -1
  415. package/assets/esri/core/workers/chunks/dcd0653191cd4a1ccaae.js +0 -2
  416. package/assets/esri/core/workers/chunks/dfb6a28039e5d5ce6fd4.js +0 -1
  417. package/assets/esri/core/workers/chunks/e4fdd1eaf987977d0a51.js +0 -1
  418. package/assets/esri/core/workers/chunks/f7e0bb11ba3677069c94.js +0 -1
  419. package/assets/esri/core/workers/chunks/f7f3dde4c8f9c687cc1e.js +0 -1
  420. package/assets/esri/core/workers/chunks/fc6beaf9466ea3898549.js +0 -1
  421. package/views/interactive/tooltip/DrawPointTooltipInfo.js +0 -5
  422. package/views/interactive/tooltip/DrawPolygonTooltipInfo.js +0 -5
  423. package/views/interactive/tooltip/DrawPolylineTooltipInfo.js +0 -5
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../core/Error.js";import t from"../../../../core/has.js";import{clone as r}from"../../../../core/lang.js";import i from"../../../../core/Logger.js";import{isSome as n,unwrap as l,isNone as s,unwrapOr as o}from"../../../../core/maybe.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{WGLSymbologyType as u}from"../../engine/webgl/enums.js";import{getVVType as f}from"../../engine/webgl/Utils.js";import{getTechniqueFromRenderer as d}from"../../engine/webgl/techniques/utils.js";import{getVVFlags as p}from"../../engine/webgl/util/vvFlagUtils.js";import{createSymbolSchema as c}from"./createSymbolSchema.js";export{createSymbolSchema}from"./createSymbolSchema.js";import{getPtMaxVVSize as y}from"./support/pixelBuffering.js";import{getSupportedHeatmapRenderer as m,simplifyVisualVariables as g}from"./support/rendererUtils.js";import{convertAggregateFieldFromPublic as b,createClusterRenderer as x}from"../support/clusterUtils.js";import{toJSONGeometryType as h}from"../support/util.js";const v=i.getLogger("esri.views.2d.layers.features.schemaUtils"),w="ValidationError",T={esriGeometryPoint:["above-right","above-center","above-left","center-center","center-left","center-right","below-center","below-left","below-right"],esriGeometryPolygon:["always-horizontal"],esriGeometryPolyline:["center-along"],esriGeometryMultipoint:null};function E(e){return e}function I(e){let t=0,r=0,i=u.DEFAULT;if(n(e)){if(r=y(e),"visualVariables"in e&&(t=p(e.visualVariables||[]),"dot-density"===e.type&&(i=u.DOT_DENSITY)),"heatmap"===e.type&&(i=u.HEATMAP),"dictionary"===e.type)return{maxVVSize:r,vvFlags:t,symbologyType:u.DEFAULT};if(i!==u.DOT_DENSITY&&i!==u.HEATMAP){const t=e.getSymbols();"backgroundFillSymbol"in e&&e.backgroundFillSymbol&&t.push(e.backgroundFillSymbol);let r=!0,n=!0;for(const e of t)if("cim"===e.type&&(n=!1),"simple-fill"===e.type||"picture-fill"===e.type){const t=e.outline,i=t&&"none"!==t.style&&"solid"!==t.style,l="simple-fill"===e.type&&"none"!==e.style&&"solid"!==e.style,s="picture-fill"===e.type||l||i;i&&(r=!1),s&&(n=!1)}r?i=n?u.OUTLINE_FILL_SIMPLE:u.OUTLINE_FILL:n&&(i=u.SIMPLE)}}return{vvFlags:t,maxVVSize:r,symbologyType:i}}function S(t,r){const i=t.labelPlacement,n=T[r];if(!t.symbol)return v.warn("No ILabelClass symbol specified."),!0;if(!n)return v.error(new e("mapview-labeling:unsupported-geometry-type",`Unable to create labels for Feature Layer, ${r} is not supported`)),!0;if(!n.includes(i)){const e=n[0];i&&v.warn(`Found invalid label placement type ${i} for ${r}. Defaulting to ${e}`),t.labelPlacement=e}return!1}function F(e,t){const i=r(e);return i.some((e=>S(e,t)))?[]:i}function V(e){return t("esri-2d-update-debug")&&console.debug("Created new schema",z(e,!0)),z(e)}function z(e,t=!1){try{const r=k(e,t),i=C(e),n={};r.map((t=>N(n,e,t)));return{source:{definitionExpression:e.definitionExpression,fields:e.fields.map((e=>e.toJSON())),gdbVersion:e.gdbVersion,historicMoment:e.historicMoment?.getTime(),outFields:e.availableFields,pixelBuffer:e.pixelBuffer,spatialReference:e.spatialReference.toJSON(),timeExtent:e.timeExtent?.toJSON(),customParameters:e.customParameters},attributes:{fields:{},indexCount:0},processors:r,tileRenderer:i,targets:n}}catch(r){if(r.fieldName===w)return v.error(r),null;throw r}}function N(t,r,i){switch(i.target){case"feature":return void O(t,L(r),i);case"aggregate":{if(!("featureReduction"in r))return;const n=r.featureReduction;switch(n.type){case"selection":throw new e(w,"Mapview does not support `selection` reduction type",n);case"binning":return O(t,L(r),i),void j(t,n,i);case"cluster":return O(t,L(r),i),void R(t,n,i)}}}}function M(e,t){for(const r in t){const i=t[r];if(i.target!==e.name)continue;const n=e.attributes[r];n?(n.context.mesh=n.context.mesh||i.context.mesh,n.context.storage=n.context.storage||i.context.storage):e.attributes[r]=i}return e}function L(e){return[l(e.filter)?.toJSON()??null,l(l(e.featureEffect)?.filter)?.toJSON()??null]}function O(e,t,r){return e.feature||(e.feature={name:"feature",input:"source",filters:t,attributes:{}}),M(e.feature,r.attributes.fields),e}function j(e,t,r){return e.aggregate||(e.aggregate={name:"aggregate",type:"bin",filters:null,input:"feature",params:{fixedBinLevel:t.fixedBinLevel},attributes:{}}),M(e.aggregate,r.attributes.fields),e}function R(e,t,r){return e.aggregate||(e.aggregate={name:"aggregate",type:"cluster",input:"feature",filters:null,attributes:{},params:{clusterRadius:a(t.clusterRadius/2),clusterPixelBuffer:64*Math.ceil(a(t.clusterMaxSize)/64),fields:r.aggregateFields}}),M(e.aggregate,r.attributes.fields),e}function B(e,t){return t.field?P(e,{...t,type:"field",field:t.field}):t.valueExpression?P(e,{...t,type:"expression",valueExpression:t.valueExpression}):{field:null,fieldIndex:null}}function P(e,t){switch(t.type){case"expression":{const r=E(t.valueExpression);if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"label-expression":{const r=E(JSON.stringify(t.label));if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"field":{const r=t.field;return"aggregate"===t.target&&e.fields[r]||(e.fields[r]={...t,name:r}),{field:r}}case"statistic":return e.fields[t.name]={...t},{field:t.name}}}function k(e,t=!1){const r=new Array;let i=0;return r.push(A(e,i++,t)),r}function U(e,t,r,i,n,l=!1){const s=P(t,{type:"label-expression",target:i,context:{mesh:!0},resultType:"string",label:{labelExpression:r.labelExpression,labelExpressionInfo:r.labelExpressionInfo?{expression:r.labelExpressionInfo.expression}:null,symbol:!!r.symbol,where:r.where}}),{fieldIndex:o}=s,a=I(e);return{...c(r,a,l),fieldIndex:o,target:i,index:n}}function D(t,r,i){const n="featureReduction"in r&&r.featureReduction;if(!n)return{fields:[],labels:[],matcher:null,rendererOverride:null};const l="aggregate",s=[];let o=null;const a=h(r.geometryType);let u=[],f=null;if(n)switch(n.type){case"selection":throw new e(w,"Mapview does not support `selection` reduction type",n);case"cluster":if(f=x(s,r.renderer,n,null),n.symbol){const e=I(f);o={type:"simple",symbol:c(n.symbol,e,i),symbologyType:e.symbologyType}}u=n&&n.labelsVisible&&n.labelingInfo||[];break;case"binning":for(const e of n.fields)b(s,e);f=n.renderer,o=H(null,l,n.renderer,i),u=n&&n.labelsVisible&&n.labelingInfo||[]}$(t,s);return{labels:F(u,a),matcher:o,fields:s,rendererOverride:f}}function A(t,r,i=!1){const l={indexCount:0,fields:{}},s="featureReduction"in t&&t.featureReduction?"aggregate":"feature";if("sublayers"in t){const r={type:"subtype",subtypeField:t.subtypeField,renderers:{},symbologyType:u.DEFAULT},o={type:"subtype",mapping:{},target:"feature"},a={type:"subtype",classes:{}},f={type:"symbol",target:"feature",aggregateFields:[],attributes:l,storage:o,mesh:{matcher:r,aggregateMatcher:null,labels:a,sortKey:null}},d=new Set;let p=0;for(const{renderer:u,subtypeCode:c,labelingInfo:y,labelsVisible:m}of t.sublayers){const t=H(l,s,u,i),f=q(l,s,u),g=m&&y;if("visualVariables"in u&&u.visualVariables&&u.visualVariables.length)throw new e(w,"Visual variables are currently not supported for subtype layers");if("dictionary"===t.type)throw new e(w,"Dictionary renderer is not supported in subtype layers");if("subtype"===t.type)throw new e(w,"Nested subtype renderers is not supported");if(n(f)&&"subtype"===f.type)throw new e(w,"Nested subtype storage is not supported");if(n(f)&&n(f.attributeMapping))throw new e(w,"Non-visual-variable attributes are not supported in subtype layers");if("heatmap"===t.type)throw new e(w,"Heatmaps are not supported in subtype layers");if(d.has(c))throw new e(w,"Subtype codes for sublayers must be unique");d.add(c),r.renderers[c]=t,o.mapping[c]=f,g&&(a.classes[c]=g.map((e=>U(u,l,e,"feature",p++,i))))}return f}if("heatmap"===t.renderer.type&&"raster"===m()){const{blurRadius:e,fieldOffset:r,field:i}=t.renderer;return{type:"heatmap",aggregateFields:[],attributes:l,target:s,storage:null,mesh:{blurRadius:e,fieldOffset:r,field:B(l,{target:s,field:i,resultType:"numeric"}).field}}}const o=D(l,t,i),a=h(t.geometryType),f=o.rendererOverride??t.renderer,d=H(l,s,f,i),p=q(l,s,f),c=J(l,t.orderBy),y=F(t.labelsVisible&&t.labelingInfo||[],a);let g=0;const b=[...y.map((e=>U(f,l,e,"feature",g++,i))),...o.labels.map((e=>U(f,l,e,"aggregate",g++,i)))];return{type:"symbol",target:s,attributes:l,aggregateFields:o.fields,storage:p,mesh:{matcher:d,labels:{type:"simple",classes:b},aggregateMatcher:o.matcher,sortKey:c}}}function C(e){return"heatmap"===e.renderer?.type&&"raster"===m()?{type:"heatmap"}:{type:"symbol"}}function J(t,r){if(s(r)||!r.length)return null;r.length>1&&v.warn(`Layer rendering currently only supports ordering by 1 orderByInfo, but found ${r.length}. All but the first will be discarded`);const i=r[0],n="ascending"===i.order?"asc":"desc";if(i.field)return{field:i.field,order:n};if(i.valueExpression){return{fieldIndex:P(t,{type:"expression",target:"feature",valueExpression:i.valueExpression,resultType:"numeric"}).fieldIndex,order:n}}return v.error(new e(w,"Expected to find a field or valueExpression for OrderByInfo",i)),null}function $(e,t){const r={mesh:!0,storage:!0};for(const i of t){const{name:t,outStatistic:n}=i,{statisticType:l,onStatisticField:s}=n;let o=null,a=null,u=null;const f="numeric",d="feature";if("onStatisticValueExpression"in n){a=P(e,{type:"expression",target:d,valueExpression:n.onStatisticValueExpression,resultType:f}).fieldIndex}else if("onStatisticNormalizationField"in n){o=P(e,{type:"field",target:d,field:s,resultType:f}).field,u=n.onStatisticNormalizationField}else{o=P(e,{type:"field",target:d,field:s,resultType:f}).field}P(e,{type:"statistic",target:"aggregate",name:t,context:r,inField:o,inNormalizationField:u,inFieldIndex:a,statisticType:l})}}function q(e,t,r){let i;switch(r.type){case"simple":case"class-breaks":case"unique-value":case"dictionary":i={visualVariables:!0,attributes:null};break;default:i=d(r).getStorageSpec(r)}return _(e,t,i,r)}function _(e,t,r,i){if(s(r))return null;const{visualVariables:l,attributes:o}=r;let a=null;l&&"visualVariables"in i&&(a=G(e,t,i.visualVariables));const u=n(a)?4:0;let f=null;return n(o)&&(f=o.map(((r,i)=>{const{field:n,fieldIndex:l}=B(e,{valueExpression:r.valueExpression,field:r.field,resultType:"numeric",target:t});return{binding:i+u,field:n,fieldIndex:l}}))),{type:"simple",target:t,attributeMapping:f,vvMapping:a}}function G(e,t,r){if(!r||!r.length)return[];const i={storage:!0},n="numeric";return g(r).map((r=>{const l=f(r.type),{field:s,fieldIndex:o}=B(e,{target:t,valueExpression:r.valueExpression,field:r.field,context:i,resultType:n});switch(r.type){case"size":return"$view.scale"===r.valueExpression?null:{type:"size",binding:l,field:s,fieldIndex:o,normalizationField:B(e,{target:t,field:r.normalizationField,context:i,resultType:n}).field,valueRepresentation:r.valueRepresentation??null};case"color":return{type:"color",binding:l,field:s,fieldIndex:o,normalizationField:B(e,{target:t,field:r.normalizationField,context:i,resultType:n}).field};case"opacity":return{type:"opacity",binding:l,field:s,fieldIndex:o,normalizationField:B(e,{target:t,field:r.normalizationField,context:i,resultType:n}).field};case"rotation":return{type:"rotation",binding:l,field:s,fieldIndex:o}}})).filter((e=>e))}function H(e,t,r,i=!1){const n=o(e,{indexCount:0,fields:{}});switch(r.type){case"simple":case"dot-density":return K(n,r,i);case"class-breaks":return Y(n,t,r,i);case"unique-value":return Q(n,t,r,i);case"dictionary":return W(n,r,i);case"heatmap":return X(n,r,i)}}function K(e,t,r=!1){const i=t.getSymbols(),n=i.length?i[0]:null,l=I(t);return{type:"simple",symbol:c(n,l,r),symbologyType:l.symbologyType}}function Y(e,t,r,i=!1){const n={mesh:!0,use:"renderer.field"},l=r.backgroundFillSymbol,{field:s,fieldIndex:o}=B(e,{target:t,field:r.field,valueExpression:r.valueExpression,resultType:"numeric",context:n}),a=r.normalizationType,u="log"===a?"esriNormalizeByLog":"percent-of-total"===a?"esriNormalizeByPercentOfTotal":"field"===a?"esriNormalizeByField":null,f=I(r),d=r.classBreakInfos.map((e=>({symbol:c(e.symbol,f,i),min:e.minValue,max:e.maxValue}))).sort(((e,t)=>e.min-t.min));return{type:"interval",attributes:e.fields,field:s,fieldIndex:o,backgroundFillSymbol:c(l,f,i),defaultSymbol:c(r.defaultSymbol,f,i),intervals:d,normalizationField:r.normalizationField,normalizationTotal:r.normalizationTotal,normalizationType:u,isMaxInclusive:r.isMaxInclusive,symbologyType:f.symbologyType}}function Q(t,r,i,n=!1){const l=[],s=i.backgroundFillSymbol,o={target:r,context:{mesh:!0},resultType:"string"};if(i.field&&"string"!=typeof i.field)throw new e(w,"Expected renderer.field to be a string",i);const{field:a,fieldIndex:u}=B(t,{...o,field:i.field,valueExpression:i.valueExpression}),f=I(i);for(const e of i.uniqueValueInfos)l.push({value:""+e.value,symbol:c(e.symbol,f,n)});return{type:"map",attributes:t.fields,field:a,fieldIndex:u,field2:B(t,{...o,field:i.field2}).field,field3:B(t,{...o,field:i.field3}).field,fieldDelimiter:i.fieldDelimiter,backgroundFillSymbol:c(s,f),defaultSymbol:c(i.defaultSymbol,f),map:l,symbologyType:f.symbologyType}}function W(e,t,r=!1){const i=I(t);return{type:"dictionary",config:t.config,fieldMap:t.fieldMap,scaleExpression:t.scaleExpression,url:t.url,symbolOptions:i,symbologyType:i.symbologyType}}function X(e,t,r=!1){const i=t.getSymbols(),n=i.length?i[0]:null,l=I(t);return{type:"heatmap",symbol:c(n,l,r),symbologyType:l.symbologyType}}export{$ as addAggregateFields,H as createMatcherSchema,B as createRendererAttributeSchema,V as createSchema,I as createSymbolSchemaOptions};
5
+ import e from"../../../../core/Error.js";import t from"../../../../core/has.js";import{clone as r}from"../../../../core/lang.js";import i from"../../../../core/Logger.js";import{isSome as l,unwrap as n,isNone as s,unwrapOr as o}from"../../../../core/maybe.js";import{pt2px as a}from"../../../../core/screenUtils.js";import{WGLSymbologyType as u}from"../../engine/webgl/enums.js";import{getVVType as f}from"../../engine/webgl/Utils.js";import{getTechniqueFromRenderer as d}from"../../engine/webgl/techniques/utils.js";import{getVVFlags as p}from"../../engine/webgl/util/vvFlagUtils.js";import{createSymbolSchema as c}from"./createSymbolSchema.js";export{createSymbolSchema}from"./createSymbolSchema.js";import{getPtMaxVVSize as y}from"./support/pixelBuffering.js";import{getSupportedHeatmapRenderer as m,simplifyVisualVariables as g}from"./support/rendererUtils.js";import{convertAggregateFieldFromPublic as b,createClusterRenderer as x}from"../support/clusterUtils.js";import{toJSONGeometryType as h}from"../support/util.js";const v=i.getLogger("esri.views.2d.layers.features.schemaUtils"),w="ValidationError",T={esriGeometryPoint:["above-right","above-center","above-left","center-center","center-left","center-right","below-center","below-left","below-right"],esriGeometryPolygon:["always-horizontal"],esriGeometryPolyline:["center-along"],esriGeometryMultipoint:null};function E(e){return e}function I(e){let t=0,r=0,i=u.DEFAULT;if(l(e)){if(r=y(e),"visualVariables"in e&&(t=p(e.visualVariables||[]),"dot-density"===e.type&&(i=u.DOT_DENSITY)),"heatmap"===e.type&&(i=u.HEATMAP),"dictionary"===e.type)return{maxVVSize:r,vvFlags:t,symbologyType:u.DEFAULT};if("pie-chart"===e.type)return{maxVVSize:r,vvFlags:t,symbologyType:u.PIE_CHART};if(i!==u.DOT_DENSITY&&i!==u.HEATMAP){const t=e.getSymbols();"backgroundFillSymbol"in e&&e.backgroundFillSymbol&&t.push(e.backgroundFillSymbol);let r=!0,l=!0;for(const e of t)if("cim"===e.type&&(l=!1),"simple-fill"===e.type||"picture-fill"===e.type){const t=e.outline,i=t&&"none"!==t.style&&"solid"!==t.style,n="simple-fill"===e.type&&"none"!==e.style&&"solid"!==e.style,s="picture-fill"===e.type||n||i;i&&(r=!1),s&&(l=!1)}r?i=l?u.OUTLINE_FILL_SIMPLE:u.OUTLINE_FILL:l&&(i=u.SIMPLE)}}return{vvFlags:t,maxVVSize:r,symbologyType:i}}function S(t,r){const i=t.labelPlacement,l=T[r];if(!t.symbol)return v.warn("No ILabelClass symbol specified."),!0;if(!l)return v.error(new e("mapview-labeling:unsupported-geometry-type",`Unable to create labels for Feature Layer, ${r} is not supported`)),!0;if(!l.includes(i)){const e=l[0];i&&v.warn(`Found invalid label placement type ${i} for ${r}. Defaulting to ${e}`),t.labelPlacement=e}return!1}function F(e,t){const i=r(e);return i.some((e=>S(e,t)))?[]:i}function V(e){return t("esri-2d-update-debug")&&console.debug("Created new schema",z(e,!0)),z(e)}function z(e,t=!1){try{const r=B(e,t),i=C(e),l={};r.map((t=>N(l,e,t)));return{source:{definitionExpression:e.definitionExpression,fields:e.fields.map((e=>e.toJSON())),gdbVersion:e.gdbVersion,historicMoment:e.historicMoment?.getTime(),outFields:e.availableFields,pixelBuffer:e.pixelBuffer,spatialReference:e.spatialReference.toJSON(),timeExtent:e.timeExtent?.toJSON(),customParameters:e.customParameters},attributes:{fields:{},indexCount:0},processors:r,tileRenderer:i,targets:l}}catch(r){if(r.fieldName===w)return v.error(r),null;throw r}}function N(t,r,i){switch(i.target){case"feature":return void O(t,L(r),i);case"aggregate":{if(!("featureReduction"in r))return;const l=r.featureReduction;switch(l.type){case"selection":throw new e(w,"Mapview does not support `selection` reduction type",l);case"binning":return O(t,L(r),i),void j(t,l,i);case"cluster":return O(t,L(r),i),void R(t,l,i)}}}}function M(e,t){for(const r in t){const i=t[r];if(i.target!==e.name)continue;const l=e.attributes[r];l?(l.context.mesh=l.context.mesh||i.context.mesh,l.context.storage=l.context.storage||i.context.storage):e.attributes[r]=i}return e}function L(e){return[n(e.filter)?.toJSON()??null,n(n(e.featureEffect)?.filter)?.toJSON()??null]}function O(e,t,r){return e.feature||(e.feature={name:"feature",input:"source",filters:t,attributes:{}}),M(e.feature,r.attributes.fields),e}function j(e,t,r){return e.aggregate||(e.aggregate={name:"aggregate",type:"bin",filters:null,input:"feature",params:{fixedBinLevel:t.fixedBinLevel},attributes:{}}),M(e.aggregate,r.attributes.fields),e}function R(e,t,r){return e.aggregate||(e.aggregate={name:"aggregate",type:"cluster",input:"feature",filters:null,attributes:{},params:{clusterRadius:a(t.clusterRadius/2),clusterPixelBuffer:64*Math.ceil(a(t.clusterMaxSize)/64),fields:r.aggregateFields}}),M(e.aggregate,r.attributes.fields),e}function P(e,t){return t.field?k(e,{...t,type:"field",field:t.field}):t.valueExpression?k(e,{...t,type:"expression",valueExpression:t.valueExpression}):{field:null,fieldIndex:null}}function k(e,t){switch(t.type){case"expression":{const r=E(t.valueExpression);if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"label-expression":{const r=E(JSON.stringify(t.label));if(!e.fields[r]){const i=e.indexCount++;e.fields[r]={...t,name:r,fieldIndex:i}}return{fieldIndex:e.fields[r].fieldIndex}}case"field":{const r=t.field;return"aggregate"===t.target&&e.fields[r]||(e.fields[r]={...t,name:r}),{field:r}}case"statistic":return e.fields[t.name]={...t},{field:t.name}}}function B(e,t=!1){const r=new Array;let i=0;return r.push(A(e,i++,t)),r}function U(e,t,r,i,l,n=!1){const s=k(t,{type:"label-expression",target:i,context:{mesh:!0},resultType:"string",label:{labelExpression:r.labelExpression,labelExpressionInfo:r.labelExpressionInfo?{expression:r.labelExpressionInfo.expression}:null,symbol:!!r.symbol,where:r.where}}),{fieldIndex:o}=s,a=I(e);return{...c(r,a,n),fieldIndex:o,target:i,index:l}}function D(t,r,i){const l="featureReduction"in r&&r.featureReduction;if(!l)return{fields:[],labels:[],matcher:null,rendererOverride:null};const n="aggregate",s=[];let o=null;const a=h(r.geometryType);let u=[],f=null;if(l)switch(l.type){case"selection":throw new e(w,"Mapview does not support `selection` reduction type",l);case"cluster":if(f=x(s,r.renderer,l,null),l.symbol){const e=I(f);o={type:"simple",symbol:c(l.symbol,e,i),symbologyType:e.symbologyType}}u=l&&l.labelsVisible&&l.labelingInfo||[];break;case"binning":for(const e of l.fields)b(s,e);f=l.renderer,o=H(null,n,l.renderer,i),u=l&&l.labelsVisible&&l.labelingInfo||[]}$(t,s);return{labels:F(u,a),matcher:o,fields:s,rendererOverride:f}}function A(t,r,i=!1){const n={indexCount:0,fields:{}},s="featureReduction"in t&&t.featureReduction?"aggregate":"feature";if("sublayers"in t){const r={type:"subtype",subtypeField:t.subtypeField,renderers:{},symbologyType:u.DEFAULT},o={type:"subtype",mapping:{},target:"feature"},a={type:"subtype",classes:{}},f={type:"symbol",target:"feature",aggregateFields:[],attributes:n,storage:o,mesh:{matcher:r,aggregateMatcher:null,labels:a,sortKey:null}},d=new Set;let p=0;for(const{renderer:u,subtypeCode:c,labelingInfo:y,labelsVisible:m}of t.sublayers){const t=H(n,s,u,i),f=_(n,s,u),g=m&&y;if("visualVariables"in u&&u.visualVariables&&u.visualVariables.length)throw new e(w,"Visual variables are currently not supported for subtype layers");if("dictionary"===t.type)throw new e(w,"Dictionary renderer is not supported in subtype layers");if("subtype"===t.type)throw new e(w,"Nested subtype renderers is not supported");if(l(f)&&"subtype"===f.type)throw new e(w,"Nested subtype storage is not supported");if(l(f)&&l(f.attributeMapping))throw new e(w,"Non-visual-variable attributes are not supported in subtype layers");if("heatmap"===t.type)throw new e(w,"Heatmaps are not supported in subtype layers");if("pie-chart"===t.type)throw new e(w,"Pie-charts are not supported in subtype layers");if(d.has(c))throw new e(w,"Subtype codes for sublayers must be unique");d.add(c),r.renderers[c]=t,o.mapping[c]=f,g&&(a.classes[c]=g.map((e=>U(u,n,e,"feature",p++,i))))}return f}if("heatmap"===t.renderer.type&&"raster"===m()){const{blurRadius:e,fieldOffset:r,field:i}=t.renderer;return{type:"heatmap",aggregateFields:[],attributes:n,target:s,storage:null,mesh:{blurRadius:e,fieldOffset:r,field:P(n,{target:s,field:i,resultType:"numeric"}).field}}}const o=D(n,t,i),a=h(t.geometryType),f=o.rendererOverride??t.renderer,d=H(n,s,f,i),p=_(n,s,f),c=J(n,t.orderBy),y=F(t.labelsVisible&&t.labelingInfo||[],a);let g=0;const b=[...y.map((e=>U(f,n,e,"feature",g++,i))),...o.labels.map((e=>U(f,n,e,"aggregate",g++,i)))];return{type:"symbol",target:s,attributes:n,aggregateFields:o.fields,storage:p,mesh:{matcher:d,labels:{type:"simple",classes:b},aggregateMatcher:o.matcher,sortKey:c}}}function C(e){return"heatmap"===e.renderer?.type&&"raster"===m()?{type:"heatmap"}:{type:"symbol"}}function J(t,r){if(s(r)||!r.length)return null;r.length>1&&v.warn(`Layer rendering currently only supports ordering by 1 orderByInfo, but found ${r.length}. All but the first will be discarded`);const i=r[0],l="ascending"===i.order?"asc":"desc";if(i.field)return{field:i.field,order:l};if(i.valueExpression){return{fieldIndex:k(t,{type:"expression",target:"feature",valueExpression:i.valueExpression,resultType:"numeric"}).fieldIndex,order:l}}return v.error(new e(w,"Expected to find a field or valueExpression for OrderByInfo",i)),null}function $(e,t){const r={mesh:!0,storage:!0};for(const i of t){const{name:t,outStatistic:l}=i,{statisticType:n,onStatisticField:s}=l;let o=null,a=null,u=null;const f="numeric",d="feature";if("onStatisticValueExpression"in l){a=k(e,{type:"expression",target:d,valueExpression:l.onStatisticValueExpression,resultType:f}).fieldIndex}else if("onStatisticNormalizationField"in l){o=k(e,{type:"field",target:d,field:s,resultType:f}).field,u=l.onStatisticNormalizationField}else{o=k(e,{type:"field",target:d,field:s,resultType:f}).field}k(e,{type:"statistic",target:"aggregate",name:t,context:r,inField:o,inNormalizationField:u,inFieldIndex:a,statisticType:n})}}function _(e,t,r){let i;switch(r.type){case"simple":case"class-breaks":case"unique-value":case"dictionary":i={visualVariables:!0,attributes:null};break;default:i=d(r).getStorageSpec(r)}return q(e,t,i,r)}function q(e,t,r,i){if(s(r))return null;const{visualVariables:n,attributes:o}=r;let a=null;n&&"visualVariables"in i&&(a=G(e,t,i.visualVariables));const u=l(a)?4:0;let f=null;return l(o)&&(f=o.map(((r,i)=>{const{field:l,fieldIndex:n}=P(e,{valueExpression:r.valueExpression,field:r.field,resultType:"numeric",target:t});return{binding:i+u,field:l,fieldIndex:n}}))),{type:"simple",target:t,attributeMapping:f,vvMapping:a}}function G(e,t,r){if(!r||!r.length)return[];const i={storage:!0},l="numeric";return g(r).map((r=>{const n=f(r.type),{field:s,fieldIndex:o}=P(e,{target:t,valueExpression:r.valueExpression,field:r.field,context:i,resultType:l});switch(r.type){case"size":return"$view.scale"===r.valueExpression?null:{type:"size",binding:n,field:s,fieldIndex:o,normalizationField:P(e,{target:t,field:r.normalizationField,context:i,resultType:l}).field,valueRepresentation:r.valueRepresentation??null};case"color":return{type:"color",binding:n,field:s,fieldIndex:o,normalizationField:P(e,{target:t,field:r.normalizationField,context:i,resultType:l}).field};case"opacity":return{type:"opacity",binding:n,field:s,fieldIndex:o,normalizationField:P(e,{target:t,field:r.normalizationField,context:i,resultType:l}).field};case"rotation":return{type:"rotation",binding:n,field:s,fieldIndex:o}}})).filter((e=>e))}function H(e,t,r,i=!1){const l=o(e,{indexCount:0,fields:{}});switch(r.type){case"simple":case"dot-density":return K(l,r,i);case"class-breaks":return Q(l,t,r,i);case"unique-value":return W(l,t,r,i);case"dictionary":return X(l,r,i);case"heatmap":return Z(l,r,i);case"pie-chart":return Y(l,r,i)}}function K(e,t,r=!1){const i=t.getSymbols(),l=i.length?i[0]:null,n=I(t);return{type:"simple",symbol:c(l,n,r),symbologyType:n.symbologyType}}function Y(e,t,r=!1){const i=t.getSymbols(),l=i[0],n=i.length>1?i[1]:null,s=I(t);return{type:"pie-chart",markerSymbol:c(l,s,r),fillSymbol:c(n,s,r),symbologyType:s.symbologyType}}function Q(e,t,r,i=!1){const l={mesh:!0,use:"renderer.field"},n=r.backgroundFillSymbol,{field:s,fieldIndex:o}=P(e,{target:t,field:r.field,valueExpression:r.valueExpression,resultType:"numeric",context:l}),a=r.normalizationType,u="log"===a?"esriNormalizeByLog":"percent-of-total"===a?"esriNormalizeByPercentOfTotal":"field"===a?"esriNormalizeByField":null,f=I(r),d=r.classBreakInfos.map((e=>({symbol:c(e.symbol,f,i),min:e.minValue,max:e.maxValue}))).sort(((e,t)=>e.min-t.min));return{type:"interval",attributes:e.fields,field:s,fieldIndex:o,backgroundFillSymbol:c(n,f,i),defaultSymbol:c(r.defaultSymbol,f,i),intervals:d,normalizationField:r.normalizationField,normalizationTotal:r.normalizationTotal,normalizationType:u,isMaxInclusive:r.isMaxInclusive,symbologyType:f.symbologyType}}function W(t,r,i,l=!1){const n=[],s=i.backgroundFillSymbol,o={target:r,context:{mesh:!0},resultType:"string"};if(i.field&&"string"!=typeof i.field)throw new e(w,"Expected renderer.field to be a string",i);const{field:a,fieldIndex:u}=P(t,{...o,field:i.field,valueExpression:i.valueExpression}),f=I(i);for(const e of i.uniqueValueInfos)n.push({value:""+e.value,symbol:c(e.symbol,f,l)});return{type:"map",attributes:t.fields,field:a,fieldIndex:u,field2:P(t,{...o,field:i.field2}).field,field3:P(t,{...o,field:i.field3}).field,fieldDelimiter:i.fieldDelimiter,backgroundFillSymbol:c(s,f),defaultSymbol:c(i.defaultSymbol,f),map:n,symbologyType:f.symbologyType}}function X(e,t,r=!1){const i=I(t);return{type:"dictionary",config:t.config,fieldMap:t.fieldMap,scaleExpression:t.scaleExpression,url:t.url,symbolOptions:i,symbologyType:i.symbologyType}}function Z(e,t,r=!1){const i=t.getSymbols(),l=i.length?i[0]:null,n=I(t);return{type:"heatmap",symbol:c(l,n,r),symbologyType:n.symbologyType}}export{$ as addAggregateFields,H as createMatcherSchema,P as createRendererAttributeSchema,V as createSchema,I as createSymbolSchemaOptions};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import t from"../../../../../core/Error.js";import e from"../../../../../core/has.js";import i from"../../../../../core/Logger.js";import{clamp as s}from"../../../../../core/mathUtils.js";import{isNone as r,isSome as a,mapMany as o,forEachSome as n,applySome as l,unwrap as h}from"../../../../../core/maybe.js";import{createResolver as c,isAbortError as u}from"../../../../../core/promiseUtils.js";import{diff as d}from"../../../../../core/accessorSupport/diffUtils.js";import p from"../../../../../layers/support/FieldsIndex.js";import{MAX_FILTERS as _,HIGHLIGHT_FLAG as g,ATTRIBUTE_DATA_VV as f,NAN_MAGIC_NUMBER as m,ATTRIBUTE_DATA_ANIMATION as y,ATTRIBUTE_DATA_GPGPU as b}from"../../../engine/webgl/definitions.js";import{DISPLAY_ID_TYPE_AGGREGATE as x,DISPLAY_ID_TYPE_FEATURE as T,getDisplayIdTexel as z,getDisplayIdType as S,getDisplayIdFilterMask as E}from"../../../engine/webgl/DisplayId.js";import{getPixelArrayCtor as w}from"../../../engine/webgl/Utils.js";import{createDebugLogger as A,DEBUG_ATTR_UPDATES as D}from"../../../engine/webgl/util/debug.js";import{getVisualVariableSizeValueRepresentationRatio as k}from"../tileRenderers/support/visualVariablesUtils.js";import{PixelType as U}from"../../../../webgl/enums.js";const F=i.getLogger("esri.views.layers.2d.features.support.AttributeStore"),M=A(D,F),B={sharedArrayBuffer:e("esri-shared-array-buffer"),atomics:e("esri-atomics")};function v(t,e){return i=>e(t(i))}class C{constructor(t,e,i,s){this.size=0,this.texelSize=4;const{pixelType:r,layout:a,textureOnly:o}=s;this.textureOnly=o||!1,this.pixelType=r,this._ctype=e,this.layout=a,this._resetRange(),this._shared=t,this.size=i,o||(this.data=this._initData(r,i,t,e))}get buffer(){return l(this.data,(t=>t.buffer))}unsetComponentAllTexels(t,e){const i=h(this.data);for(let s=0;s<this.size*this.size;s++)i[s*this.texelSize+t]&=~e;this.dirtyStart=0,this.dirtyEnd=this.size*this.size-1}setComponentAllTexels(t,e){const i=h(this.data);for(let s=0;s<this.size*this.size;s++)i[s*this.texelSize+t]|=255&e;this.dirtyStart=0,this.dirtyEnd=this.size*this.size-1}setComponent(t,e,i){const s=h(this.data);for(const r of i)s[r*this.texelSize+t]|=e,this.dirtyStart=Math.min(this.dirtyStart,r),this.dirtyEnd=Math.max(this.dirtyEnd,r)}setComponentTexel(t,e,i){h(this.data)[i*this.texelSize+t]|=e,this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,i)}unsetComponentTexel(t,e,i){h(this.data)[i*this.texelSize+t]&=~e,this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,i)}getData(t,e){const i=z(t);return h(this.data)[i*this.texelSize+e]}setData(t,e,i){const s=z(t),r=1<<e;0!=(this.layout&r)?(this.data[s*this.texelSize+e]=i,this.dirtyStart=Math.min(this.dirtyStart,s),this.dirtyEnd=Math.max(this.dirtyEnd,s)):F.error("mapview-attributes-store","Tried to set a value for a texel's readonly component")}lock(){this.pixelType===U.UNSIGNED_BYTE&&this._shared&&B.atomics&&"local"!==this._ctype&&Atomics.store(this.data,0,1)}unlock(){this.pixelType===U.UNSIGNED_BYTE&&this._shared&&B.atomics&&"local"!==this._ctype&&Atomics.store(this.data,0,0)}expand(t){if(this.size=t,!this.textureOnly){const e=this._initData(this.pixelType,t,this._shared,this._ctype),i=h(this.data);e.set(i),this.data=e}}toMessage(){const t=this.dirtyStart,e=this.dirtyEnd,i=this.texelSize;if(t>e)return null;this._resetRange();const s=!(this._shared||"local"===this._ctype),r=this.pixelType,a=this.layout,o=h(this.data);return{start:t,end:e,data:s&&o.slice(t*i,(e+1)*i)||null,pixelType:r,layout:a}}_initData(t,e,i,s){const r=i&&"local"!==s?SharedArrayBuffer:ArrayBuffer,a=w(t),o=new a(new r(e*e*4*a.BYTES_PER_ELEMENT));for(let n=0;n<o.length;n+=4)o[n+1]=255;return o}_resetRange(){this.dirtyStart=2147483647,this.dirtyEnd=0}}class R{constructor(t,e){this._client=t,this.config=e,this._attributeComputeMap=new Map,this._blocks=new Array,this._filters=new Array(_),this._targetType=0,this._abortController=new AbortController,this._hasScaleExpr=!1,this._size=32,this._idsToHighlight=new Set;const i=e.supportsTextureFloat?U.FLOAT:U.UNSIGNED_BYTE;M(`Creating AttributeStore ${B.sharedArrayBuffer?"with":"without"} shared memory`),this._blockDescriptors=[{pixelType:U.UNSIGNED_BYTE,layout:1},{pixelType:U.UNSIGNED_BYTE,layout:15,textureOnly:!0},{pixelType:U.UNSIGNED_BYTE,layout:15,textureOnly:!0},{pixelType:i,layout:15},{pixelType:i,layout:15}],this._blocks=this._blockDescriptors.map((()=>null))}destroy(){this._abortController.abort()}get hasScaleExpr(){return this._hasScaleExpr}get _signal(){return this._abortController.signal}get hasHighlight(){return this._idsToHighlight.size>0}update(t,i){this.config=i;const s=i.schema.processors[0].storage,o=d(this._schema,s);if((t.targets.feature||t.targets.aggregate)&&(t.storage.data=!0),o&&(e("esri-2d-update-debug")&&console.debug("Applying Update - AttributeStore:",o),t.storage.data=!0,this._schema=s,this._attributeComputeMap.clear(),!r(s))){switch(s.target){case"feature":this._targetType=T;break;case"aggregate":this._targetType=x}if("subtype"===s.type)for(const t in s.mapping){const e=s.mapping[t];if(a(e)&&a(e.vvMapping))for(const t of e.vvMapping)this._bindAttribute(t)}else{if(a(s.vvMapping))for(const t of s.vvMapping)this._bindAttribute(t);if(a(s.attributeMapping))for(const t of s.attributeMapping)this._bindAttribute(t)}}}onTileData(t,e){if(r(e.addOrUpdate))return;const i=e.addOrUpdate.getCursor();for(;i.next();){const t=i.getDisplayId();this.setAttributeData(t,i)}}invalidateResources(){this._createResourcesPromise=null,this._abortController.abort(),this._abortController=new AbortController}async setHighlight(t,e){const i=1,s=this._getBlock(0),r=e.map((t=>z(t)));s.lock(),s.unsetComponentAllTexels(0,i),s.setComponent(0,i,r),s.unlock(),this._idsToHighlight.clear();for(const a of t)this._idsToHighlight.add(a);await this.sendUpdates()}async updateFilters(t,i,s){const{service:r,spatialReference:a}=s,{filters:o}=i,n=o.map(((t,e)=>this._updateFilter(t,e,r,a)));(await Promise.all(n)).some((t=>t))&&(t.storage.filters=!0,e("esri-2d-update-debug")&&console.debug("Applying Update - AttributeStore:","Filters changed"))}setData(t,e,i,s){const r=z(t);this._ensureSizeForTexel(r),this._getBlock(e).setData(t,i,s)}getData(t,e,i){return this._getBlock(e).getData(t,i)}getHighlightFlag(t){return this._idsToHighlight.has(t)?g:0}unsetAttributeData(t){const e=z(t);this._getBlock(0).setData(e,0,0)}setAttributeData(t,e){const i=z(t);if(this._ensureSizeForTexel(i),this._getBlock(0).setData(i,0,this.getFilterFlags(e)),this._targetType!==S(t))return;const r=this._attributeComputeMap,a=this.config.supportsTextureFloat?1:2,o=4;r.size&&r.forEach(((t,r)=>{const n=r*a%o,l=Math.floor(r*a/o),h=this._getBlock(l+f),c=t(e);if(this.config.supportsTextureFloat)h.setData(i,n,c);else if(c===m)h.setData(i,n,255),h.setData(i,n+1,255);else{const t=s(Math.round(c),-32767,32766)+32768,e=255&t,r=(65280&t)>>8;h.setData(i,n,e),h.setData(i,n+1,r)}}))}sendUpdates(){if(this._nextUpdate)return this._nextUpdate.promise;if(this._currUpdate)return this._nextUpdate=c(),this._nextUpdate.promise;const e={blocks:this._blocks.map((t=>a(t)?t.toMessage():null))};return this._currUpdate=this._createResources().then((()=>{const t=()=>{if(this._currUpdate=null,this._nextUpdate){const t=this._nextUpdate;this._nextUpdate=null,this.sendUpdates().then((()=>t.resolve()))}},i=this._client.update(e,this._signal).then(t).catch(t);return this._client.render(this._signal),i})).catch((e=>{if(u(e))return this._createResourcesPromise=null,this._createResources();F.error(new t("mapview-attribute-store","Encountered an error during client update",e))})),this._currUpdate}_ensureSizeForTexel(t){for(;t>=this._size*this._size;)if(this._expand())return}_bindAttribute(t){function e(){return t.normalizationField?e=>{const i=e.readAttribute(t.normalizationField);if(!i)return null;return e.readAttribute(t.field)/i}:e=>e.readAttribute(t.field)}function i(){return t.normalizationField&&F.warn("mapview-arcade","Ignoring normalizationField specified with an arcade expression which is not supported."),e=>e.getComputedNumericAtIndex(t.fieldIndex)}let s;if(null!=t.fieldIndex)s=i();else{if(!t.field)return;s=e()}if(t.valueRepresentation){s=v(s,(e=>k(e,t.valueRepresentation)))}const r=t=>null===t||isNaN(t)||t===1/0?m:t;this._attributeComputeMap.set(t.binding,v(s,r))}_createResources(){if(a(this._createResourcesPromise))return this._createResourcesPromise;this._getBlock(y),this._getBlock(b),M("Initializing AttributeStore");const e={shared:B.sharedArrayBuffer&&!("local"===this._client.type),size:this._size,blocks:o(this._blocks,(t=>({textureOnly:t.textureOnly,buffer:t.buffer,pixelType:t.pixelType})))},i=this._client.initialize(e,this._signal).catch((e=>{u(e)?this._createResourcesPromise=null:F.error(new t("mapview-attribute-store","Encountered an error during client initialization",e))}));return this._createResourcesPromise=i,i.then((()=>r(this._createResourcesPromise)?this._createResources():void 0)),i}_getBlock(t){const e=this._blocks[t];if(a(e))return e;M(`Initializing AttributeBlock at index ${t}`);const i=B.sharedArrayBuffer,s=this._client.type,r=new C(i,s,this._size,this._blockDescriptors[t]);return this._blocks[t]=r,this._createResourcesPromise=null,r}_expand(){if(this._size<this.config.maxTextureSize){const t=this._size<<=1;return M("Expanding block size to",t,this._blocks),n(this._blocks,(e=>e.expand(t))),this._createResourcesPromise=null,this._size=t,0}return F.error(new t("mapview-limitations","Maximum number of onscreen features exceeded.")),-1}async _updateFilter(t,e,i,s){const o=this._filters[e],n=a(o)&&o.hash;if(!o&&!t)return!1;if(n===JSON.stringify(t))return!1;if(r(t)){if(!o)return!1;const t=1<<e+1,i=this._getBlock(0);return this._filters[e]=null,i.setComponentAllTexels(0,t),this.sendUpdates(),!0}const l=await this._getFilter(e,i);return await l.update(t,s),!0}async _getFilter(t,e){const i=this._filters[t];if(a(i))return i;const{default:s}=await import("./FeatureFilter.js"),r=new s({geometryType:e.geometryType,hasM:!1,hasZ:!1,timeInfo:e.timeInfo,fieldsIndex:new p(e.fields)});return this._filters[t]=r,r}isVisible(t){return!!(2&this._getBlock(0).getData(t,0))}getFilterFlags(t){let e=0;const i=E(t.getDisplayId());for(let a=0;a<this._filters.length;a++){const s=!!(i&1<<a),o=this._filters[a];e|=(!s||r(o)||o.check(t)?1:0)<<a}let s=0;if(this._idsToHighlight.size){const e=t.getObjectId();s=this.getHighlightFlag(e)}return e<<1|s}}export{R as default};
5
+ import t from"../../../../../core/Error.js";import e from"../../../../../core/has.js";import i from"../../../../../core/Logger.js";import{clamp as s}from"../../../../../core/mathUtils.js";import{isNone as r,isSome as a,mapMany as o,forEachSome as n,applySome as l,unwrap as h}from"../../../../../core/maybe.js";import{createResolver as c,isAbortError as u}from"../../../../../core/promiseUtils.js";import{diff as d}from"../../../../../core/accessorSupport/diffUtils.js";import p from"../../../../../layers/support/FieldsIndex.js";import{MAX_FILTERS as _,HIGHLIGHT_FLAG as g,ATTRIBUTE_DATA_VV as f,NAN_MAGIC_NUMBER as m,ATTRIBUTE_DATA_ANIMATION as y,ATTRIBUTE_DATA_GPGPU as x}from"../../../engine/webgl/definitions.js";import{DISPLAY_ID_TYPE_AGGREGATE as b,DISPLAY_ID_TYPE_FEATURE as T,getDisplayIdTexel as z,getDisplayIdType as S,getDisplayIdFilterMask as E}from"../../../engine/webgl/DisplayId.js";import{getPixelArrayCtor as w}from"../../../engine/webgl/Utils.js";import{createDebugLogger as A,DEBUG_ATTR_UPDATES as D}from"../../../engine/webgl/util/debug.js";import{getVisualVariableSizeValueRepresentationRatio as k}from"../tileRenderers/support/visualVariablesUtils.js";import{PixelType as U}from"../../../../webgl/enums.js";const F=i.getLogger("esri.views.layers.2d.features.support.AttributeStore"),M=A(D,F),B={sharedArrayBuffer:e("esri-shared-array-buffer"),atomics:e("esri-atomics")};function v(t,e){return i=>e(t(i))}class C{constructor(t,e,i,s){this.size=0,this.texelSize=4;const{pixelType:r,layout:a,textureOnly:o}=s;this.textureOnly=o||!1,this.pixelType=r,this._ctype=e,this.layout=a,this._resetRange(),this._shared=t,this.size=i,o||(this.data=this._initData(r,i,t,e))}get buffer(){return l(this.data,(t=>t.buffer))}unsetComponentAllTexels(t,e){const i=h(this.data);for(let s=0;s<this.size*this.size;s++)i[s*this.texelSize+t]&=~e;this.dirtyStart=0,this.dirtyEnd=this.size*this.size-1}setComponentAllTexels(t,e){const i=h(this.data);for(let s=0;s<this.size*this.size;s++)i[s*this.texelSize+t]|=255&e;this.dirtyStart=0,this.dirtyEnd=this.size*this.size-1}setComponent(t,e,i){const s=h(this.data);for(const r of i)s[r*this.texelSize+t]|=e,this.dirtyStart=Math.min(this.dirtyStart,r),this.dirtyEnd=Math.max(this.dirtyEnd,r)}setComponentTexel(t,e,i){h(this.data)[i*this.texelSize+t]|=e,this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,i)}unsetComponentTexel(t,e,i){h(this.data)[i*this.texelSize+t]&=~e,this.dirtyStart=Math.min(this.dirtyStart,i),this.dirtyEnd=Math.max(this.dirtyEnd,i)}getData(t,e){const i=z(t);return h(this.data)[i*this.texelSize+e]}setData(t,e,i){const s=z(t),r=1<<e;0!=(this.layout&r)?(this.data[s*this.texelSize+e]=i,this.dirtyStart=Math.min(this.dirtyStart,s),this.dirtyEnd=Math.max(this.dirtyEnd,s)):F.error("mapview-attributes-store","Tried to set a value for a texel's readonly component")}lock(){this.pixelType===U.UNSIGNED_BYTE&&this._shared&&B.atomics&&"local"!==this._ctype&&Atomics.store(this.data,0,1)}unlock(){this.pixelType===U.UNSIGNED_BYTE&&this._shared&&B.atomics&&"local"!==this._ctype&&Atomics.store(this.data,0,0)}expand(t){if(this.size=t,!this.textureOnly){const e=this._initData(this.pixelType,t,this._shared,this._ctype),i=h(this.data);e.set(i),this.data=e}}toMessage(){const t=this.dirtyStart,e=this.dirtyEnd,i=this.texelSize;if(t>e)return null;this._resetRange();const s=!(this._shared||"local"===this._ctype),r=this.pixelType,a=this.layout,o=h(this.data);return{start:t,end:e,data:s&&o.slice(t*i,(e+1)*i)||null,pixelType:r,layout:a}}_initData(t,e,i,s){const r=i&&"local"!==s?SharedArrayBuffer:ArrayBuffer,a=w(t),o=new a(new r(e*e*4*a.BYTES_PER_ELEMENT));for(let n=0;n<o.length;n+=4)o[n+1]=255;return o}_resetRange(){this.dirtyStart=2147483647,this.dirtyEnd=0}}class R{constructor(t,e){this._client=t,this.config=e,this._attributeComputeMap=new Map,this._blocks=new Array,this._filters=new Array(_),this._targetType=0,this._abortController=new AbortController,this._hasScaleExpr=!1,this._size=32,this._idsToHighlight=new Set;const i=e.supportsTextureFloat?U.FLOAT:U.UNSIGNED_BYTE;M(`Creating AttributeStore ${B.sharedArrayBuffer?"with":"without"} shared memory`),this._blockDescriptors=[{pixelType:U.UNSIGNED_BYTE,layout:1},{pixelType:U.UNSIGNED_BYTE,layout:15,textureOnly:!0},{pixelType:U.UNSIGNED_BYTE,layout:15,textureOnly:!0},{pixelType:i,layout:15},{pixelType:i,layout:15},{pixelType:i,layout:15},{pixelType:i,layout:15}],this._blocks=this._blockDescriptors.map((()=>null))}destroy(){this._abortController.abort()}get hasScaleExpr(){return this._hasScaleExpr}get _signal(){return this._abortController.signal}get hasHighlight(){return this._idsToHighlight.size>0}update(t,i){this.config=i;const s=i.schema.processors[0].storage,o=d(this._schema,s);if((t.targets.feature||t.targets.aggregate)&&(t.storage.data=!0),o&&(e("esri-2d-update-debug")&&console.debug("Applying Update - AttributeStore:",o),t.storage.data=!0,this._schema=s,this._attributeComputeMap.clear(),!r(s))){switch(s.target){case"feature":this._targetType=T;break;case"aggregate":this._targetType=b}if("subtype"===s.type)for(const t in s.mapping){const e=s.mapping[t];if(a(e)&&a(e.vvMapping))for(const t of e.vvMapping)this._bindAttribute(t)}else{if(a(s.vvMapping))for(const t of s.vvMapping)this._bindAttribute(t);if(a(s.attributeMapping))for(const t of s.attributeMapping)this._bindAttribute(t)}}}onTileData(t,e){if(r(e.addOrUpdate))return;const i=e.addOrUpdate.getCursor();for(;i.next();){const t=i.getDisplayId();this.setAttributeData(t,i)}}invalidateResources(){this._createResourcesPromise=null,this._abortController.abort(),this._abortController=new AbortController}async setHighlight(t,e){const i=1,s=this._getBlock(0),r=e.map((t=>z(t)));s.lock(),s.unsetComponentAllTexels(0,i),s.setComponent(0,i,r),s.unlock(),this._idsToHighlight.clear();for(const a of t)this._idsToHighlight.add(a);await this.sendUpdates()}async updateFilters(t,i,s){const{service:r,spatialReference:a}=s,{filters:o}=i,n=o.map(((t,e)=>this._updateFilter(t,e,r,a)));(await Promise.all(n)).some((t=>t))&&(t.storage.filters=!0,e("esri-2d-update-debug")&&console.debug("Applying Update - AttributeStore:","Filters changed"))}setData(t,e,i,s){const r=z(t);this._ensureSizeForTexel(r),this._getBlock(e).setData(t,i,s)}getData(t,e,i){return this._getBlock(e).getData(t,i)}getHighlightFlag(t){return this._idsToHighlight.has(t)?g:0}unsetAttributeData(t){const e=z(t);this._getBlock(0).setData(e,0,0)}setAttributeData(t,e){const i=z(t);if(this._ensureSizeForTexel(i),this._getBlock(0).setData(i,0,this.getFilterFlags(e)),this._targetType!==S(t))return;const r=this._attributeComputeMap,a=this.config.supportsTextureFloat?1:2,o=4;r.size&&r.forEach(((t,r)=>{const n=r*a%o,l=Math.floor(r*a/o),h=this._getBlock(l+f),c=t(e);if(this.config.supportsTextureFloat)h.setData(i,n,c);else if(c===m)h.setData(i,n,255),h.setData(i,n+1,255);else{const t=s(Math.round(c),-32767,32766)+32768,e=255&t,r=(65280&t)>>8;h.setData(i,n,e),h.setData(i,n+1,r)}}))}sendUpdates(){if(this._nextUpdate)return this._nextUpdate.promise;if(this._currUpdate)return this._nextUpdate=c(),this._nextUpdate.promise;const e={blocks:this._blocks.map((t=>a(t)?t.toMessage():null))};return this._currUpdate=this._createResources().then((()=>{const t=()=>{if(this._currUpdate=null,this._nextUpdate){const t=this._nextUpdate;this._nextUpdate=null,this.sendUpdates().then((()=>t.resolve()))}},i=this._client.update(e,this._signal).then(t).catch(t);return this._client.render(this._signal),i})).catch((e=>{if(u(e))return this._createResourcesPromise=null,this._createResources();F.error(new t("mapview-attribute-store","Encountered an error during client update",e))})),this._currUpdate}_ensureSizeForTexel(t){for(;t>=this._size*this._size;)if(this._expand())return}_bindAttribute(t){function e(){return t.normalizationField?e=>{const i=e.readAttribute(t.normalizationField);if(!i)return null;return e.readAttribute(t.field)/i}:e=>e.readAttribute(t.field)}function i(){return t.normalizationField&&F.warn("mapview-arcade","Ignoring normalizationField specified with an arcade expression which is not supported."),e=>e.getComputedNumericAtIndex(t.fieldIndex)}let s;if(null!=t.fieldIndex)s=i();else{if(!t.field)return;s=e()}if(t.valueRepresentation){s=v(s,(e=>k(e,t.valueRepresentation)))}const r=t=>null===t||isNaN(t)||t===1/0?m:t;this._attributeComputeMap.set(t.binding,v(s,r))}_createResources(){if(a(this._createResourcesPromise))return this._createResourcesPromise;this._getBlock(y),this._getBlock(x),M("Initializing AttributeStore");const e={shared:B.sharedArrayBuffer&&!("local"===this._client.type),size:this._size,blocks:o(this._blocks,(t=>({textureOnly:t.textureOnly,buffer:t.buffer,pixelType:t.pixelType})))},i=this._client.initialize(e,this._signal).catch((e=>{u(e)?this._createResourcesPromise=null:F.error(new t("mapview-attribute-store","Encountered an error during client initialization",e))}));return this._createResourcesPromise=i,i.then((()=>r(this._createResourcesPromise)?this._createResources():void 0)),i}_getBlock(t){const e=this._blocks[t];if(a(e))return e;M(`Initializing AttributeBlock at index ${t}`);const i=B.sharedArrayBuffer,s=this._client.type,r=new C(i,s,this._size,this._blockDescriptors[t]);return this._blocks[t]=r,this._createResourcesPromise=null,r}_expand(){if(this._size<this.config.maxTextureSize){const t=this._size<<=1;return M("Expanding block size to",t,this._blocks),n(this._blocks,(e=>e.expand(t))),this._createResourcesPromise=null,this._size=t,0}return F.error(new t("mapview-limitations","Maximum number of onscreen features exceeded.")),-1}async _updateFilter(t,e,i,s){const o=this._filters[e],n=a(o)&&o.hash;if(!o&&!t)return!1;if(n===JSON.stringify(t))return!1;if(r(t)){if(!o)return!1;const t=1<<e+1,i=this._getBlock(0);return this._filters[e]=null,i.setComponentAllTexels(0,t),this.sendUpdates(),!0}const l=await this._getFilter(e,i);return await l.update(t,s),!0}async _getFilter(t,e){const i=this._filters[t];if(a(i))return i;const{default:s}=await import("./FeatureFilter.js"),r=new s({geometryType:e.geometryType,hasM:!1,hasZ:!1,timeInfo:e.timeInfo,fieldsIndex:new p(e.fields)});return this._filters[t]=r,r}isVisible(t){return!!(2&this._getBlock(0).getData(t,0))}getFilterFlags(t){let e=0;const i=E(t.getDisplayId());for(let a=0;a<this._filters.length;a++){const s=!!(i&1<<a),o=this._filters[a];e|=(!s||r(o)||o.check(t)?1:0)<<a}let s=0;if(this._idsToHighlight.size){const e=t.getObjectId();s=this.getHighlightFlag(e)}return e<<1|s}}export{R 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.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/has.js";import{isAbortError as i}from"../../../../../core/promiseUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/accessorSupport/set.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators/subclass.js";import{create as r}from"../../../../../geometry/support/aaBoundingRect.js";import{FeatureTile as a}from"../../../engine/webgl/FeatureTile.js";import{simplifyVVRenderer as o}from"../support/rendererUtils.js";import l from"./BaseTileRenderer.js";import{convertVisualVariables as n}from"./support/visualVariablesUtils.js";import{WGLFeatureView as u}from"./support/WGLFeatureView.js";let p=class extends l{constructor(){super(...arguments),this.type="symbol"}install(e){const t=()=>this.notifyChange("updating"),i=new u(this.tileInfoView,this.layerView,this.layer,t);this.featuresView=i,e.addChild(i)}uninstall(e){e.removeChild(this.featuresView),this.featuresView.destroy(),this.featuresView=null}fetchResource(e,t){const{url:s}=e,r=this.featuresView.stage;try{return r.resourceManager.fetchResource(s,{signal:t.signal})}catch(a){return i(a)?Promise.resolve({width:0,height:0}):Promise.reject(a)}}isUpdating(){const e=super.isUpdating(),i=!this.featuresView||this.featuresView.isUpdating(),s=this.featuresView?.hasEmptyAttributeView(),r=e||i||e&&s;return t("esri-2d-log-updating")&&console.log(`Updating SymbolTileRenderer ${r}\n -> updatingTiles ${e}\n -> hasFeaturesView ${!!this.featuresView}\n -> updatingFeaturesView ${i}`),r}hitTest(e){return this.featuresView.hitTest(e)}supportsRenderer(e){return null!=e&&["simple","class-breaks","unique-value","dot-density","dictionary","heatmap"].includes(e.type)}onConfigUpdate(e){let t=null;if("visualVariables"in e){const i=(o(e).visualVariables||[]).map((e=>{const t=e.clone();return"normalizationField"in e&&(t.normalizationField=null),e.valueExpression&&"$view.scale"!==e.valueExpression&&(t.valueExpression=null,t.field="nop"),t}));t=n(i)}this.featuresView.setRendererInfo(e,t,this.layerView.featureEffect)}onTileData(e){const t=this.tiles.get(e.tileKey);t&&e.data&&this.featuresView.onTileData(t,e.data),this.layerView.view.labelManager.requestUpdate()}onTileError(e){const t=this.tiles.get(e.tileKey);t&&this.featuresView.onTileError(t)}forceAttributeTextureUpload(){this.featuresView.attributeView.forceTextureUpload()}lockGPUUploads(){this.featuresView.attributeView.lockTextureUpload(),this.tiles.forEach((e=>e.lock()))}unlockGPUUploads(){this.featuresView.attributeView.unlockTextureUpload(),this.tiles.forEach((e=>e.unlock()))}async getMaterialItems(e){return this.featuresView.getMaterialItems(e)}invalidateLabels(){this.featuresView.hasLabels&&this.layerView.view.labelManager.requestUpdate()}createTile(e){const t=this.tileInfoView.getTileBounds(r(),e),i=()=>this.layerView.view.labelManager.requestUpdate();return new a(e,t[0],t[3],this.featuresView.attributeView,i)}disposeTile(e){this.featuresView.removeChild(e),e.destroy(),this.layerView.view.labelManager.requestUpdate()}};p=e([s("esri.views.2d.layers.features.tileRenderers.SymbolTileRenderer")],p);const c=p;export{c as default};
5
+ import{_ as e}from"../../../../../chunks/tslib.es6.js";import t from"../../../../../core/has.js";import{isAbortError as i}from"../../../../../core/promiseUtils.js";import"../../../../../core/Logger.js";import"../../../../../core/accessorSupport/ensureType.js";import"../../../../../core/arrayUtils.js";import"../../../../../core/accessorSupport/set.js";import{subclass as s}from"../../../../../core/accessorSupport/decorators/subclass.js";import{create as r}from"../../../../../geometry/support/aaBoundingRect.js";import{FeatureTile as a}from"../../../engine/webgl/FeatureTile.js";import{simplifyVVRenderer as o}from"../support/rendererUtils.js";import l from"./BaseTileRenderer.js";import{convertVisualVariables as n}from"./support/visualVariablesUtils.js";import{WGLFeatureView as u}from"./support/WGLFeatureView.js";let p=class extends l{constructor(){super(...arguments),this.type="symbol"}install(e){const t=()=>this.notifyChange("updating"),i=new u(this.tileInfoView,this.layerView,this.layer,t);this.featuresView=i,e.addChild(i)}uninstall(e){e.removeChild(this.featuresView),this.featuresView.destroy(),this.featuresView=null}fetchResource(e,t){const{url:s}=e,r=this.featuresView.stage;try{return r.resourceManager.fetchResource(s,{signal:t.signal})}catch(a){return i(a)?Promise.resolve({width:0,height:0}):Promise.reject(a)}}isUpdating(){const e=super.isUpdating(),i=!this.featuresView||this.featuresView.isUpdating(),s=this.featuresView?.hasEmptyAttributeView(),r=e||i||e&&s;return t("esri-2d-log-updating")&&console.log(`Updating SymbolTileRenderer ${r}\n -> updatingTiles ${e}\n -> hasFeaturesView ${!!this.featuresView}\n -> updatingFeaturesView ${i}`),r}hitTest(e){return this.featuresView.hitTest(e)}supportsRenderer(e){return null!=e&&["simple","class-breaks","unique-value","dot-density","dictionary","heatmap","pie-chart"].includes(e.type)}onConfigUpdate(e){let t=null;if("visualVariables"in e){const i=(o(e).visualVariables||[]).map((e=>{const t=e.clone();return"normalizationField"in e&&(t.normalizationField=null),e.valueExpression&&"$view.scale"!==e.valueExpression&&(t.valueExpression=null,t.field="nop"),t}));t=n(i)}this.featuresView.setRendererInfo(e,t,this.layerView.featureEffect)}onTileData(e){const t=this.tiles.get(e.tileKey);t&&e.data&&this.featuresView.onTileData(t,e.data),this.layerView.view.labelManager.requestUpdate()}onTileError(e){const t=this.tiles.get(e.tileKey);t&&this.featuresView.onTileError(t)}forceAttributeTextureUpload(){this.featuresView.attributeView.forceTextureUpload()}lockGPUUploads(){this.featuresView.attributeView.lockTextureUpload(),this.tiles.forEach((e=>e.lock()))}unlockGPUUploads(){this.featuresView.attributeView.unlockTextureUpload(),this.tiles.forEach((e=>e.unlock()))}async getMaterialItems(e){return this.featuresView.getMaterialItems(e)}invalidateLabels(){this.featuresView.hasLabels&&this.layerView.view.labelManager.requestUpdate()}createTile(e){const t=this.tileInfoView.getTileBounds(r(),e),i=()=>this.layerView.view.labelManager.requestUpdate();return new a(e,t[0],t[3],this.featuresView.attributeView,i)}disposeTile(e){this.featuresView.removeChild(e),e.destroy(),this.layerView.view.labelManager.requestUpdate()}};p=e([s("esri.views.2d.layers.features.tileRenderers.SymbolTileRenderer")],p);const c=p;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.24/esri/copyright.txt for details.
4
4
  */
5
- import e from"../../../../../../core/has.js";import{createResolver as t}from"../../../../../../core/promiseUtils.js";import{brushes as s}from"../../../../engine/brushes.js";import{FeatureContainer as i}from"../../../../engine/FeatureContainer.js";import{WGLDrawPhase as r}from"../../../../engine/webgl/enums.js";const a=e("featurelayer-order-by-server-enabled");class n extends i{constructor(e,t,s,i){super(e),this._pointToCallbacks=[],this._layer=s,this._layerView=t,this._onUpdate=i}renderChildren(e){if(this.attributeView.update(),this.hasAnimation){e.painter.effects.integrate.draw(e,e.attributeView)}super.renderChildren(e)}hasEmptyAttributeView(){return this.attributeView.isEmpty()}isUpdating(){return this.attributeView.isUpdating()}hitTest(e){const s=t();return this._pointToCallbacks.push({point:e,resolver:s}),this.requestRender(),s.promise}onTileData(e,t){const s=a&&"orderBy"in this._layer&&this._layer.orderBy,i=s?.length&&!s[0].valueExpression&&s[0].field,r=s&&this._layerView.orderByFields===i;e.patch(t,r),this.contains(e)||this.addChild(e),this.requestRender()}onTileError(e){this.contains(e)||this.addChild(e)}updateTransitionProperties(e,t){super.updateTransitionProperties(e,t),this._layerView.featureEffectView.transitionStep(e,t),this._layerView.featureEffectView.transitioning&&this.requestRender()}doRender(e){const{minScale:t,maxScale:s}=this._layer,i=e.state.scale;i<=(t||1/0)&&i>=s&&super.doRender(e)}onAttributeStoreUpdate(){this.hasLabels&&this._layerView.view.labelManager.requestUpdate(),this._onUpdate()}get hasAnimation(){return this.hasLabels}setStencilReference(e){const{rendererSchema:t}=e.rendererInfo;if("dot-density"===t.type&&t.dotSize>1){const e=1;for(const t of this.children)t.stencilRef=t.key.level+e}else super.setStencilReference(e)}get hasLabels(){if("sublayers"in this._layer)return this._layer.sublayers.some((e=>e.labelingInfo&&e.labelingInfo.length&&e.labelsVisible));const e=this._layer.featureReduction,t=e&&"labelingInfo"in e&&e.labelsVisible&&e.labelingInfo&&e.labelingInfo.length;return this._layer.labelingInfo&&this._layer.labelingInfo.length&&this._layer.labelsVisible||!!t}prepareRenderPasses(e){const t=e.registerRenderPass({name:"label",brushes:[s.label],target:()=>this.hasLabels?this.children:null,drawPhase:r.LABEL|r.LABEL_ALPHA}),i=e.registerRenderPass({name:"geometry",brushes:[s.fill,s.dotDensity,s.line,s.marker,s.heatmap,s.text],target:()=>this.children,enableDefaultDraw:()=>!this._layerView.featureEffectView.hasEffects,effects:[{apply:e.effects.outsideEffect,enable:()=>this._layerView.featureEffectView.hasEffects,args:()=>this._layerView.featureEffectView.excludedEffects},{apply:e.effects.insideEffect,enable:()=>this._layerView.featureEffectView.hasEffects,args:()=>this._layerView.featureEffectView.includedEffects},{apply:e.effects.hittest,enable:()=>!!this._pointToCallbacks.length,args:()=>this._pointToCallbacks}]}),a=e.registerRenderPass({name:"highlight",brushes:[s.fill,s.dotDensity,s.line,s.marker,s.text],target:()=>this.children,drawPhase:r.HIGHLIGHT,enableDefaultDraw:()=>!1,effects:[{apply:e.effects.highlight,enable:()=>!!this._layerView.hasHighlight()}]});return[...super.prepareRenderPasses(e),i,a,t]}}export{n as WGLFeatureView};
5
+ import e from"../../../../../../core/has.js";import{createResolver as t}from"../../../../../../core/promiseUtils.js";import{brushes as i}from"../../../../engine/brushes.js";import{FeatureContainer as s}from"../../../../engine/FeatureContainer.js";import{WGLDrawPhase as r}from"../../../../engine/webgl/enums.js";const a=e("featurelayer-order-by-server-enabled");class n extends s{constructor(e,t,i,s){super(e),this._pointToCallbacks=[],this._layer=i,this._layerView=t,this._onUpdate=s}renderChildren(e){if(this.attributeView.update(),this.hasAnimation){e.painter.effects.integrate.draw(e,e.attributeView)}super.renderChildren(e)}hasEmptyAttributeView(){return this.attributeView.isEmpty()}isUpdating(){return this.attributeView.isUpdating()}hitTest(e){const i=t();return this._pointToCallbacks.push({point:e,resolver:i}),this.requestRender(),i.promise}onTileData(e,t){const i=a&&"orderBy"in this._layer&&this._layer.orderBy,s=i?.length&&!i[0].valueExpression&&i[0].field,r=i&&this._layerView.orderByFields===s;e.patch(t,r),this.contains(e)||this.addChild(e),this.requestRender()}onTileError(e){this.contains(e)||this.addChild(e)}updateTransitionProperties(e,t){super.updateTransitionProperties(e,t),this._layerView.featureEffectView.transitionStep(e,t),this._layerView.featureEffectView.transitioning&&this.requestRender()}doRender(e){const{minScale:t,maxScale:i}=this._layer,s=e.state.scale;s<=(t||1/0)&&s>=i&&super.doRender(e)}onAttributeStoreUpdate(){this.hasLabels&&this._layerView.view.labelManager.requestUpdate(),this._onUpdate()}get hasAnimation(){return this.hasLabels}setStencilReference(e){const{rendererSchema:t}=e.rendererInfo;if("dot-density"===t.type&&t.dotSize>1){const e=1;for(const t of this.children)t.stencilRef=t.key.level+e}else super.setStencilReference(e)}get hasLabels(){if("sublayers"in this._layer)return this._layer.sublayers.some((e=>e.labelingInfo&&e.labelingInfo.length&&e.labelsVisible));const e=this._layer.featureReduction,t=e&&"labelingInfo"in e&&e.labelsVisible&&e.labelingInfo&&e.labelingInfo.length;return this._layer.labelingInfo&&this._layer.labelingInfo.length&&this._layer.labelsVisible||!!t}prepareRenderPasses(e){const t=e.registerRenderPass({name:"label",brushes:[i.label],target:()=>this.hasLabels?this.children:null,drawPhase:r.LABEL|r.LABEL_ALPHA}),s=e.registerRenderPass({name:"geometry",brushes:[i.fill,i.dotDensity,i.line,i.marker,i.heatmap,i.pieChart,i.text],target:()=>this.children,enableDefaultDraw:()=>!this._layerView.featureEffectView.hasEffects,effects:[{apply:e.effects.outsideEffect,enable:()=>this._layerView.featureEffectView.hasEffects,args:()=>this._layerView.featureEffectView.excludedEffects},{apply:e.effects.insideEffect,enable:()=>this._layerView.featureEffectView.hasEffects,args:()=>this._layerView.featureEffectView.includedEffects},{apply:e.effects.hittest,enable:()=>!!this._pointToCallbacks.length,args:()=>this._pointToCallbacks}]}),a=e.registerRenderPass({name:"highlight",brushes:[i.fill,i.dotDensity,i.line,i.marker,i.pieChart,i.text],target:()=>this.children,drawPhase:r.HIGHLIGHT,enableDefaultDraw:()=>!1,effects:[{apply:e.effects.highlight,enable:()=>!!this._layerView.hasHighlight()}]});return[...super.prepareRenderPasses(e),s,a,t]}}export{n as WGLFeatureView};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{isSome as r}from"../../../../core/maybe.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import{RasterTileContainer as i}from"../../engine/imagery/RasterTileContainer.js";import{BaseImageryTileSubView2D as o}from"./BaseImageryTileSubView2D.js";import{canUseMajorityInterpolationOnDataSource as a}from"../support/util.js";let l=class extends o{constructor(){super(...arguments),this.container=null,this.layer=null,this.type="raster"}attach(){super.attach(),this.container=new i(this._tileInfoView),this.container.isCustomTilingScheme=this._isCustomTilingScheme}detach(){super.detach(),this.container.removeAllChildren(),this.container=null}canUseWebGLForProcessing(){return this.useWebGLForProcessing&&this.layer.symbolizer.canRenderInWebGL&&!("majority"===this.layer.interpolation&&a(this.layer))}fetchTile(e,r){return this.layer.fetchTile(e.level,e.row,e.col,r)}async updateTileSource(e,t){const{bandIds:s}=this.layer,i=this._getLayerInterpolation(),o=this.canUseWebGLForProcessing(),{source:a,symbolizerParams:l,globalSymbolizerParams:n,suspended:c,coords:p,resolution:u}=t,{bitmap:m}=e;if([m.x,m.y]=p,m.resolution=u,a&&r(a)&&r(a.pixelBlock)){const e={extent:a.extent,pixelBlock:a.pixelBlock};if(m.rawPixelData=e,o)m.source=a.pixelBlock,m.isRendereredSource=!1;else{const r=await this.layer.applyRenderer(e,"stretch"===n?.type?n:null);m.source=r,m.isRendereredSource=!0}m.symbolizerParameters=o?l:null,o?m.transformGrid||(m.transformGrid=a.transformGrid):m.transformGrid=null}else{const e=this.createEmptyTilePixelBlock();m.source=e,m.symbolizerParameters=o?l:null,m.transformGrid=null}m.bandIds=o?s:null,m.width=this._tileInfoView.tileInfo.size[0],m.height=this._tileInfoView.tileInfo.size[1],m.interpolation=i,m.suspended=c,m.invalidateTexture()}async updateTileSymbolizerParameters(e,t){const{local:s,global:i}=t,{bandIds:o}=this.layer,a=this._getLayerInterpolation(),l=this.canUseWebGLForProcessing(),{bitmap:n}=e,{rawPixelData:c}=n;!l&&r(c)?(n.source=await this.layer.applyRenderer(c,"stretch"===i?.type?i:null),n.isRendereredSource=!0):(n.isRendereredSource&&r(c)&&(n.source=c.pixelBlock),n.isRendereredSource=!1),n.symbolizerParameters=l?i||s:null,n.bandIds=l?o:null,n.interpolation=a,n.suspended=!1}_getLayerInterpolation(){const e=this.layer.renderer.type;if("raster-colormap"===e||"unique-value"===e||"class-breaks"===e)return"nearest";const{interpolation:r}=this.layer,{renderer:t}=this.layer;return"raster-stretch"===t.type&&null!=t.colorRamp?"bilinear"===r||"cubic"===r?"bilinear":"nearest":r}};e([t()],l.prototype,"container",void 0),e([t()],l.prototype,"layer",void 0),e([t()],l.prototype,"type",void 0),l=e([s("esri.views.2d.layers.imagery.ImageryTileView2D")],l);const n=l;export{n as default};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{isSome as r}from"../../../../core/maybe.js";import{property as t}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as s}from"../../../../core/accessorSupport/decorators/subclass.js";import{RasterTileContainer as i}from"../../engine/imagery/RasterTileContainer.js";import{BaseImageryTileSubView2D as o}from"./BaseImageryTileSubView2D.js";import{canUseMajorityInterpolationOnDataSource as a}from"../support/util.js";let l=class extends o{constructor(){super(...arguments),this.container=null,this.layer=null,this.type="raster"}attach(){super.attach(),this.container=new i(this._tileInfoView),this.container.isCustomTilingScheme=this._isCustomTilingScheme}detach(){super.detach(),this.container.removeAllChildren(),this.container=null}canUseWebGLForProcessing(){return this.useWebGLForProcessing&&this.layer.symbolizer.canRenderInWebGL&&!("majority"===this.layer.interpolation&&a(this.layer))}fetchTile(e,r){return this.layer.fetchTile(e.level,e.row,e.col,r)}async updateTileSource(e,t){const{bandIds:s}=this.layer,i=this._getLayerInterpolation(),o=this.canUseWebGLForProcessing(),{source:a,globalSymbolizerParams:l,suspended:n,coords:c,resolution:p}=t,u=this.layerView.hasTilingEffects?l:t.symbolizerParams,{bitmap:m}=e;if([m.x,m.y]=c,m.resolution=p,a&&r(a)&&r(a.pixelBlock)){const e={extent:a.extent,pixelBlock:a.pixelBlock};if(m.rawPixelData=e,o)m.source=a.pixelBlock,m.isRendereredSource=!1;else{const r=await this.layer.applyRenderer(e,"stretch"===l?.type?l:null);m.source=r,m.isRendereredSource=!0}m.symbolizerParameters=o?u:null,o?m.transformGrid||(m.transformGrid=a.transformGrid):m.transformGrid=null}else{const e=this.createEmptyTilePixelBlock();m.source=e,m.symbolizerParameters=o?u:null,m.transformGrid=null}m.bandIds=o?s:null,m.width=this._tileInfoView.tileInfo.size[0],m.height=this._tileInfoView.tileInfo.size[1],m.interpolation=i,m.suspended=n,m.invalidateTexture()}async updateTileSymbolizerParameters(e,t){const{local:s,global:i}=t,{bandIds:o}=this.layer,a=this._getLayerInterpolation(),l=this.canUseWebGLForProcessing(),{bitmap:n}=e,{rawPixelData:c}=n;!l&&r(c)?(n.source=await this.layer.applyRenderer(c,"stretch"===i?.type?i:null),n.isRendereredSource=!0):(n.isRendereredSource&&r(c)&&(n.source=c.pixelBlock),n.isRendereredSource=!1),n.symbolizerParameters=l?this.layerView.hasTilingEffects?i:s:null,n.bandIds=l?o:null,n.interpolation=a,n.suspended=!1}_getLayerInterpolation(){const e=this.layer.renderer.type;if("raster-colormap"===e||"unique-value"===e||"class-breaks"===e)return"nearest";const{interpolation:r}=this.layer,{renderer:t}=this.layer;return"raster-stretch"===t.type&&null!=t.colorRamp?"bilinear"===r||"cubic"===r?"bilinear":"nearest":r}};e([t()],l.prototype,"container",void 0),e([t()],l.prototype,"layer",void 0),e([t()],l.prototype,"type",void 0),l=e([s("esri.views.2d.layers.imagery.ImageryTileView2D")],l);const n=l;export{n 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.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{destroyMaybe as s,isNone as r,unwrapOr as a}from"../../../core/maybe.js";import{property as i}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{defaultUnitPropertyMetadata as n}from"../../../properties/defaultUnit.js";import{AnalysisView3D as l}from"./AnalysisView3D.js";import{MeasurementMode as p}from"./interfaces.js";import{AreaMeasurementController as u}from"./AreaMeasurement/support/AreaMeasurementController.js";import{AreaMeasurement3DPathHelper as m}from"./AreaMeasurement/support/AreaMeasurementPathHelper.js";import{AreaMeasurementVisualization as y}from"./AreaMeasurement/support/AreaMeasurementVisualization.js";let d=class extends(l(t)){constructor(e){super(e),this.type="area-measurement-view-3d",this.interactive=!1,this.measurementData=null,this.lastDraggedVertex=null,this.cursorPoint=null,this.mode=p.Auto}initialize(){this.path=new m({view:this.view,areaMeasurement:this.analysis}),this.analysisVisualization=new y({view:this.view,analysis:this.analysis,analysisViewData:this}),this.analysisController=new u({view:this.view,analysis:this.analysis,analysisViewData:this})}destroy(){this.analysisController=s(this.analysisController),this.analysisVisualization=s(this.analysisVisualization),this.path.destroy()}get updating(){return!!this.analysisVisualization?.loadingMessages}get result(){if(r(this.measurementData))return{area:null,mode:null,perimeter:null};const e=this.measurementData;return"euclidean"===e.actualMeasurementMode?{area:e.area,perimeter:e.perimeterLength,mode:"euclidian"}:{area:e.geodesicArea,perimeter:e.pathLength,mode:"geodesic"}}get validMeasurement(){return this.path.isValidPolygon}get unit(){return a(this.analysis.unit,this._defaultUnit)}get testData(){return{visualization:this.analysisVisualization,controller:this.analysisController}}};e([i({readOnly:!0})],d.prototype,"type",void 0),e([i({constructOnly:!0,nonNullable:!0})],d.prototype,"analysis",void 0),e([i()],d.prototype,"updating",null),e([i()],d.prototype,"interactive",void 0),e([i()],d.prototype,"analysisVisualization",void 0),e([i()],d.prototype,"analysisController",void 0),e([i()],d.prototype,"result",null),e([i()],d.prototype,"measurementData",void 0),e([i()],d.prototype,"validMeasurement",null),e([i()],d.prototype,"path",void 0),e([i()],d.prototype,"lastDraggedVertex",void 0),e([i()],d.prototype,"cursorPoint",void 0),e([i()],d.prototype,"mode",void 0),e([i()],d.prototype,"unit",null),e([i(n)],d.prototype,"_defaultUnit",void 0),d=e([o("esri.views.3d.analysis.AreaMeasurementAnalysisView3D")],d);const h=d;export{h as default};
5
+ import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../core/Accessor.js";import{destroyMaybe as s,isNone as a,unwrapOr as i}from"../../../core/maybe.js";import{property as r}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";import{defaultUnitPropertyMetadata as n}from"../../../properties/defaultUnit.js";import{AnalysisView3D as l}from"./AnalysisView3D.js";import{MeasurementMode as p}from"./interfaces.js";import{AreaMeasurementController as u}from"./AreaMeasurement/support/AreaMeasurementController.js";import{AreaMeasurement3DPathHelper as m}from"./AreaMeasurement/support/AreaMeasurementPathHelper.js";import{AreaMeasurementVisualization as y}from"./AreaMeasurement/support/AreaMeasurementVisualization.js";let d=class extends(l(t)){constructor(e){super(e),this.type="area-measurement-view-3d",this.interactive=!1,this.measurementData=null,this.lastDraggedVertex=null,this.cursorPoint=null,this.mode=p.Auto}initialize(){this.path=new m({view:this.view,areaMeasurement:this.analysis}),this.analysisVisualization=new y({view:this.view,analysis:this.analysis,analysisViewData:this}),this.analysisController=new u({view:this.view,analysis:this.analysis,analysisViewData:this})}destroy(){this.analysisController=s(this.analysisController),this.analysisVisualization=s(this.analysisVisualization),this.path.destroy()}get updating(){return!!this.analysisVisualization?.loadingMessages}get result(){if(a(this.measurementData))return{area:null,mode:null,perimeter:null};const e=this.measurementData;return"euclidean"===e.actualMeasurementMode?{area:e.area,perimeter:e.perimeterLength,mode:"euclidian"}:{area:e.geodesicArea,perimeter:e.pathLength,mode:"geodesic"}}get viewData(){return this.analysisVisualization.viewData}get validMeasurement(){return this.path.isValidPolygon}get unit(){return i(this.analysis.unit,this._defaultUnit)}get testData(){return{visualization:this.analysisVisualization,controller:this.analysisController}}};e([r({readOnly:!0})],d.prototype,"type",void 0),e([r({constructOnly:!0,nonNullable:!0})],d.prototype,"analysis",void 0),e([r()],d.prototype,"updating",null),e([r()],d.prototype,"interactive",void 0),e([r()],d.prototype,"analysisVisualization",void 0),e([r()],d.prototype,"analysisController",void 0),e([r()],d.prototype,"result",null),e([r()],d.prototype,"measurementData",void 0),e([r()],d.prototype,"viewData",null),e([r()],d.prototype,"validMeasurement",null),e([r()],d.prototype,"path",void 0),e([r()],d.prototype,"lastDraggedVertex",void 0),e([r()],d.prototype,"cursorPoint",void 0),e([r()],d.prototype,"mode",void 0),e([r()],d.prototype,"unit",null),e([r(n)],d.prototype,"_defaultUnit",void 0),d=e([o("esri.views.3d.analysis.AreaMeasurementAnalysisView3D")],d);const h=d;export{h 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.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import{isSome as i,isNone as o}from"../../../../core/maybe.js";import{watch as s,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as c}from"../../../../geometry/support/vectorStacks.js";import{LengthDimensionSubTool as l}from"./LengthDimensionSubTool.js";import{newIntersector as m}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as h}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{InteractiveToolBase as p}from"../../../interactive/InteractiveToolBase.js";import{createScreenPointArrayFromEvent as u}from"../../../support/screenUtils.js";var d;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(d||(d={}));let v=class extends p{constructor(){super(...arguments),this.preferManipulatorCursor=!0,this.analysisView=null}initialize(){this._intersector=m(this.view.state.viewingMode),this._intersector.options.store=h.MIN,this._lengthDimensionSubTool=new l({view:this.view}),this.own(t(this._lengthDimensionSubTool));for(const e of this.analysis.dimensions.items)this._addDimension(e);this.own(this.analysis.dimensions.on("change",(e=>{for(const t of e.added)this._addDimension(t);for(const t of e.removed)this._removeDimension(t)}))),this.own(s((()=>this.state),(e=>{e===d.Created&&this.finishToolCreation()}),n))}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?this.active?d.Creating:d.Created:d.Ready}get cursor(){return this.active?"crosshair":null}getManipulatorsForDimension(e){return this._lengthDimensionSubTool.getManipulatorsForDimension(e)}onInputEvent(e){switch(e.type){case"immediate-click":this._clickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){i(this._activeSubTool)&&i(this._activeSubTool.stagedDimension)&&(this.analysis.dimensions.remove(this._activeSubTool.stagedDimension),this._activeSubTool.stagedDimension=null),this._activeSubTool=null}_clickHandler(e){if(o(this._activeSubTool))return;const t=this._intersectScreen(e);if(!o(t)){if(o(this._activeSubTool.stagedDimension)){const e=this._activeSubTool.stageNewDimension(t);this.analysis.dimensions.add(e)}else this._activeSubTool.onStagedClick(t);e.stopPropagation()}}_pointerMoveHandler(e){if(o(this._activeSubTool))return;const t=this._intersectScreen(e);o(t)||this._activeSubTool.onPointerMove(t)}_intersectScreen(e){const t=u(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const i=this._intersector.results.min,o=c.get();return i.getIntersectionPoint(o)?this.view.renderCoordsHelper.fromRenderCoords(o,this.view.spatialReference):null}_addDimension(e){this._lengthDimensionSubTool.addDimension(e,this.manipulators)}_removeDimension(e){this._lengthDimensionSubTool.removeDimension(e,this.manipulators)}};e([r({constructOnly:!0})],v.prototype,"view",void 0),e([r({constructOnly:!0})],v.prototype,"analysis",void 0),e([r({readOnly:!0})],v.prototype,"state",null),e([r({readOnly:!0})],v.prototype,"cursor",null),e([r({readOnly:!0})],v.prototype,"preferManipulatorCursor",void 0),e([r({constructOnly:!0})],v.prototype,"analysisView",void 0),e([r()],v.prototype,"_activeSubTool",void 0),e([r()],v.prototype,"_lengthDimensionSubTool",void 0),v=e([a("esri.views.3d.analysis.Dimensioning.DimensioningTool")],v);export{v as DimensioningTool};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import{destroyHandle as t}from"../../../../core/handleUtils.js";import{isSome as o,isNone as i}from"../../../../core/maybe.js";import{watch as s,syncAndInitial as n}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{sv3d as l}from"../../../../geometry/support/vectorStacks.js";import{LengthDimensionSubTool as c}from"./LengthDimensionSubTool.js";import{newIntersector as m}from"../../webgl-engine/lib/Intersector.js";import{StoreResults as h}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{InteractiveToolBase as p}from"../../../interactive/InteractiveToolBase.js";import{createScreenPointArrayFromEvent as u}from"../../../support/screenUtils.js";var d;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(d||(d={}));let v=class extends p{constructor(){super(...arguments),this.preferManipulatorCursor=!0,this.analysisViewData=null}initialize(){this._intersector=m(this.view.state.viewingMode),this._intersector.options.store=h.MIN,this._lengthDimensionSubTool=new c({view:this.view}),this.own(t(this._lengthDimensionSubTool));for(const e of this.analysis.dimensions.items)this._addDimension(e);this.own(this.analysis.dimensions.on("change",(e=>{for(const t of e.added)this._addDimension(t);for(const t of e.removed)this._removeDimension(t)}))),this.own(s((()=>this.state),(e=>{e===d.Created&&this.finishToolCreation()}),n))}get state(){return this.analysis.dimensions.some((e=>"length"===e.type))?o(this._activeSubTool)?d.Creating:d.Created:d.Ready}get cursor(){return this.active?"crosshair":null}getManipulatorsForDimension(e){return this._lengthDimensionSubTool.getManipulatorsForDimension(e)}onInputEvent(e){switch(e.type){case"immediate-click":this._clickHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onActivate(){this._activeSubTool=this._lengthDimensionSubTool}onDeactivate(){o(this._activeSubTool)&&o(this._activeSubTool.stagedDimension)&&(this.analysis.dimensions.remove(this._activeSubTool.stagedDimension),this._activeSubTool.stagedDimension=null),this._activeSubTool=null}_clickHandler(e){if(i(this._activeSubTool))return;const t=this._intersectScreen(e);if(!i(t)){if(i(this._activeSubTool.stagedDimension)){const e=this._activeSubTool.stageNewDimension(t);this.analysis.dimensions.add(e)}else this._activeSubTool.onStagedClick(t);e.stopPropagation()}}_pointerMoveHandler(e){if(i(this._activeSubTool))return;const t=this._intersectScreen(e);i(t)||this._activeSubTool.onPointerMove(t)}_intersectScreen(e){const t=u(e);this.view.sceneIntersectionHelper.intersectToolIntersectorScreen(t,this._intersector);const o=this._intersector.results.min,i=l.get();return o.getIntersectionPoint(i)?this.view.renderCoordsHelper.fromRenderCoords(i,this.view.spatialReference):null}_addDimension(e){this._lengthDimensionSubTool.addDimension(e,this.manipulators)}_removeDimension(e){this._lengthDimensionSubTool.removeDimension(e,this.manipulators)}};e([r({constructOnly:!0})],v.prototype,"view",void 0),e([r({constructOnly:!0})],v.prototype,"analysis",void 0),e([r({readOnly:!0})],v.prototype,"state",null),e([r({readOnly:!0})],v.prototype,"cursor",null),e([r({readOnly:!0})],v.prototype,"preferManipulatorCursor",void 0),e([r({constructOnly:!0})],v.prototype,"analysisViewData",void 0),e([r()],v.prototype,"_activeSubTool",void 0),e([r()],v.prototype,"_lengthDimensionSubTool",void 0),v=e([a("esri.views.3d.analysis.Dimensioning.DimensioningTool")],v);export{v as DimensioningTool};
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{_ as o}from"../../../../chunks/tslib.es6.js";import s from"../../../../core/Accessor.js";import{property as e}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as t}from"../../../../core/accessorSupport/decorators/subclass.js";import r from"../LengthDimensionResult.js";let i=class extends s{constructor(o){super(o),this.effectiveAxis=null,this.length=null}initialize(){this._set("result",new r({dimension:this.dimension}))}};o([e({constructOnly:!0,nonNullable:!0})],i.prototype,"dimension",void 0),o([e({constructOnly:!0,nonNullable:!0})],i.prototype,"result",void 0),o([e()],i.prototype,"effectiveAxis",void 0),o([e()],i.prototype,"length",void 0),i=o([t("esri.views.3d.analysis.LengthDimensionResult")],i);export{i as LengthDimensionComputation};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{destroyHandle as n}from"../../../../core/handleUtils.js";import{isNone as s}from"../../../../core/maybe.js";import{watch as i,initial as o}from"../../../../core/reactiveUtils.js";import{property as r}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as m}from"../../../../core/accessorSupport/decorators/subclass.js";import{e as a,F as l,c as d}from"../../../../chunks/vec3.js";import{f as c}from"../../../../chunks/vec4f64.js";import{sv3d as p}from"../../../../geometry/support/vectorStacks.js";import{LineVisualElement as u}from"../../interactive/visualElements/LineVisualElement.js";import{EuclideanSegment as h}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as S}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as _}from"../../webgl-engine/materials/lineStippleUtils.js";let E=class extends t{constructor(e){super(e),this._directSegment=new h,this._dimensionSegment=new h,this._startExtensionSegment=new h(this._directSegment.startRenderSpace,this._dimensionSegment.startRenderSpace),this._endExtensionSegment=new h(this._directSegment.endRenderSpace,this._dimensionSegment.endRenderSpace);const t={view:e.view,attached:!0,width:1,color:c(1,.5,0,1),renderOccluded:S.OccludeAndTransparent},n={...t,stipplePattern:_(5)};this._dimensionVisualElement=new u(t),this._startExtensionVisualElement=new u(n),this._endExtensionVisualElement=new u(n)}initialize(){this.own([n(this._dimensionVisualElement),n(this._startExtensionVisualElement),n(this._endExtensionVisualElement)]);const e=this.dimension;this.own(i((()=>({startPoint:e.startPoint,endPoint:e.endPoint,offset:e.offset})),(e=>{this._update(e)}),o))}get testInfo(){return{dimensionVisualElement:this._dimensionVisualElement}}_update(e){const{startPoint:t,endPoint:n,offset:i}=e,{renderCoordsHelper:o}=this.view;if(s(t)||s(n)||!o.toRenderCoords(t,this._directSegment.startRenderSpace)||!o.toRenderCoords(n,this._directSegment.endRenderSpace))return this._dimensionVisualElement.visible=!1,this._startExtensionVisualElement.visible=!1,void(this._endExtensionVisualElement.visible=!1);const{startRenderSpace:r,endRenderSpace:m}=this._directSegment,a=this._directSegment.eval(.5,p.get()),l=o.worldUpAtPosition(a,p.get()),d=i/o.unitInMeters,[c,u]=g(r,m,l,d);f(this._startExtensionSegment,l,c,this._startExtensionVisualElement),f(this._endExtensionSegment,l,u,this._endExtensionVisualElement),this._dimensionVisualElement.visible=!0,this._dimensionVisualElement.setGeometryFromSegment(this._dimensionSegment)}};function g(e,t,n,s=0){const i=a(t,n),o=a(e,n),r=a(n,n),m=Math.abs(i-o)/r+s;return i>o?[m,s]:[s,m]}function f(e,t,n,s){0!==n?(l(e.endRenderSpace,e.startRenderSpace,t,n),s.visible=!0,s.setGeometryFromSegment(e)):(d(e.endRenderSpace,e.startRenderSpace),s.visible=!1)}e([r({constructOnly:!0,nonNullable:!0})],E.prototype,"dimension",void 0),e([r({constructOnly:!0,nonNullable:!0})],E.prototype,"view",void 0),E=e([m("esri.views.3d.analysis.Dimensioning.LengthDimensionVisualization")],E);export{E as LengthDimensionVisualization};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{destroyHandle as s}from"../../../../core/handleUtils.js";import{isNone as i}from"../../../../core/maybe.js";import{watch as n,initial as r}from"../../../../core/reactiveUtils.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{e as m,v as c,f as l,n as d,c as p,F as f}from"../../../../chunks/vec3.js";import{f as u}from"../../../../chunks/vec4f64.js";import{sv3d as h}from"../../../../geometry/support/vectorStacks.js";import{LineVisualElement as S}from"../../interactive/visualElements/LineVisualElement.js";import{EuclideanSegment as _}from"../../interactive/visualElements/support/Segment.js";import{RenderOccludedFlag as g}from"../../webgl-engine/lib/Material.js";import{createStipplePatternSimple as v}from"../../webgl-engine/materials/lineStippleUtils.js";let w=class extends t{constructor(e){super(e),this._directSegment=new _,this._dimensionSegment=new _,this._startOffsetSegment=new _(this._directSegment.startRenderSpace,this._dimensionSegment.startRenderSpace),this._endOffsetSegment=new _(this._directSegment.endRenderSpace,this._dimensionSegment.endRenderSpace);const t={view:e.view,attached:!0,width:1,color:u(1,.5,0,1),renderOccluded:g.OccludeAndTransparent},s={...t,stipplePattern:v(5)};this._dimensionVisualElement=new S(t),this._startOffsetVisualElement=new S(s),this._endOffsetVisualElement=new S(s)}initialize(){this.own([s(this._dimensionVisualElement),s(this._startOffsetVisualElement),s(this._endOffsetVisualElement)]);const e=this.dimension;this.own(n((()=>({startPoint:e.startPoint,endPoint:e.endPoint,offset:e.offset,axis:e.axis})),(e=>this._update(e)),r))}get testInfo(){return{dimensionVisualElement:this._dimensionVisualElement}}_update(e){const{startPoint:t,endPoint:s,offset:n,axis:r}=e,{renderCoordsHelper:o}=this.view;if(i(t)||i(s)||!o.toRenderCoords(t,this._directSegment.startRenderSpace)||!o.toRenderCoords(s,this._directSegment.endRenderSpace))return this._dimensionVisualElement.visible=!1,this._startOffsetVisualElement.visible=!1,void(this._endOffsetVisualElement.visible=!1);const{startRenderSpace:a,endRenderSpace:m}=this._directSegment,c=this._directSegment.eval(.5,h.get()),l=E(a,m,o.worldUpAtPosition(c,h.get()),r),d=n/o.unitInMeters,[p,f]=j(a,m,l,d);V(this._startOffsetSegment,l,p,this._startOffsetVisualElement),V(this._endOffsetSegment,l,f,this._endOffsetVisualElement),this._dimensionVisualElement.visible=!0,this._dimensionVisualElement.setGeometryFromSegment(this._dimensionSegment)}};function E(e,t,s,i){const n=h.get();switch(i){case"horizontal":return p(n,s);case"vertical":return m(e,s)<m(t,s)?c(n,t,e):c(n,e,t),l(n,l(n,n,s),s),d(n,n),n;case"direct":throw Error("not supported yet")}}function j(e,t,s,i=0){const n=m(t,s),r=m(e,s),o=Math.abs(n-r)+i;return n>r?[o,i]:[i,o]}function V(e,t,s,i){0!==s?(f(e.endRenderSpace,e.startRenderSpace,t,s),i.setGeometryFromSegment(e),i.visible=!0):(p(e.endRenderSpace,e.startRenderSpace),i.visible=!1)}e([o({constructOnly:!0,nonNullable:!0})],w.prototype,"dimension",void 0),e([o({constructOnly:!0,nonNullable:!0})],w.prototype,"view",void 0),w=e([a("esri.views.3d.analysis.Dimensioning.LengthDimensionVisualization")],w);export{w as LengthDimensionVisualization};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as i}from"../../../chunks/tslib.es6.js";import s from"../../../core/Accessor.js";import{destroyMaybe as o}from"../../../core/maybe.js";import{property as t}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as e}from"../../../core/accessorSupport/decorators/subclass.js";import{AnalysisView3D as r}from"./AnalysisView3D.js";import{DimensioningVisualization as a}from"./Dimensioning/DimensioningVisualization.js";let n=class extends(r(s)){constructor(i){super(i),this.type="dimensioning-view-3d",this.interactive=!1}initialize(){this._analysisVisualization=new a({view:this.view,analysis:this.analysis})}destroy(){this._analysisVisualization=o(this._analysisVisualization)}get testInfo(){return{visualization:this._analysisVisualization}}};i([t({readOnly:!0})],n.prototype,"type",void 0),i([t({constructOnly:!0,nonNullable:!0})],n.prototype,"analysis",void 0),i([t({type:Boolean})],n.prototype,"interactive",void 0),i([t()],n.prototype,"_analysisVisualization",void 0),n=i([e("esri.views.3d.analysis.DimensioningAnalysisView3D")],n);const p=n;export{p as default};
5
+ import{_ as s}from"../../../chunks/tslib.es6.js";import i from"../../../core/Accessor.js";import o from"../../../core/Collection.js";import{destroyMaybe as t}from"../../../core/maybe.js";import{on as e}from"../../../core/reactiveUtils.js";import{property as n}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as r}from"../../../core/accessorSupport/decorators/subclass.js";import{AnalysisView3D as a}from"./AnalysisView3D.js";import{DimensioningVisualization as m}from"./Dimensioning/DimensioningVisualization.js";import{LengthDimensionComputation as p}from"./Dimensioning/LengthDimensionComputation.js";let l=class extends(a(i)){constructor(s){super(s),this.type="dimensioning-view-3d",this.interactive=!1,this._computations=new o,this._dimensionsToResults=new Map}initialize(){this._analysisVisualization=new m({view:this.view,analysis:this.analysis}),this.own(e((()=>this.analysis.dimensions),"change",(({added:s,removed:i})=>{for(const o of i)this._removeDimension(o);for(const o of s)this._addDimension(o)}),{onListenerAdd:s=>{for(const i of s)this._addDimension(i)},onListenerRemove:s=>{for(const i of s)this._removeDimension(i)}}))}destroy(){this._analysisVisualization=t(this._analysisVisualization),this._computations.drain((s=>s.destroy()))}get results(){return this.analysis.dimensions.map((s=>this._dimensionsToResults.get(s)))}get testInfo(){return{visualization:this._analysisVisualization}}_addDimension(s){const i=this._dimensionsToResults;if(i.has(s))return;const o=this._computations,t=new p({dimension:s});o.add(t),i.set(s,t.result)}_removeDimension(s){const i=this._computations,o=this._dimensionsToResults,e=i.findIndex((i=>i.dimension===s)),n=i.removeAt(e);o.delete(s),t(n)}};s([n({readOnly:!0})],l.prototype,"type",void 0),s([n({constructOnly:!0,nonNullable:!0})],l.prototype,"analysis",void 0),s([n({type:Boolean})],l.prototype,"interactive",void 0),s([n({readOnly:!0})],l.prototype,"results",null),s([n()],l.prototype,"_analysisVisualization",void 0),s([n()],l.prototype,"_computations",void 0),s([n()],l.prototype,"_dimensionsToResults",void 0),l=s([r("esri.views.3d.analysis.DimensioningAnalysisView3D")],l);const c=l;export{c as default};
@@ -0,0 +1,4 @@
1
+ import "../../../interfaces";
2
+
3
+ import LengthDimensionResult = __esri.LengthDimensionResult;
4
+ export default LengthDimensionResult;
@@ -0,0 +1,5 @@
1
+ /*
2
+ All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
+ See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
+ */
5
+ import{_ as s}from"../../../chunks/tslib.es6.js";import o from"../../../core/Accessor.js";import{property as r}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as e}from"../../../core/accessorSupport/decorators/subclass.js";let t=class extends o{constructor(s){super(s)}};s([r({constructOnly:!0,nonNullable:!0})],t.prototype,"dimension",void 0),t=s([e("esri.views.3d.analysis.LengthDimensionResult")],t);const c=t;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.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import i from"../../../../analysis/LineOfSightAnalysisObserver.js";import r from"../../../../analysis/LineOfSightAnalysisTarget.js";import a from"../../../../core/Collection.js";import s from"../../../../core/Handles.js";import{handlesGroup as n,makeHandle as o}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{destroyMaybe as c,isSome as u,removeMaybe as h,isNone as p,applySome as d}from"../../../../core/maybe.js";import{watch as g,syncAndInitial as _,sync as m}from"../../../../core/reactiveUtils.js";import{property as v}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{create as b,fromPoints as f}from"../../../../geometry/support/lineSegment.js";import{getGraphicEffectiveElevationInfo as T,getConvertedElevation as M}from"../../../../support/elevationInfoUtils.js";import w from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightRayIntersector as C}from"./LineOfSightRayIntersector.js";import{LineOfSightToolConfiguration as L}from"./LineOfSightToolConfiguration.js";import{createSphereManipulator as k,createSphereManipulatorRenderObjects as S}from"./lineOfSightToolUtils.js";import{LaserlineVisualElement as V}from"../../interactive/visualElements/LaserlineVisualElement.js";import{IntersectorType as O}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{createManipulatorDragEventPipeline as E}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as I}from"../../../interactive/InteractiveToolBase.js";import{ManipulatorStateCustomFlags as j}from"../../../interactive/interfaces.js";import{createScreenPointFromEvent as P}from"../../../support/screenUtils.js";var F;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(F||(F={}));const R=a.ofType(r),H=l.getLogger("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool");let x=class extends I{constructor(e){super(e),this.preferManipulatorCursor=!0,this.configuration=new L,this.analysisView=null,this._someManipulatorsFocused=!1,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._analysisHandles=new s,this._handles=new s,this._manipulatorHandles=new s,this._targetTrackerManipulator=null}initialize(){this._intersector=new C({view:this.view}),this._handles.add(g((()=>this.state),(e=>{e===F.Created&&this.finishToolCreation()}),_)),this._observerManipulator=this._createObserverManipulator(),this._handles.add([g((()=>({...this.configuration.observer})),(()=>this._updateObserverManipulatorStyle()),m),g((()=>this.analysisView.elevationAlignedObserver),(e=>this._onObserverLocationChange(e)),_),g((()=>({...this.configuration.laserLine})),(()=>this._createVisualElements()),_),this._connectComputations()])}destroy(){this._handles=c(this._handles),this._manipulatorHandles=c(this._manipulatorHandles),this._analysisHandles=c(this._analysisHandles),this._observerManipulator=null,this._clearTargetTracker(),this._removeVisualElements(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?u(this._grabbedManipulator)?F.Created:F.Creating:u(this.analysis.observer)&&u(this.analysis.observer.position)?F.Created:F.Ready}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return!!u(this.analysisView)&&this.analysisView.updating}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&u(this.analysis.observer)&&u(this.analysis.observer.position)&&!this._someManipulatorsFocused}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"key-down":this._keyDownHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onActivate(){this._manipulatorFocusChanged()}onDeactivate(){this._clearTargetTracker(),this._manipulatorFocusChanged()}_connectComputations(){let e=null;return n([g((()=>this.analysisView.computations),(t=>{e=h(e),e=t.on("change",(e=>this._onComputationsCollectionChange(e))),t.forEach((e=>this._connectComputation(e)))}),_),o((()=>e=h(e)))])}_onComputationsCollectionChange(e){e.added.forEach((e=>this._connectComputation(e))),e.removed.forEach((e=>this._disconnectComputation(e)))}_connectComputation(e){if(this.destroyed)return void H.warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const i=this._createTargetManipulator(e.target);p(this._targetTrackerManipulator)&&i.metadata.target===this.analysisView.cursorTarget&&(this._targetTrackerManipulator=i,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([g((()=>this._getLineOfSightManipulatorStateDependencies(e)),(()=>this._updateManipulatorState(i,e)),_),g((()=>e.elevationAlignedTargetLocation),(e=>this._onTargetLocationChange(e,i)),_)],e)}_disconnectComputation(e){if(this.destroyed)return void H.warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);u(t)&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),u(this._targetTrackerManipulator)&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearTargetTracker(){u(this.analysisView.cursorTarget)&&(this.analysisView.cursorTarget=c(this.analysisView.cursorTarget))}_createManipulator(e,t,i){const r=k(this.view,e);return r.metadata=i,this._manipulatorHandles.add([t(r),r.events.on("focus-changed",(()=>this._manipulatorFocusChanged())),r.events.on("grab-changed",(e=>this._manipulatorGrabChanged(r,e))),r.events.on("immediate-click",(e=>e.stopPropagation()))],r),this.manipulators.add(r),r}_createTargetManipulator(e){const t=this.configuration,i={size:t.target.size,customColor1:t.target.visibleColor,customColor2:t.target.occludedColor,customColor3:t.target.undefinedColor,visible:!0},r={target:e,type:"target"},a=this._createManipulator(i,(e=>this._createTargetManipulatorDragPipeline(e)),r);return u(e.position)?a.elevationAlignedLocation=e.position:a.available=!1,a}_getTargetManipulator(e){let t=null;return this.manipulators.forEach((i=>{const r=i.manipulator;p(t)&&"target"===r.metadata.type&&r.metadata.target===e&&(t=r)})),t}_createObserverManipulator(){const e=this.configuration,t={size:e.observer.size,color:e.observer.color,visible:!0};return this._createManipulator(t,(e=>this._createObserverManipulatorDragPipeline(e)),{type:"observer",intersection:null})}_updateObserverManipulatorStyle(){const e=this._observerManipulator,t=this.configuration.observer,i={size:t.size,color:t.color,visible:e.available};e.renderObjects=S(i)}_manipulatorFocusChanged(){this._someManipulatorsFocused=this.manipulators.some((e=>e.manipulator.focused)),this._updateLaserLineRenderer()}_screenToIntersection(){return e=>{const t=this._intersector.getScreenPointIntersection(e.screenEnd);return p(t)?null:{...e,intersection:t}}}_createTargetManipulatorDragPipeline(e){return E(e,((t,i,r)=>{i.next(this._screenToIntersection()).next(this._updateTargetDragStep(e)).next((()=>this._updateLaserLineRenderer())),r.next(this._cancelTargetDragStep(e.metadata.target)).next((()=>this._updateLaserLineRenderer()))}))}_createObserverManipulatorDragPipeline(e){return E(e,((e,t,i)=>{t.next(this._screenToIntersection()).next(this._updateObserverDragStep()).next((()=>this._updateLaserLineRenderer())),i.next(this._cancelObserverDragStep()).next((()=>this._updateLaserLineRenderer()))}))}_updateObserverDragStep(){return e=>(u(e.intersection.point)?(p(this.analysis.observer)&&(this.analysis.observer=new i),this._updateFromIntersection(this.analysis.observer,e.intersection)):this.analysis.observer=null,e)}_cancelObserverDragStep(){const e=u(this.analysis.observer)&&u(this.analysis.observer.position)?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>{this._updateFromIntersection(e.metadata.target,t.intersection);const i=t.intersection.point;return u(i)&&(e.elevationAlignedLocation=i),t}}_cancelTargetDragStep(e){const t=d(e.position,(e=>e.clone()));return i=>(e.position=t,i)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}this._manipulatorFocusChanged()}_updateManipulatorState(e,t){const{isValid:i,isTargetVisible:r}=t.computationResult;e.state=i?r?j.Custom1:j.Custom2:j.Custom3}_getLineOfSightManipulatorStateDependencies(e){const{isValid:t,isTargetVisible:i}=e.computationResult;return{isValid:t,isTargetVisible:i}}_updateLaserLineRenderer(){if(p(this._laserlineVisualElement))return;const e=this._laserlineVisualElement,t=u(this._grabbedManipulator)?this._grabbedManipulator:this._shouldRenderTracker&&u(this.analysis.observer)&&u(this.analysis.observer.position)?this._targetTrackerManipulator:null;this.configuration.laserLine.enabled&&u(t)?(e.visible=!0,e.heightManifoldTarget=t.renderLocation,t!==this._observerManipulator?e.lineVerticalPlaneSegment=f(this._observerManipulator.renderLocation,t.renderLocation,D):e.lineVerticalPlaneSegment=null):(e.visible=!1,e.heightManifoldTarget=null,e.lineVerticalPlaneSegment=null)}_createVisualElements(){const e=this.configuration.laserLine;this._removeVisualElements(),this._laserlineVisualElement=new V({view:this.view,attached:!0,style:{glowColor:t.toUnitRGB(e.glowColor),glowWidth:e.glowWidth,innerColor:t.toUnitRGB(e.innerColor),innerWidth:e.innerWidth,globalAlpha:e.globalAlpha}})}_removeVisualElements(){u(this._laserlineVisualElement)&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_onObserverLocationChange(e){p(e)?this._observerManipulator.available=!1:(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e)}_onTargetLocationChange(e,t){u(e)?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e){const t=this._intersector.getScreenPointIntersection(e);if(!p(t)&&!p(t.point))if(u(this.analysis.observer)&&u(this.analysis.observer.position)){this._clearTargetTracker();const e=new r;this._updateFromIntersection(e,t),this.analysis.targets.add(e)}else{const e=new i;this._updateFromIntersection(e,t),this.analysis.observer=e}}_clickHandler(e){this.active&&(this._addPointFromClickEvent(P(e)),e.stopPropagation())}_doubleClickHandler(e){this.active&&(this.stop(),e.stopPropagation())}_keyDownHandler(e){this.active&&"Escape"===e.key&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker||p(this.analysis.observer)||p(this.analysis.observer.position))return;const t={x:e.x,y:e.y},i=this._intersector.getScreenPointIntersection(t);u(i)&&u(i.point)&&(p(this.analysisView.cursorTarget)&&(this.analysisView.cursorTarget=new r),this._updateFromIntersection(this.analysisView.cursorTarget,i),this._updateLaserLineRenderer())}_updateFromIntersection(e,t){if(p(t.point))return e.position=null,e.elevationInfo=null,void(e.excludedFeature=null);switch(t.type){case O.OBJECT:if(u(t.graphic)){const i=t.graphic,r=T(i);"on-the-ground"===r.mode&&(r.mode="relative-to-ground",r.offset=0),e.elevationInfo=new w(r),e.excludedFeature=i}else e.elevationInfo=null,e.excludedFeature=null;break;case O.TERRAIN:case O.I3S:e.elevationInfo=new w({mode:"on-the-ground"}),e.excludedFeature=null;break;default:e.elevationInfo=null,e.excludedFeature=null}const i=t.point.clone();i.z=M(this.view,i,{mode:"absolute-height",offset:0},e.elevationInfo),e.position=i}get testInfo(){return{laserLineVisualElement:this._laserlineVisualElement}}};e([v({constructOnly:!0})],x.prototype,"view",void 0),e([v({constructOnly:!0})],x.prototype,"analysis",void 0),e([v({readOnly:!0})],x.prototype,"state",null),e([v({readOnly:!0})],x.prototype,"cursor",null),e([v({readOnly:!0})],x.prototype,"preferManipulatorCursor",void 0),e([v({readOnly:!0})],x.prototype,"updating",null),e([v({type:L})],x.prototype,"configuration",void 0),e([v({constructOnly:!0})],x.prototype,"analysisView",void 0),e([v({readOnly:!0})],x.prototype,"_showTracker",null),e([v()],x.prototype,"_latestPointerMovePointerType",void 0),e([v()],x.prototype,"_shouldRenderTracker",null),e([v()],x.prototype,"_someManipulatorsFocused",void 0),e([v()],x.prototype,"_laserlineVisualElement",void 0),e([v()],x.prototype,"_grabbedManipulator",void 0),x=e([y("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool")],x);const D=b();export{R as LineOfSightTargetCollection,x as LineOfSightTool};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../Color.js";import i from"../../../../analysis/LineOfSightAnalysisObserver.js";import a from"../../../../analysis/LineOfSightAnalysisTarget.js";import r from"../../../../core/Collection.js";import s from"../../../../core/Handles.js";import{handlesGroup as n,makeHandle as o}from"../../../../core/handleUtils.js";import l from"../../../../core/Logger.js";import{destroyMaybe as c,isSome as u,removeMaybe as h,isNone as p,applySome as d}from"../../../../core/maybe.js";import{watch as g,syncAndInitial as _,sync as m}from"../../../../core/reactiveUtils.js";import{property as v}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as y}from"../../../../core/accessorSupport/decorators/subclass.js";import{create as b,fromPoints as f}from"../../../../geometry/support/lineSegment.js";import{getGraphicEffectiveElevationInfo as T,getConvertedElevation as M}from"../../../../support/elevationInfoUtils.js";import w from"../../../../symbols/support/ElevationInfo.js";import{LineOfSightRayIntersector as C}from"./LineOfSightRayIntersector.js";import{LineOfSightToolConfiguration as L}from"./LineOfSightToolConfiguration.js";import{createSphereManipulator as k,createSphereManipulatorRenderObjects as S}from"./lineOfSightToolUtils.js";import{LaserlineVisualElement as V}from"../../interactive/visualElements/LaserlineVisualElement.js";import{IntersectorType as O}from"../../webgl-engine/lib/IntersectorInterfaces.js";import{createManipulatorDragEventPipeline as E}from"../../../interactive/dragEventPipeline.js";import{InteractiveToolBase as I}from"../../../interactive/InteractiveToolBase.js";import{ManipulatorStateCustomFlags as D}from"../../../interactive/interfaces.js";import{createScreenPointFromEvent as j}from"../../../support/screenUtils.js";var P;!function(e){e.Ready="ready",e.Creating="creating",e.Created="created"}(P||(P={}));const F=r.ofType(a),R=l.getLogger("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool");let H=class extends I{constructor(e){super(e),this.preferManipulatorCursor=!0,this.configuration=new L,this.analysisViewData=null,this._someManipulatorsFocused=!1,this._laserlineVisualElement=null,this._grabbedManipulator=null,this._analysisHandles=new s,this._handles=new s,this._manipulatorHandles=new s,this._targetTrackerManipulator=null}initialize(){this._intersector=new C({view:this.view}),this._handles.add(g((()=>this.state),(e=>{e===P.Created&&this.finishToolCreation()}),_)),this._observerManipulator=this._createObserverManipulator(),this._handles.add([g((()=>({...this.configuration.observer})),(()=>this._updateObserverManipulatorStyle()),m),g((()=>this.analysisViewData.elevationAlignedObserver),(e=>this._onObserverLocationChange(e)),_),g((()=>({...this.configuration.laserLine})),(()=>this._createVisualElements()),_),this._connectComputations()])}destroy(){this._handles=c(this._handles),this._manipulatorHandles=c(this._manipulatorHandles),this._analysisHandles=c(this._analysisHandles),this._observerManipulator=null,this._clearTargetTracker(),this._removeVisualElements(),this._intersector=null,this._set("analysis",null)}get state(){return this.active?u(this._grabbedManipulator)?P.Created:P.Creating:u(this.analysis.observer)&&u(this.analysis.observer.position)?P.Created:P.Ready}get cursor(){return this.active&&this._showTracker?"crosshair":null}get updating(){return!!u(this.analysisViewData)&&this.analysisViewData.updating}get _showTracker(){return this.active&&"mouse"===this._latestPointerMovePointerType}get _shouldRenderTracker(){return this._showTracker&&u(this.analysis.observer)&&u(this.analysis.observer.position)&&!this._someManipulatorsFocused}continue(){this.view.activeTool=this}stop(){this.view.activeTool=null}onInputEvent(e){switch(e.type){case"immediate-double-click":this._doubleClickHandler(e);break;case"key-down":this._keyDownHandler(e);break;case"pointer-move":this._pointerMoveHandler(e)}}onInputEventAfter(e){if("immediate-click"===e.type)this._clickHandler(e)}onShow(){}onHide(){}onActivate(){this._manipulatorFocusChanged()}onDeactivate(){this._clearTargetTracker(),this._manipulatorFocusChanged()}_connectComputations(){let e=null;return n([g((()=>this.analysisViewData.computations),(t=>{e=h(e),e=t.on("change",(e=>this._onComputationsCollectionChange(e))),t.forEach((e=>this._connectComputation(e)))}),_),o((()=>e=h(e)))])}_onComputationsCollectionChange(e){e.added.forEach((e=>this._connectComputation(e))),e.removed.forEach((e=>this._disconnectComputation(e)))}_connectComputation(e){if(this.destroyed)return void R.warn("Attempting to connect an analysis to a destroyed LineOfSight tool. Ignoring.");const t=this._analysisHandles;if(t.has(e))return;const i=this._createTargetManipulator(e.target);p(this._targetTrackerManipulator)&&i.metadata.target===this.analysisViewData.cursorTarget&&(this._targetTrackerManipulator=i,this._targetTrackerManipulator.available=!1,this._targetTrackerManipulator.interactive=!1,this._updateLaserLineRenderer()),t.add([g((()=>this._getLineOfSightManipulatorStateDependencies(e)),(()=>this._updateManipulatorState(i,e)),_),g((()=>e.elevationAlignedTargetLocation),(e=>this._onTargetLocationChange(e,i)),_)],e)}_disconnectComputation(e){if(this.destroyed)return void R.warn("Attempting to disconnect an analysis from a destroyed LineOfSight tool. Ignoring.");this._analysisHandles.remove(e);const t=this._getTargetManipulator(e.target);u(t)&&(this.manipulators.remove(t),this._manipulatorHandles.remove(t),u(this._targetTrackerManipulator)&&this._targetTrackerManipulator===t&&(this._targetTrackerManipulator=null))}_clearTargetTracker(){u(this.analysisViewData.cursorTarget)&&(this.analysisViewData.cursorTarget=c(this.analysisViewData.cursorTarget))}_createManipulator(e,t,i){const a=k(this.view,e);return a.metadata=i,this._manipulatorHandles.add([t(a),a.events.on("focus-changed",(()=>this._manipulatorFocusChanged())),a.events.on("grab-changed",(e=>this._manipulatorGrabChanged(a,e))),a.events.on("immediate-click",(e=>e.stopPropagation()))],a),this.manipulators.add(a),a}_createTargetManipulator(e){const t=this.configuration,i={size:t.target.size,customColor1:t.target.visibleColor,customColor2:t.target.occludedColor,customColor3:t.target.undefinedColor,visible:!0},a={target:e,type:"target"},r=this._createManipulator(i,(e=>this._createTargetManipulatorDragPipeline(e)),a);return u(e.position)?r.elevationAlignedLocation=e.position:r.available=!1,r}_getTargetManipulator(e){let t=null;return this.manipulators.forEach((i=>{const a=i.manipulator;p(t)&&"target"===a.metadata.type&&a.metadata.target===e&&(t=a)})),t}_createObserverManipulator(){const e=this.configuration,t={size:e.observer.size,color:e.observer.color,visible:!0};return this._createManipulator(t,(e=>this._createObserverManipulatorDragPipeline(e)),{type:"observer",intersection:null})}_updateObserverManipulatorStyle(){const e=this._observerManipulator,t=this.configuration.observer,i={size:t.size,color:t.color,visible:e.available};e.renderObjects=S(i)}_manipulatorFocusChanged(){this._someManipulatorsFocused=this.manipulators.some((e=>e.manipulator.focused)),this._updateLaserLineRenderer()}_screenToIntersection(){return e=>{const t=this._intersector.getScreenPointIntersection(e.screenEnd);return p(t)?null:{...e,intersection:t}}}_createTargetManipulatorDragPipeline(e){return E(e,((t,i,a)=>{i.next(this._screenToIntersection()).next(this._updateTargetDragStep(e)).next((()=>this._updateLaserLineRenderer())),a.next(this._cancelTargetDragStep(e.metadata.target)).next((()=>this._updateLaserLineRenderer()))}))}_createObserverManipulatorDragPipeline(e){return E(e,((e,t,i)=>{t.next(this._screenToIntersection()).next(this._updateObserverDragStep()).next((()=>this._updateLaserLineRenderer())),i.next(this._cancelObserverDragStep()).next((()=>this._updateLaserLineRenderer()))}))}_updateObserverDragStep(){return e=>(u(e.intersection.point)?(p(this.analysis.observer)&&(this.analysis.observer=new i),this._updateFromIntersection(this.analysis.observer,e.intersection)):this.analysis.observer=null,e)}_cancelObserverDragStep(){const e=u(this.analysis.observer)&&u(this.analysis.observer.position)?this.analysis.observer.clone():null;return t=>(this.analysis.observer=e,t)}_updateTargetDragStep(e){return t=>{this._updateFromIntersection(e.metadata.target,t.intersection);const i=t.intersection.point;return u(i)&&(e.elevationAlignedLocation=i),t}}_cancelTargetDragStep(e){const t=d(e.position,(e=>e.clone()));return i=>(e.position=t,i)}_manipulatorGrabChanged(e,t){switch(t.action){case"start":this._grabbedManipulator=e;break;case"end":this._grabbedManipulator===e&&(this._grabbedManipulator=null)}this._manipulatorFocusChanged()}_updateManipulatorState(e,t){const{isValid:i,isTargetVisible:a}=t.computationResult;e.state=i?a?D.Custom1:D.Custom2:D.Custom3}_getLineOfSightManipulatorStateDependencies(e){const{isValid:t,isTargetVisible:i}=e.computationResult;return{isValid:t,isTargetVisible:i}}_updateLaserLineRenderer(){if(p(this._laserlineVisualElement))return;const e=this._laserlineVisualElement,t=u(this._grabbedManipulator)?this._grabbedManipulator:this._shouldRenderTracker&&u(this.analysis.observer)&&u(this.analysis.observer.position)?this._targetTrackerManipulator:null;this.configuration.laserLine.enabled&&u(t)?(e.visible=!0,e.heightManifoldTarget=t.renderLocation,t!==this._observerManipulator?e.lineVerticalPlaneSegment=f(this._observerManipulator.renderLocation,t.renderLocation,x):e.lineVerticalPlaneSegment=null):(e.visible=!1,e.heightManifoldTarget=null,e.lineVerticalPlaneSegment=null)}_createVisualElements(){const e=this.configuration.laserLine;this._removeVisualElements(),this._laserlineVisualElement=new V({view:this.view,attached:!0,style:{glowColor:t.toUnitRGB(e.glowColor),glowWidth:e.glowWidth,innerColor:t.toUnitRGB(e.innerColor),innerWidth:e.innerWidth,globalAlpha:e.globalAlpha}})}_removeVisualElements(){u(this._laserlineVisualElement)&&(this._laserlineVisualElement.destroy(),this._laserlineVisualElement=null)}_onObserverLocationChange(e){p(e)?this._observerManipulator.available=!1:(this._observerManipulator.metadata.intersection=null,this._observerManipulator.available=!0,this._observerManipulator.elevationAlignedLocation=e)}_onTargetLocationChange(e,t){u(e)?(t.elevationAlignedLocation=e,t!==this._targetTrackerManipulator&&(t.available=!0)):t.available=!1}_addPointFromClickEvent(e){const t=this._intersector.getScreenPointIntersection(e);if(!p(t)&&!p(t.point))if(u(this.analysis.observer)&&u(this.analysis.observer.position)){this._clearTargetTracker();const e=new a;this._updateFromIntersection(e,t),this.analysis.targets.add(e)}else{const e=new i;this._updateFromIntersection(e,t),this.analysis.observer=e}}_clickHandler(e){this.active&&(this._addPointFromClickEvent(j(e)),e.stopPropagation())}_doubleClickHandler(e){this.active&&(this.stop(),e.stopPropagation())}_keyDownHandler(e){this.active&&"Escape"===e.key&&(this.stop(),e.stopPropagation())}_pointerMoveHandler(e){if(this._latestPointerMovePointerType=e.pointerType,this._updateLaserLineRenderer(),!this._showTracker||p(this.analysis.observer)||p(this.analysis.observer.position))return;const t={x:e.x,y:e.y},i=this._intersector.getScreenPointIntersection(t);u(i)&&u(i.point)&&(p(this.analysisViewData.cursorTarget)&&(this.analysisViewData.cursorTarget=new a),this._updateFromIntersection(this.analysisViewData.cursorTarget,i),this._updateLaserLineRenderer())}_updateFromIntersection(e,t){if(p(t.point))return e.position=null,e.elevationInfo=null,void(e.excludedFeature=null);switch(t.type){case O.OBJECT:if(u(t.graphic)){const i=t.graphic,a=T(i);"on-the-ground"===a.mode&&(a.mode="relative-to-ground",a.offset=0),e.elevationInfo=new w(a),e.excludedFeature=i}else e.elevationInfo=null,e.excludedFeature=null;break;case O.TERRAIN:case O.I3S:e.elevationInfo=new w({mode:"on-the-ground"}),e.excludedFeature=null;break;default:e.elevationInfo=null,e.excludedFeature=null}const i=t.point.clone();i.z=M(this.view,i,{mode:"absolute-height",offset:0},e.elevationInfo),e.position=i}get testInfo(){return{laserLineVisualElement:this._laserlineVisualElement}}};e([v({constructOnly:!0})],H.prototype,"view",void 0),e([v({constructOnly:!0})],H.prototype,"analysis",void 0),e([v({readOnly:!0})],H.prototype,"state",null),e([v({readOnly:!0})],H.prototype,"cursor",null),e([v({readOnly:!0})],H.prototype,"preferManipulatorCursor",void 0),e([v({readOnly:!0})],H.prototype,"updating",null),e([v({type:L})],H.prototype,"configuration",void 0),e([v({constructOnly:!0})],H.prototype,"analysisViewData",void 0),e([v({readOnly:!0})],H.prototype,"_showTracker",null),e([v()],H.prototype,"_latestPointerMovePointerType",void 0),e([v()],H.prototype,"_shouldRenderTracker",null),e([v()],H.prototype,"_someManipulatorsFocused",void 0),e([v()],H.prototype,"_laserlineVisualElement",void 0),e([v()],H.prototype,"_grabbedManipulator",void 0),H=e([y("esri.views.3d.interactive.analysisTools.lineOfSight.LineOfSightTool")],H);const x=b();export{F as LineOfSightTargetCollection,H as LineOfSightTool};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as t}from"../../../chunks/tslib.es6.js";import i from"../../../core/Accessor.js";import o from"../../../core/Collection.js";import s from"../../../core/Evented.js";import{HandleOwnerMixin as e}from"../../../core/HandleOwner.js";import{destroyMaybe as r,isSome as n,applySome as a,isNone as l}from"../../../core/maybe.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as h}from"../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../chunks/vec3f64.js";import{AnalysisView3D as c}from"./AnalysisView3D.js";import{LineOfSightConfiguration as u}from"./LineOfSight/LineOfSightConfiguration.js";import{LineOfSightController as m}from"./LineOfSight/LineOfSightController.js";import{LineOfSightTool as v}from"./LineOfSight/LineOfSightTool.js";import{LineOfSightVisualization as d}from"./LineOfSight/LineOfSightVisualization.js";let g=class extends(c(e(s.EventedMixin(i)))){constructor(t){super(t),this.type="line-of-sight-view-3d",this.tool=null,this.computations=new o,this.elevationAlignedObserver=null,this.configuration=new u,this.observerEngineLocation=y(),this.cursorTarget=null}initialize(){const t=this.view,i=this.analysis;this._analysisController=new m({analysis:i,analysisViewData:this,view:t}),this._analysisVisualization=new d({analysis:i,analysisViewData:this,view:t}),this.handles.add([this._analysisController.on("result-changed",(t=>{t.target!==this.cursorTarget&&this.emit("result-changed",t)}))])}destroy(){this._removeTool(),this._analysisController=r(this._analysisController),this._analysisVisualization=r(this._analysisVisualization)}get results(){return this.computations.map((t=>t.result))}get priority(){return this._analysisController.priority}set priority(t){this._analysisController.priority=t}get updating(){return n(this._analysisController)&&this._analysisController.updating}set interactive(t){t!==this._get("interactive")&&(this._set("interactive",t),t?this._createTool():this._removeTool())}getResultForTarget(t){const i=this.computations.find((i=>i.target===t));return a(i,(t=>t.result))}get testInfo(){return{visualization:this._analysisVisualization,controller:this._analysisController}}_createTool(){this._removeTool();const t=new v({view:this.view,analysis:this.analysis,analysisView:this,visible:this.visible});this.tool=t,this.view.tools.add(t)}_removeTool(){const t=this.tool;l(t)||(this.view.tools.remove(t),this.tool=null)}};t([p({readOnly:!0})],g.prototype,"type",void 0),t([p({constructOnly:!0,nonNullable:!0})],g.prototype,"analysis",void 0),t([p()],g.prototype,"tool",void 0),t([p({readOnly:!0})],g.prototype,"results",null),t([p()],g.prototype,"priority",null),t([p()],g.prototype,"computations",void 0),t([p()],g.prototype,"elevationAlignedObserver",void 0),t([p()],g.prototype,"configuration",void 0),t([p()],g.prototype,"observerEngineLocation",void 0),t([p()],g.prototype,"cursorTarget",void 0),t([p()],g.prototype,"updating",null),t([p({type:Boolean,value:!1})],g.prototype,"interactive",null),t([p()],g.prototype,"_analysisController",void 0),t([p()],g.prototype,"_analysisVisualization",void 0),g=t([h("esri.views.3d.analysis.LineOfSightAnalysisView3D")],g);const f=g;export{f as default};
5
+ import{_ as t}from"../../../chunks/tslib.es6.js";import i from"../../../core/Accessor.js";import o from"../../../core/Collection.js";import s from"../../../core/Evented.js";import{HandleOwnerMixin as e}from"../../../core/HandleOwner.js";import{destroyMaybe as r,isSome as n,applySome as a,isNone as l}from"../../../core/maybe.js";import{property as p}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/arrayUtils.js";import"../../../core/has.js";import"../../../core/accessorSupport/ensureType.js";import{subclass as h}from"../../../core/accessorSupport/decorators/subclass.js";import{c as y}from"../../../chunks/vec3f64.js";import{AnalysisView3D as c}from"./AnalysisView3D.js";import{LineOfSightConfiguration as u}from"./LineOfSight/LineOfSightConfiguration.js";import{LineOfSightController as m}from"./LineOfSight/LineOfSightController.js";import{LineOfSightTool as v}from"./LineOfSight/LineOfSightTool.js";import{LineOfSightVisualization as d}from"./LineOfSight/LineOfSightVisualization.js";let g=class extends(c(e(s.EventedMixin(i)))){constructor(t){super(t),this.type="line-of-sight-view-3d",this.tool=null,this.computations=new o,this.elevationAlignedObserver=null,this.configuration=new u,this.observerEngineLocation=y(),this.cursorTarget=null}initialize(){const t=this.view,i=this.analysis;this._analysisController=new m({analysis:i,analysisViewData:this,view:t}),this._analysisVisualization=new d({analysis:i,analysisViewData:this,view:t}),this.handles.add([this._analysisController.on("result-changed",(t=>{t.target!==this.cursorTarget&&this.emit("result-changed",t)}))])}destroy(){this._removeTool(),this._analysisController=r(this._analysisController),this._analysisVisualization=r(this._analysisVisualization)}get results(){return this.computations.map((t=>t.result))}get priority(){return this._analysisController.priority}set priority(t){this._analysisController.priority=t}get updating(){return n(this._analysisController)&&this._analysisController.updating}set interactive(t){t!==this._get("interactive")&&(this._set("interactive",t),t?this._createTool():this._removeTool())}getResultForTarget(t){const i=this.computations.find((i=>i.target===t));return a(i,(t=>t.result))}get testInfo(){return{visualization:this._analysisVisualization,controller:this._analysisController}}_createTool(){this._removeTool();const t=new v({view:this.view,analysis:this.analysis,analysisViewData:this,visible:this.visible});this.tool=t,this.view.tools.add(t)}_removeTool(){const t=this.tool;l(t)||(this.view.tools.remove(t),this.tool=null)}};t([p({readOnly:!0})],g.prototype,"type",void 0),t([p({constructOnly:!0,nonNullable:!0})],g.prototype,"analysis",void 0),t([p()],g.prototype,"tool",void 0),t([p({readOnly:!0})],g.prototype,"results",null),t([p()],g.prototype,"priority",null),t([p()],g.prototype,"computations",void 0),t([p()],g.prototype,"elevationAlignedObserver",void 0),t([p()],g.prototype,"configuration",void 0),t([p()],g.prototype,"observerEngineLocation",void 0),t([p()],g.prototype,"cursorTarget",void 0),t([p()],g.prototype,"updating",null),t([p({type:Boolean,value:!1})],g.prototype,"interactive",null),t([p()],g.prototype,"_analysisController",void 0),t([p()],g.prototype,"_analysisVisualization",void 0),g=t([h("esri.views.3d.analysis.LineOfSightAnalysisView3D")],g);const f=g;export{f 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.24/esri/copyright.txt for details.
4
4
  */
5
- import{_ as e}from"../../../../chunks/tslib.es6.js";import i from"../../../../analysis/SlicePlane.js";import t from"../../../../core/Accessor.js";import a from"../../../../core/Handles.js";import s from"../../../../core/Logger.js";import{isNone as l,isSome as n}from"../../../../core/maybe.js";import{watch as r,whenOnce as o}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as h}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as d}from"../../../../chunks/boundedPlane.js";import u from"../../../../layers/Layer.js";import y from"../../../../layers/buildingSublayers/BuildingComponentSublayer.js";import{isAlwaysDrapedLayer as p,isIBuildingSceneLayerView3D as w,projectAndElevationAlignShape as v,projectedShapeToPlane as f,planeToShape as m}from"./sliceToolUtils.js";import{logFailedGeometryProjectionError as _}from"../support/projectionUtils.js";const V=s.getLogger("esri.views.3d.analysis.Slice.SliceController");let g=class extends t{constructor(e){super(e),this._handles=new a,this._internalChange=!1,this._currentSlicePlane=null,this.state="ready"}get ready(){return"ready"===this.state}initialize(){this._handles.add(this.analysis.excludedLayers.on("before-add",(e=>{const i=e.item;null!=i&&(i instanceof u||i instanceof y)?i instanceof u&&p(i)?(V.error("excludedLayers",`Layer '${i.title}, id:${i.id}' of type '${i.type}' can not be individually excluded from slicing. Use 'excludeGroundSurface' instead.`),e.preventDefault()):this.analysis.excludedLayers.includes(i)&&e.preventDefault():(V.error("excludedLayers","Invalid layer type, layer must derive from Layer or BuildingComponentSublayer"),e.preventDefault())}))),C(this.view,this),this._handles.add([r((()=>this.analysisViewData.plane),(()=>{this._internalChange||this._updateSlicePlaneFromBoundedPlane(),this._updateLayerViews()}),{sync:!0}),r((()=>this.analysis.excludeGroundSurface),(()=>this._updateLayerViews()),{sync:!0}),this.analysis.excludedLayers.on("change",(()=>this._updateLayerViews())),r((()=>[this.analysisViewData.active,this.analysisViewData.visible]),(()=>{this._updateActiveController(),this._updateViewSlicePlane()}),{sync:!0}),r((()=>this._allLayerAndSubLayerViews),(()=>this._updateLayerViews()))]),this._handles.add([r((()=>this.analysis.shape),(()=>{this._internalChange||(this._updateBoundedPlaneFromSlicePlane(),this._updateViewSlicePlane())}),{sync:!0})],"analysis"),this._set("state","ready"),this._updateActiveController(),this._updateBoundedPlaneFromSlicePlane(),this._updateViewSlicePlane()}destroy(){"destroyed"!==this.state&&(this.analysisViewData.active&&(this.analysisViewData.active=!1,this.view.slicePlane=null),D(this.view,this),this._handles.destroy(),this.set("view",null),this._set("state","destroyed"))}async whenReady(){return await o((()=>this.ready)),this}get _allLayerAndSubLayerViews(){const e=this.view.allLayerViews.items;return e.concat(e.filter(w).flatMap((({sublayerViews:e})=>e.items)))}_updateBoundedPlaneFromSlicePlane(){const e=this.analysis.shape,i=this._currentSlicePlane;if(l(i)&&l(e)||n(i)&&n(e)&&e.equals(i))return;let t=null,a=null;if(n(e)&&n(e.position)){const i=e.position.spatialReference,s=v(e,this.view);l(s)&&_(this.analysis,i,V),t=f(s,this.view,{tiltEnabled:this.analysis.tiltEnabled},d()),n(t)&&(a={heading:e.heading,tilt:e.tilt,position:e.position,width:e.width,height:e.height})}this._currentSlicePlane=a,this._internalChange=!0,this.analysisViewData.plane=t,this._internalChange=!1}_updateSlicePlaneFromBoundedPlane(){const e=this.analysisViewData.plane,t=m(e,this.view,this.view.spatialReference,new i);let a=null;n(t)&&(a={heading:t.heading,tilt:t.tilt,position:t.position,width:t.width,height:t.height}),this._currentSlicePlane=a,this._internalChange=!0,this.analysis.shape=t,this._internalChange=!1,this._updateViewSlicePlane()}_updateActiveController(){if(b)return;const e=L(this.view);if(this.analysisViewData.active)n(e.activeController)&&e.activeController!==this?(b=!0,e.activeController.analysisViewData.active=!1,b=!1):n(e.activeController)&&e.activeController,this._updateLayerViews(),e.activeController=this;else{if(n(e.activeController)&&e.activeController!==this)return;n(e.activeController)&&e.activeController===this&&(e.activeController=null,this._updateLayerViews())}}_updateViewSlicePlane(){"ready"===this.state&&P(this.view)}_updateLayerViews(){const e=n(this.analysisViewData.plane)&&this.analysisViewData.visible&&this.analysisViewData.active,i=[],t=e=>{"layers"in e?e.layers.forEach(t):i.push(e)};this.analysis.excludedLayers.forEach(t),this.view.allLayerViews.forEach((t=>{t.destroyed||("slicePlaneEnabled"in t&&(t.slicePlaneEnabled=e&&!i.includes(t.layer)),"sublayerViews"in t&&t.sublayerViews.forEach((t=>{t.slicePlaneEnabled=e&&!i.includes(t.sublayer)})))})),null!=this.view.basemapTerrain&&(this.view.basemapTerrain.slicePlaneEnabled=e&&!this.analysis.excludeGroundSurface)}};e([c({readOnly:!0})],g.prototype,"state",void 0),e([c()],g.prototype,"view",void 0),e([c()],g.prototype,"analysis",void 0),e([c()],g.prototype,"analysisViewData",void 0),e([c()],g.prototype,"ready",null),e([c()],g.prototype,"_allLayerAndSubLayerViews",null),g=e([h("esri.views.3d.analysis.Slice.SliceController")],g);const S=new Map;let b=!1;function P(e){const i=L(e).activeController;n(i)&&n(i.analysisViewData.plane)&&i.analysisViewData.visible?e.slicePlane=i.analysisViewData.plane:e.slicePlane=null}function C(e,i){S.has(e)||S.set(e,{all:[],activeController:null}),S.get(e).all.push(i)}function L(e){return S.get(e)}function D(e,i){if(!S.has(e))throw new Error("view expected in global slice register");const t=S.get(e),a=t.all.lastIndexOf(i);if(-1===a)throw new Error("controller expected in global slice register");t.all.splice(a,1),0===t.all.length&&S.delete(e)}export{g as SliceController};
5
+ import{_ as e}from"../../../../chunks/tslib.es6.js";import i from"../../../../analysis/SlicePlane.js";import t from"../../../../core/Accessor.js";import a from"../../../../core/Handles.js";import s from"../../../../core/Logger.js";import{isNone as l,isSome as r}from"../../../../core/maybe.js";import{watch as n,whenOnce as o}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as h}from"../../../../core/accessorSupport/decorators/subclass.js";import{c as d}from"../../../../chunks/boundedPlane.js";import u from"../../../../layers/Layer.js";import y from"../../../../layers/buildingSublayers/BuildingComponentSublayer.js";import{isIBuildingSceneLayerView3D as p,projectAndElevationAlignShape as w,projectedShapeToPlane as v,planeToShape as m}from"./sliceToolUtils.js";import{logFailedGeometryProjectionError as f}from"../support/projectionUtils.js";import{isTerrainSurfaceLayer as _}from"../../terrain/terrainUtils.js";const V=s.getLogger("esri.views.3d.analysis.Slice.SliceController");let g=class extends t{constructor(e){super(e),this._handles=new a,this._internalChange=!1,this._currentSlicePlane=null,this.state="ready"}get ready(){return"ready"===this.state}initialize(){this._handles.add(this.analysis.excludedLayers.on("before-add",(e=>{const i=e.item;null!=i&&(i instanceof u||i instanceof y)?i instanceof u&&_(i)?(V.error("excludedLayers",`Layer '${i.title}, id:${i.id}' of type '${i.type}' can not be individually excluded from slicing. Use 'excludeGroundSurface' instead.`),e.preventDefault()):this.analysis.excludedLayers.includes(i)&&e.preventDefault():(V.error("excludedLayers","Invalid layer type, layer must derive from Layer or BuildingComponentSublayer"),e.preventDefault())}))),C(this.view,this),this._handles.add([n((()=>this.analysisViewData.plane),(()=>{this._internalChange||this._updateSlicePlaneFromBoundedPlane(),this._updateLayerViews()}),{sync:!0}),n((()=>this.analysis.excludeGroundSurface),(()=>this._updateLayerViews()),{sync:!0}),this.analysis.excludedLayers.on("change",(()=>this._updateLayerViews())),n((()=>[this.analysisViewData.active,this.analysisViewData.visible]),(()=>{this._updateActiveController(),this._updateViewSlicePlane()}),{sync:!0}),n((()=>this._allLayerAndSubLayerViews),(()=>this._updateLayerViews()))]),this._handles.add([n((()=>this.analysis.shape),(()=>{this._internalChange||(this._updateBoundedPlaneFromSlicePlane(),this._updateViewSlicePlane())}),{sync:!0})],"analysis"),this._set("state","ready"),this._updateActiveController(),this._updateBoundedPlaneFromSlicePlane(),this._updateViewSlicePlane()}destroy(){"destroyed"!==this.state&&(this.analysisViewData.active&&(this.analysisViewData.active=!1,this.view.slicePlane=null),j(this.view,this),this._handles.destroy(),this.set("view",null),this._set("state","destroyed"))}async whenReady(){return await o((()=>this.ready)),this}get _allLayerAndSubLayerViews(){const e=this.view.allLayerViews.items;return e.concat(e.filter(p).flatMap((({sublayerViews:e})=>e.items)))}_updateBoundedPlaneFromSlicePlane(){const e=this.analysis.shape,i=this._currentSlicePlane;if(l(i)&&l(e)||r(i)&&r(e)&&e.equals(i))return;let t=null,a=null;if(r(e)&&r(e.position)){const i=e.position.spatialReference,s=w(e,this.view);l(s)&&f(this.analysis,i,V),t=v(s,this.view,{tiltEnabled:this.analysis.tiltEnabled},d()),r(t)&&(a={heading:e.heading,tilt:e.tilt,position:e.position,width:e.width,height:e.height})}this._currentSlicePlane=a,this._internalChange=!0,this.analysisViewData.plane=t,this._internalChange=!1}_updateSlicePlaneFromBoundedPlane(){const e=this.analysisViewData.plane,t=m(e,this.view,this.view.spatialReference,new i);let a=null;r(t)&&(a={heading:t.heading,tilt:t.tilt,position:t.position,width:t.width,height:t.height}),this._currentSlicePlane=a,this._internalChange=!0,this.analysis.shape=t,this._internalChange=!1,this._updateViewSlicePlane()}_updateActiveController(){if(b)return;const e=L(this.view);if(this.analysisViewData.active)r(e.activeController)&&e.activeController!==this?(b=!0,e.activeController.analysisViewData.active=!1,b=!1):r(e.activeController)&&e.activeController,this._updateLayerViews(),e.activeController=this;else{if(r(e.activeController)&&e.activeController!==this)return;r(e.activeController)&&e.activeController===this&&(e.activeController=null,this._updateLayerViews())}}_updateViewSlicePlane(){"ready"===this.state&&P(this.view)}_updateLayerViews(){const e=r(this.analysisViewData.plane)&&this.analysisViewData.visible&&this.analysisViewData.active,i=[],t=e=>{"layers"in e?e.layers.forEach(t):i.push(e)};this.analysis.excludedLayers.forEach(t),this.view.allLayerViews.forEach((t=>{t.destroyed||("slicePlaneEnabled"in t&&(t.slicePlaneEnabled=e&&!i.includes(t.layer)),"sublayerViews"in t&&t.sublayerViews.forEach((t=>{t.slicePlaneEnabled=e&&!i.includes(t.sublayer)})))})),null!=this.view.basemapTerrain&&(this.view.basemapTerrain.slicePlaneEnabled=e&&!this.analysis.excludeGroundSurface)}};e([c({readOnly:!0})],g.prototype,"state",void 0),e([c()],g.prototype,"view",void 0),e([c()],g.prototype,"analysis",void 0),e([c()],g.prototype,"analysisViewData",void 0),e([c()],g.prototype,"ready",null),e([c()],g.prototype,"_allLayerAndSubLayerViews",null),g=e([h("esri.views.3d.analysis.Slice.SliceController")],g);const S=new Map;let b=!1;function P(e){const i=L(e).activeController;r(i)&&r(i.analysisViewData.plane)&&i.analysisViewData.visible?e.slicePlane=i.analysisViewData.plane:e.slicePlane=null}function C(e,i){S.has(e)||S.set(e,{all:[],activeController:null}),S.get(e).all.push(i)}function L(e){return S.get(e)}function j(e,i){if(!S.has(e))throw new Error("view expected in global slice register");const t=S.get(e),a=t.all.lastIndexOf(i);if(-1===a)throw new Error("controller expected in global slice register");t.all.splice(a,1),0===t.all.length&&S.delete(e)}export{g as SliceController};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import"../../../../geometry.js";import e from"../../../../analysis/SlicePlane.js";import{neverReached as t}from"../../../../core/compilerUtils.js";import r from"../../../../core/Logger.js";import{rad2deg as i,deg2rad as s}from"../../../../core/mathUtils.js";import{isNone as n,isSome as o}from"../../../../core/maybe.js";import{castRenderScreenPointArray3 as a}from"../../../../core/screenUtils.js";import{g as c,b as l,h as u,m as d,r as m,i as p,j as g,k as f}from"../../../../chunks/mat4.js";import{c as b}from"../../../../chunks/mat4f64.js";import{r as h}from"../../../../chunks/quat.js";import{g as T,c as y,e as O,f as w,n as I,a as E,l as R,b as j,p as A,s as M,v as L}from"../../../../chunks/vec3.js";import{a as P,c as k,f as v}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as C}from"../../../../geometry/projection.js";import{Axis as _}from"../../../../geometry/support/Axis.js";import{r as N,f as U,i as V,c as S,n as x,u as G}from"../../../../chunks/boundedPlane.js";import{fromPositionAndNormal as F,fromVectorsAndPoint as H}from"../../../../geometry/support/plane.js";import{create as D}from"../../../../geometry/support/ray.js";import{angleAroundAxis as z}from"../../../../geometry/support/vector.js";import{sv3d as X,sm4d as Y,sq4d as Z}from"../../../../geometry/support/vectorStacks.js";import{SHIFT_RESTART_TIP_RADIUS as B,RESIZE_HANDLE_EDGE_PADDING_FRAC as W,VERTICAL_DOT_THRESHOLD as q,SMALL_ANGLE_DOT_THRESHOLD as $,PLANE_MIN_BASIS_SCREEN_LEN2 as J,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as K,SHIFT_RESTART_OFFSET_DISTANCE as Q,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as ee,SHIFT_RESTART_ARROW_TIP_COLOR as te,SHIFT_RESTART_ARROW_CAP_COLOR as re,SHIFT_RESTART_TUBE_COLOR as ie,SHIFT_RESTART_OUTLINE_COLOR as se,SHIFT_RESTART_CALLOUT_COLOR as ne,ROTATE_HEADING_OFFSET_DISTANCE as oe,ROTATE_HEADING_DISC_RADIUS as ae,ROTATE_HEADING_CALLOUT_COLOR as ce,PLANE_OUTLINE_COLOR as le,PLANE_OUTLINE_WIDTH as ue,PLANE_BACKGROUND_COLOR as de,GRID_COLOR as me,RESIZE_HANDLE_CORNER_INPUT_RADIUS as pe,RESIZE_HANDLE_EDGE_INPUT_RADIUS as ge,ROTATE_HEADING_TIP_LENGTH as fe,ROTATE_HEADING_DISC_RADIUS_FOCUS_MULTIPLIER as be,RESIZE_HANDLE_COLOR as he,DISPLAY_FOCUS_MULTIPLIER as Te,RESIZE_HANDLE_EDGE_WIDTH as ye,SHIFT_RESTART_ARROW_LENGTH as Oe,SHIFT_RESTART_TUBE_RADIUS as we,SHIFT_RESTART_TIP_LENGTH as Ie,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as Ee,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as Re,RESIZE_HANDLE_CORNER_WIDTH as je}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as Ae}from"../support/projectionUtils.js";import{Manipulator3D as Me}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as Le}from"../../interactive/manipulatorUtils.js";import{LineVisualElement as Pe}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as ke}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as ve}from"../../support/RenderCoordsHelper.js";import{fromRender as Ce}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as _e}from"../../webgl-engine/lib/basicInterfaces.js";import{Geometry as Ne}from"../../webgl-engine/lib/Geometry.js";import Ue from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as Ve}from"../../webgl-engine/lib/Material.js";import{VertexAttribute as Se}from"../../webgl-engine/lib/VertexAttribute.js";import{ColorMaterial as xe}from"../../webgl-engine/materials/ColorMaterial.js";import{ImageMaterial as Ge}from"../../webgl-engine/materials/ImageMaterial.js";import{NativeLineMaterial as Fe}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as He}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as De,ManipulatorStateFlags as ze}from"../../../interactive/interfaces.js";import Xe from"../../../../geometry/Extent.js";const Ye=r.getLogger("esri.views.3d.interactive.analysisTools.slice.sliceToolUtils");function Ze(e,t,r,i,s,n,o,a){return Be(t,o.worldUpAtPosition(e,X.get()),s,n,a.basis1,a.basis2),T(a.basis1,a.basis1,r),T(a.basis2,a.basis2,i),y(a.origin,e),H(a.basis2,a.basis1,a.origin,a.plane),a}function Be(e,t,r,i,s,n){const o=O(e,t),a=X.get(),c=X.get();switch(i===vt.HORIZONTAL_OR_VERTICAL?Math.abs(o)>q?vt.HORIZONTAL:vt.VERTICAL:i){case vt.VERTICAL:{const i=Math.abs(o)<=$?e:r.viewUp;w(a,i,t),y(c,t);break}case vt.HORIZONTAL:w(a,r.viewUp,t),w(c,t,a);break;case vt.TILTED:{const i=Math.abs(o)<=$?t:r.viewUp;w(a,i,e),w(c,e,a);break}}const l=w(X.get(),a,c);O(l,r.viewForward)>0&&T(c,c,-1),I(s,a),I(n,c)}function We(e,t,r){const i=t.worldUpAtPosition(e.origin,X.get()),s=e.basis1,n=It(e,i),o=Math.round(n/Nt)*Nt;return N(e,o-n,s,r)}function qe(e,t,r,i,s,n){const o=y(X.get(),s.origin);E(o,o,T(X.get(),s.basis1,e.direction[0]<0?1:-1)),E(o,o,T(X.get(),s.basis2,e.direction[1]<0?1:-1));const a=R(s.basis1),c=R(s.basis2),l=j(X.get(),r,o),u=j(X.get(),t,o);let d=0,m=0;if(ut(e)){const t=lt(s),r=lt(n);d=a-.5*e.direction[0]*O(s.basis1,u)/a,m=c-.5*e.direction[1]*O(s.basis2,u)/c;const i=r/t;d*=i,m*=i}const p=d+.5*e.direction[0]*O(s.basis1,l)/a,g=m+.5*e.direction[1]*O(s.basis2,l)/c,f=T(X.get(),s.basis1,p/a),b=T(X.get(),s.basis2,g/c);(p<=0||at(n.origin,f,i)<=J)&&y(f,n.basis1),(g<=0||at(n.origin,b,i)<=J)&&y(b,n.basis2);const h=y(X.get(),o);return E(h,h,T(X.get(),f,e.direction[0]<0?-1:1)),E(h,h,T(X.get(),b,e.direction[1]<0?-1:1)),U(h,f,b,n)}function $e(e,t){return K*Math.min(t.width,t.height)*t.computeRenderPixelSizeAt(e)}function Je(e,t,r,i){const s=w(X.get(),t,r);return w(s,s,t),F(e,s,i)}function Ke(e,t){return Le(e.basis1,e.basis2,e.origin,t)}function Qe(e,t,r,i){const s=t.worldUpAtPosition(e.origin,X.get()),n=X.get();switch(r){case kt.HEADING:y(n,s);break;case kt.TILT:y(n,e.basis1)}return F(e.origin,n,i)}function et(e,t,r,i){const s=ot(r,nt.NEGATIVE_X),n=Y.get();c(n,t,s.edge*Math.PI/2);const o=I(X.get(),s.basis);let l=T(X.get(),o,s.direction*i.computeScreenPixelSizeAt(s.position)*Q);E(l,l,s.position);const u=i.projectToRenderScreen(l,a(X.get())),d=tt(i,u);Ce(i,u,_t),I(_t.direction,_t.direction);const m=X.get();!d&&V(r,_t,m)&&(l=m),n[12]=0,n[13]=0,n[14]=0,e.modelTransform=n,e.renderLocation=P(l),d?e.state|=Ct:e.state&=~Ct}function tt(e,t){const[r,i,s,n]=e.viewport,o=Math.min(s,n)/16;let a=!0;return t[0]<r+o?(t[0]=r+o,a=!1):t[0]>r+s-o&&(t[0]=r+s-o,a=!1),t[1]<i+o?(t[1]=i+o,a=!1):t[1]>i+n-o&&(t[1]=i+n-o,a=!1),a}function rt(e,t,r,i){const s=R(i.basis1),n=R(i.basis2),o=ct(i),a=lt(i),c=M(X.get(),0,0,0);E(c,T(X.get(),i.basis1,t.direction[0]),T(X.get(),i.basis2,t.direction[1])),E(c,i.origin,c);let m=0,p=1;if(ut(t))1===t.direction[0]&&-1===t.direction[1]?m=Nt:1===t.direction[0]&&1===t.direction[1]?m=Math.PI:-1===t.direction[0]&&1===t.direction[1]&&(m=3*Math.PI/2),p=a;else{const e=0!==t.direction[0]?1:2;m=1===e?Nt:0,p=(1===e?n:s)-o}const g=l(Y.get(),m);u(g,g,M(X.get(),p,p,p)),d(g,r,g),g[12]=0,g[13]=0,g[14]=0,e.modelTransform=g,e.renderLocation=c}function it(e,t,r,i){const s=i.worldUpAtPosition(r.origin,X.get()),n=ot(r,nt.POSITIVE_X),o=l(Y.get(),n.edge*Math.PI/2);m(o,o,-It(r,s)),d(o,t,o),o[12]=0,o[13]=0,o[14]=0,e.modelTransform=o,e.renderLocation=n.position}function st(e,t,r){const i=ot(r,nt.POSITIVE_Y),s=l(Y.get(),i.edge*Math.PI/2);m(s,s,Nt),d(s,t,s),s[12]=0,s[13]=0,s[14]=0,e.modelTransform=s,e.renderLocation=i.position}var nt;function ot(e,t){switch(t){case nt.POSITIVE_X:return{basis:e.basis1,direction:1,position:E(X.get(),e.origin,e.basis1),edge:t};case nt.POSITIVE_Y:return{basis:e.basis2,direction:1,position:E(X.get(),e.origin,e.basis2),edge:t};case nt.NEGATIVE_X:return{basis:e.basis1,direction:-1,position:j(X.get(),e.origin,e.basis1),edge:t};case nt.NEGATIVE_Y:return{basis:e.basis2,direction:-1,position:j(X.get(),e.origin,e.basis2),edge:t}}}function at(e,t,r){const i=r.projectToRenderScreen(E(X.get(),e,t),a(X.get())),s=r.projectToRenderScreen(j(X.get(),e,t),a(X.get()));return A(j(i,i,s))}function ct(e){const t=R(e.basis1),r=R(e.basis2);return W*Math.min(t,r)}function lt(e){return ct(e)}function ut(e){return 0!==e.direction[0]&&0!==e.direction[1]}function dt(e,t=St.CENTER_ON_ARROW){const r=t===St.CENTER_ON_CALLOUT?Q:0,i=[v(r,0,-Oe/2),v(r,0,Oe/2)],s=Tt(i,!0),n=(e,t)=>bt(i,i,{tubeRadius:we,tipRadius:B,tipLength:Ie,tubeFocusMultiplier:Ee,tipFocusMultiplier:Re,padding:e,bothEnds:!0,flat:null,focusTipLength:!0,addCap:t}),o=n(0,!1),a=n(ee,!0),c=new xe({color:te,cullFace:_e.Back,renderOccluded:Ve.Opaque}),l=new xe({color:re,cullFace:_e.Back,renderOccluded:Ve.Opaque}),u=new xe({color:ie,cullFace:_e.Back,renderOccluded:Ve.Opaque}),d=new xe({color:se,transparent:!0,writeDepth:!1,cullFace:_e.Front,renderOccluded:Ve.Transparent}),m=Ue.createPolylineGeometry([[r,0,0],[r-Q,0,0]]),p=Ue.createPolylineGeometry([[r,0,0],[r-Q,0,0]]),g=new Fe({color:ne,renderOccluded:Ve.OccludeAndTransparent});return new Me({view:e,renderObjects:[...o.normal.map((({part:e,geometry:t,transform:r})=>({geometry:t,material:"tip"===e?c:"cap"===e?l:u,transform:r,stateMask:ze.Unfocused|Pt}))),...a.normal.map((({geometry:e,transform:t})=>({geometry:e,material:d,transform:t,stateMask:ze.Unfocused|Pt}))),{geometry:m,material:g,stateMask:ze.Unfocused|Pt|Ct},...o.focused.map((({part:e,geometry:t,transform:r})=>({geometry:t,material:"tip"===e?c:"cap"===e?l:u,transform:r,stateMask:ze.Focused|Pt}))),...a.focused.map((({geometry:e,transform:t})=>({geometry:e,material:d,transform:t,stateMask:ze.Focused|Pt}))),{geometry:p,material:g,stateMask:ze.Focused|Pt|Ct}],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[s]},collisionPriority:1,radius:B,state:Pt})}function mt(e,t){const r=new Ge({transparent:!0,writeDepth:!1,textureId:t.id,renderOccluded:Ve.Opaque}),i=oe,s=ae,n=s*be,o=e=>{const t=new Uint32Array([0,1,2,2,3,0]);return new Ne([[Se.POSITION,{size:3,data:[i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],exclusive:!0}],[Se.UV0,{size:2,data:[0,0,1,0,1,1,0,1]}]],[[Se.POSITION,t],[Se.UV0,t]])},a=Ue.createPolylineGeometry([[0,0,0],[i-s,0,0]]),c=Ue.createPolylineGeometry([[0,0,0],[i-n,0,0]]),l=new Fe({color:ce,renderOccluded:Ve.OccludeAndTransparent}),u=[{geometry:o(s),material:r,stateMask:ze.Unfocused|Pt},{geometry:a,material:l,stateMask:ze.Unfocused|Pt},{geometry:o(n),material:r,stateMask:ze.Focused|Pt},{geometry:c,material:l,stateMask:ze.Focused|Pt}];return new Me({view:e,renderObjects:u,autoScaleRenderObjects:!1,collisionType:{type:"disc",direction:[0,0,1],offset:[i,0,0]},collisionPriority:1,radius:s/2,state:Pt})}function pt(e){const t=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]];return new Pe({view:e,attached:!0,color:le,width:ue,writeDepthEnabled:!1,renderOccluded:Ve.OccludeAndTransparent,geometry:[t]})}function gt(e){return new ke({view:e,attached:!0,backgroundColor:[...de],gridColor:me,gridWidth:4,renderOccluded:Ve.OccludeAndTransparent})}function ft(e,t){const r=ut(t),i=r?[v(1,0,0),v(0,0,0),v(0,1,0)]:[v(1,0,0),v(-1,0,0)],s=Ue.createPolylineGeometry(i),n=he,o=e=>new He({color:n,width:e,renderOccluded:Ve.OccludeAndTransparent}),a=()=>new Fe({color:n,renderOccluded:Ve.OccludeAndTransparent}),c=r?je:ye,l=c*Te,u=ye,d=e=>e>1?o(e):a(),m=[{geometry:s,material:d(c),stateMask:ze.Unfocused|Ut},{geometry:s,material:d(l),stateMask:ze.Focused|Ut},{geometry:s,material:d(u),stateMask:Vt}],p=new Me({view:e,renderObjects:m,collisionType:{type:"line",paths:[i]},autoScaleRenderObjects:!1,worldSized:!0,radius:r?pe:ge});return p.state=Ut,p}function bt(e,t,r){const i=i=>{const s=(i?t:e).slice(0),n=j(X.get(),s[0],s[1]);I(n,n);const a=j(X.get(),s[s.length-1],s[s.length-2]);if(I(a,a),r.padding>0){const e=T(k(),a,-r.padding);if(s[s.length-1]=E(e,e,s[s.length-1]),r.bothEnds){const e=T(k(),n,-r.padding);s[0]=E(e,e,s[0])}}const c=i?r.tipFocusMultiplier:1,l=r.tipLength*(r.focusTipLength?c:1),m=r.tipRadius*c,y=p(Y.get());if(r.padding>0){const e=l/4,t=M(X.get(),0,e,0),i=1+r.padding/e;g(y,y,t),u(y,y,M(X.get(),i,i,i)),g(y,y,T(t,t,-1/i))}const O=p(b()),w=v(0,1,0),R=f(b(),h(Z.get(),w,a));R[12]=s[s.length-1][0],R[13]=s[s.length-1][1],R[14]=s[s.length-1][2],d(R,R,y);const A=[{part:"tube",geometry:ht(r.tubeRadius*(i?r.tubeFocusMultiplier:1)+r.padding,r.flat,s),transform:O}];let L,P;if(o(r.flat)?L=Ue.createExtrudedTriangle(l,m,m,r.flat.thickness):(L=Ue.createConeGeometry(l,m,24,!1,!1,!0),P=Ue.createConeGeometry(l,m,24,!1,!0,!1)),A.push({part:"tip",geometry:L,transform:R}),P&&A.push({part:"cap",geometry:P,transform:R}),r.bothEnds){const e=f(b(),h(Z.get(),w,n));e[12]=s[0][0],e[13]=s[0][1],e[14]=s[0][2],d(e,e,y),A.push({part:"tip",geometry:L,transform:e}),P&&A.push({part:"cap",geometry:P,transform:e})}return A};return{normal:i(!1),focused:i(!0)}}function ht(e,t,r){const i=[];if(o(t))i.push([e,t.thickness/2],[-e,t.thickness/2],[-e,-t.thickness/2],[e,-t.thickness/2]);else{const t=12;for(let r=0;r<t;r++){const s=r/t*2*Math.PI;i.push([Math.cos(s)*e,Math.sin(s)*e])}}return Ue.createPathExtrusionGeometry(i,r,[],[],!1)}function Tt(e,t){const r=j(k(),e[e.length-1],e[e.length-2]);if(I(r,r),T(r,r,fe),E(r,r,e[e.length-1]),t){const t=j(k(),e[0],e[1]);return I(t,t),T(t,t,fe),E(t,t,e[0]),[t,...e,r]}return[...e,r]}function yt(t,r,s,o=new e){if(n(t))return null;const{renderCoordsHelper:a}=r,c=a.fromRenderCoords(t.origin,r.spatialReference);if(n(c))return null;const l=C(c,s);if(n(l))return null;o.position=l;const u=a.worldUpAtPosition(t.origin,X.get()),d=a.worldBasisAtPosition(t.origin,_.Y,X.get()),m=2*R(t.basis1),p=2*R(t.basis2),g=ve.renderUnitScaleFactor(r.spatialReference,s);return o.width=m*g,o.height=p*g,o.tilt=i(It(t,u)),o.heading=i(Et(t,u,d)),o}function Ot(e,t,r){if(n(e)||n(e.position))return null;const{spatialReference:i}=e.position,s=wt(At(e,{renderCoordsHelper:t,spatialReference:i},r),t,i);return!e.position.hasZ&&o(s)&&(s.zmin=null,s.zmax=null),s}function wt(e,t,r){if(n(e))return null;const i=e.origin,s=X.get(),o=X.get(),a=X.get(),c=X.get();let l,u,d,m,p,g;E(s,i,e.basis1),E(s,s,e.basis2),E(o,i,e.basis1),L(o,o,e.basis2),L(a,i,e.basis1),L(a,a,e.basis2),L(c,i,e.basis1),E(c,c,e.basis2);for(const f of[s,o,a,c]){const e=t.fromRenderCoords(f,f,r);if(n(e))return null;l=null==l?e[0]:Math.min(l,e[0]),u=null==u?e[0]:Math.max(u,e[0]),d=null==d?e[1]:Math.min(d,e[1]),m=null==m?e[1]:Math.max(m,e[1]),p=null==p?e[2]:Math.min(p,e[2]),g=null==g?e[2]:Math.max(g,e[2])}return new Xe({xmin:l,xmax:u,ymin:d,ymax:m,zmin:p,zmax:g,spatialReference:r})}function It(e,t){return z(t,e.basis2,e.basis1)+Nt}function Et(e,t,r){return z(e.basis1,r,t)-Nt}function Rt(e,t,r,i,n,o,a=S()){return o.toRenderCoords(e,a.origin)?(o.worldBasisAtPosition(a.origin,_.X,a.basis1),o.worldBasisAtPosition(a.origin,_.Y,a.basis2),H(a.basis2,a.basis1,a.origin,a.plane),N(a,-s(t),x(a),a),N(a,s(r),a.basis1,a),T(a.basis1,a.basis1,i/2),T(a.basis2,a.basis2,n/2),G(a),a):(Ye.error(`Failed to project slice plane position, projection from ${e.spatialReference.wkid} is not supported`),null)}function jt(e,t){if(n(e)||n(e.position))return null;const r=Ae(e.position,t.spatialReference,t.elevationProvider);if(n(r))return null;const i=ve.renderUnitScaleFactor(e.position.spatialReference,t.spatialReference),s=e.width*i,o=e.height*i;return{position:r,heading:e.heading,tilt:e.tilt,renderWidth:s,renderHeight:o}}function At(e,t,r,i=S()){const s=jt(e,t);return n(s)?null:Mt(s,t,r,i)}function Mt(e,t,r,i=S()){if(n(e))return null;const s=Rt(e.position,e.heading,e.tilt,e.renderWidth,e.renderHeight,t.renderCoordsHelper,i);return!r.tiltEnabled&&o(s)&&We(s,t.renderCoordsHelper,s),s}function Lt(e){switch(e.type){case"analysis":case"building-scene":case"csv":case"feature":case"geo-rss":case"geojson":case"graphics":case"group":case"integrated-mesh":case"kml":case"map-notes":case"ogc-feature":case"point-cloud":case"route":case"scene":case"stream":case"voxel":case"subtype-group":case"unknown":case"unsupported":case"wfs":case null:return!1;case"base-dynamic":case"base-elevation":case"base-tile":case"bing-maps":case"elevation":case"imagery":case"imagery-tile":case"map-image":case"media":case"open-street-map":case"tile":case"vector-tile":case"wcs":case"web-tile":case"wms":case"wmts":return!0;default:return t(e.type),!1}}!function(e){e[e.POSITIVE_X=0]="POSITIVE_X",e[e.POSITIVE_Y=1]="POSITIVE_Y",e[e.NEGATIVE_X=2]="NEGATIVE_X",e[e.NEGATIVE_Y=3]="NEGATIVE_Y"}(nt||(nt={}));const Pt=De.Custom1;var kt,vt;!function(e){e[e.HEADING=1]="HEADING",e[e.TILT=2]="TILT"}(kt||(kt={})),function(e){e[e.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",e[e.HORIZONTAL=1]="HORIZONTAL",e[e.VERTICAL=2]="VERTICAL",e[e.TILTED=3]="TILTED"}(vt||(vt={}));const Ct=De.Custom2,_t=D(),Nt=Math.PI/2,Ut=De.Custom1,Vt=De.Custom2;var St;function xt(e){const t="building-scene-3d"===e.type?e:null;return o(t)}!function(e){e[e.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",e[e.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(St||(St={}));export{Pt as DidPointerMoveRecentlyFlag,Ct as IsShiftEdgeOnScreenFlag,St as OffsetMode,kt as RotationAxis,vt as SliceOrientation,Tt as addArrowTips,Ke as calculateBoundedPlaneTranslateRotate,lt as calculateDiagonalResizeHandleScale,$e as calculatePlaneHalfSize,ct as calculateResizeHandlePadding,at as calculateScreenSpaceBasisLength2,bt as createArrowGeometry,gt as createGridVisualElement,pt as createOutlineVisualElement,Ze as createPlane,ft as createResizeManipulator,mt as createRotateManipulator,Qe as createRotatePlane,dt as createShiftManipulator,Je as createShiftPlane,We as forceHorizontalOrVertical,Lt as isAlwaysDrapedLayer,ut as isDiagonalResizeHandle,xt as isIBuildingSceneLayerView3D,Be as normalToBases,wt as planeToExtent,yt as planeToShape,jt as projectAndElevationAlignShape,Mt as projectedShapeToPlane,Ut as resizeNormal,Vt as resizeOutlineOnly,qe as resizePlane,Ot as shapeToExtent,At as shapeToPlane,rt as updateResizeHandle,it as updateRotateHeadingHandle,st as updateRotateTiltHandle,et as updateShiftRestartHandle};
5
+ import"../../../../geometry.js";import e from"../../../../analysis/SlicePlane.js";import"../../../../core/has.js";import t from"../../../../core/Logger.js";import{rad2deg as r,deg2rad as i}from"../../../../core/mathUtils.js";import{isNone as n,isSome as o}from"../../../../core/maybe.js";import{castRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{g as a,b as c,h as l,m as u,r as d,i as m,j as p,k as g}from"../../../../chunks/mat4.js";import{c as f}from"../../../../chunks/mat4f64.js";import{r as b}from"../../../../chunks/quat.js";import{g as h,c as T,e as O,f as y,n as w,a as I,l as E,b as R,p as j,s as A,v as M}from"../../../../chunks/vec3.js";import{a as L,c as P,f as k}from"../../../../chunks/vec3f64.js";import{tryProjectWithZConversion as C}from"../../../../geometry/projection.js";import{Axis as _}from"../../../../geometry/support/Axis.js";import{r as N,f as v,i as U,c as V,n as S,u as G}from"../../../../chunks/boundedPlane.js";import{fromPositionAndNormal as x,fromVectorsAndPoint as F}from"../../../../geometry/support/plane.js";import{create as H}from"../../../../geometry/support/ray.js";import{angleAroundAxis as D}from"../../../../geometry/support/vector.js";import{sv3d as z,sm4d as X,sq4d as Y}from"../../../../geometry/support/vectorStacks.js";import{SHIFT_RESTART_TIP_RADIUS as Z,RESIZE_HANDLE_EDGE_PADDING_FRAC as B,VERTICAL_DOT_THRESHOLD as W,SMALL_ANGLE_DOT_THRESHOLD as q,PLANE_MIN_BASIS_SCREEN_LEN2 as $,INITIAL_PLANE_HALF_SIZE_VIEW_PROPORTION as J,SHIFT_RESTART_OFFSET_DISTANCE as K,SHIFT_RESTART_ARROW_OUTLINE_WIDTH as Q,SHIFT_RESTART_ARROW_TIP_COLOR as ee,SHIFT_RESTART_ARROW_CAP_COLOR as te,SHIFT_RESTART_TUBE_COLOR as re,SHIFT_RESTART_OUTLINE_COLOR as ie,SHIFT_RESTART_CALLOUT_COLOR as ne,ROTATE_HEADING_OFFSET_DISTANCE as oe,ROTATE_HEADING_DISC_RADIUS as se,ROTATE_HEADING_CALLOUT_COLOR as ae,PLANE_OUTLINE_COLOR as ce,PLANE_OUTLINE_WIDTH as le,PLANE_BACKGROUND_COLOR as ue,GRID_COLOR as de,RESIZE_HANDLE_CORNER_INPUT_RADIUS as me,RESIZE_HANDLE_EDGE_INPUT_RADIUS as pe,ROTATE_HEADING_TIP_LENGTH as ge,ROTATE_HEADING_DISC_RADIUS_FOCUS_MULTIPLIER as fe,RESIZE_HANDLE_COLOR as be,DISPLAY_FOCUS_MULTIPLIER as he,RESIZE_HANDLE_EDGE_WIDTH as Te,SHIFT_RESTART_ARROW_LENGTH as Oe,SHIFT_RESTART_TUBE_RADIUS as ye,SHIFT_RESTART_TIP_LENGTH as we,SHIFT_RESTART_TUBE_FOCUS_MULTIPLIER as Ie,SHIFT_RESTART_TIP_FOCUS_MULTIPLIER as Ee,RESIZE_HANDLE_CORNER_WIDTH as Re}from"./sliceToolConfig.js";import{applyProjectionAndElevationAlignment as je}from"../support/projectionUtils.js";import{Manipulator3D as Ae}from"../../interactive/Manipulator3D.js";import{calculateTranslateRotateFromBases as Me}from"../../interactive/manipulatorUtils.js";import{LineVisualElement as Le}from"../../interactive/visualElements/LineVisualElement.js";import{SlicePlaneVisualElement as Pe}from"../../interactive/visualElements/SlicePlaneVisualElement.js";import{RenderCoordsHelper as ke}from"../../support/RenderCoordsHelper.js";import{fromRender as Ce}from"../../support/geometryUtils/ray.js";import{CullFaceOptions as _e}from"../../webgl-engine/lib/basicInterfaces.js";import{Geometry as Ne}from"../../webgl-engine/lib/Geometry.js";import ve from"../../webgl-engine/lib/GeometryUtil.js";import{RenderOccludedFlag as Ue}from"../../webgl-engine/lib/Material.js";import{VertexAttribute as Ve}from"../../webgl-engine/lib/VertexAttribute.js";import{ColorMaterial as Se}from"../../webgl-engine/materials/ColorMaterial.js";import{ImageMaterial as Ge}from"../../webgl-engine/materials/ImageMaterial.js";import{NativeLineMaterial as xe}from"../../webgl-engine/materials/NativeLineMaterial.js";import{RibbonLineMaterial as Fe}from"../../webgl-engine/materials/RibbonLineMaterial.js";import{ManipulatorStateCustomFlags as He,ManipulatorStateFlags as De}from"../../../interactive/interfaces.js";import ze from"../../../../geometry/Extent.js";const Xe=t.getLogger("esri.views.3d.interactive.analysisTools.slice.sliceToolUtils");function Ye(e,t,r,i,n,o,s,a){return Ze(t,s.worldUpAtPosition(e,z.get()),n,o,a.basis1,a.basis2),h(a.basis1,a.basis1,r),h(a.basis2,a.basis2,i),T(a.origin,e),F(a.basis2,a.basis1,a.origin,a.plane),a}function Ze(e,t,r,i,n,o){const s=O(e,t),a=z.get(),c=z.get();switch(i===Pt.HORIZONTAL_OR_VERTICAL?Math.abs(s)>W?Pt.HORIZONTAL:Pt.VERTICAL:i){case Pt.VERTICAL:{const i=Math.abs(s)<=q?e:r.viewUp;y(a,i,t),T(c,t);break}case Pt.HORIZONTAL:y(a,r.viewUp,t),y(c,t,a);break;case Pt.TILTED:{const i=Math.abs(s)<=q?t:r.viewUp;y(a,i,e),y(c,e,a);break}}const l=y(z.get(),a,c);O(l,r.viewForward)>0&&h(c,c,-1),w(n,a),w(o,c)}function Be(e,t,r){const i=t.worldUpAtPosition(e.origin,z.get()),n=e.basis1,o=wt(e,i),s=Math.round(o/_t)*_t;return N(e,s-o,n,r)}function We(e,t,r,i,n,o){const s=T(z.get(),n.origin);I(s,s,h(z.get(),n.basis1,e.direction[0]<0?1:-1)),I(s,s,h(z.get(),n.basis2,e.direction[1]<0?1:-1));const a=E(n.basis1),c=E(n.basis2),l=R(z.get(),r,s),u=R(z.get(),t,s);let d=0,m=0;if(lt(e)){const t=ct(n),r=ct(o);d=a-.5*e.direction[0]*O(n.basis1,u)/a,m=c-.5*e.direction[1]*O(n.basis2,u)/c;const i=r/t;d*=i,m*=i}const p=d+.5*e.direction[0]*O(n.basis1,l)/a,g=m+.5*e.direction[1]*O(n.basis2,l)/c,f=h(z.get(),n.basis1,p/a),b=h(z.get(),n.basis2,g/c);(p<=0||st(o.origin,f,i)<=$)&&T(f,o.basis1),(g<=0||st(o.origin,b,i)<=$)&&T(b,o.basis2);const y=T(z.get(),s);return I(y,y,h(z.get(),f,e.direction[0]<0?-1:1)),I(y,y,h(z.get(),b,e.direction[1]<0?-1:1)),v(y,f,b,o)}function qe(e,t){return J*Math.min(t.width,t.height)*t.computeRenderPixelSizeAt(e)}function $e(e,t,r,i){const n=y(z.get(),t,r);return y(n,n,t),x(e,n,i)}function Je(e,t){return Me(e.basis1,e.basis2,e.origin,t)}function Ke(e,t,r,i){const n=t.worldUpAtPosition(e.origin,z.get()),o=z.get();switch(r){case Lt.HEADING:T(o,n);break;case Lt.TILT:T(o,e.basis1)}return x(e.origin,o,i)}function Qe(e,t,r,i){const n=ot(r,nt.NEGATIVE_X),o=X.get();a(o,t,n.edge*Math.PI/2);const c=w(z.get(),n.basis);let l=h(z.get(),c,n.direction*i.computeScreenPixelSizeAt(n.position)*K);I(l,l,n.position);const u=i.projectToRenderScreen(l,s(z.get())),d=et(i,u);Ce(i,u,Ct),w(Ct.direction,Ct.direction);const m=z.get();!d&&U(r,Ct,m)&&(l=m),o[12]=0,o[13]=0,o[14]=0,e.modelTransform=o,e.renderLocation=L(l),d?e.state|=kt:e.state&=~kt}function et(e,t){const[r,i,n,o]=e.viewport,s=Math.min(n,o)/16;let a=!0;return t[0]<r+s?(t[0]=r+s,a=!1):t[0]>r+n-s&&(t[0]=r+n-s,a=!1),t[1]<i+s?(t[1]=i+s,a=!1):t[1]>i+o-s&&(t[1]=i+o-s,a=!1),a}function tt(e,t,r,i){const n=E(i.basis1),o=E(i.basis2),s=at(i),a=ct(i),d=A(z.get(),0,0,0);I(d,h(z.get(),i.basis1,t.direction[0]),h(z.get(),i.basis2,t.direction[1])),I(d,i.origin,d);let m=0,p=1;if(lt(t))1===t.direction[0]&&-1===t.direction[1]?m=_t:1===t.direction[0]&&1===t.direction[1]?m=Math.PI:-1===t.direction[0]&&1===t.direction[1]&&(m=3*Math.PI/2),p=a;else{const e=0!==t.direction[0]?1:2;m=1===e?_t:0,p=(1===e?o:n)-s}const g=c(X.get(),m);l(g,g,A(z.get(),p,p,p)),u(g,r,g),g[12]=0,g[13]=0,g[14]=0,e.modelTransform=g,e.renderLocation=d}function rt(e,t,r,i){const n=i.worldUpAtPosition(r.origin,z.get()),o=ot(r,nt.POSITIVE_X),s=c(X.get(),o.edge*Math.PI/2);d(s,s,-wt(r,n)),u(s,t,s),s[12]=0,s[13]=0,s[14]=0,e.modelTransform=s,e.renderLocation=o.position}function it(e,t,r){const i=ot(r,nt.POSITIVE_Y),n=c(X.get(),i.edge*Math.PI/2);d(n,n,_t),u(n,t,n),n[12]=0,n[13]=0,n[14]=0,e.modelTransform=n,e.renderLocation=i.position}var nt;function ot(e,t){switch(t){case nt.POSITIVE_X:return{basis:e.basis1,direction:1,position:I(z.get(),e.origin,e.basis1),edge:t};case nt.POSITIVE_Y:return{basis:e.basis2,direction:1,position:I(z.get(),e.origin,e.basis2),edge:t};case nt.NEGATIVE_X:return{basis:e.basis1,direction:-1,position:R(z.get(),e.origin,e.basis1),edge:t};case nt.NEGATIVE_Y:return{basis:e.basis2,direction:-1,position:R(z.get(),e.origin,e.basis2),edge:t}}}function st(e,t,r){const i=r.projectToRenderScreen(I(z.get(),e,t),s(z.get())),n=r.projectToRenderScreen(R(z.get(),e,t),s(z.get()));return j(R(i,i,n))}function at(e){const t=E(e.basis1),r=E(e.basis2);return B*Math.min(t,r)}function ct(e){return at(e)}function lt(e){return 0!==e.direction[0]&&0!==e.direction[1]}function ut(e,t=Ut.CENTER_ON_ARROW){const r=t===Ut.CENTER_ON_CALLOUT?K:0,i=[k(r,0,-Oe/2),k(r,0,Oe/2)],n=ht(i,!0),o=(e,t)=>ft(i,i,{tubeRadius:ye,tipRadius:Z,tipLength:we,tubeFocusMultiplier:Ie,tipFocusMultiplier:Ee,padding:e,bothEnds:!0,flat:null,focusTipLength:!0,addCap:t}),s=o(0,!1),a=o(Q,!0),c=new Se({color:ee,cullFace:_e.Back,renderOccluded:Ue.Opaque}),l=new Se({color:te,cullFace:_e.Back,renderOccluded:Ue.Opaque}),u=new Se({color:re,cullFace:_e.Back,renderOccluded:Ue.Opaque}),d=new Se({color:ie,transparent:!0,writeDepth:!1,cullFace:_e.Front,renderOccluded:Ue.Transparent}),m=ve.createPolylineGeometry([[r,0,0],[r-K,0,0]]),p=ve.createPolylineGeometry([[r,0,0],[r-K,0,0]]),g=new xe({color:ne,renderOccluded:Ue.OccludeAndTransparent});return new Ae({view:e,renderObjects:[...s.normal.map((({part:e,geometry:t,transform:r})=>({geometry:t,material:"tip"===e?c:"cap"===e?l:u,transform:r,stateMask:De.Unfocused|Mt}))),...a.normal.map((({geometry:e,transform:t})=>({geometry:e,material:d,transform:t,stateMask:De.Unfocused|Mt}))),{geometry:m,material:g,stateMask:De.Unfocused|Mt|kt},...s.focused.map((({part:e,geometry:t,transform:r})=>({geometry:t,material:"tip"===e?c:"cap"===e?l:u,transform:r,stateMask:De.Focused|Mt}))),...a.focused.map((({geometry:e,transform:t})=>({geometry:e,material:d,transform:t,stateMask:De.Focused|Mt}))),{geometry:p,material:g,stateMask:De.Focused|Mt|kt}],autoScaleRenderObjects:!1,collisionType:{type:"line",paths:[n]},collisionPriority:1,radius:Z,state:Mt})}function dt(e,t){const r=new Ge({transparent:!0,writeDepth:!1,textureId:t.id,renderOccluded:Ue.Opaque}),i=oe,n=se,o=n*fe,s=e=>{const t=new Uint32Array([0,1,2,2,3,0]);return new Ne([[Ve.POSITION,{size:3,data:[i-e,-e,0,i+e,-e,0,i+e,e,0,i-e,e,0],exclusive:!0}],[Ve.UV0,{size:2,data:[0,0,1,0,1,1,0,1]}]],[[Ve.POSITION,t],[Ve.UV0,t]])},a=ve.createPolylineGeometry([[0,0,0],[i-n,0,0]]),c=ve.createPolylineGeometry([[0,0,0],[i-o,0,0]]),l=new xe({color:ae,renderOccluded:Ue.OccludeAndTransparent}),u=[{geometry:s(n),material:r,stateMask:De.Unfocused|Mt},{geometry:a,material:l,stateMask:De.Unfocused|Mt},{geometry:s(o),material:r,stateMask:De.Focused|Mt},{geometry:c,material:l,stateMask:De.Focused|Mt}];return new Ae({view:e,renderObjects:u,autoScaleRenderObjects:!1,collisionType:{type:"disc",direction:[0,0,1],offset:[i,0,0]},collisionPriority:1,radius:n/2,state:Mt})}function mt(e){const t=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0],[-1,-1,0]];return new Le({view:e,attached:!0,color:ce,width:le,writeDepthEnabled:!1,renderOccluded:Ue.OccludeAndTransparent,geometry:[t]})}function pt(e){return new Pe({view:e,attached:!0,backgroundColor:[...ue],gridColor:de,gridWidth:4,renderOccluded:Ue.OccludeAndTransparent})}function gt(e,t){const r=lt(t),i=r?[k(1,0,0),k(0,0,0),k(0,1,0)]:[k(1,0,0),k(-1,0,0)],n=ve.createPolylineGeometry(i),o=be,s=e=>new Fe({color:o,width:e,renderOccluded:Ue.OccludeAndTransparent}),a=()=>new xe({color:o,renderOccluded:Ue.OccludeAndTransparent}),c=r?Re:Te,l=c*he,u=Te,d=e=>e>1?s(e):a(),m=[{geometry:n,material:d(c),stateMask:De.Unfocused|Nt},{geometry:n,material:d(l),stateMask:De.Focused|Nt},{geometry:n,material:d(u),stateMask:vt}],p=new Ae({view:e,renderObjects:m,collisionType:{type:"line",paths:[i]},autoScaleRenderObjects:!1,worldSized:!0,radius:r?me:pe});return p.state=Nt,p}function ft(e,t,r){const i=i=>{const n=(i?t:e).slice(0),s=R(z.get(),n[0],n[1]);w(s,s);const a=R(z.get(),n[n.length-1],n[n.length-2]);if(w(a,a),r.padding>0){const e=h(P(),a,-r.padding);if(n[n.length-1]=I(e,e,n[n.length-1]),r.bothEnds){const e=h(P(),s,-r.padding);n[0]=I(e,e,n[0])}}const c=i?r.tipFocusMultiplier:1,d=r.tipLength*(r.focusTipLength?c:1),T=r.tipRadius*c,O=m(X.get());if(r.padding>0){const e=d/4,t=A(z.get(),0,e,0),i=1+r.padding/e;p(O,O,t),l(O,O,A(z.get(),i,i,i)),p(O,O,h(t,t,-1/i))}const y=m(f()),E=k(0,1,0),j=g(f(),b(Y.get(),E,a));j[12]=n[n.length-1][0],j[13]=n[n.length-1][1],j[14]=n[n.length-1][2],u(j,j,O);const M=[{part:"tube",geometry:bt(r.tubeRadius*(i?r.tubeFocusMultiplier:1)+r.padding,r.flat,n),transform:y}];let L,C;if(o(r.flat)?L=ve.createExtrudedTriangle(d,T,T,r.flat.thickness):(L=ve.createConeGeometry(d,T,24,!1,!1,!0),C=ve.createConeGeometry(d,T,24,!1,!0,!1)),M.push({part:"tip",geometry:L,transform:j}),C&&M.push({part:"cap",geometry:C,transform:j}),r.bothEnds){const e=g(f(),b(Y.get(),E,s));e[12]=n[0][0],e[13]=n[0][1],e[14]=n[0][2],u(e,e,O),M.push({part:"tip",geometry:L,transform:e}),C&&M.push({part:"cap",geometry:C,transform:e})}return M};return{normal:i(!1),focused:i(!0)}}function bt(e,t,r){const i=[];if(o(t))i.push([e,t.thickness/2],[-e,t.thickness/2],[-e,-t.thickness/2],[e,-t.thickness/2]);else{const t=12;for(let r=0;r<t;r++){const n=r/t*2*Math.PI;i.push([Math.cos(n)*e,Math.sin(n)*e])}}return ve.createPathExtrusionGeometry(i,r,[],[],!1)}function ht(e,t){const r=R(P(),e[e.length-1],e[e.length-2]);if(w(r,r),h(r,r,ge),I(r,r,e[e.length-1]),t){const t=R(P(),e[0],e[1]);return w(t,t),h(t,t,ge),I(t,t,e[0]),[t,...e,r]}return[...e,r]}function Tt(t,i,o,s=new e){if(n(t))return null;const{renderCoordsHelper:a}=i,c=a.fromRenderCoords(t.origin,i.spatialReference);if(n(c))return null;const l=C(c,o);if(n(l))return null;s.position=l;const u=a.worldUpAtPosition(t.origin,z.get()),d=a.worldBasisAtPosition(t.origin,_.Y,z.get()),m=2*E(t.basis1),p=2*E(t.basis2),g=ke.renderUnitScaleFactor(i.spatialReference,o);return s.width=m*g,s.height=p*g,s.tilt=r(wt(t,u)),s.heading=r(It(t,u,d)),s}function Ot(e,t,r){if(n(e)||n(e.position))return null;const{spatialReference:i}=e.position,s=yt(jt(e,{renderCoordsHelper:t,spatialReference:i},r),t,i);return!e.position.hasZ&&o(s)&&(s.zmin=null,s.zmax=null),s}function yt(e,t,r){if(n(e))return null;const i=e.origin,o=z.get(),s=z.get(),a=z.get(),c=z.get();let l,u,d,m,p,g;I(o,i,e.basis1),I(o,o,e.basis2),I(s,i,e.basis1),M(s,s,e.basis2),M(a,i,e.basis1),M(a,a,e.basis2),M(c,i,e.basis1),I(c,c,e.basis2);for(const f of[o,s,a,c]){const e=t.fromRenderCoords(f,f,r);if(n(e))return null;l=null==l?e[0]:Math.min(l,e[0]),u=null==u?e[0]:Math.max(u,e[0]),d=null==d?e[1]:Math.min(d,e[1]),m=null==m?e[1]:Math.max(m,e[1]),p=null==p?e[2]:Math.min(p,e[2]),g=null==g?e[2]:Math.max(g,e[2])}return new ze({xmin:l,xmax:u,ymin:d,ymax:m,zmin:p,zmax:g,spatialReference:r})}function wt(e,t){return D(t,e.basis2,e.basis1)+_t}function It(e,t,r){return D(e.basis1,r,t)-_t}function Et(e,t,r,n,o,s,a=V()){return s.toRenderCoords(e,a.origin)?(s.worldBasisAtPosition(a.origin,_.X,a.basis1),s.worldBasisAtPosition(a.origin,_.Y,a.basis2),F(a.basis2,a.basis1,a.origin,a.plane),N(a,-i(t),S(a),a),N(a,i(r),a.basis1,a),h(a.basis1,a.basis1,n/2),h(a.basis2,a.basis2,o/2),G(a),a):(Xe.error(`Failed to project slice plane position, projection from ${e.spatialReference.wkid} is not supported`),null)}function Rt(e,t){if(n(e)||n(e.position))return null;const r=je(e.position,t.spatialReference,t.elevationProvider);if(n(r))return null;const i=ke.renderUnitScaleFactor(e.position.spatialReference,t.spatialReference),o=e.width*i,s=e.height*i;return{position:r,heading:e.heading,tilt:e.tilt,renderWidth:o,renderHeight:s}}function jt(e,t,r,i=V()){const o=Rt(e,t);return n(o)?null:At(o,t,r,i)}function At(e,t,r,i=V()){if(n(e))return null;const s=Et(e.position,e.heading,e.tilt,e.renderWidth,e.renderHeight,t.renderCoordsHelper,i);return!r.tiltEnabled&&o(s)&&Be(s,t.renderCoordsHelper,s),s}!function(e){e[e.POSITIVE_X=0]="POSITIVE_X",e[e.POSITIVE_Y=1]="POSITIVE_Y",e[e.NEGATIVE_X=2]="NEGATIVE_X",e[e.NEGATIVE_Y=3]="NEGATIVE_Y"}(nt||(nt={}));const Mt=He.Custom1;var Lt,Pt;!function(e){e[e.HEADING=1]="HEADING",e[e.TILT=2]="TILT"}(Lt||(Lt={})),function(e){e[e.HORIZONTAL_OR_VERTICAL=0]="HORIZONTAL_OR_VERTICAL",e[e.HORIZONTAL=1]="HORIZONTAL",e[e.VERTICAL=2]="VERTICAL",e[e.TILTED=3]="TILTED"}(Pt||(Pt={}));const kt=He.Custom2,Ct=H(),_t=Math.PI/2,Nt=He.Custom1,vt=He.Custom2;var Ut;function Vt(e){const t="building-scene-3d"===e.type?e:null;return o(t)}!function(e){e[e.CENTER_ON_CALLOUT=0]="CENTER_ON_CALLOUT",e[e.CENTER_ON_ARROW=1]="CENTER_ON_ARROW"}(Ut||(Ut={}));export{Mt as DidPointerMoveRecentlyFlag,kt as IsShiftEdgeOnScreenFlag,Ut as OffsetMode,Lt as RotationAxis,Pt as SliceOrientation,ht as addArrowTips,Je as calculateBoundedPlaneTranslateRotate,ct as calculateDiagonalResizeHandleScale,qe as calculatePlaneHalfSize,at as calculateResizeHandlePadding,st as calculateScreenSpaceBasisLength2,ft as createArrowGeometry,pt as createGridVisualElement,mt as createOutlineVisualElement,Ye as createPlane,gt as createResizeManipulator,dt as createRotateManipulator,Ke as createRotatePlane,ut as createShiftManipulator,$e as createShiftPlane,Be as forceHorizontalOrVertical,lt as isDiagonalResizeHandle,Vt as isIBuildingSceneLayerView3D,Ze as normalToBases,yt as planeToExtent,Tt as planeToShape,Rt as projectAndElevationAlignShape,At as projectedShapeToPlane,Nt as resizeNormal,vt as resizeOutlineOnly,We as resizePlane,Ot as shapeToExtent,jt as shapeToPlane,tt as updateResizeHandle,rt as updateRotateHeadingHandle,it as updateRotateTiltHandle,Qe as updateShiftRestartHandle};
@@ -2,4 +2,4 @@
2
2
  All material copyright ESRI, All Rights Reserved, unless otherwise specified.
3
3
  See https://js.arcgis.com/4.24/esri/copyright.txt for details.
4
4
  */
5
- import{clamp as t}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{c as r,g as n}from"../../../../chunks/vec3.js";import{c as o}from"../../../../chunks/vec3f64.js";import{wrap as i}from"../../../../geometry/support/ray.js";import{defaultApplyOptions as s,interactionDirectionTowardsConstraintMinimization as c,InteractionType as a,hasConstraintType as m,ConstraintTypes as u,adjustRangeForInteraction as f}from"./common.js";import{closestPointOnRay as p}from"../../support/intersectionUtils.js";function d(t,n,o=s){const a=l(t,n,o);if(0===a)return!1;const m=t.renderCoordsHelper,u=m.getAltitude(n.eye)+a,f=c(n,o.interactionDirection,x(t,n,Math.sign(a),h),T),d=r(A,n.viewForward),y=m.intersectInfiniteManifold(i(n.eye,f),u,C);return n.eye=e(y)?y:m.setAltitude(C,u,n.eye),n.center=p(C,n.eye,d,n.center),!0}function l(e,r,n=s){if(!y(e,n))return 0;const o=g(e.state.constraints.altitude,M);j(e,n,o);const i=e.renderCoordsHelper.getAltitude(r.eye),c=t(i,o.min,o.max)-i;return Math.abs(c)<=1e-6?0:c}function y(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(e.interactionType!==a.TUMBLE||!m(e.selection,u.TILT))}function j(t,e,r){const n=e.interactionType;if(n===a.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:s,interactionFactor:c}=e,m=n===a.TUMBLE||n===a.ZOOM,u=l(t,s),p=0===u?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=o,r.max=i;f(u,p,m,c,.05*p,r)}function x(t,e,r,o){return t.renderCoordsHelper.worldUpAtPosition(e.eye,o),n(o,o,r),o}function g(t,e){return e.min=t.min,e.max=t.max,e}const M={min:0,max:0},T=o(),h=o(),A=o(),C=o();export{d as applyAltitudeConstraint,l as getAltitudeConstraintError};
5
+ import{clamp as t}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{c as r,g as n}from"../../../../chunks/vec3.js";import{c as o}from"../../../../chunks/vec3f64.js";import{wrap as i}from"../../../../geometry/support/ray.js";import{interactionDirectionTowardsConstraintMinimization as s,defaultApplyOptions as c,InteractionType as a,hasConstraintType as m,ConstraintTypes as u,adjustRangeForInteraction as f}from"./common.js";import{closestPointOnRay as p}from"../../support/intersectionUtils.js";function d(t,n,o=c){const a=l(t,n,o);if(0===a)return!1;const m=t.renderCoordsHelper,u=m.getAltitude(n.eye)+a,f=s(n,o.interactionDirection,x(t,n,Math.sign(a),h),T),d=r(A,n.viewForward),y=m.intersectInfiniteManifold(i(n.eye,f),u,C);return n.eye=e(y)?y:m.setAltitude(C,u,n.eye),n.center=p(C,n.eye,d,n.center),!0}function l(e,r,n=c){if(!y(e,n))return 0;const o=g(e.state.constraints.altitude,M);j(e,n,o);const i=e.renderCoordsHelper.getAltitude(r.eye),s=t(i,o.min,o.max)-i;return Math.abs(s)<=1e-6?0:s}function y(t,e){const r=t.state.constraints.altitude;return!(!t.state.isGlobal||!r)&&(e.interactionType!==a.TUMBLE||!m(e.selection,u.TILT))}function j(t,e,r){const n=e.interactionType;if(n===a.NONE)return;const{min:o,max:i}=r,{interactionStartCamera:s,interactionFactor:c}=e,m=n===a.TUMBLE||n===a.ZOOM,u=l(t,s),p=0===u?0:t.renderCoordsHelper.getAltitude(s.eye);r.min=o,r.max=i;f(u,p,m,c,.05*p,r)}function x(t,e,r,o){return t.renderCoordsHelper.worldUpAtPosition(e.eye,o),n(o,o,r),o}function g(t,e){return e.min=t.min,e.max=t.max,e}const M={min:0,max:0},T=o(),h=o(),A=o(),C=o();export{d as applyAltitudeConstraint,l as getAltitudeConstraintError};