@arcgis/core 6.0.0-next.14 → 6.0.0-next.16

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 (398) hide show
  1. package/analysis/LineOfSightAnalysis.d.ts +49 -32
  2. package/analysis/LineOfSightAnalysisObserver.d.ts +19 -3
  3. package/analysis/LineOfSightAnalysisTarget.d.ts +19 -3
  4. package/analysis/Viewshed.d.ts +23 -3
  5. package/analysis/ViewshedAnalysis.d.ts +33 -13
  6. package/arcade/geometry/operatorsWorkerConnection.js +1 -1
  7. package/assets/esri/core/workers/RemoteClient.js +1 -1
  8. package/assets/esri/core/workers/chunks/00d66e3fba5ab4d2aa3c.js +1 -0
  9. package/assets/esri/core/workers/chunks/{d994bcf0a65d1c07160f.js → 0320cbd825f9a4222042.js} +1 -1
  10. package/assets/esri/core/workers/chunks/08fe248e412bb170210d.js +1 -0
  11. package/assets/esri/core/workers/chunks/{fb444954be74c1962ced.js → 10d80e793019dfb45ca2.js} +1 -1
  12. package/assets/esri/core/workers/chunks/14d5d219e7fe017f23f0.js +1 -0
  13. package/assets/esri/core/workers/chunks/164e74d586297946a717.js +1 -0
  14. package/assets/esri/core/workers/chunks/{1bca39e0e651426bdbb5.js → 1b1d3f6916d2cb751435.js} +1 -1
  15. package/assets/esri/core/workers/chunks/{ed6e9d7f71bfd2691717.js → 1c77de1e79860f8d2228.js} +1 -1
  16. package/assets/esri/core/workers/chunks/1e40a26dcce4d1dadc28.js +1 -0
  17. package/assets/esri/core/workers/chunks/237a1f68a0efbfe5b77c.js +1 -0
  18. package/assets/esri/core/workers/chunks/23c43f09c4a4749516e1.js +1 -0
  19. package/assets/esri/core/workers/chunks/{3418877328f4f0830300.js → 24dac4970526a4e0ae63.js} +1 -1
  20. package/assets/esri/core/workers/chunks/26ceb0ff8d93dbb9b84f.js +1 -0
  21. package/assets/esri/core/workers/chunks/2acf2952cef69e382a35.js +1 -0
  22. package/assets/esri/core/workers/chunks/{481589c3eddad6e026ad.js → 369780276b2755361f7d.js} +1 -1
  23. package/assets/esri/core/workers/chunks/{4df6cb1bee5d0720a43e.js → 36cbd614454581aaf334.js} +1 -1
  24. package/assets/esri/core/workers/chunks/{1e0d2715d603f48a7e0b.js → 370aad23df597db80d65.js} +1 -1
  25. package/assets/esri/core/workers/chunks/3baa4a9c52f41bfd6abb.js +1 -0
  26. package/assets/esri/core/workers/chunks/42d44c7d532df5ee70e9.js +1 -0
  27. package/assets/esri/core/workers/chunks/42e985a576d7aaeed0cf.js +1 -0
  28. package/assets/esri/core/workers/chunks/{6400446b7615b97c3521.js → 45f826554499c38968c6.js} +1 -1
  29. package/assets/esri/core/workers/chunks/48cc58890fddbcf69cef.js +1 -0
  30. package/assets/esri/core/workers/chunks/494bd434fee9032e1d02.js +1 -0
  31. package/assets/esri/core/workers/chunks/{33e4ff228a8c81b99022.js → 4abd3753cd9b80e4d937.js} +1 -1
  32. package/assets/esri/core/workers/chunks/4bbe1f28f5f16a6bef05.js +1 -0
  33. package/assets/esri/core/workers/chunks/4c389472b8cdb0c55154.js +1 -0
  34. package/assets/esri/core/workers/chunks/4e4f747de424941a0bfa.js +1 -0
  35. package/assets/esri/core/workers/chunks/5529831dd891382c79df.js +1 -0
  36. package/assets/esri/core/workers/chunks/5736feefa261589b6273.js +1 -0
  37. package/assets/esri/core/workers/chunks/576248e9ae2654569420.js +1 -0
  38. package/assets/esri/core/workers/chunks/5acb422fe3cf693d9d4f.js +1 -0
  39. package/assets/esri/core/workers/chunks/{aeaaff7a4b1a99540f52.js → 5cb26bbaa08114aec5ce.js} +1 -1
  40. package/assets/esri/core/workers/chunks/661c6324529dd17b297e.js +1 -0
  41. package/assets/esri/core/workers/chunks/68dd1fd2025c7125ead1.js +1 -0
  42. package/assets/esri/core/workers/chunks/{89e76de5ae3328d821a4.js → 69f6d5997b8ff1326e39.js} +1 -1
  43. package/assets/esri/core/workers/chunks/6a8dd8b18b0b825b0c1b.js +1 -0
  44. package/assets/esri/core/workers/chunks/{a40b6d8b5c73e06e14d4.js → 6c255c029d67423e4dac.js} +1 -1
  45. package/assets/esri/core/workers/chunks/7446d0dfebf93e86c098.js +1 -0
  46. package/assets/esri/core/workers/chunks/{688f2dbf784e66082308.js → 74c866e0b66e61751861.js} +1 -1
  47. package/assets/esri/core/workers/chunks/{3ffda5bf0b91700dc308.js → 78643f116677950ea29a.js} +1 -1
  48. package/assets/esri/core/workers/chunks/{916b363c342b61ba5461.js → 787c1a8bda7d745633f2.js} +1 -1
  49. package/assets/esri/core/workers/chunks/7b5f3c79e0605c32b267.js +1 -0
  50. package/assets/esri/core/workers/chunks/7bbfe9ff352afc566367.js +1 -0
  51. package/assets/esri/core/workers/chunks/{ac5a6603f7fa78d3e4c8.js → 7e8611cb709f105946f5.js} +1 -1
  52. package/assets/esri/core/workers/chunks/{05cd33d41d91f8d09633.js → 7fb7493f483cd9878bfa.js} +1 -1
  53. package/assets/esri/core/workers/chunks/{acfa03c65ba3ca6c5685.js → 8715661a838361d4211a.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{601e1d020b8115497944.js → 8a485130781b49dbf608.js} +1 -1
  55. package/assets/esri/core/workers/chunks/{0ccab50877b24f862d6e.js → 8ac2098ecdc40ad41055.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{a655ebdb4bf0660615a2.js → 8b4e9fd88c0c313416d4.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{4e544de61f07ca660236.js → 8c12269d26f5a4c753cb.js} +1 -1
  58. package/assets/esri/core/workers/chunks/8e19629899a5becf8e19.js +1 -0
  59. package/assets/esri/core/workers/chunks/91dd65cf877c8f2e01a7.js +1 -0
  60. package/assets/esri/core/workers/chunks/{46b4fb6a7fe4877b0efc.js → 94baa354e50c03b82b25.js} +2 -2
  61. package/assets/esri/core/workers/chunks/950d4578dc450467404c.js +1 -0
  62. package/assets/esri/core/workers/chunks/{68be3fb88ca61f82fb90.js → 95dbbddac6581b9d671f.js} +1 -1
  63. package/assets/esri/core/workers/chunks/98be2f621801e230aa01.js +1 -0
  64. package/assets/esri/core/workers/chunks/9b051745d24d1f43480b.js +1 -0
  65. package/assets/esri/core/workers/chunks/9d61740ef8bdcc162be1.js +1 -0
  66. package/assets/esri/core/workers/chunks/{eb04e1717a1002cda3ab.js → 9f06ec95bdf0d0b52b41.js} +1 -1
  67. package/assets/esri/core/workers/chunks/{fafb92ca2c5e4b0b2c23.js → a09d2e1e2540921e4717.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{3b3e519f15ed52c83f0c.js → a49fe94933b65b4b64f8.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{1819c45655c836b9a8d7.js → a4d3944700f1cc240176.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{90bdf86f553e2742d67c.js → a7bd5ba4d7d97411fd33.js} +1 -1
  71. package/assets/esri/core/workers/chunks/{900181f68449d8f82eeb.js → aa1ac7954e4f0fefe15b.js} +1 -1
  72. package/assets/esri/core/workers/chunks/ac24b4370dc7194a3107.js +1 -0
  73. package/assets/esri/core/workers/chunks/{b8337492e2b753aefac4.js → ace41659a5ca0e5abfc3.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{3c0ed15b544df6fb0903.js → b48952e1fb4cb7360dd0.js} +1 -1
  75. package/assets/esri/core/workers/chunks/b5e7475cc5fbf31289d3.js +1 -0
  76. package/assets/esri/core/workers/chunks/{f3da30d7300b92bd8bb0.js → befa32b9e7b3fbdd431e.js} +1 -1
  77. package/assets/esri/core/workers/chunks/{0f617980c7dd9ad0444f.js → bf35927979fc5e7e0478.js} +1 -1
  78. package/assets/esri/core/workers/chunks/c4ddac23bd649d24f3f2.js +1 -0
  79. package/assets/esri/core/workers/chunks/{4e6f40cbdb8c508e6df1.js → c5a9e77977e867a75ff2.js} +1 -1
  80. package/assets/esri/core/workers/chunks/{25f19fc929f25ddd628c.js → c79934cd6883307203f8.js} +1 -1
  81. package/assets/esri/core/workers/chunks/cddc3e285f763ccf33c2.js +1 -0
  82. package/assets/esri/core/workers/chunks/d08ff41e2a9bcd58b64a.js +1 -0
  83. package/assets/esri/core/workers/chunks/d311ff96a5a2791d8cfc.js +1 -0
  84. package/assets/esri/core/workers/chunks/d62afb71f4ece4283994.js +1 -0
  85. package/assets/esri/core/workers/chunks/dc1761cba0454fda3cf9.js +1 -0
  86. package/assets/esri/core/workers/chunks/{4ac1d3e49e242e373a92.js → e0650b1408197d3ac862.js} +1 -1
  87. package/assets/esri/core/workers/chunks/{3ff6d1ed3c0f1285f3e7.js → e0d9dc97985561320bd4.js} +1 -1
  88. package/assets/esri/core/workers/chunks/eaddffcc7004101fc230.js +1 -0
  89. package/assets/esri/core/workers/chunks/eb2652ec48faa78de3c5.js +1 -0
  90. package/assets/esri/core/workers/chunks/eca44e53bcee9b08d70a.js +1 -0
  91. package/assets/esri/core/workers/chunks/f00458654c7c34c369ef.js +1 -0
  92. package/assets/esri/core/workers/chunks/f3cd610084e3f4d8656b.js +1 -0
  93. package/assets/esri/core/workers/chunks/f47fe4433b05fca5c3ad.js +1 -0
  94. package/assets/esri/core/workers/chunks/f7bfa3d33b05b250ce33.js +1 -0
  95. package/assets/esri/core/workers/chunks/f91bc1cb1014e05be763.js +1 -0
  96. package/assets/esri/core/workers/chunks/{aadfe34a99c9ec7a0e11.js → f9c5aa0bbf23e780fecc.js} +1 -1
  97. package/assets/esri/core/workers/chunks/f9ff27cfcf0538ac5e26.js +1 -0
  98. package/assets/esri/core/workers/chunks/{19676b2c5f8b0a5ee680.js → facd1ff23203fed67686.js} +1 -1
  99. package/assets/esri/core/workers/chunks/{40a584cb952e94326e9e.js → fcb86d24fc7e0666b564.js} +1 -1
  100. package/assets/esri/libs/pdfjs/wasm/openjpeg_nowasm_fallback.js +1 -0
  101. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  102. package/chunks/Envelope.js +1 -1
  103. package/chunks/MultiPathImpl.js +1 -1
  104. package/chunks/OperatorGeodeticArea.js +1 -1
  105. package/chunks/OperatorShapePreservingLength.js +1 -1
  106. package/chunks/OperatorShapePreservingProject.js +1 -1
  107. package/chunks/UnitFactory.js +1 -1
  108. package/chunks/basis_encoder.js +1 -1
  109. package/chunks/basis_transcoder.js +1 -1
  110. package/chunks/index.js +1 -1
  111. package/chunks/lclayout.js +1 -1
  112. package/config.d.ts +2 -0
  113. package/config.js +1 -1
  114. package/core/ObjectPool.js +1 -1
  115. package/core/PooledArray.js +1 -1
  116. package/core/accessorSupport/DefaultsStore.js +1 -1
  117. package/core/accessorSupport/MultiOriginStore.js +1 -1
  118. package/core/accessorSupport/Store.js +1 -1
  119. package/core/accessorSupport/decorators/reader.js +1 -1
  120. package/core/accessorSupport/decorators/writer.js +1 -1
  121. package/core/accessorSupport/tracking/SimpleTrackingTarget.js +1 -1
  122. package/core/workers/WorkerOwner.js +1 -1
  123. package/core/workers/workerFactory.js +1 -1
  124. package/core/workers/workers.js +2 -2
  125. package/core/workers.d.ts +9 -0
  126. package/form/elements/inputs/DynamicChoiceInput.d.ts +4 -2
  127. package/geometry/Mesh.js +1 -1
  128. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  129. package/geometry/operators/gx/operatorOffset.js +1 -1
  130. package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
  131. package/geometry/operators/support/jsonConverter.js +1 -1
  132. package/geometry/support/buffer/BufferPool.js +1 -1
  133. package/geometry/support/coordsUtils.js +1 -1
  134. package/geometry/support/curves/bezierCurveUtils.js +1 -1
  135. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  136. package/geometry/support/meshUtils/merge.js +1 -1
  137. package/geometry/support/meshUtils/rotate.js +1 -1
  138. package/geometry/support/meshUtils.d.ts +5 -6
  139. package/geometry/support/polygonExtentClipping.js +1 -1
  140. package/identity/Credential.js +1 -1
  141. package/interfaces.d.ts +18 -9
  142. package/kernel.js +1 -1
  143. package/layers/AnnotationFeatureLayer.d.ts +2 -2
  144. package/layers/AnnotationFeatureLayer.js +1 -1
  145. package/layers/CatalogLayer.d.ts +2 -2
  146. package/layers/CatalogLayer.js +1 -1
  147. package/layers/DimensionFeatureLayer.d.ts +2 -2
  148. package/layers/DimensionFeatureLayer.js +1 -1
  149. package/layers/FeatureLayer.d.ts +4 -4
  150. package/layers/FeatureLayer.js +1 -1
  151. package/layers/GeospatialPDFLayer.d.ts +154 -4
  152. package/layers/ImageryTileLayer.js +1 -1
  153. package/layers/Layer.d.ts +2 -0
  154. package/layers/LineOfSightLayer.d.ts +10 -8
  155. package/layers/SceneLayer.js +1 -1
  156. package/layers/SubtypeGroupLayer.d.ts +2 -2
  157. package/layers/SubtypeGroupLayer.js +1 -1
  158. package/layers/ViewshedLayer.d.ts +1 -1
  159. package/layers/VoxelLayer.js +1 -1
  160. package/layers/WMSLayer.js +1 -1
  161. package/layers/geospatialPDF/GeospatialPDFFrame.js +1 -1
  162. package/layers/geospatialPDF/GeospatialPDFLayerWorker.js +9 -9
  163. package/layers/geospatialPDF/GeospatialPDFWorkerClient.js +1 -1
  164. package/layers/geospatialPDF/LGIDictMapFrame.js +1 -1
  165. package/layers/geospatialPDF/ViewportMeasureFrame.js +1 -1
  166. package/layers/geospatialPDF/geospatialPDFParserUtils.js +1 -1
  167. package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
  168. package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
  169. package/layers/graphics/data/QueryEngineResult.js +1 -1
  170. package/layers/graphics/sources/connections/WebSocketConnection.js +1 -1
  171. package/layers/graphics/sources/parquet/FileProvider.js +1 -1
  172. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  173. package/layers/mixins/{FeatureLayerReload.d.ts → ReloadableLayer.d.ts} +5 -3
  174. package/layers/mixins/ReloadableLayer.js +2 -0
  175. package/layers/raster/datasets/BaseRaster.js +1 -1
  176. package/layers/raster/datasets/GeospatialPDFRaster.js +1 -1
  177. package/layers/raster/datasets/ImageAuxRaster.js +2 -2
  178. package/layers/raster/datasets/ImageServerRaster.js +1 -1
  179. package/layers/raster/datasets/InMemoryRaster.js +1 -1
  180. package/layers/raster/datasets/MRFRaster.js +1 -1
  181. package/layers/raster/datasets/TIFFRaster.js +1 -1
  182. package/layers/raster/datasets/WCSRaster.js +1 -1
  183. package/layers/raster/formats/ImageCanvasDecoder.js +1 -1
  184. package/layers/raster/formats/RasterCodec.js +1 -1
  185. package/layers/raster/formats/TiffDecoder.js +1 -1
  186. package/layers/raster/formats/Zlib.js +1 -1
  187. package/layers/raster/functions/stretchUtils.js +1 -1
  188. package/layers/raster/functions/vectorFieldUtils.js +1 -1
  189. package/layers/support/FieldsIndex.js +1 -1
  190. package/layers/support/LabelClass.d.ts +3 -2
  191. package/layers/support/PortalItemData.d.ts +31 -8
  192. package/layers/support/RasterWorker.js +1 -1
  193. package/layers/support/featureReductionProperties.js +1 -1
  194. package/layers/support/kmlUtils.js +1 -1
  195. package/layers/support/types.d.ts +4 -1
  196. package/layers/video/VideoController.js +10 -10
  197. package/libs/maquette/projection.js +1 -1
  198. package/networks/UtilityNetworkTraceAnalysis.js +1 -1
  199. package/package.json +5 -5
  200. package/popup/FeatureModel.js +1 -1
  201. package/popup/FeaturesModel.js +1 -1
  202. package/portal/Portal.js +1 -1
  203. package/request/process.js +1 -1
  204. package/request/types.d.ts +7 -0
  205. package/rest/knowledgeGraph/ObjectValue.js +1 -1
  206. package/rest/knowledgeGraphService.js +1 -1
  207. package/rest/networks/trace.js +1 -1
  208. package/rest/query/executeQuery.js +1 -1
  209. package/smartMapping/raster/renderers/shadedRelief.js +1 -1
  210. package/smartMapping/renderers/univariateColorSize.js +1 -1
  211. package/smartMapping/statistics/support/statsWorker.js +1 -1
  212. package/smartMapping/statistics/support/utils.js +1 -1
  213. package/smartMapping/support/clusterUtils.js +1 -1
  214. package/statistics/utils.js +1 -1
  215. package/symbols/cim/CIMCursor.js +1 -1
  216. package/symbols/cim/CIMSymbolDrawHelper.js +1 -1
  217. package/symbols/cim/cimAnalyzer.js +1 -1
  218. package/symbols/support/ElevationInfo.d.ts +4 -3
  219. package/undoredo/support/Services.js +1 -1
  220. package/views/2d/engine/vectorTiles/buckets/SymbolBucket.js +2 -2
  221. package/views/2d/engine/webgl/shaderGraph/techniques/labels/LabelMeshWriter.js +1 -1
  222. package/views/2d/grid/GridView2D.js +1 -1
  223. package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
  224. package/views/2d/layers/features/sources/strategies/FeatureHybridTileLoadStrategy.js +1 -1
  225. package/views/2d/layers/features/sources/strategies/FeaturePagedTileLoadStrategy.js +1 -1
  226. package/views/2d/layers/features/sources/strategies/FeatureSnapshotLoadStrategy.js +1 -1
  227. package/views/2d/viewpointUtils.js +1 -1
  228. package/views/3d/analysis/AreaMeasurement/support/MeasurementData.js +1 -1
  229. package/views/3d/analysis/DirectLineMeasurementAnalysisView3D.js +1 -1
  230. package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
  231. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  232. package/views/3d/analysis/LineOfSight/LineOfSightPlacementController.js +1 -1
  233. package/views/3d/analysis/LineOfSight/{LineOfSightRootPlugin.js → LineOfSightPlacementRootPlugin.js} +1 -1
  234. package/views/3d/analysis/LineOfSight/LineOfSightTool.js +1 -1
  235. package/views/3d/analysis/LineOfSight/types.d.ts +14 -3
  236. package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +39 -13
  237. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  238. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  239. package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
  240. package/views/3d/analysis/Viewshed/types.d.ts +7 -0
  241. package/views/3d/analysis/ViewshedAnalysisView3D.d.ts +43 -15
  242. package/views/3d/input/handlers/KeyboardNavigation.js +1 -1
  243. package/views/3d/interactive/editingTools/ManipulatedObject3DGraphic.js +1 -1
  244. package/views/3d/interactive/editingTools/draw/DrawGraphicTool3D.js +1 -1
  245. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  246. package/views/3d/interactive/editingTools/transform/ExtentTransformTool.js +1 -1
  247. package/views/3d/interactive/editingTools/transform/ScaleRotateTransform.js +1 -1
  248. package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
  249. package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
  250. package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
  251. package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
  252. package/views/3d/layers/graphics/Graphics3DElevationAlignment.js +1 -1
  253. package/views/3d/layers/graphics/Graphics3DGraphic.js +1 -1
  254. package/views/3d/layers/graphics/Graphics3DIconSymbolLayer.js +1 -1
  255. package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
  256. package/views/3d/layers/graphics/SpatialIndex2D.js +1 -1
  257. package/views/3d/layers/i3s/I3SNode.js +1 -1
  258. package/views/3d/layers/i3s/I3SUtil.js +1 -1
  259. package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
  260. package/views/3d/layers/i3s/LayerElevationProvider.js +1 -1
  261. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  262. package/views/3d/layers/support/FeatureTileFetcher3DDebugger.js +1 -1
  263. package/views/3d/layers/support/ImageHighlightHelper3D.js +1 -1
  264. package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
  265. package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
  266. package/views/3d/support/MemoryController.js +1 -1
  267. package/views/3d/support/elevationUpdateExtentUtils.js +1 -1
  268. package/views/3d/support/elevationUpdateUtils.js +1 -1
  269. package/views/3d/support/pointsOfInterest/Focus.js +1 -1
  270. package/views/3d/support/sphereExtentUtils.js +2 -0
  271. package/views/3d/terrain/OverlayFramebufferObject.js +1 -1
  272. package/views/3d/terrain/OverlayRenderer.js +1 -1
  273. package/views/3d/terrain/PatchRenderData.js +1 -1
  274. package/views/3d/terrain/TerrainData.js +1 -1
  275. package/views/3d/terrain/terrainUtils.js +1 -1
  276. package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
  277. package/views/3d/webgl-engine/effects/geometry/RenderOccluded.js +1 -1
  278. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  279. package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
  280. package/views/3d/webgl-engine/lib/PathBuilder.js +1 -1
  281. package/views/3d/webgl-engine/lib/PathCapBuilder.js +1 -1
  282. package/views/3d/webgl-engine/lib/PathEvaluator.js +1 -1
  283. package/views/3d/webgl-engine/lib/PathExtruder.js +1 -1
  284. package/views/3d/webgl-engine/lib/PathProfile.js +1 -1
  285. package/views/3d/webgl-engine/lib/Renderer.js +1 -1
  286. package/views/3d/webgl-engine/lib/ViewshedShadowMap.js +1 -1
  287. package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
  288. package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
  289. package/views/3d/webgl-engine/materials/renderers/PerBufferData.js +1 -1
  290. package/views/SceneView.js +1 -1
  291. package/views/ToolViewManager.js +1 -1
  292. package/views/draw/DrawOperation.js +1 -1
  293. package/views/draw/support/InteractiveHandle.js +1 -1
  294. package/views/draw/support/Reshape.js +1 -1
  295. package/views/draw/support/createUtils.js +1 -1
  296. package/views/draw/support/editingSessionUtils.js +1 -1
  297. package/views/draw/support/managers/InteractiveHandleManager.js +1 -1
  298. package/views/interactive/SegmentLabels.js +1 -1
  299. package/views/interactive/editGeometry/EditGeometry.js +1 -1
  300. package/views/interactive/editGeometry/EditGeometryOperations.js +1 -1
  301. package/views/interactive/editGeometry/operations/SetAllVertexPositions.js +1 -1
  302. package/views/interactive/editGeometry/operations/UndoGroup.js +1 -1
  303. package/views/interactive/options/TooltipOptions.d.ts +2 -0
  304. package/views/interactive/sketch/SketchTooltipOptions.d.ts +2 -0
  305. package/views/interactive/sketch/constraintUtils.js +1 -1
  306. package/views/interactive/snapping/SnappingDragPipelineStep.js +1 -1
  307. package/views/interactive/tooltip/components/TooltipEditableField.js +1 -1
  308. package/views/layers/LayerView.js +1 -1
  309. package/views/layers/LineOfSightLayerView.d.ts +35 -13
  310. package/views/layers/SketchLayerView.d.ts +1 -0
  311. package/views/layers/ViewshedLayerView.d.ts +36 -12
  312. package/views/webgl/Program.js +1 -1
  313. package/views/webgl/Texture.js +1 -1
  314. package/widgets/BasemapToggle/BasemapToggleViewModel.js +1 -1
  315. package/widgets/BatchAttributeForm/inputs/support/DynamicChoiceController.js +1 -1
  316. package/widgets/BatchAttributeForm.js +1 -1
  317. package/widgets/Directions.js +1 -1
  318. package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
  319. package/widgets/Editor/EditorViewModel.d.ts +10 -1
  320. package/widgets/Editor/legacy/CreateFeaturesWorkflow.js +1 -1
  321. package/widgets/Editor.d.ts +10 -1
  322. package/widgets/ElevationProfile/support/chartUtils.js +1 -1
  323. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  324. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  325. package/widgets/FeatureTable/support/GroupColumnTemplate.js +1 -1
  326. package/widgets/FeatureTable/support/TableTemplate.js +1 -1
  327. package/widgets/HistogramRangeSlider.d.ts +2 -2
  328. package/widgets/HistogramRangeSlider.js +1 -1
  329. package/widgets/Legend.d.ts +1 -0
  330. package/widgets/Print.js +1 -1
  331. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.d.ts +5 -2
  332. package/widgets/ScaleRangeSlider/ScaleRangeSliderViewModel.js +1 -1
  333. package/widgets/ScaleRangeSlider.js +1 -1
  334. package/widgets/Slice.js +1 -1
  335. package/widgets/UtilityNetworkTraceAnalysis/UtilityNetworkTraceAnalysisViewModel.js +1 -1
  336. package/widgets/ValuePicker/ValuePickerBaseComponent.d.ts +5 -1
  337. package/widgets/ValuePicker/ValuePickerCollection.d.ts +2 -0
  338. package/widgets/ValuePicker/ValuePickerCombobox.d.ts +7 -1
  339. package/widgets/ValuePicker/ValuePickerLabel.d.ts +7 -1
  340. package/widgets/ValuePicker/ValuePickerSlider.d.ts +2 -0
  341. package/widgets/ValuePicker/ValuePickerSliderVisibleElements.d.ts +5 -1
  342. package/widgets/ValuePicker/ValuePickerVisibleElements.d.ts +5 -1
  343. package/widgets/ValuePicker/types.d.ts +2 -0
  344. package/widgets/support/SelectionList/SelectionListViewModel.js +1 -1
  345. package/widgets/support/SelectionList.js +1 -1
  346. package/widgets/support/componentsUtils.js +1 -1
  347. package/assets/esri/core/workers/chunks/024b44c0c8876627f904.js +0 -1
  348. package/assets/esri/core/workers/chunks/02c5d027bdaee67869cf.js +0 -1
  349. package/assets/esri/core/workers/chunks/03261b9451e293a0fac8.js +0 -1
  350. package/assets/esri/core/workers/chunks/037a8cc19debbaaa4e10.js +0 -1
  351. package/assets/esri/core/workers/chunks/0c8c01097847617261b9.js +0 -1
  352. package/assets/esri/core/workers/chunks/0d931c7579b6409a696d.js +0 -1
  353. package/assets/esri/core/workers/chunks/12c154342fff876f2f1e.js +0 -1
  354. package/assets/esri/core/workers/chunks/1c65ab9ed611c322ce27.js +0 -1
  355. package/assets/esri/core/workers/chunks/1e11d2e97d17685b878a.js +0 -1
  356. package/assets/esri/core/workers/chunks/1f339247b68b061ab0a4.js +0 -1
  357. package/assets/esri/core/workers/chunks/21ddb26526bcb2b122c3.js +0 -1
  358. package/assets/esri/core/workers/chunks/22e8c0aad2fe75943865.js +0 -1
  359. package/assets/esri/core/workers/chunks/2eae542fe7f0f6576ac1.js +0 -1
  360. package/assets/esri/core/workers/chunks/408e81c8f1eff8a7b379.js +0 -1
  361. package/assets/esri/core/workers/chunks/444e5f214abce3d607cd.js +0 -1
  362. package/assets/esri/core/workers/chunks/46a7da93a63663878583.js +0 -1
  363. package/assets/esri/core/workers/chunks/4a1e23e021bac37a88ab.js +0 -1
  364. package/assets/esri/core/workers/chunks/4c4117e28ea358a32088.js +0 -1
  365. package/assets/esri/core/workers/chunks/54b18559280a7d2a8d93.js +0 -1
  366. package/assets/esri/core/workers/chunks/59b216b60464611742d4.js +0 -1
  367. package/assets/esri/core/workers/chunks/5bfea0c55aca826de536.js +0 -1
  368. package/assets/esri/core/workers/chunks/62ac588f7dd1d24d0c9d.js +0 -1
  369. package/assets/esri/core/workers/chunks/62c8c9ad09e0166207fd.js +0 -1
  370. package/assets/esri/core/workers/chunks/62d6e101e9bd9557a410.js +0 -1
  371. package/assets/esri/core/workers/chunks/6558488ea96620439f34.js +0 -1
  372. package/assets/esri/core/workers/chunks/665e31c494d2af505acc.js +0 -1
  373. package/assets/esri/core/workers/chunks/6f4e6022a52de0c54aab.js +0 -1
  374. package/assets/esri/core/workers/chunks/7267b17de212207142c9.js +0 -1
  375. package/assets/esri/core/workers/chunks/7ef182e24cad50815b4e.js +0 -1
  376. package/assets/esri/core/workers/chunks/8293600f94553afc8c38.js +0 -1
  377. package/assets/esri/core/workers/chunks/8431ca60ad33d594e323.js +0 -1
  378. package/assets/esri/core/workers/chunks/876f7633c15f1e31078d.js +0 -1
  379. package/assets/esri/core/workers/chunks/8ca9648eacb894283513.js +0 -1
  380. package/assets/esri/core/workers/chunks/91ebb2ccab1889eb7e81.js +0 -1
  381. package/assets/esri/core/workers/chunks/9ce91a909eccc4dfe388.js +0 -1
  382. package/assets/esri/core/workers/chunks/9e1a3b6a08c96dcefdde.js +0 -1
  383. package/assets/esri/core/workers/chunks/9e3e442a9874ed23a043.js +0 -1
  384. package/assets/esri/core/workers/chunks/ad76f7ab2f3e6d5a5b3c.js +0 -1
  385. package/assets/esri/core/workers/chunks/aff32980d91dab07dfb7.js +0 -1
  386. package/assets/esri/core/workers/chunks/bbf993dba74850bbf9d7.js +0 -1
  387. package/assets/esri/core/workers/chunks/d8f1cefcad02d7353d4b.js +0 -1
  388. package/assets/esri/core/workers/chunks/d938987344bce83cc660.js +0 -1
  389. package/assets/esri/core/workers/chunks/ddf0671976648f621269.js +0 -1
  390. package/assets/esri/core/workers/chunks/de02f60258e6985ef676.js +0 -1
  391. package/assets/esri/core/workers/chunks/e10b57aefcc89671116e.js +0 -1
  392. package/assets/esri/core/workers/chunks/e65dfa19f030ec298437.js +0 -1
  393. package/assets/esri/core/workers/chunks/f122c18af10e56f9ec2b.js +0 -1
  394. package/assets/esri/core/workers/chunks/f92364afaefbac7e8f77.js +0 -1
  395. package/assets/esri/core/workers/chunks/fd9663952d5a94f3a83f.js +0 -1
  396. package/assets/esri/core/workers/chunks/fe9879ecd69ac4329291.js +0 -1
  397. package/layers/mixins/FeatureLayerReload.js +0 -2
  398. /package/views/3d/analysis/LineOfSight/{lineOfSightPlacementUtils.js → placementUtils.js} +0 -0
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import n from"../../core/Error.js";import{EventedAccessor as r}from"../../core/Evented.js";import i from"../../core/Logger.js";import{getOrCreateMapValue as a}from"../../core/MapUtils.js";import{debounce as o,logOnError as s}from"../../core/promiseUtils.js";import c from"../../core/ReactiveMap.js";import{whenOnce as l,watch as u}from"../../core/reactiveUtils.js";import{property as d,subclass as f}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as p}from"../../core/support/UpdatingHandles.js";import{parse as m}from"../../layers/support/arcgisLayerUrl.js";import{isSubtypeGroupLayer as h,isFeatureLayer as g}from"../../layers/support/layerUtils.js";import _ from"../../rest/featureService/FeatureService.js";import{ServiceVersionInfo as v}from"./ServiceVersionInfo.js";function y(e){return!e||e.trim().length===0}const b=new Map;function x(e){return a(b,e,()=>{let t=new S({view:e});return e.addHandles({remove(){b.delete(e),t.destroy()}}),t})}let S=class extends r{constructor(e){super(e),this._updatingHandles=new p,this.items=new t,this.tablesAndLayersLookup=new c,this.additionalLayers=new t,this._debouncedCheckAndUpdateServiceInfos=o(async()=>{let e=[];for(let t of this.items)t.layersAndTables.length!==0&&t.layersAndTables.getItemAt(0)?.gdbVersion!==t.versionInfo?.versionIdentifier.name&&e.push(t);e.length!==0&&(await l(()=>!this.updating),await this._updateVersionInfos(e))}),this._processed=new Set}initialize(){this._syncServiceInfos(),this.addHandles([u(()=>this.view.map,()=>{this._reset()}),u(()=>this._allLayersAndTables,()=>this._syncServiceInfos()),u(()=>this.items.map(e=>e.layersAndTables.map(e=>e.gdbVersion??``).join(`,`)),()=>{s(this.checkAndUpdateServiceInfos(),i.getLogger(this))})])}destroy(){this._set(`view`,null),this.items.removeAll(),this.tablesAndLayersLookup.clear()}get updating(){return this._updatingHandles.updating}checkAndUpdateServiceInfos(){return this._debouncedCheckAndUpdateServiceInfos()}changeVersion(e,t,n){return this._updatingHandles.addPromise((async()=>{await this._changeVersionInternal(e,t,n)})())}createVersion(e){return this._updatingHandles.addPromise((async()=>{let t=e.featureServerUrl,r=this._findServiceInfo(t);if(!r?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let i=r.loggedInServiceUser.toUpperCase(),a=y(e.ownerName)?i:e.ownerName?.trim().toUpperCase();if(a!==i&&r.featureServiceVersion<=11.1)throw new n(`services:versioning-api-error`,`Version management API too old`);if(a?.toUpperCase()===`SDE`&&e.versionName.toUpperCase()===`DEFAULT`||(await r.versionService.getVersionInfos())?.find(t=>t.versionIdentifier.name.toUpperCase()===(a+`.`+e.versionName).toUpperCase()||t.versionIdentifier.name.toUpperCase()===(i+`.`+e.versionName).toUpperCase()))throw new n(`services:no-valid-version-name`,`No valid version name`);let o=await r.versionService.createVersion({versionName:e.versionName,access:a===i?e.access:`public`,description:e.description});if(a!==i){let{guid:t,name:n}=o.versionIdentifier;await r.versionService.alterVersion({guid:t,name:n},{ownerName:a,access:e.access})}e.switchToVersion&&await this._changeVersionInternal(t,o.versionIdentifier.name,o.versionIdentifier.guid),this.emit(`version-created`,{versionIdentifier:o.versionIdentifier,versionManagementService:r.versionService})})())}deleteVersion(e,t,r){return this._updatingHandles.addPromise((async()=>{let i=this._findServiceInfo(e);if(!i?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);if(i.featureServiceVersion<=11.1)throw new n(`services:versioning-api-error`,`Version management API too old`);let a={name:t,guid:r};await i.versionService.deleteVersion(a)&&(await i.syncVersionInfo(),this.emit(`version-deleted`,{versionIdentifier:a,versionManagementService:i.versionService}))})())}startEditing(e){return this._updatingHandles.addPromise((async()=>{let t=this._findServiceInfo(e);if(!t?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let r=t.versionInfo?.versionIdentifier??{name:t.versionService.defaultVersionIdentifier.name,guid:t.versionService.defaultVersionIdentifier.guid},i=!0;t.versionService.getLockType(r)===`none`&&(i=await t.versionService.startReading(r),!i)||(i=await t.versionService.startEditing(r),t.updateLockType())})())}finishEditing(e,t){return this._updatingHandles.addPromise((async()=>{let r=this._findServiceInfo(e);if(!r?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let i=r.versionInfo?.versionIdentifier??{name:r.versionService.defaultVersionIdentifier.name,guid:r.versionService.defaultVersionIdentifier.guid},a=r.versionService.getLockType(i);a!==`none`&&(a===`read`?(await r.versionService.stopReading(i),r.updateLockType()):a===`edit`&&(await r.versionService.stopEditing(i,t),await r.versionService.stopReading(i),r.updateLockType()))})())}async loadAll(){await this._updatingHandles.addPromise(Promise.allSettled(this.items.map(e=>e.load())))}async loadServiceVersionInfoForLayer(e){return await this.tablesAndLayersLookup.get(e)?.load()}async _changeVersionInternal(e,t,r){let i=this._findServiceInfo(e);if(!i?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let a=i.versionInfo?.versionIdentifier??{name:i.versionService.defaultVersionIdentifier.name,guid:i.versionService.defaultVersionIdentifier.guid},o={name:t,guid:r};await i.versionService.changeVersion(this.view?.map,a,o)&&await i.syncVersionInfo()}_findServiceInfo(e){return this.items.find(t=>t.featureService.url===e)??null}_removeFeatureService(e){this.items.remove(e)}_reset(){this.additionalLayers.removeAll(),this._processed.clear(),this.tablesAndLayersLookup.clear(),this.items.removeAll()}_updateVersionInfos(e){return this._updatingHandles.addPromise((async()=>{for(let t of e)await t.syncVersionInfo().catch(e=>{i.getLogger(this).error(`Failed to update version details`,e)})})())}_addServiceInfo(e,n){let r=new _({url:e}),i=n.isTable?[]:[n],a=n.isTable?[n]:[],o=new v({featureService:r,layers:new t(i),tables:new t(a)});return this.items.push(o),this.tablesAndLayersLookup.set(n,o),o}get _allLayersAndTables(){return[...this.view.map?.allLayers??[],...this.view.map?.allTables??[],...this.additionalLayers]}_detectNewLayersAndTables(){let e=new Set(this._allLayersAndTables),t=[];for(let n of e)(n.type===`feature`||n.type===`subtype-group`)&&(this._processed.has(n)||t.push(n));for(let t of this._processed)if(!e.has(t)&&(h(t)||g(t))){let e=this.tablesAndLayersLookup.get(t);if(!e)continue;this.tablesAndLayersLookup.delete(t),t.isTable?e.tables.remove(t):e.layers.remove(t),e.layersAndTables.length===0&&this._removeFeatureService(e)}return this._processed=e,t}_syncServiceInfos(){let e=this._detectNewLayersAndTables();if(e.length!==0){for(let t of e)if(t.type===`feature`||t.type===`subtype-group`){if(!t.url)continue;let e=m(t.url).url.path,n=this._findServiceInfo(e);n?(this.tablesAndLayersLookup.set(t,n),t.isTable?n.tables.push(t):n.layers.push(t)):this._addServiceInfo(e,t)}}}};e([d({constructOnly:!0})],S.prototype,`view`,void 0),e([d()],S.prototype,`items`,void 0),e([d()],S.prototype,`tablesAndLayersLookup`,void 0),e([d()],S.prototype,`additionalLayers`,void 0),e([d()],S.prototype,`updating`,null),e([d()],S.prototype,`_allLayersAndTables`,null),S=e([f(`esri.undoredo.support.Services`)],S);export{S as Services,x as getServices};
2
+ import{__decorate as e}from"tslib";import t from"../../core/Collection.js";import n from"../../core/Error.js";import{EventedAccessor as r}from"../../core/Evented.js";import i from"../../core/Logger.js";import{getOrCreateMapValue as a}from"../../core/MapUtils.js";import{debounce as o,logOnError as s}from"../../core/promiseUtils.js";import c from"../../core/ReactiveMap.js";import{whenOnce as l,watch as u}from"../../core/reactiveUtils.js";import{property as d,subclass as f}from"../../core/accessorSupport/decorators.js";import{UpdatingHandles as p}from"../../core/support/UpdatingHandles.js";import{parse as m}from"../../layers/support/arcgisLayerUrl.js";import{isSubtypeGroupLayer as h,isFeatureLayer as g}from"../../layers/support/layerUtils.js";import _ from"../../rest/featureService/FeatureService.js";import{ServiceVersionInfo as v}from"./ServiceVersionInfo.js";function y(e){return!e||e.trim().length===0}const b=new Map;function x(e){return a(b,e,()=>{let t=new S({view:e});return e.addHandles({remove(){b.delete(e),t.destroy()}}),t})}let S=class extends r{constructor(e){super(e),this._updatingHandles=new p,this.items=new t,this.tablesAndLayersLookup=new c,this.additionalLayers=new t,this._debouncedCheckAndUpdateServiceInfos=o(async()=>{let e=[];for(let t of this.items)t.layersAndTables.length!==0&&t.layersAndTables.getItemAt(0)?.gdbVersion!==t.versionInfo?.versionIdentifier.name&&e.push(t);e.length!==0&&(await l(()=>!this.updating),await this._updateVersionInfos(e))}),this._processed=new Set}initialize(){this._syncServiceInfos(),this.addHandles([u(()=>this.view.map,()=>{this._reset()}),u(()=>this._allLayersAndTables,()=>this._syncServiceInfos()),u(()=>this.items.map(e=>e.layersAndTables.map(e=>e.gdbVersion??``).join(`,`)),()=>{s(this.checkAndUpdateServiceInfos(),i.getLogger(this))})])}destroy(){this._set(`view`,null),this.items.removeAll(),this.tablesAndLayersLookup.clear()}get updating(){return this._updatingHandles.updating}checkAndUpdateServiceInfos(){return this._debouncedCheckAndUpdateServiceInfos()}changeVersion(e,t,n){return this._updatingHandles.addPromise((async()=>{await this._changeVersionInternal(e,t,n)})())}createVersion(e){return this._updatingHandles.addPromise((async()=>{let t=e.featureServerUrl,r=this._findServiceInfo(t);if(!r?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let i=r.loggedInServiceUser.toUpperCase(),a=y(e.ownerName)?i:e.ownerName?.trim().toUpperCase();if(a!==i&&r.featureServiceVersion<=11.1)throw new n(`services:versioning-api-error`,`Version management API too old`);if(a?.toUpperCase()===`SDE`&&e.versionName.toUpperCase()===`DEFAULT`||(await r.versionService.getVersionInfos())?.find(t=>t.versionIdentifier.name.toUpperCase()===(a+`.`+e.versionName).toUpperCase()||t.versionIdentifier.name.toUpperCase()===(i+`.`+e.versionName).toUpperCase()))throw new n(`services:no-valid-version-name`,`No valid version name`);let o=await r.versionService.createVersion({versionName:e.versionName,access:a===i?e.access:`public`,description:e.description});if(a!==i){let{guid:t,name:n}=o.versionIdentifier;await r.versionService.alterVersion({guid:t,name:n},{ownerName:a,access:e.access})}e.switchToVersion&&await this._changeVersionInternal(t,o.versionIdentifier.name,o.versionIdentifier.guid),this.emit(`version-created`,{versionIdentifier:o.versionIdentifier,versionManagementService:r.versionService})})())}deleteVersion(e,t,r){return this._updatingHandles.addPromise((async()=>{let i=this._findServiceInfo(e);if(!i?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);if(i.featureServiceVersion<=11.1)throw new n(`services:versioning-api-error`,`Version management API too old`);let a={name:t,guid:r};await i.versionService.deleteVersion(a)&&(await i.syncVersionInfo(),this.emit(`version-deleted`,{versionIdentifier:a,versionManagementService:i.versionService}))})())}startEditing(e){return this._updatingHandles.addPromise((async()=>{let t=this._findServiceInfo(e);if(!t?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let r=t.versionInfo?.versionIdentifier??{name:t.versionService.defaultVersionIdentifier.name,guid:t.versionService.defaultVersionIdentifier.guid},i=!0;t.versionService.getLockType(r)===`none`&&(i=await t.versionService.startReading(r),!i)||(i=await t.versionService.startEditing(r),t.updateLockType())})())}finishEditing(e,t){return this._updatingHandles.addPromise((async()=>{let r=this._findServiceInfo(e);if(!r?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let i=r.versionInfo?.versionIdentifier??{name:r.versionService.defaultVersionIdentifier.name,guid:r.versionService.defaultVersionIdentifier.guid},a=r.versionService.getLockType(i);a!==`none`&&(a===`read`?(await r.versionService.stopReading(i),r.updateLockType()):a===`edit`&&(await r.versionService.stopEditing(i,t),await r.versionService.stopReading(i),r.updateLockType()))})())}async loadAll(){await this._updatingHandles.addPromise(Promise.allSettled(this.items.map(e=>e.load())))}async loadServiceVersionInfoForLayer(e){return await this.tablesAndLayersLookup.get(e)?.load()}async _changeVersionInternal(e,t,r){let i=this._findServiceInfo(e);if(!i?.versionService)throw new n(`services:no-version-management-service`,`No version management service`);let a=i.versionInfo?.versionIdentifier??{name:i.versionService.defaultVersionIdentifier.name,guid:i.versionService.defaultVersionIdentifier.guid},o={name:t,guid:r};await i.versionService.changeVersion(this.view?.map,a,o)&&await i.syncVersionInfo()}_findServiceInfo(e){return this.items.find(t=>t.featureService.url===e)??null}_removeFeatureService(e){this.items.remove(e)}_reset(){this.additionalLayers.removeAll(),this._processed.clear(),this.tablesAndLayersLookup.clear(),this.items.removeAll()}_updateVersionInfos(e){return this._updatingHandles.addPromise((async()=>{for(let t of e)await t.syncVersionInfo().catch(e=>{i.getLogger(this).error(`Failed to update version details`,e)})})())}_addServiceInfo(e,n){let r=new _({url:e}),i=n.isTable?[]:[n],a=n.isTable?[n]:[],o=new v({featureService:r,layers:new t(i),tables:new t(a)});return this.items.push(o),this.tablesAndLayersLookup.set(n,o),o}get _allLayersAndTables(){return[...this.view.map?.allLayers??[],...this.view.map?.allTables??[],...this.additionalLayers]}_detectNewLayersAndTables(){let e=new Set(this._allLayersAndTables),t=[];for(let n of e)n.type!==`feature`&&n.type!==`subtype-group`||this._processed.has(n)||t.push(n);for(let t of this._processed)if(!e.has(t)&&(h(t)||g(t))){let e=this.tablesAndLayersLookup.get(t);if(!e)continue;this.tablesAndLayersLookup.delete(t),t.isTable?e.tables.remove(t):e.layers.remove(t),e.layersAndTables.length===0&&this._removeFeatureService(e)}return this._processed=e,t}_syncServiceInfos(){let e=this._detectNewLayersAndTables();if(e.length!==0){for(let t of e)if(t.type===`feature`||t.type===`subtype-group`){if(!t.url)continue;let e=m(t.url).url.path,n=this._findServiceInfo(e);n?(this.tablesAndLayersLookup.set(t,n),t.isTable?n.tables.push(t):n.layers.push(t)):this._addServiceInfo(e,t)}}}};e([d({constructOnly:!0})],S.prototype,`view`,void 0),e([d()],S.prototype,`items`,void 0),e([d()],S.prototype,`tablesAndLayersLookup`,void 0),e([d()],S.prototype,`additionalLayers`,void 0),e([d()],S.prototype,`updating`,null),e([d()],S.prototype,`_allLayersAndTables`,null),S=e([f(`esri.undoredo.support.Services`)],S);export{S as Services,x as getServices};
@@ -1,3 +1,3 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../../core/BidiEngine.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{numericHash as n}from"../../../../../core/string.js";import{Point as r}from"../../../../../geometry/support/TileClipper.js";import{tilePixelRatio as i,tileSizeInTileUnits as a}from"../constants.js";import{cDegToRad as o,log2 as s,interpolate as c}from"../GeometryUtils.js";import{Anchor as l}from"../Placement.js";import{sdfGlyphSize as u,TextShaping as d}from"../TextShaping.js";import f from"./BaseBucket.js";import{getPolygonLabelPlacement as p}from"../style/GeoJSONLabelUtils.js";import{IconLayout as m,TextLayout as h}from"../style/StyleLayer.js";function g(e,t){return e.iconMosaicItem&&t.iconMosaicItem?e.iconMosaicItem.page===t.iconMosaicItem.page?0:e.iconMosaicItem.page-t.iconMosaicItem.page:e.iconMosaicItem&&!t.iconMosaicItem?1:!e.iconMosaicItem&&t.iconMosaicItem?-1:0}class _ extends f{constructor(e,t,n,r,i,a,o,s,c){super(t,n,c.getSpriteItems()),this.type=3,this._markerMap=new Map,this._glyphMap=new Map,this._glyphBufferDataStorage=new Map,this._isIconSDF=!1,this._sourceTileKey=e,this._iconVertexBuffer=r,this._iconIndexBuffer=i,this._textVertexBuffer=a,this._textIndexBuffer=o,this._placementEngine=s,this._workerTileHandler=c}get markerPageMap(){return this._markerMap}get glyphsPageMap(){return this._glyphMap}get symbolInstances(){return this._symbolInstances}static{this._bidiEngine=new e}getResources(e,t,r){let i=this.layer,a=this.zoom;e&&e.setExtent(this.layerExtent);let o=i.getLayoutProperty(`icon-image`),s=i.getLayoutProperty(`text-field`),c=i.getLayoutProperty(`text-transform`),l=i.getLayoutProperty(`text-font`),u=[],d;o&&!o.isDataDriven&&(d=o.getValue(a));let f;s&&!s.isDataDriven&&(f=s.getValue(a));let p;(!c||!c.isDataDriven)&&(p=i.getLayoutValue(`text-transform`,a),c=null);let m;(!l||!l.isDataDriven)&&(m=i.getLayoutValue(`text-font`,a),l=null);for(let h of this._features){let g=h.getGeometry(e);if(!g||g.length===0)continue;let v;o&&(v=o.isDataDriven?o.getValue(a,h):this._replaceKeys(d,h.values),v&&t(v));let y,b=!1;if(s&&(y=s.isDataDriven?s.getValue(a,h):this._replaceKeys(f,h.values),y)){switch(y=y.replaceAll(`\\n`,`
3
- `),c&&(p=c.getValue(a,h)),p){case 2:y=y.toLowerCase();break;case 1:y=y.toUpperCase()}if(_._bidiEngine.hasBidiChar(y)){let e=_._bidiEngine.checkContextual(y),t;t=e===`rtl`?`IDNNN`:`ICNNN`,y=_._bidiEngine.bidiTransform(y,t,`VLYSN`),b=!0}if(y.length>0){l&&(m=l.getValue(a,h));for(let e of m){let t=r[e];t||=r[e]=new Set;for(let e of y){let n=e.codePointAt(0);n!=null&&t.add(n)}}}}if(!v&&!y)continue;let x=i.getLayoutValue(`symbol-sort-key`,a,h),S={feature:h,sprite:v,label:y,rtl:b,geometry:g,hash:(y?n(y):0)^(v?n(v):0),priority:x,textFont:m};u.push(S)}this._symbolFeatures=u}processFeatures(e){e&&e.setExtent(this.layerExtent);let n=this.layer,r=this.zoom,s=n.getLayoutValue(`symbol-placement`,r),c=s!==0,f=n.getLayoutValue(`symbol-spacing`,r)*i,p=n.getLayoutProperty(`icon-image`),v=n.getLayoutProperty(`text-field`),y=p?new m(n,r,c):null,b=v?new h(n,r,c):null,x=this._workerTileHandler,S;p&&(S=x.getSpriteItems()),this._iconIndexStart=this._iconIndexBuffer.index*3,this._textIndexStart=this._textIndexBuffer.index*3,this._iconIndexCount=0,this._textIndexCount=0,this._markerMap.clear(),this._glyphMap.clear();let C=[],w=1;b?.size&&(w=b.size/u);let T=b?b.maxAngle*o:0,E=b?b.size*i:0;for(let e of this._symbolFeatures){let o;y&&S&&e.sprite&&(o=S[e.sprite],o&&o.sdf&&(this._isIconSDF=!0)),o&&y.update(r,e.feature);let p,m=0,h=e.label;if(h){t(b),b.update(r,e.feature);let n=c&&b.rotationAlignment===0?b.keepUpright:b.writingMode&&b.writingMode.includes(1),a=.5;switch(b.anchor){case 5:case 1:case 7:a=0;break;case 6:case 2:case 8:a=1}let o=.5;switch(b.anchor){case 5:case 3:case 6:o=0;break;case 7:case 4:case 8:o=1}let s=.5;switch(b.justify){case 0:s=a;break;case 1:s=0;break;case 3:s=1}let l=b.letterSpacing*u,f=c?0:b.maxWidth*u,g=b.lineHeight*u,_=e.textFont.map(e=>x.getGlyphItems(e));if(p=new d(_,f,g,l,a,o,s).getShaping(h,e.rtl,n),p&&p.length>0){let e=1e30,t=-1e30;for(let n of p)e=Math.min(e,n.x),t=Math.max(t,n.x);m=(t-e+u*2)*w*i}}let g=_._getPlacementCandidates(n,s,e.feature,e.geometry);for(let t of g){let{vertices:n}=t,r=[];if(s===1){if(p?.length&&b?.size){let e=b.size*i*(2+Math.min(2,Math.abs(b.offset[1])*4));n=_._smoothVertices(n,e)}_._pushAnchors(r,n,f,m)}else s===2?_._pushCenterAnchor(r,n):e.feature.type===3?t.anchor?r.push(t.anchor):_._pushCentroid(r,n):r.push(new l(n[0].x,n[0].y));for(let t of r){if(t.x<0||t.x>a||t.y<0||t.y>a||c&&m>0&&b?.rotationAlignment===0&&!_._honorsTextMaxAngle(n,t,m,T,E))continue;let r={shaping:p,line:n,iconMosaicItem:o,anchor:t,symbolFeature:e,textColliders:[],iconColliders:[],textVertexRanges:[],iconVertexRanges:[]};C.push(r),this._processFeature(r,y,b)}}}C.sort(g),this._addPlacedGlyphs(),this._symbolInstances=C}serialize(){let e=14;e+=this.layerUIDs.length,e+=this.markerPageMap.size*3,e+=this.glyphsPageMap.size*3,e+=_._symbolsSerializationLength(this._symbolInstances),e+=this._iconVertexBuffer.array.length,e+=this._iconIndexBuffer.array.length,e+=this._textVertexBuffer.array.length,e+=this._textIndexBuffer.array.length;let t=new Uint32Array(e),n=new Int32Array(t.buffer),r=new Float32Array(t.buffer),[i,a,o]=this._sourceTileKey.split(`/`),s=0;t[s++]=this.type,t[s++]=this.layerUIDs.length;for(let e=0;e<this.layerUIDs.length;e++)t[s++]=this.layerUIDs[e];t[s++]=+!!this._isIconSDF,t[s++]=parseFloat(i),t[s++]=parseFloat(a),t[s++]=parseFloat(o),t[s++]=this.markerPageMap.size;for(let[e,[n,r]]of this.markerPageMap)t[s++]=e,t[s++]=n,t[s++]=r;t[s++]=this.glyphsPageMap.size;for(let[e,[n,r]]of this.glyphsPageMap)t[s++]=e,t[s++]=n,t[s++]=r;t[s++]=this._iconVertexBuffer.index/4,t[s++]=this._textVertexBuffer.index/4,s=_.serializeSymbols(t,n,r,s,this._symbolInstances),t[s++]=this._iconVertexBuffer.array.length;for(let e=0;e<this._iconVertexBuffer.array.length;e++)n[s++]=this._iconVertexBuffer.array[e];t[s++]=this._iconIndexBuffer.array.length;for(let e=0;e<this._iconIndexBuffer.array.length;e++)t[s++]=this._iconIndexBuffer.array[e];t[s++]=this._textVertexBuffer.array.length;for(let e=0;e<this._textVertexBuffer.array.length;e++)n[s++]=this._textVertexBuffer.array[e];t[s++]=this._textIndexBuffer.array.length;for(let e=0;e<this._textIndexBuffer.array.length;e++)t[s++]=this._textIndexBuffer.array[e];return t.buffer}static _symbolsSerializationLength(e){let t=0;t+=1;for(let n of e||[]){t+=5,t+=1;for(let e of n.textColliders)t+=10;for(let e of n.iconColliders)t+=10;t+=1,t+=n.textVertexRanges.length*2,t+=1,t+=n.iconVertexRanges.length*2}return t}static serializeSymbols(e,t,n,r,i){i||=[],t[r++]=i.length;for(let e of i){t[r++]=e.anchor.x,t[r++]=e.anchor.y,t[r++]=e.symbolFeature.hash,t[r++]=e.symbolFeature.priority,t[r++]=e.symbolFeature.feature.featureIndex,t[r++]=e.textColliders.length+e.iconColliders.length;for(let i of e.textColliders)t[r++]=i.xTile,t[r++]=i.yTile,t[r++]=i.dxPixels,t[r++]=i.dyPixels,t[r++]=+!!i.hard,t[r++]=i.partIndex,n[r++]=i.minLod,n[r++]=i.maxLod,t[r++]=i.width,t[r++]=i.height;for(let i of e.iconColliders)t[r++]=i.xTile,t[r++]=i.yTile,t[r++]=i.dxPixels,t[r++]=i.dyPixels,t[r++]=+!!i.hard,t[r++]=i.partIndex,n[r++]=i.minLod,n[r++]=i.maxLod,t[r++]=i.width,t[r++]=i.height;t[r++]=e.textVertexRanges.length;for(let[n,i]of e.textVertexRanges)t[r++]=n,t[r++]=i;t[r++]=e.iconVertexRanges.length;for(let[n,i]of e.iconVertexRanges)t[r++]=n,t[r++]=i}return r}_replaceKeys(e,t){return e.replaceAll(/{([^{}]+)}/g,(e,n)=>n in t?t[n]:``)}_processFeature(e,t,n){let{line:r,iconMosaicItem:i,shaping:a,anchor:o}=e,c=this.zoom,l=this.layer,u=!!i,d=!0;u&&(d=t?.optional||!i);let f=a&&a.length>0,p=!f||n?.optional,m;if(u&&(m=this._placementEngine.getIconPlacement(o,i,t)),!m&&!d)return;let h;if(f&&(h=this._placementEngine.getTextPlacement(o,a,r,n)),h||p){if((!m||!h)&&(!p&&!d?(m=null,h=null):!p&&!h?m=null:!d&&!m&&(h=null)),h){let t=l.hasDataDrivenText?l.textMaterial.encodeAttributes(e.symbolFeature.feature,c,l):null;if(this._storePlacedGlyphs(e,h.shapes,c,n.rotationAlignment,t),h.textColliders){e.textColliders=h.textColliders;for(let e of h.textColliders){e.minLod=Math.max(c+s(e.minLod),0),e.maxLod=Math.min(c+s(e.maxLod),25);let t=e.angle;if(t){let n=Math.cos(t),r=Math.sin(t),i=e.dxPixels*n-e.dyPixels*r,a=e.dxPixels*r+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*r,s=(e.dxPixels+e.width)*r+e.dyPixels*n,c=e.dxPixels*n-(e.dyPixels+e.height)*r,l=e.dxPixels*r+(e.dyPixels+e.height)*n,u=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*r,d=(e.dxPixels+e.width)*r+(e.dyPixels+e.height)*n,f=Math.min(i,o,c,u),p=Math.max(i,o,c,u),m=Math.min(a,s,l,d),h=Math.max(a,s,l,d);e.dxPixels=f,e.dyPixels=m,e.width=p-f,e.height=h-m}}}}if(m){let n=l.hasDataDrivenIcon?l.iconMaterial.encodeAttributes(e.symbolFeature.feature,c,l):null;if(this._addPlacedIcons(e,m.shapes,c,i.page,t.rotationAlignment===1,n),m.iconColliders){e.iconColliders=m.iconColliders;for(let e of m.iconColliders){e.minLod=Math.max(c+s(e.minLod),0),e.maxLod=Math.min(c+s(e.maxLod),25);let t=e.angle;if(t){let n=Math.cos(t),r=Math.sin(t),i=e.dxPixels*n-e.dyPixels*r,a=e.dxPixels*r+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*r,s=(e.dxPixels+e.width)*r+e.dyPixels*n,c=e.dxPixels*n-(e.dyPixels+e.height)*r,l=e.dxPixels*r+(e.dyPixels+e.height)*n,u=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*r,d=(e.dxPixels+e.width)*r+(e.dyPixels+e.height)*n,f=Math.min(i,o,c,u),p=Math.max(i,o,c,u),m=Math.min(a,s,l,d),h=Math.max(a,s,l,d);e.dxPixels=f,e.dyPixels=m,e.width=p-f,e.height=h-m}}}}}}_addPlacedIcons(e,t,n,r,i,a){let o=Math.max(n-1,0),c=this._iconVertexBuffer,l=this._iconIndexBuffer,u=this._markerMap;for(let d of t){let t=i?0:Math.max(n+s(d.minzoom),o),f=i?25:Math.min(n+s(d.maxzoom),25);if(f<=t)continue;let p=d.tl,m=d.tr,h=d.bl,g=d.br,_=d.mosaicRect,v=d.labelAngle,y=d.minAngle,b=d.maxAngle,x=d.anchor,S=c.index,C=_.x,w=_.y,T=C+_.width,E=w+_.height,D=c.index;c.add(x.x,x.y,p.x,p.y,C,w,v,y,b,t,f,a),c.add(x.x,x.y,m.x,m.y,T,w,v,y,b,t,f,a),c.add(x.x,x.y,h.x,h.y,C,E,v,y,b,t,f,a),c.add(x.x,x.y,g.x,g.y,T,E,v,y,b,t,f,a),e.iconVertexRanges.length>0&&e.iconVertexRanges[0][0]+e.iconVertexRanges[0][1]===D?e.iconVertexRanges[0][1]+=4:e.iconVertexRanges.push([D,4]),l.add(S,S+1,S+2),l.add(S+1,S+2,S+3),u.has(r)?u.get(r)[1]+=6:u.set(r,[this._iconIndexStart+this._iconIndexCount,6]),this._iconIndexCount+=6}}_addPlacedGlyphs(){let e=this._textVertexBuffer,t=this._textIndexBuffer,n=this._glyphMap;for(let[r,i]of this._glyphBufferDataStorage)for(let a of i){let i=e.index,o=a.symbolInstance,s=a.ddAttributes,c=e.index;e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tl[0],a.tl[1],a.xmin,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tr[0],a.tr[1],a.xmax,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.bl[0],a.bl[1],a.xmin,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.br[0],a.br[1],a.xmax,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),o.textVertexRanges.length>0&&o.textVertexRanges[0][0]+o.textVertexRanges[0][1]===c?o.textVertexRanges[0][1]+=4:o.textVertexRanges.push([c,4]),t.add(i,i+1,i+2),t.add(i+1,i+2,i+3),n.has(r)?n.get(r)[1]+=6:n.set(r,[this._textIndexStart+this._textIndexCount,6]),this._textIndexCount+=6}this._glyphBufferDataStorage.clear()}_storePlacedGlyphs(e,t,n,r,i){let a=Math.max(n-1,0),o=r===1,c,l,u,d,f,p,m,h,g,_,v;for(let r of t)c=o?0:Math.max(n+s(r.minzoom),a),l=o?25:Math.min(n+s(r.maxzoom),25),!(l<=c)&&(u=r.tl,d=r.tr,f=r.bl,p=r.br,m=r.labelAngle,h=r.minAngle,g=r.maxAngle,_=r.anchor,v=r.mosaicRect,this._glyphBufferDataStorage.has(r.page)||this._glyphBufferDataStorage.set(r.page,[]),this._glyphBufferDataStorage.get(r.page).push({glyphAnchor:[_.x,_.y],tl:[u.x,u.y],tr:[d.x,d.y],bl:[f.x,f.y],br:[p.x,p.y],xmin:v.x,ymin:v.y,xmax:v.x+v.width,ymax:v.y+v.height,labelAngle:m,minAngle:h,maxAngle:g,minLod:c,maxLod:l,placementLod:a,symbolInstance:e,ddAttributes:i}))}static _pushAnchors(e,t,n,i){n+=i;let a=0,o=t.length-1;for(let e=0;e<o;e++)a+=r.distance(t[e],t[e+1]);let s=i||n;if(s*=.5,a<=s)return;let u=s/a;n=a/Math.max(Math.round(a/n),1);let d=0,f=-n/2,p=t.length-1;for(let r=0;r<p;r++){let i=t[r],a=t[r+1],o=a.x-i.x,s=a.y-i.y,p=Math.sqrt(o*o+s*s),m;for(;f+n<d+p;){f+=n;let t=(f-d)/p,h=c(i.x,a.x,t),g=c(i.y,a.y,t);m===void 0&&(m=Math.atan2(s,o)),e.push(new l(h,g,m,r,u))}d+=p}}static _pushCenterAnchor(e,t){let n=0,i=t.length-1;for(let e=0;e<i;e++)n+=r.distance(t[e],t[e+1]);let a=n/2,o=0,s=t.length-1;for(let n=0;n<s;n++){let r=t[n],i=t[n+1],s=i.x-r.x,u=i.y-r.y,d=Math.sqrt(s*s+u*u);if(a<o+d){let t=(a-o)/d,f=c(r.x,i.x,t),p=c(r.y,i.y,t),m=Math.atan2(u,s);e.push(new l(f,p,m,n,0));return}o+=d}}static _deviation(e,t,n){let r=(t.x-e.x)*(n.x-t.x)+(t.y-e.y)*(n.y-t.y),i=(t.x-e.x)*(n.y-t.y)-(t.y-e.y)*(n.x-t.x);return Math.atan2(i,r)}static _honorsTextMaxAngle(e,t,n,i,a){let o=0,s=n/2,c=new r(t.x,t.y),l=t.segment+1;for(;o>-s;){if(--l,l<0)return!1;o-=r.distance(e[l],c),c=e[l]}o+=r.distance(e[l],e[l+1]);let u=[],d=0,f=e.length;for(;o<s;){let t=e[l],n=l,s;do{if(++n,n===f)return!1;s=e[n]}while(s.isEqual(t));let c=n,p;do{if(++c,c===f)return!1;p=e[c]}while(p.isEqual(s));let m=this._deviation(t,s,p);for(u.push({deviation:m,distToAnchor:o}),d+=m;o-u[0].distToAnchor>a;)d-=u.shift().deviation;if(Math.abs(d)>i)return!1;o+=r.distance(s,p),l=n}return!0}static _smoothVertices(e,t){if(t<=0)return e;let n=e.length;if(n<3)return e;let i=[],a=0,o=0;i.push(0);for(let t=1;t<n;t++){let n=r.distance(e[t],e[t-1]);n>0&&(a+=n,i.push(a),o++,o!==t&&(e[o]=e[t]))}if(n=o+1,n<3)return e;t=Math.min(t,.2*a);let s=e[0].x,c=e[0].y,l=e[n-1].x,u=e[n-1].y,d=r.sub(e[0],e[1]);d.normalize(),e[0].x+=t*d.x,e[0].y+=t*d.y,d.assignSub(e[n-1],e[n-2]),d.normalize(),e[n-1].x+=t*d.x,e[n-1].y+=t*d.y,i[0]-=t,i[n-1]+=t;let f=[];f.push(new r(s,c));let p=1e-6,m=.5*t;for(let a=1;a<n-1;a++){let o=0,s=0,c=0;for(let n=a-1;n>=0;n--){let r=m+i[n+1]-i[a];if(r<0)break;let l=i[n+1]-i[n],u=i[a]-i[n]<m?1:r/l;if(u<p)break;let d=u*u,f=u*r-.5*d*l,h=u*l/t,g=e[n+1],_=e[n].x-g.x,v=e[n].y-g.y;o+=h/f*(g.x*u*r+.5*d*(r*_-l*g.x)-d*u*l*_/3),s+=h/f*(g.y*u*r+.5*d*(r*v-l*g.y)-d*u*l*v/3),c+=h}for(let r=a+1;r<n;r++){let n=m-i[r-1]+i[a];if(n<0)break;let l=i[r]-i[r-1],u=i[r]-i[a]<m?1:n/l;if(u<p)break;let d=u*u,f=u*n-.5*d*l,h=u*l/t,g=e[r-1],_=e[r].x-g.x,v=e[r].y-g.y;o+=h/f*(g.x*u*n+.5*d*(n*_-l*g.x)-d*u*l*_/3),s+=h/f*(g.y*u*n+.5*d*(n*v-l*g.y)-d*u*l*v/3),c+=h}f.push(new r(o/c,s/c))}return f.push(new r(l,u)),e[0].x=s,e[0].y=c,e[n-1].x=l,e[n-1].y=u,f}static _getPlacementCandidates(e,t,n,r){if(t!==0||n.type!==3||e.sourceType!==`geojson`)return r.map(e=>({anchor:null,vertices:e}));let i=p(r);return i?[{anchor:new l(i.x,i.y),vertices:i.vertices}]:[]}static _pushCentroid(e,t){let n=a,r=a,i=t.length-1,o=0,s=0,c=0,u=t[0].x,d=t[0].y;u>n&&(u=n),u<0&&(u=0),d>r&&(d=r),d<0&&(d=0);for(let e=1;e<i;e++){let i=t[e].x,a=t[e].y,l=t[e+1].x,f=t[e+1].y;i>n&&(i=n),i<0&&(i=0),a>r&&(a=r),a<0&&(a=0),l>n&&(l=n),l<0&&(l=0),f>r&&(f=r),f<0&&(f=0);let p=(i-u)*(f-d)-(l-u)*(a-d);o+=p*(u+i+l),s+=p*(d+a+f),c+=p}o/=3*c,s/=3*c,!isNaN(o)&&!isNaN(s)&&e.push(new l(o,s))}}export{_ as default};
2
+ import e from"../../../../../core/BidiEngine.js";import{assertIsSome as t}from"../../../../../core/maybe.js";import{numericHash as n}from"../../../../../core/string.js";import{Point as r}from"../../../../../geometry/support/TileClipper.js";import{tilePixelRatio as i,tileSizeInTileUnits as a}from"../constants.js";import{cDegToRad as o,log2 as s,interpolate as c}from"../GeometryUtils.js";import{Anchor as l}from"../Placement.js";import{sdfGlyphSize as u,TextShaping as d}from"../TextShaping.js";import f from"./BaseBucket.js";import{getPolygonLabelPlacement as p}from"../style/GeoJSONLabelUtils.js";import{IconLayout as m,TextLayout as h}from"../style/StyleLayer.js";function g(e,t){return e.iconMosaicItem&&t.iconMosaicItem?e.iconMosaicItem.page===t.iconMosaicItem.page?0:e.iconMosaicItem.page-t.iconMosaicItem.page:e.iconMosaicItem&&!t.iconMosaicItem?1:!e.iconMosaicItem&&t.iconMosaicItem?-1:0}class _ extends f{constructor(e,t,n,r,i,a,o,s,c){super(t,n,c.getSpriteItems()),this.type=3,this._markerMap=new Map,this._glyphMap=new Map,this._glyphBufferDataStorage=new Map,this._isIconSDF=!1,this._sourceTileKey=e,this._iconVertexBuffer=r,this._iconIndexBuffer=i,this._textVertexBuffer=a,this._textIndexBuffer=o,this._placementEngine=s,this._workerTileHandler=c}get markerPageMap(){return this._markerMap}get glyphsPageMap(){return this._glyphMap}get symbolInstances(){return this._symbolInstances}static{this._bidiEngine=new e}getResources(e,t,r){let i=this.layer,a=this.zoom;e&&e.setExtent(this.layerExtent);let o=i.getLayoutProperty(`icon-image`),s=i.getLayoutProperty(`text-field`),c=i.getLayoutProperty(`text-transform`),l=i.getLayoutProperty(`text-font`),u=[],d;o&&!o.isDataDriven&&(d=o.getValue(a));let f;s&&!s.isDataDriven&&(f=s.getValue(a));let p;c&&c.isDataDriven||(p=i.getLayoutValue(`text-transform`,a),c=null);let m;l&&l.isDataDriven||(m=i.getLayoutValue(`text-font`,a),l=null);for(let h of this._features){let g=h.getGeometry(e);if(!g||g.length===0)continue;let v;o&&(v=o.isDataDriven?o.getValue(a,h):this._replaceKeys(d,h.values),v&&t(v));let y,b=!1;if(s&&(y=s.isDataDriven?s.getValue(a,h):this._replaceKeys(f,h.values),y)){switch(y=y.replaceAll(`\\n`,`
3
+ `),c&&(p=c.getValue(a,h)),p){case 2:y=y.toLowerCase();break;case 1:y=y.toUpperCase()}if(_._bidiEngine.hasBidiChar(y)){let e=_._bidiEngine.checkContextual(y),t;t=e===`rtl`?`IDNNN`:`ICNNN`,y=_._bidiEngine.bidiTransform(y,t,`VLYSN`),b=!0}if(y.length>0){l&&(m=l.getValue(a,h));for(let e of m){let t=r[e];t||=r[e]=new Set;for(let e of y){let n=e.codePointAt(0);n!=null&&t.add(n)}}}}if(!v&&!y)continue;let x=i.getLayoutValue(`symbol-sort-key`,a,h),S={feature:h,sprite:v,label:y,rtl:b,geometry:g,hash:(y?n(y):0)^(v?n(v):0),priority:x,textFont:m};u.push(S)}this._symbolFeatures=u}processFeatures(e){e&&e.setExtent(this.layerExtent);let n=this.layer,r=this.zoom,s=n.getLayoutValue(`symbol-placement`,r),c=s!==0,f=n.getLayoutValue(`symbol-spacing`,r)*i,p=n.getLayoutProperty(`icon-image`),v=n.getLayoutProperty(`text-field`),y=p?new m(n,r,c):null,b=v?new h(n,r,c):null,x=this._workerTileHandler,S;p&&(S=x.getSpriteItems()),this._iconIndexStart=this._iconIndexBuffer.index*3,this._textIndexStart=this._textIndexBuffer.index*3,this._iconIndexCount=0,this._textIndexCount=0,this._markerMap.clear(),this._glyphMap.clear();let C=[],w=1;b?.size&&(w=b.size/u);let T=b?b.maxAngle*o:0,E=b?b.size*i:0;for(let e of this._symbolFeatures){let o;y&&S&&e.sprite&&(o=S[e.sprite],o&&o.sdf&&(this._isIconSDF=!0)),o&&y.update(r,e.feature);let p,m=0,h=e.label;if(h){t(b),b.update(r,e.feature);let n=c&&b.rotationAlignment===0?b.keepUpright:b.writingMode&&b.writingMode.includes(1),a=.5;switch(b.anchor){case 5:case 1:case 7:a=0;break;case 6:case 2:case 8:a=1}let o=.5;switch(b.anchor){case 5:case 3:case 6:o=0;break;case 7:case 4:case 8:o=1}let s=.5;switch(b.justify){case 0:s=a;break;case 1:s=0;break;case 3:s=1}let l=b.letterSpacing*u,f=c?0:b.maxWidth*u,g=b.lineHeight*u,_=e.textFont.map(e=>x.getGlyphItems(e));if(p=new d(_,f,g,l,a,o,s).getShaping(h,e.rtl,n),p&&p.length>0){let e=1e30,t=-1e30;for(let n of p)e=Math.min(e,n.x),t=Math.max(t,n.x);m=(t-e+u*2)*w*i}}let g=_._getPlacementCandidates(n,s,e.feature,e.geometry);for(let t of g){let{vertices:n}=t,r=[];if(s===1){if(p?.length&&b?.size){let e=b.size*i*(2+Math.min(2,Math.abs(b.offset[1])*4));n=_._smoothVertices(n,e)}_._pushAnchors(r,n,f,m)}else s===2?_._pushCenterAnchor(r,n):e.feature.type===3?t.anchor?r.push(t.anchor):_._pushCentroid(r,n):r.push(new l(n[0].x,n[0].y));for(let t of r){if(t.x<0||t.x>a||t.y<0||t.y>a||c&&m>0&&b?.rotationAlignment===0&&!_._honorsTextMaxAngle(n,t,m,T,E))continue;let r={shaping:p,line:n,iconMosaicItem:o,anchor:t,symbolFeature:e,textColliders:[],iconColliders:[],textVertexRanges:[],iconVertexRanges:[]};C.push(r),this._processFeature(r,y,b)}}}C.sort(g),this._addPlacedGlyphs(),this._symbolInstances=C}serialize(){let e=14;e+=this.layerUIDs.length,e+=this.markerPageMap.size*3,e+=this.glyphsPageMap.size*3,e+=_._symbolsSerializationLength(this._symbolInstances),e+=this._iconVertexBuffer.array.length,e+=this._iconIndexBuffer.array.length,e+=this._textVertexBuffer.array.length,e+=this._textIndexBuffer.array.length;let t=new Uint32Array(e),n=new Int32Array(t.buffer),r=new Float32Array(t.buffer),[i,a,o]=this._sourceTileKey.split(`/`),s=0;t[s++]=this.type,t[s++]=this.layerUIDs.length;for(let e=0;e<this.layerUIDs.length;e++)t[s++]=this.layerUIDs[e];t[s++]=+!!this._isIconSDF,t[s++]=parseFloat(i),t[s++]=parseFloat(a),t[s++]=parseFloat(o),t[s++]=this.markerPageMap.size;for(let[e,[n,r]]of this.markerPageMap)t[s++]=e,t[s++]=n,t[s++]=r;t[s++]=this.glyphsPageMap.size;for(let[e,[n,r]]of this.glyphsPageMap)t[s++]=e,t[s++]=n,t[s++]=r;t[s++]=this._iconVertexBuffer.index/4,t[s++]=this._textVertexBuffer.index/4,s=_.serializeSymbols(t,n,r,s,this._symbolInstances),t[s++]=this._iconVertexBuffer.array.length;for(let e=0;e<this._iconVertexBuffer.array.length;e++)n[s++]=this._iconVertexBuffer.array[e];t[s++]=this._iconIndexBuffer.array.length;for(let e=0;e<this._iconIndexBuffer.array.length;e++)t[s++]=this._iconIndexBuffer.array[e];t[s++]=this._textVertexBuffer.array.length;for(let e=0;e<this._textVertexBuffer.array.length;e++)n[s++]=this._textVertexBuffer.array[e];t[s++]=this._textIndexBuffer.array.length;for(let e=0;e<this._textIndexBuffer.array.length;e++)t[s++]=this._textIndexBuffer.array[e];return t.buffer}static _symbolsSerializationLength(e){let t=0;t+=1;for(let n of e||[]){t+=5,t+=1;for(let e of n.textColliders)t+=10;for(let e of n.iconColliders)t+=10;t+=1,t+=n.textVertexRanges.length*2,t+=1,t+=n.iconVertexRanges.length*2}return t}static serializeSymbols(e,t,n,r,i){i||=[],t[r++]=i.length;for(let e of i){t[r++]=e.anchor.x,t[r++]=e.anchor.y,t[r++]=e.symbolFeature.hash,t[r++]=e.symbolFeature.priority,t[r++]=e.symbolFeature.feature.featureIndex,t[r++]=e.textColliders.length+e.iconColliders.length;for(let i of e.textColliders)t[r++]=i.xTile,t[r++]=i.yTile,t[r++]=i.dxPixels,t[r++]=i.dyPixels,t[r++]=+!!i.hard,t[r++]=i.partIndex,n[r++]=i.minLod,n[r++]=i.maxLod,t[r++]=i.width,t[r++]=i.height;for(let i of e.iconColliders)t[r++]=i.xTile,t[r++]=i.yTile,t[r++]=i.dxPixels,t[r++]=i.dyPixels,t[r++]=+!!i.hard,t[r++]=i.partIndex,n[r++]=i.minLod,n[r++]=i.maxLod,t[r++]=i.width,t[r++]=i.height;t[r++]=e.textVertexRanges.length;for(let[n,i]of e.textVertexRanges)t[r++]=n,t[r++]=i;t[r++]=e.iconVertexRanges.length;for(let[n,i]of e.iconVertexRanges)t[r++]=n,t[r++]=i}return r}_replaceKeys(e,t){return e.replaceAll(/{([^{}]+)}/g,(e,n)=>n in t?t[n]:``)}_processFeature(e,t,n){let{line:r,iconMosaicItem:i,shaping:a,anchor:o}=e,c=this.zoom,l=this.layer,u=!!i,d=!0;u&&(d=t?.optional||!i);let f=a&&a.length>0,p=!f||n?.optional,m;if(u&&(m=this._placementEngine.getIconPlacement(o,i,t)),!m&&!d)return;let h;if(f&&(h=this._placementEngine.getTextPlacement(o,a,r,n)),h||p){if(m&&h||(!p&&!d?(m=null,h=null):!p&&!h?m=null:!d&&!m&&(h=null)),h){let t=l.hasDataDrivenText?l.textMaterial.encodeAttributes(e.symbolFeature.feature,c,l):null;if(this._storePlacedGlyphs(e,h.shapes,c,n.rotationAlignment,t),h.textColliders){e.textColliders=h.textColliders;for(let e of h.textColliders){e.minLod=Math.max(c+s(e.minLod),0),e.maxLod=Math.min(c+s(e.maxLod),25);let t=e.angle;if(t){let n=Math.cos(t),r=Math.sin(t),i=e.dxPixels*n-e.dyPixels*r,a=e.dxPixels*r+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*r,s=(e.dxPixels+e.width)*r+e.dyPixels*n,c=e.dxPixels*n-(e.dyPixels+e.height)*r,l=e.dxPixels*r+(e.dyPixels+e.height)*n,u=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*r,d=(e.dxPixels+e.width)*r+(e.dyPixels+e.height)*n,f=Math.min(i,o,c,u),p=Math.max(i,o,c,u),m=Math.min(a,s,l,d),h=Math.max(a,s,l,d);e.dxPixels=f,e.dyPixels=m,e.width=p-f,e.height=h-m}}}}if(m){let n=l.hasDataDrivenIcon?l.iconMaterial.encodeAttributes(e.symbolFeature.feature,c,l):null;if(this._addPlacedIcons(e,m.shapes,c,i.page,t.rotationAlignment===1,n),m.iconColliders){e.iconColliders=m.iconColliders;for(let e of m.iconColliders){e.minLod=Math.max(c+s(e.minLod),0),e.maxLod=Math.min(c+s(e.maxLod),25);let t=e.angle;if(t){let n=Math.cos(t),r=Math.sin(t),i=e.dxPixels*n-e.dyPixels*r,a=e.dxPixels*r+e.dyPixels*n,o=(e.dxPixels+e.width)*n-e.dyPixels*r,s=(e.dxPixels+e.width)*r+e.dyPixels*n,c=e.dxPixels*n-(e.dyPixels+e.height)*r,l=e.dxPixels*r+(e.dyPixels+e.height)*n,u=(e.dxPixels+e.width)*n-(e.dyPixels+e.height)*r,d=(e.dxPixels+e.width)*r+(e.dyPixels+e.height)*n,f=Math.min(i,o,c,u),p=Math.max(i,o,c,u),m=Math.min(a,s,l,d),h=Math.max(a,s,l,d);e.dxPixels=f,e.dyPixels=m,e.width=p-f,e.height=h-m}}}}}}_addPlacedIcons(e,t,n,r,i,a){let o=Math.max(n-1,0),c=this._iconVertexBuffer,l=this._iconIndexBuffer,u=this._markerMap;for(let d of t){let t=i?0:Math.max(n+s(d.minzoom),o),f=i?25:Math.min(n+s(d.maxzoom),25);if(f<=t)continue;let p=d.tl,m=d.tr,h=d.bl,g=d.br,_=d.mosaicRect,v=d.labelAngle,y=d.minAngle,b=d.maxAngle,x=d.anchor,S=c.index,C=_.x,w=_.y,T=C+_.width,E=w+_.height,D=c.index;c.add(x.x,x.y,p.x,p.y,C,w,v,y,b,t,f,a),c.add(x.x,x.y,m.x,m.y,T,w,v,y,b,t,f,a),c.add(x.x,x.y,h.x,h.y,C,E,v,y,b,t,f,a),c.add(x.x,x.y,g.x,g.y,T,E,v,y,b,t,f,a),e.iconVertexRanges.length>0&&e.iconVertexRanges[0][0]+e.iconVertexRanges[0][1]===D?e.iconVertexRanges[0][1]+=4:e.iconVertexRanges.push([D,4]),l.add(S,S+1,S+2),l.add(S+1,S+2,S+3),u.has(r)?u.get(r)[1]+=6:u.set(r,[this._iconIndexStart+this._iconIndexCount,6]),this._iconIndexCount+=6}}_addPlacedGlyphs(){let e=this._textVertexBuffer,t=this._textIndexBuffer,n=this._glyphMap;for(let[r,i]of this._glyphBufferDataStorage)for(let a of i){let i=e.index,o=a.symbolInstance,s=a.ddAttributes,c=e.index;e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tl[0],a.tl[1],a.xmin,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.tr[0],a.tr[1],a.xmax,a.ymin,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.bl[0],a.bl[1],a.xmin,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),e.add(a.glyphAnchor[0],a.glyphAnchor[1],a.br[0],a.br[1],a.xmax,a.ymax,a.labelAngle,a.minAngle,a.maxAngle,a.minLod,a.maxLod,s),o.textVertexRanges.length>0&&o.textVertexRanges[0][0]+o.textVertexRanges[0][1]===c?o.textVertexRanges[0][1]+=4:o.textVertexRanges.push([c,4]),t.add(i,i+1,i+2),t.add(i+1,i+2,i+3),n.has(r)?n.get(r)[1]+=6:n.set(r,[this._textIndexStart+this._textIndexCount,6]),this._textIndexCount+=6}this._glyphBufferDataStorage.clear()}_storePlacedGlyphs(e,t,n,r,i){let a=Math.max(n-1,0),o=r===1,c,l,u,d,f,p,m,h,g,_,v;for(let r of t)c=o?0:Math.max(n+s(r.minzoom),a),l=o?25:Math.min(n+s(r.maxzoom),25),!(l<=c)&&(u=r.tl,d=r.tr,f=r.bl,p=r.br,m=r.labelAngle,h=r.minAngle,g=r.maxAngle,_=r.anchor,v=r.mosaicRect,this._glyphBufferDataStorage.has(r.page)||this._glyphBufferDataStorage.set(r.page,[]),this._glyphBufferDataStorage.get(r.page).push({glyphAnchor:[_.x,_.y],tl:[u.x,u.y],tr:[d.x,d.y],bl:[f.x,f.y],br:[p.x,p.y],xmin:v.x,ymin:v.y,xmax:v.x+v.width,ymax:v.y+v.height,labelAngle:m,minAngle:h,maxAngle:g,minLod:c,maxLod:l,placementLod:a,symbolInstance:e,ddAttributes:i}))}static _pushAnchors(e,t,n,i){n+=i;let a=0,o=t.length-1;for(let e=0;e<o;e++)a+=r.distance(t[e],t[e+1]);let s=i||n;if(s*=.5,a<=s)return;let u=s/a;n=a/Math.max(Math.round(a/n),1);let d=0,f=-n/2,p=t.length-1;for(let r=0;r<p;r++){let i=t[r],a=t[r+1],o=a.x-i.x,s=a.y-i.y,p=Math.sqrt(o*o+s*s),m;for(;f+n<d+p;){f+=n;let t=(f-d)/p,h=c(i.x,a.x,t),g=c(i.y,a.y,t);m===void 0&&(m=Math.atan2(s,o)),e.push(new l(h,g,m,r,u))}d+=p}}static _pushCenterAnchor(e,t){let n=0,i=t.length-1;for(let e=0;e<i;e++)n+=r.distance(t[e],t[e+1]);let a=n/2,o=0,s=t.length-1;for(let n=0;n<s;n++){let r=t[n],i=t[n+1],s=i.x-r.x,u=i.y-r.y,d=Math.sqrt(s*s+u*u);if(a<o+d){let t=(a-o)/d,f=c(r.x,i.x,t),p=c(r.y,i.y,t),m=Math.atan2(u,s);e.push(new l(f,p,m,n,0));return}o+=d}}static _deviation(e,t,n){let r=(t.x-e.x)*(n.x-t.x)+(t.y-e.y)*(n.y-t.y),i=(t.x-e.x)*(n.y-t.y)-(t.y-e.y)*(n.x-t.x);return Math.atan2(i,r)}static _honorsTextMaxAngle(e,t,n,i,a){let o=0,s=n/2,c=new r(t.x,t.y),l=t.segment+1;for(;o>-s;){if(--l,l<0)return!1;o-=r.distance(e[l],c),c=e[l]}o+=r.distance(e[l],e[l+1]);let u=[],d=0,f=e.length;for(;o<s;){let t=e[l],n=l,s;do{if(++n,n===f)return!1;s=e[n]}while(s.isEqual(t));let c=n,p;do{if(++c,c===f)return!1;p=e[c]}while(p.isEqual(s));let m=this._deviation(t,s,p);for(u.push({deviation:m,distToAnchor:o}),d+=m;o-u[0].distToAnchor>a;)d-=u.shift().deviation;if(Math.abs(d)>i)return!1;o+=r.distance(s,p),l=n}return!0}static _smoothVertices(e,t){if(t<=0)return e;let n=e.length;if(n<3)return e;let i=[],a=0,o=0;i.push(0);for(let t=1;t<n;t++){let n=r.distance(e[t],e[t-1]);n>0&&(a+=n,i.push(a),o++,o!==t&&(e[o]=e[t]))}if(n=o+1,n<3)return e;t=Math.min(t,.2*a);let s=e[0].x,c=e[0].y,l=e[n-1].x,u=e[n-1].y,d=r.sub(e[0],e[1]);d.normalize(),e[0].x+=t*d.x,e[0].y+=t*d.y,d.assignSub(e[n-1],e[n-2]),d.normalize(),e[n-1].x+=t*d.x,e[n-1].y+=t*d.y,i[0]-=t,i[n-1]+=t;let f=[];f.push(new r(s,c));let p=1e-6,m=.5*t;for(let a=1;a<n-1;a++){let o=0,s=0,c=0;for(let n=a-1;n>=0;n--){let r=m+i[n+1]-i[a];if(r<0)break;let l=i[n+1]-i[n],u=i[a]-i[n]<m?1:r/l;if(u<p)break;let d=u*u,f=u*r-.5*d*l,h=u*l/t,g=e[n+1],_=e[n].x-g.x,v=e[n].y-g.y;o+=h/f*(g.x*u*r+.5*d*(r*_-l*g.x)-d*u*l*_/3),s+=h/f*(g.y*u*r+.5*d*(r*v-l*g.y)-d*u*l*v/3),c+=h}for(let r=a+1;r<n;r++){let n=m-i[r-1]+i[a];if(n<0)break;let l=i[r]-i[r-1],u=i[r]-i[a]<m?1:n/l;if(u<p)break;let d=u*u,f=u*n-.5*d*l,h=u*l/t,g=e[r-1],_=e[r].x-g.x,v=e[r].y-g.y;o+=h/f*(g.x*u*n+.5*d*(n*_-l*g.x)-d*u*l*_/3),s+=h/f*(g.y*u*n+.5*d*(n*v-l*g.y)-d*u*l*v/3),c+=h}f.push(new r(o/c,s/c))}return f.push(new r(l,u)),e[0].x=s,e[0].y=c,e[n-1].x=l,e[n-1].y=u,f}static _getPlacementCandidates(e,t,n,r){if(t!==0||n.type!==3||e.sourceType!==`geojson`)return r.map(e=>({anchor:null,vertices:e}));let i=p(r);return i?[{anchor:new l(i.x,i.y),vertices:i.vertices}]:[]}static _pushCentroid(e,t){let n=a,r=a,i=t.length-1,o=0,s=0,c=0,u=t[0].x,d=t[0].y;u>n&&(u=n),u<0&&(u=0),d>r&&(d=r),d<0&&(d=0);for(let e=1;e<i;e++){let i=t[e].x,a=t[e].y,l=t[e+1].x,f=t[e+1].y;i>n&&(i=n),i<0&&(i=0),a>r&&(a=r),a<0&&(a=0),l>n&&(l=n),l<0&&(l=0),f>r&&(f=r),f<0&&(f=0);let p=(i-u)*(f-d)-(l-u)*(a-d);o+=p*(u+i+l),s+=p*(d+a+f),c+=p}o/=3*c,s/=3*c,!isNaN(o)&&!isNaN(s)&&e.push(new l(o,s))}}export{_ as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{importLazily as e}from"../../../../../../../core/importUtils.js";import{memoize as t}from"../../../../../../../core/MapUtils.js";import{pt2px as n}from"../../../../../../../core/screenUtils.js";import{numericHash as r}from"../../../../../../../core/string.js";import{fromRotation as i,translate as a}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as s,set as c,sub as l,normalize as u,add as d,scale as f}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as p}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as m}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{convertGeometryToFlat as h,convertOptimizedGeometryToFlat as g,convertFlatToOptimizedGeometry as _,FlatGeometry as v}from"../../../../../../../geometry/FlatGeometry.js";import{GeometryCursor as y}from"../../../../../../../geometry/GeometryCursor.js";import{getLabelPoint as b}from"../../../../../../../geometry/support/labelPoint.js";import{generalizeOptimizedGeometry as x,convertToGeometry as S}from"../../../../../../../layers/graphics/featureConversionUtils.js";import C from"../../../../../../../layers/graphics/OptimizedGeometry.js";import{tileSize as w}from"../../../definitions.js";import T from"../../../collisions/BoundingBox.js";import{LabelMetric as E}from"../../../collisions/LabelMetric.js";import{smoothPaths as D,pathDivide as O,closestPointOnPaths as k}from"../../../mesh/templates/segmentUtils.js";import{getMinMaxZoom as A,processColorInput as j}from"../fill/meshWriterUtils.js";import{TextMeshWriter as M,maxLabelZoom as N}from"../text/TextMeshWriter.js";const P=w*w/16;function F(e,t,n,r){if(n===0&&r===0)return null;let i=Math.max(e.xmax-e.xmin,e.ymax-e.ymin)+1;return{x:t.x-n*i,y:t.y+r*i}}const I=e(()=>import(`../../../../../../../geometry/operators/gx/operatorIntersection.js`)),L=e(()=>import(`../../../../../../../chunks/FlatGeometry.js`));function R(e,t,n){return r(`${e}${t}${n}`)}function z(e,t,n,i,a){let o=i*2**(N-a);return r(`${e}${t}${n}${o}`)}function B(e,t,n){return r(`${e}${t}${n}`)}function V(e,t,n,i,a){let o=n*2**(N-i);return r(`${e}${a}${t}${o}`)}const H=t(e=>{let t=0;if(e===0)return 1/0;for(;!(e%2);)t++,e/=2;return t});class U extends M{constructor(){super(...arguments),this.calloutRecordsUseLabelPhase=!0,this._zoomLevel=0,this._calloutVisuals=[],this._calloutVisualIndex=0}async loadDependencies(){await Promise.all([super.loadDependencies(),I.getImportPromise(),L.getImportPromise()])}getCalloutEffectGeometry(e){let t=this._calloutVisuals[this._calloutVisualIndex]?.metric;return t?y.fromJSON({x:t.anchorX,y:t.anchorY}):null}getLocalCalloutReferenceInfo(){let e=this._calloutVisuals[this._calloutVisualIndex],t=e?.referenceInfo;if(!t||!e)return t;let{metric:n,featureAnchor:r}=e,i=t.anchor??{x:0,y:0},a={x:r[0]-n.anchorX,y:n.anchorY-r[1]},o={x:a.x+i.x,y:a.y+i.y},s=F(t.bodyBounds,o,n.directionX,n.directionY);return{...t,anchor:o,...s?{layoutAnchor:s}:null}}getCalloutVisualCount(){return this._calloutVisuals.length}setCalloutVisualIndex(e){if(e<0||e>=this._calloutVisuals.length)throw Error(`InternalError: callout visual index is out of bounds`);this._calloutVisualIndex=e}includeCalloutRecordRange(e,t){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeRecordRange(e,t)}includeCalloutCollisionBounds(e){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeCalloutCollisionBounds(e)}includeCalloutPartCollisionBounds(e){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeCalloutPartCollisionBounds(e)}_write(e,{target:t,effect:n,level:r,viewExtent:i}){if(this._zoomLevel=r,this._calloutVisuals=[],this._calloutVisualIndex=0,n?.geometry!=null)throw Error(`InternalError: EffectGeometry not support for LabelMeshWriter`);switch(t.geometryType){case`esriGeometryPoint`:{let n=t.readXForDisplay(),r=t.readYForDisplay();this._writePoint(e,n,r,0,t);break}case`esriGeometryEnvelope`:case`esriGeometryPolygon`:this._writePolygon(e,t,i);break;case`esriGeometryMultipoint`:{let n=0,r=y.fromFeatureSetReader(t);if(r?.nextPath())for(;r.nextPoint();)this._writePoint(e,r.x,r.y,n++,t);break}case`esriGeometryPolyline`:this._writeLines(e,t)}}_getMetricDir(){let{horizontalAlignment:e,verticalAlignment:t}=this.evaluatedMeshParams;return[e===`center`?0:e===`right`?-1:1,t===`middle`?0:t===`bottom`?-1:1]}_createLineLabelMetric(e,t,n,r,i,a){let[o,s]=this._getMetricDir(),c=this.evaluatedMeshParams.scaleInfo?.maxScale??0,l=this.evaluatedMeshParams.scaleInfo?.minScale??0,u=this.evaluatedMeshParams.labelClassId;return new E(e,u,t,n,r,i,o,s,c,l,a)}_writePolygon(e,t,n){let r=t.readGeometryForDisplay()?.justXY();e.requiresRefresh||=(r?.area()||0)>=P;let i=this._getPolygonLabelPoint(t,n);i&&this._writePoint(e,i[0],i[1],0,t)}_getPolygonLabelPoint(e,t){if(!t){let t=e.readCentroidForDisplay()?.coords;return t?[t[0],t[1]]:null}let n=I.module,r=L.module.constructFromFlatGeometry,i=e.readGeometryForDisplay()?.justXY(),a=e.readCentroidForDisplay()?.coords,o=i?.area()||0;if(!a)return;let s=o>=P,c=r(h(t)),l=r(h({x:a[0],y:a[1]})),u=!!n.execute(l,c,null);if(!i||!s||!u)return[a[0],a[1]];let d=r(g(`polygon`,i,null)),f=n.execute(d,c,null);if(!f)return[a[0],a[1]];let p=_(new v(f.toFlatGeometry())),m=y.fromOptimized(p,`esriGeometryPolygon`,1),x=b(m)??a;return[x[0],x[1]]}_writePoint(e,t,n,r,i){if(t<0||t>w||n<0||n>w)return;let a=this._getShaping();if(!a)return;let o=i.getDisplayId(),s=this.evaluatedMeshParams.labelClassId,c=this.evaluatedMeshParams.layerId,l=R(c,i.getObjectId(),r),u=B(i.getObjectId(),s,r),[d,f]=this._getMetricDir(),p=this.evaluatedMeshParams.scaleInfo?.maxScale??0,m=this.evaluatedMeshParams.scaleInfo?.minScale??0,h=this._getPointLabelReferenceBounds(),g=new E(o,s,l,u,t,n,d,f,p,m,h);this._calloutVisuals.push({metric:g,featureAnchor:[t,n],referenceInfo:this._createLocalCalloutReferenceInfo(a,h)}),e.metricStart(g),this._writeGlyphs(e,o,t,n,a,0,h,void 0,!1),e.metricBoxWrite(a.boundsT),e.metricEnd()}_getPointReferenceBounds(){return this._references?.get(`label-reference-symbol`)?.getBoundsInfo()??null}_getPointLabelReferenceBounds(){let e=this._getPointReferenceBounds()??{offsetX:0,offsetY:0,size:0},t=this.evaluatedMeshParams.labelOffsetDistance??0,[n,r]=this._getMetricDir();return{...e,offsetX:e.offsetX+n*t,offsetY:e.offsetY-r*t}}_writeLines(e,t){let{scaleInfo:n,verticalAlignment:r}=this.evaluatedMeshParams,i=this.evaluatedMeshParams.repeatLabelDistance||128,a=this._getShaping(`middle`);if(!a)return;let o=(e,t,n,r)=>this._placeSubdivGlyphs(e,t,n,r),s=(a.bounds.width+i)/2;this._current={out:e,id:t.getDisplayId(),objId:t.getObjectId(),shaping:a,zoomRange:A(n,this.getTileInfo()),referenceBounds:this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0},calloutPaths:t.readLegacyGeometryForDisplay().paths.map(e=>e.map(([e,t])=>[e,t])),offsetDirection:null,pathIndex:0},this._verticalPlacement=r===`bottom`?`above`:r===`top`?`below`:null,this._verticalPlacement?this._writeAboveAndBelowAlong(t,o,s):this._writeCenterAlong(t,o,s)}_writeAboveAndBelowAlong(e,t,n){let{repeatLabel:r}=this.evaluatedMeshParams,{shaping:i}=this._current,a=i.bounds.halfHeight,o=e.readGeometryForDisplay()?.justXY();if(!o)return;let s=x(o,`esriGeometryPolyline`,1)??new C,c=W(s,a),l=W(s,-a),u=S(l,`esriGeometryPolyline`,!1,!1),d=S(c,`esriGeometryPolyline`,!1,!1),f=D(d.paths,i.bounds.width),p=D(u.paths,i.bounds.width);this._current.offsetDirection=`above`;for(let e=0;e<f.length;e++)this._current.pathIndex=e,O(f[e],n,t,!!r);this._current.offsetDirection=`below`;for(let e=0;e<p.length;e++)this._current.pathIndex=e,O(p[e],n,t,!!r)}_writeCenterAlong(e,t,n){let{repeatLabel:r}=this.evaluatedMeshParams,{shaping:i}=this._current,a=D(e.readLegacyGeometryForDisplay().paths,i.bounds.width);for(let e=0;e<a.length;e++)this._current.pathIndex=e,O(a[e],n,t,!!r)}_placeSubdivGlyphs(e,t,n,r){if(e.x<0||e.x>w||e.y<0||e.y>w)return;let{allowOverrun:i,labelPosition:a,repeatLabelDistance:o,layerId:s,labelClassId:c}=this.evaluatedMeshParams,{objId:l,shaping:u,pathIndex:d}=this._current,f=this._current.zoomRange[0],p=H(t),m=this._current.shaping.bounds.width/2,h=Math.sqrt(o||128)/2,g=Math.min(n,r-n),_=u.isMultiline?N:Math.log2(g/(h+m/2)),v=t===0?_:Math.min(p,_),y=Math.max(f,this._zoomLevel+1-v),b=this._zoomLevel-y,x=u.bounds.width/2*2**b,S=z(s,l,d,t,this._zoomLevel),C=V(l,d,t,this._zoomLevel,c);i&&b<0?this._placeStraightAlong(e,f,S,C):a===`parallel`||u.isMultiline?this._placeStraightAlong(e,y,S,C):a===`curved`&&this._placeCurved(e,y,x,S,C)}_placeCurved(e,t,n,r,i){let{out:a,id:o}=this._current,s=this._createLineLabelMetric(o,r,i,e.x,e.y);this._registerLineCalloutMetric(s),a.metricStart(s);let c=e.clone(),l=e.angle*(180/Math.PI)%360,u=(e.angle*(180/Math.PI)+180)%360;(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection)&&(this._placeFirst(c,t,1,l),this._placeBack(e,c,t,n,1,l),this._placeForward(e,c,t,n,1,l)),(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection)&&(this._placeFirst(c,t,0,u),this._placeBack(e,c,t,n,0,u),this._placeForward(e,c,t,n,0,u)),a.metricEnd()}_placeStraightAlong(e,t,r,s){let{out:c,id:l,shaping:u,zoomRange:d,referenceBounds:f}=this._current,{boxBorderLineColor:m,boxBackgroundColor:h}=this.evaluatedMeshParams,g=e.clone(),_=e.angle*(180/Math.PI)%360,v=(e.angle*(180/Math.PI)+180)%360,y=u.glyphs.length>0&&!!(m||h),b=this._createLineLabelMetric(l,r,s,e.x,e.y);if(this._registerLineCalloutMetric(b),c.metricStart(b),y){let r=Math.max(t,d[0],0),s=Math.min(N,d[1]),m=i(o(),-e.angle),h={minZoom:r,maxZoom:s,clipAngle:_,mapAligned:!0,isLineLabel:!0},g=n(this.evaluatedMeshParams.offsetX),y=n(this.evaluatedMeshParams.offsetY);if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){let t=p(g,-1*y),[n,r]=u.shapeBackground(a(o(),m,t));c.recordStart(this.instanceId,this.attributeLayout,u.glyphs[0].textureBinding),this._writeTextBox(c,l,e.x,e.y,r,f,h),c.recordEnd()}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){let t=p(g,y),[n,r]=u.shapeBackground(a(o(),m,t));h.clipAngle=v,c.recordStart(this.instanceId,this.attributeLayout,u.glyphs[0].textureBinding),this._writeTextBox(c,l,e.x,e.y,r,f,h),c.recordEnd()}}(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection)&&this._placeFirst(g,t,1,_,!0),(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection)&&this._placeFirst(g,t,0,v,!0),c.metricEnd()}_registerLineCalloutMetric(e){this._calloutVisuals.push({metric:e,featureAnchor:k(this._current.calloutPaths,e.anchorX,e.anchorY),referenceInfo:this._createLocalCalloutReferenceInfo(this._current.shaping)})}_placeBack(e,t,n,r,i,a){let o=e.clone(),s=e.backwardLength+0;for(;o.prev()&&!(s>=r);)this._placeOnSegment(o,t,s,n,-1,i,a),s+=o.length+0}_placeForward(e,t,n,r,i,a){let o=e.clone(),s=e.remainingLength+0;for(;o.next()&&!(s>=r);)this._placeOnSegment(o,t,s,n,1,i,a),s+=o.length+0}_placeFirst(e,t,n,r,i=!1){let{out:a,id:o,shaping:s,zoomRange:c,referenceBounds:l}=this._current,u=s.glyphs,d=this._getBoundsOffset(e.angle);for(let f of u){let u=f.x>s.bounds.x?n:1-n,p=u*e.remainingLength+(1-u)*e.backwardLength,m=Math.abs(f.x+f.width/2-s.bounds.x),h=Math.max(0,this._zoomLevel+Math.log2(m/(p+0))),g=Math.max(t,i?0:h);f.angle=e.angle+(1-n)*Math.PI;let _=[Math.max(c[0],g),Math.min(c[1],N)];this._writeLineGlyph(a,o,e.x,e.y,f,_,r,l),this._writeLineGlyphBox(a,f,n,_,d)}}_placeOnSegment(e,t,n,r,i,a,o){let{out:s,id:c,shaping:l,referenceBounds:u}=this._current,d=l.glyphs,f=e.dx/e.length,p=e.dy/e.length,m={x:e.x+n*-i*f,y:e.y+n*-i*p},h=this._getBoundsOffset(e.angle);for(let t of d){let d=t.x>l.bounds.x?a:1-a;if(!(d&&i===1||!d&&i===-1))continue;let f=Math.abs(t.x+t.width/2-l.bounds.x),p=Math.max(0,this._zoomLevel+Math.log2(f/n)-.1),g=Math.max(r,this._zoomLevel+Math.log2(f/(n+e.length+0)));if(p===0)continue;t.angle=e.angle+(1-a)*Math.PI;let _=[g,p];this._writeLineGlyph(s,c,m.x,m.y,t,_,o,u),this._writeLineGlyphBox(s,t,a,_,h)}}_getBoundsOffset(e){let t=n(this.evaluatedMeshParams.offsetX),r=n(this.evaluatedMeshParams.offsetY),a=p(t,r),c=i(o(),-e);return s(a,a,c)}_writeLineGlyph(e,t,n,r,i,a,o,s){e.recordStart(this.instanceId,this.attributeLayout,i.textureBinding);let{texcoords:c,offsets:l}=i,{fontSize:u,haloSize:d,outlineSize:f}=this._textMeshTransformProps,p=this._getDefaultGlyphMetrics(this.evaluatedMeshParams.glyphs),m=i.fontSize??u;this._writeQuad(e,t,n,r,{sdfSize:p.sdfSize,sdfRadius:p.sdfRadius,texcoords:c,offsets:l,fontSize:m,haloSize:d,outlineSize:f,color:i.color?j(i.color):j(this.evaluatedMeshParams.color),isBackground:!1,referenceBounds:s,minZoom:Math.max(this._current.zoomRange[0],a[0]),maxZoom:Math.min(this._current.zoomRange[1],a[1]),clipAngle:o,mapAligned:!0,isLineLabel:!0}),e.recordEnd()}_writeLineGlyphBox(e,t,n,r,i){if((n||this._current.offsetDirection)&&this._isVisible(r)&&t.bounds){let n=t.bounds,r=new T(n.x+i[0],n.y+i[1],n.width,n.height);e.metricBoxWrite(r)}}_isVisible(e){let t=Math.max(this._current.zoomRange[0],e[0]),n=Math.min(this._current.zoomRange[1],e[1]),r=this._zoomLevel;return t<=r&&r<=n}}function W(e,t){let n=new C,{coords:r,lengths:i}=e,a=m(),o=m(),s=m(),p=m(),h=m(),g=m(),_=0;for(let e=0;e<i.length;e++){let m=i[e];for(let e=0;e<m;e++){let i=2*(e+_-1),v=2*(e+_),y=2*(e+_+1);e>0?c(a,r[i],r[i+1]):c(a,0,0),c(o,r[v],r[v+1]),e<m-1?c(s,r[y],r[y+1]):c(s,0,0),e===0?c(p,0,0):(l(p,o,a),u(p,p),c(p,p[1],-p[0])),e===m-1?c(h,0,0):(l(h,s,o),u(h,h),c(h,h[1],-h[0])),d(g,p,h),u(g,g);let b=g[0]*h[0]+g[1]*h[1];b!==0&&f(g,g,b),f(g,g,t),n.coords.push(o[0]+g[0],o[1]+g[1])}n.lengths.push(m),_+=m}return n}export{U as LabelMeshWriter,R as labelIdHash,B as labelMetricHash,z as lineLabelIdHash,V as lineLabelMetricHash};
2
+ import{importLazily as e}from"../../../../../../../core/importUtils.js";import{memoize as t}from"../../../../../../../core/MapUtils.js";import{pt2px as n}from"../../../../../../../core/screenUtils.js";import{numericHash as r}from"../../../../../../../core/string.js";import{fromRotation as i,translate as a}from"../../../../../../../core/libs/gl-matrix-2/math/mat2d.js";import{create as o}from"../../../../../../../core/libs/gl-matrix-2/factories/mat2df32.js";import{transformMat2d as s,set as c,sub as l,normalize as u,add as d,scale as f}from"../../../../../../../core/libs/gl-matrix-2/math/vec2.js";import{fromValues as p}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as m}from"../../../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{convertGeometryToFlat as h,convertOptimizedGeometryToFlat as g,convertFlatToOptimizedGeometry as _,FlatGeometry as v}from"../../../../../../../geometry/FlatGeometry.js";import{GeometryCursor as y}from"../../../../../../../geometry/GeometryCursor.js";import{getLabelPoint as b}from"../../../../../../../geometry/support/labelPoint.js";import{generalizeOptimizedGeometry as x,convertToGeometry as S}from"../../../../../../../layers/graphics/featureConversionUtils.js";import C from"../../../../../../../layers/graphics/OptimizedGeometry.js";import{tileSize as w}from"../../../definitions.js";import T from"../../../collisions/BoundingBox.js";import{LabelMetric as E}from"../../../collisions/LabelMetric.js";import{smoothPaths as D,pathDivide as O,closestPointOnPaths as k}from"../../../mesh/templates/segmentUtils.js";import{getMinMaxZoom as A,processColorInput as j}from"../fill/meshWriterUtils.js";import{TextMeshWriter as M,maxLabelZoom as N}from"../text/TextMeshWriter.js";const P=w*w/16;function F(e,t,n,r){if(n===0&&r===0)return null;let i=Math.max(e.xmax-e.xmin,e.ymax-e.ymin)+1;return{x:t.x-n*i,y:t.y+r*i}}const I=e(()=>import(`../../../../../../../geometry/operators/gx/operatorIntersection.js`)),L=e(()=>import(`../../../../../../../chunks/FlatGeometry.js`));function R(e,t,n){return r(`${e}${t}${n}`)}function z(e,t,n,i,a){let o=i*2**(N-a);return r(`${e}${t}${n}${o}`)}function B(e,t,n){return r(`${e}${t}${n}`)}function V(e,t,n,i,a){let o=n*2**(N-i);return r(`${e}${a}${t}${o}`)}const H=t(e=>{let t=0;if(e===0)return 1/0;for(;!(e%2);)t++,e/=2;return t});class U extends M{constructor(){super(...arguments),this.calloutRecordsUseLabelPhase=!0,this._zoomLevel=0,this._calloutVisuals=[],this._calloutVisualIndex=0}async loadDependencies(){await Promise.all([super.loadDependencies(),I.getImportPromise(),L.getImportPromise()])}getCalloutEffectGeometry(e){let t=this._calloutVisuals[this._calloutVisualIndex]?.metric;return t?y.fromJSON({x:t.anchorX,y:t.anchorY}):null}getLocalCalloutReferenceInfo(){let e=this._calloutVisuals[this._calloutVisualIndex],t=e?.referenceInfo;if(!t||!e)return t;let{metric:n,featureAnchor:r}=e,i=t.anchor??{x:0,y:0},a={x:r[0]-n.anchorX,y:n.anchorY-r[1]},o={x:a.x+i.x,y:a.y+i.y},s=F(t.bodyBounds,o,n.directionX,n.directionY);return{...t,anchor:o,...s?{layoutAnchor:s}:null}}getCalloutVisualCount(){return this._calloutVisuals.length}setCalloutVisualIndex(e){if(e<0||e>=this._calloutVisuals.length)throw Error(`InternalError: callout visual index is out of bounds`);this._calloutVisualIndex=e}includeCalloutRecordRange(e,t){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeRecordRange(e,t)}includeCalloutCollisionBounds(e){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeCalloutCollisionBounds(e)}includeCalloutPartCollisionBounds(e){this._calloutVisuals[this._calloutVisualIndex]?.metric.includeCalloutPartCollisionBounds(e)}_write(e,{target:t,effect:n,level:r,viewExtent:i}){if(this._zoomLevel=r,this._calloutVisuals=[],this._calloutVisualIndex=0,n?.geometry!=null)throw Error(`InternalError: EffectGeometry not support for LabelMeshWriter`);switch(t.geometryType){case`esriGeometryPoint`:{let n=t.readXForDisplay(),r=t.readYForDisplay();this._writePoint(e,n,r,0,t);break}case`esriGeometryEnvelope`:case`esriGeometryPolygon`:this._writePolygon(e,t,i);break;case`esriGeometryMultipoint`:{let n=0,r=y.fromFeatureSetReader(t);if(r?.nextPath())for(;r.nextPoint();)this._writePoint(e,r.x,r.y,n++,t);break}case`esriGeometryPolyline`:this._writeLines(e,t)}}_getMetricDir(){let{horizontalAlignment:e,verticalAlignment:t}=this.evaluatedMeshParams;return[e===`center`?0:e===`right`?-1:1,t===`middle`?0:t===`bottom`?-1:1]}_createLineLabelMetric(e,t,n,r,i,a){let[o,s]=this._getMetricDir(),c=this.evaluatedMeshParams.scaleInfo?.maxScale??0,l=this.evaluatedMeshParams.scaleInfo?.minScale??0,u=this.evaluatedMeshParams.labelClassId;return new E(e,u,t,n,r,i,o,s,c,l,a)}_writePolygon(e,t,n){let r=t.readGeometryForDisplay()?.justXY();e.requiresRefresh||=(r?.area()||0)>=P;let i=this._getPolygonLabelPoint(t,n);i&&this._writePoint(e,i[0],i[1],0,t)}_getPolygonLabelPoint(e,t){if(!t){let t=e.readCentroidForDisplay()?.coords;return t?[t[0],t[1]]:null}let n=I.module,r=L.module.constructFromFlatGeometry,i=e.readGeometryForDisplay()?.justXY(),a=e.readCentroidForDisplay()?.coords,o=i?.area()||0;if(!a)return;let s=o>=P,c=r(h(t)),l=r(h({x:a[0],y:a[1]})),u=!!n.execute(l,c,null);if(!i||!s||!u)return[a[0],a[1]];let d=r(g(`polygon`,i,null)),f=n.execute(d,c,null);if(!f)return[a[0],a[1]];let p=_(new v(f.toFlatGeometry())),m=y.fromOptimized(p,`esriGeometryPolygon`,1),x=b(m)??a;return[x[0],x[1]]}_writePoint(e,t,n,r,i){if(t<0||t>w||n<0||n>w)return;let a=this._getShaping();if(!a)return;let o=i.getDisplayId(),s=this.evaluatedMeshParams.labelClassId,c=this.evaluatedMeshParams.layerId,l=R(c,i.getObjectId(),r),u=B(i.getObjectId(),s,r),[d,f]=this._getMetricDir(),p=this.evaluatedMeshParams.scaleInfo?.maxScale??0,m=this.evaluatedMeshParams.scaleInfo?.minScale??0,h=this._getPointLabelReferenceBounds(),g=new E(o,s,l,u,t,n,d,f,p,m,h);this._calloutVisuals.push({metric:g,featureAnchor:[t,n],referenceInfo:this._createLocalCalloutReferenceInfo(a,h)}),e.metricStart(g),this._writeGlyphs(e,o,t,n,a,0,h,void 0,!1),e.metricBoxWrite(a.boundsT),e.metricEnd()}_getPointReferenceBounds(){return this._references?.get(`label-reference-symbol`)?.getBoundsInfo()??null}_getPointLabelReferenceBounds(){let e=this._getPointReferenceBounds()??{offsetX:0,offsetY:0,size:0},t=this.evaluatedMeshParams.labelOffsetDistance??0,[n,r]=this._getMetricDir();return{...e,offsetX:e.offsetX+n*t,offsetY:e.offsetY-r*t}}_writeLines(e,t){let{scaleInfo:n,verticalAlignment:r}=this.evaluatedMeshParams,i=this.evaluatedMeshParams.repeatLabelDistance||128,a=this._getShaping(`middle`);if(!a)return;let o=(e,t,n,r)=>this._placeSubdivGlyphs(e,t,n,r),s=(a.bounds.width+i)/2;this._current={out:e,id:t.getDisplayId(),objId:t.getObjectId(),shaping:a,zoomRange:A(n,this.getTileInfo()),referenceBounds:this._getPointReferenceBounds()||{offsetX:0,offsetY:0,size:0},calloutPaths:t.readLegacyGeometryForDisplay().paths.map(e=>e.map(([e,t])=>[e,t])),offsetDirection:null,pathIndex:0},this._verticalPlacement=r===`bottom`?`above`:r===`top`?`below`:null,this._verticalPlacement?this._writeAboveAndBelowAlong(t,o,s):this._writeCenterAlong(t,o,s)}_writeAboveAndBelowAlong(e,t,n){let{repeatLabel:r}=this.evaluatedMeshParams,{shaping:i}=this._current,a=i.bounds.halfHeight,o=e.readGeometryForDisplay()?.justXY();if(!o)return;let s=x(o,`esriGeometryPolyline`,1)??new C,c=W(s,a),l=W(s,-a),u=S(l,`esriGeometryPolyline`,!1,!1),d=S(c,`esriGeometryPolyline`,!1,!1),f=D(d.paths,i.bounds.width),p=D(u.paths,i.bounds.width);this._current.offsetDirection=`above`;for(let e=0;e<f.length;e++)this._current.pathIndex=e,O(f[e],n,t,!!r);this._current.offsetDirection=`below`;for(let e=0;e<p.length;e++)this._current.pathIndex=e,O(p[e],n,t,!!r)}_writeCenterAlong(e,t,n){let{repeatLabel:r}=this.evaluatedMeshParams,{shaping:i}=this._current,a=D(e.readLegacyGeometryForDisplay().paths,i.bounds.width);for(let e=0;e<a.length;e++)this._current.pathIndex=e,O(a[e],n,t,!!r)}_placeSubdivGlyphs(e,t,n,r){if(e.x<0||e.x>w||e.y<0||e.y>w)return;let{allowOverrun:i,labelPosition:a,repeatLabelDistance:o,layerId:s,labelClassId:c}=this.evaluatedMeshParams,{objId:l,shaping:u,pathIndex:d}=this._current,f=this._current.zoomRange[0],p=H(t),m=this._current.shaping.bounds.width/2,h=Math.sqrt(o||128)/2,g=Math.min(n,r-n),_=u.isMultiline?N:Math.log2(g/(h+m/2)),v=t===0?_:Math.min(p,_),y=Math.max(f,this._zoomLevel+1-v),b=this._zoomLevel-y,x=u.bounds.width/2*2**b,S=z(s,l,d,t,this._zoomLevel),C=V(l,d,t,this._zoomLevel,c);i&&b<0?this._placeStraightAlong(e,f,S,C):a===`parallel`||u.isMultiline?this._placeStraightAlong(e,y,S,C):a===`curved`&&this._placeCurved(e,y,x,S,C)}_placeCurved(e,t,n,r,i){let{out:a,id:o}=this._current,s=this._createLineLabelMetric(o,r,i,e.x,e.y);this._registerLineCalloutMetric(s),a.metricStart(s);let c=e.clone(),l=e.angle*(180/Math.PI)%360,u=(e.angle*(180/Math.PI)+180)%360;this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||(this._placeFirst(c,t,1,l),this._placeBack(e,c,t,n,1,l),this._placeForward(e,c,t,n,1,l)),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||(this._placeFirst(c,t,0,u),this._placeBack(e,c,t,n,0,u),this._placeForward(e,c,t,n,0,u)),a.metricEnd()}_placeStraightAlong(e,t,r,s){let{out:c,id:l,shaping:u,zoomRange:d,referenceBounds:f}=this._current,{boxBorderLineColor:m,boxBackgroundColor:h}=this.evaluatedMeshParams,g=e.clone(),_=e.angle*(180/Math.PI)%360,v=(e.angle*(180/Math.PI)+180)%360,y=u.glyphs.length>0&&!!(m||h),b=this._createLineLabelMetric(l,r,s,e.x,e.y);if(this._registerLineCalloutMetric(b),c.metricStart(b),y){let r=Math.max(t,d[0],0),s=Math.min(N,d[1]),m=i(o(),-e.angle),h={minZoom:r,maxZoom:s,clipAngle:_,mapAligned:!0,isLineLabel:!0},g=n(this.evaluatedMeshParams.offsetX),y=n(this.evaluatedMeshParams.offsetY);if(!this._verticalPlacement||this._verticalPlacement===this._current.offsetDirection){let t=p(g,-1*y),[n,r]=u.shapeBackground(a(o(),m,t));c.recordStart(this.instanceId,this.attributeLayout,u.glyphs[0].textureBinding),this._writeTextBox(c,l,e.x,e.y,r,f,h),c.recordEnd()}if(!this._verticalPlacement||this._verticalPlacement!==this._current.offsetDirection){let t=p(g,y),[n,r]=u.shapeBackground(a(o(),m,t));h.clipAngle=v,c.recordStart(this.instanceId,this.attributeLayout,u.glyphs[0].textureBinding),this._writeTextBox(c,l,e.x,e.y,r,f,h),c.recordEnd()}}this._verticalPlacement&&this._verticalPlacement!==this._current.offsetDirection||this._placeFirst(g,t,1,_,!0),this._verticalPlacement&&this._verticalPlacement===this._current.offsetDirection||this._placeFirst(g,t,0,v,!0),c.metricEnd()}_registerLineCalloutMetric(e){this._calloutVisuals.push({metric:e,featureAnchor:k(this._current.calloutPaths,e.anchorX,e.anchorY),referenceInfo:this._createLocalCalloutReferenceInfo(this._current.shaping)})}_placeBack(e,t,n,r,i,a){let o=e.clone(),s=e.backwardLength+0;for(;o.prev()&&!(s>=r);)this._placeOnSegment(o,t,s,n,-1,i,a),s+=o.length+0}_placeForward(e,t,n,r,i,a){let o=e.clone(),s=e.remainingLength+0;for(;o.next()&&!(s>=r);)this._placeOnSegment(o,t,s,n,1,i,a),s+=o.length+0}_placeFirst(e,t,n,r,i=!1){let{out:a,id:o,shaping:s,zoomRange:c,referenceBounds:l}=this._current,u=s.glyphs,d=this._getBoundsOffset(e.angle);for(let f of u){let u=f.x>s.bounds.x?n:1-n,p=u*e.remainingLength+(1-u)*e.backwardLength,m=Math.abs(f.x+f.width/2-s.bounds.x),h=Math.max(0,this._zoomLevel+Math.log2(m/(p+0))),g=Math.max(t,i?0:h);f.angle=e.angle+(1-n)*Math.PI;let _=[Math.max(c[0],g),Math.min(c[1],N)];this._writeLineGlyph(a,o,e.x,e.y,f,_,r,l),this._writeLineGlyphBox(a,f,n,_,d)}}_placeOnSegment(e,t,n,r,i,a,o){let{out:s,id:c,shaping:l,referenceBounds:u}=this._current,d=l.glyphs,f=e.dx/e.length,p=e.dy/e.length,m={x:e.x+n*-i*f,y:e.y+n*-i*p},h=this._getBoundsOffset(e.angle);for(let t of d){let d=t.x>l.bounds.x?a:1-a;if(!(d&&i===1||!d&&i===-1))continue;let f=Math.abs(t.x+t.width/2-l.bounds.x),p=Math.max(0,this._zoomLevel+Math.log2(f/n)-.1),g=Math.max(r,this._zoomLevel+Math.log2(f/(n+e.length+0)));if(p===0)continue;t.angle=e.angle+(1-a)*Math.PI;let _=[g,p];this._writeLineGlyph(s,c,m.x,m.y,t,_,o,u),this._writeLineGlyphBox(s,t,a,_,h)}}_getBoundsOffset(e){let t=n(this.evaluatedMeshParams.offsetX),r=n(this.evaluatedMeshParams.offsetY),a=p(t,r),c=i(o(),-e);return s(a,a,c)}_writeLineGlyph(e,t,n,r,i,a,o,s){e.recordStart(this.instanceId,this.attributeLayout,i.textureBinding);let{texcoords:c,offsets:l}=i,{fontSize:u,haloSize:d,outlineSize:f}=this._textMeshTransformProps,p=this._getDefaultGlyphMetrics(this.evaluatedMeshParams.glyphs),m=i.fontSize??u;this._writeQuad(e,t,n,r,{sdfSize:p.sdfSize,sdfRadius:p.sdfRadius,texcoords:c,offsets:l,fontSize:m,haloSize:d,outlineSize:f,color:i.color?j(i.color):j(this.evaluatedMeshParams.color),isBackground:!1,referenceBounds:s,minZoom:Math.max(this._current.zoomRange[0],a[0]),maxZoom:Math.min(this._current.zoomRange[1],a[1]),clipAngle:o,mapAligned:!0,isLineLabel:!0}),e.recordEnd()}_writeLineGlyphBox(e,t,n,r,i){if((n||this._current.offsetDirection)&&this._isVisible(r)&&t.bounds){let n=t.bounds,r=new T(n.x+i[0],n.y+i[1],n.width,n.height);e.metricBoxWrite(r)}}_isVisible(e){let t=Math.max(this._current.zoomRange[0],e[0]),n=Math.min(this._current.zoomRange[1],e[1]),r=this._zoomLevel;return t<=r&&r<=n}}function W(e,t){let n=new C,{coords:r,lengths:i}=e,a=m(),o=m(),s=m(),p=m(),h=m(),g=m(),_=0;for(let e=0;e<i.length;e++){let m=i[e];for(let e=0;e<m;e++){let i=2*(e+_-1),v=2*(e+_),y=2*(e+_+1);e>0?c(a,r[i],r[i+1]):c(a,0,0),c(o,r[v],r[v+1]),e<m-1?c(s,r[y],r[y+1]):c(s,0,0),e===0?c(p,0,0):(l(p,o,a),u(p,p),c(p,p[1],-p[0])),e===m-1?c(h,0,0):(l(h,s,o),u(h,h),c(h,h[1],-h[0])),d(g,p,h),u(g,g);let b=g[0]*h[0]+g[1]*h[1];b!==0&&f(g,g,b),f(g,g,t),n.coords.push(o[0]+g[0],o[1]+g[1])}n.lengths.push(m),_+=m}return n}export{U as LabelMeshWriter,R as labelIdHash,B as labelMetricHash,z as lineLabelIdHash,V as lineLabelMetricHash};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../core/Handles.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i}from"../../../core/reactiveUtils.js";import{convertUnit as a}from"../../../core/units.js";import{fromRotation as o,translate as s,rotate as c,scaleByVec2 as l}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as d,sub as f,scale as p,rotate as m}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{ZEROS as h}from"../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isLoadedOrLoadFor as _,project as v}from"../../../geometry/projectionUtils.js";import{getClosestDenormalizedXToReference as y}from"../../../geometry/support/normalizeUtils.js";import{getResolutionForScale as b}from"../../../geometry/support/scaleUtils.js";import{equals as x}from"../../../geometry/support/spatialReferenceUtils.js";import{DisplayObject as S}from"../engine/DisplayObject.js";import{GridTechnique as C}from"../engine/webgl/shaderGraph/techniques/grid/GridTechnique.js";import{minimumPixelsPerStrideForDisplayWhenScalingOff as w}from"./constants.js";import{measureMetersPerUnitAtReferencePoint as T,getScaleFactor as E}from"./gridUtils.js";const D=g();class O extends S{constructor(){super(),this._handles=new e,this._projectedCenter=null,this._metersPerSRUnit=null,this._technique=new C,this._grid=null,this.visible=!0}destroy(){super.destroy(),this._handles=n(this._handles),this._technique.shutdown()}get grid(){return this._grid}set grid(e){this._grid=e,this._handles.removeAll(),this._handles.add([r(()=>e?.center,()=>{this._projectedCenter=null},i),r(()=>[e?.center,e?.dynamicScaling,e?.majorLineColor,e?.majorLineInterval,e?.minorLineColor,e?.rotateWithMap,e?.rotation,e?.spacing,e?.units],()=>this.requestRender(),i)])}_createTransforms(){return{displayViewScreenMat3:u()}}doRender(e){if(e.drawPhase!==1||this.grid==null||!this.visible)return;let{spacing:t,units:n,majorLineInterval:r,dynamicScaling:i,majorLineColor:o,minorLineColor:s}=this.grid;if(t===0||(this._updateDerivedValues(e),this._projectedCenter==null||this._metersPerSRUnit==null))return;let{scale:c,spatialReference:l}=e.state,u=a(t,n,`meters`),d=this._metersPerSRUnit*b(c,l),f=u/d;if(!i&&f<w)return;let p=u*E(r,f,i);this._updateTransform(e,d,p),this._technique.render(e,{transform:{dvs:this.transforms.displayViewScreenMat3},config:{pxPerCell:p/d,minorLineColor:A(s),majorLineColor:A(o),majorLineInterval:r,halfWidth:.25,aaWidth:.5}})}_updateDerivedValues(e){if(!this.grid)return;let{center:t}=this.grid,{spatialReference:n}=e.state;(!this._projectedCenter||!x(this._projectedCenter.spatialReference,n))&&(this._metersPerSRUnit=null,x(t.spatialReference,n)?this._projectedCenter=t:_(t.spatialReference,n)?this._projectedCenter=v(t,n):this.requestRender()),this._metersPerSRUnit==null&&this._projectedCenter!=null&&(this._metersPerSRUnit=T(this._projectedCenter))}_updateTransform(e,n,r){let{grid:i}=this,{center:a,rotation:u,size:g,spatialReference:_}=e.state;if(i==null||this._projectedCenter==null||this._metersPerSRUnit==null)return;let v=n*(g[0]/2),b=n*(g[1]/2),x=this._metersPerSRUnit/r,S=this._projectedCenter,C=t(i.rotation),w=t(u),T=this.transforms.displayViewScreenMat3;o(T,-C);let E=_.isWrappable?y(S.x,a[0],_):S.x,O=d(D,E,S.y),A=f(D,a,O);p(A,A,x),i.rotateWithMap||m(A,A,h,-w),m(A,A,h,-C),p(A,A,1/i.majorLineInterval),k(A,A),p(A,A,i.majorLineInterval),m(A,A,h,C),s(T,T,A),i.rotateWithMap&&c(T,T,w);let j=v/r,M=b/r,N=d(D,j,M);l(T,T,N)}}function k(e,t){return e[0]=t[0]-Math.trunc(t[0]),e[1]=t[1]-Math.trunc(t[1]),e}function A(e){let[t,n,r,i]=e.toArray().map(e=>e/255);return[t*i,n*i,r*i,i]}export{O as default};
2
+ import e from"../../../core/Handles.js";import{deg2rad as t}from"../../../core/mathUtils.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{watch as r,initial as i}from"../../../core/reactiveUtils.js";import{convertUnit as a}from"../../../core/units.js";import{fromRotation as o,translate as s,rotate as c,scaleByVec2 as l}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as u}from"../../../core/libs/gl-matrix-2/factories/mat3f32.js";import{set as d,sub as f,scale as p,rotate as m}from"../../../core/libs/gl-matrix-2/math/vec2.js";import{ZEROS as h}from"../../../core/libs/gl-matrix-2/factories/vec2f32.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{isLoadedOrLoadFor as _,project as v}from"../../../geometry/projectionUtils.js";import{getClosestDenormalizedXToReference as y}from"../../../geometry/support/normalizeUtils.js";import{getResolutionForScale as b}from"../../../geometry/support/scaleUtils.js";import{equals as x}from"../../../geometry/support/spatialReferenceUtils.js";import{DisplayObject as S}from"../engine/DisplayObject.js";import{GridTechnique as C}from"../engine/webgl/shaderGraph/techniques/grid/GridTechnique.js";import{minimumPixelsPerStrideForDisplayWhenScalingOff as w}from"./constants.js";import{measureMetersPerUnitAtReferencePoint as T,getScaleFactor as E}from"./gridUtils.js";const D=g();class O extends S{constructor(){super(),this._handles=new e,this._projectedCenter=null,this._metersPerSRUnit=null,this._technique=new C,this._grid=null,this.visible=!0}destroy(){super.destroy(),this._handles=n(this._handles),this._technique.shutdown()}get grid(){return this._grid}set grid(e){this._grid=e,this._handles.removeAll(),this._handles.add([r(()=>e?.center,()=>{this._projectedCenter=null},i),r(()=>[e?.center,e?.dynamicScaling,e?.majorLineColor,e?.majorLineInterval,e?.minorLineColor,e?.rotateWithMap,e?.rotation,e?.spacing,e?.units],()=>this.requestRender(),i)])}_createTransforms(){return{displayViewScreenMat3:u()}}doRender(e){if(e.drawPhase!==1||this.grid==null||!this.visible)return;let{spacing:t,units:n,majorLineInterval:r,dynamicScaling:i,majorLineColor:o,minorLineColor:s}=this.grid;if(t===0||(this._updateDerivedValues(e),this._projectedCenter==null||this._metersPerSRUnit==null))return;let{scale:c,spatialReference:l}=e.state,u=a(t,n,`meters`),d=this._metersPerSRUnit*b(c,l),f=u/d;if(!i&&f<w)return;let p=u*E(r,f,i);this._updateTransform(e,d,p),this._technique.render(e,{transform:{dvs:this.transforms.displayViewScreenMat3},config:{pxPerCell:p/d,minorLineColor:A(s),majorLineColor:A(o),majorLineInterval:r,halfWidth:.25,aaWidth:.5}})}_updateDerivedValues(e){if(!this.grid)return;let{center:t}=this.grid,{spatialReference:n}=e.state;this._projectedCenter&&x(this._projectedCenter.spatialReference,n)||(this._metersPerSRUnit=null,x(t.spatialReference,n)?this._projectedCenter=t:_(t.spatialReference,n)?this._projectedCenter=v(t,n):this.requestRender()),this._metersPerSRUnit==null&&this._projectedCenter!=null&&(this._metersPerSRUnit=T(this._projectedCenter))}_updateTransform(e,n,r){let{grid:i}=this,{center:a,rotation:u,size:g,spatialReference:_}=e.state;if(i==null||this._projectedCenter==null||this._metersPerSRUnit==null)return;let v=n*(g[0]/2),b=n*(g[1]/2),x=this._metersPerSRUnit/r,S=this._projectedCenter,C=t(i.rotation),w=t(u),T=this.transforms.displayViewScreenMat3;o(T,-C);let E=_.isWrappable?y(S.x,a[0],_):S.x,O=d(D,E,S.y),A=f(D,a,O);p(A,A,x),i.rotateWithMap||m(A,A,h,-w),m(A,A,h,-C),p(A,A,1/i.majorLineInterval),k(A,A),p(A,A,i.majorLineInterval),m(A,A,h,C),s(T,T,A),i.rotateWithMap&&c(T,T,w);let j=v/r,M=b/r,N=d(D,j,M);l(T,T,N)}}function k(e,t){return e[0]=t[0]-Math.trunc(t[0]),e[1]=t[1]-Math.trunc(t[1]),e}function A(e){let[t,n,r,i]=e.toArray().map(e=>e/255);return[t*i,n*i,r*i,i]}export{O as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as w,getJsonType as T}from"../../../geometry/support/jsonUtils.js";import E from"../../../geometry/support/rotate.js";import{isCurvedGeometry as D}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as O}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import ee from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as k}from"../../../layers/graphics/featureConversionUtils.js";import A from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as te}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import j from"../../../rest/support/FeatureSet.js";import M from"../../../rest/support/Query.js";import{HittestDrawHelper as N}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{resolveSymbolToCIM as P}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as F}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as I}from"./LayerView2D.js";import{FeatureContainer as L}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as R}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as z}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as B}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as V}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as H}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as U}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as W}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as G}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as K}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as ce}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as le}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as ue}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as de}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as fe}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as pe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as me}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as he,getHittestType as Z}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function ye(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function be(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!D(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:O(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const xe=c=>{let _=_e(I(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new pe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new z,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new ee}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await R(t)}async _attachProxy(){let e=E(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new B(this.layer);case`dimension-feature`:return new H(this.layer);case`feature`:return this.layer.source.type===`memory`?new G(this.layer):new U(this.layer);case`geojson`:case`csv`:case`wfs`:return new G(this.layer);case`parquet`:return new ue(this.layer);case`subtype-group`:return new fe(this.layer);case`ogc-feature`:return new ce(this.layer);case`stream`:return new de(this.layer);case`oriented-imagery`:return new le(this.layer);case`knowledge-graph-sublayer`:return new K(this.layer);case`catalog-footprint`:return new V(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof A)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new A({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=Z(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:h}=d,{features:g,aggregates:_,tracks:v}=f,y=s?p:this.hasRenderer()?await this._filterCandidateHits(p,i,o):[],b=[...g,...y],x=[..._,...m],S=[...v,...h],C=this.featureContainer.getSortKeys(b.map(e=>e.displayId)),w=({displayId:e},{displayId:t})=>C.has(e)&&C.has(t)?C.get(e)-C.get(t):e-t;return b.sort(w).reverse(),x.sort(w).reverse(),[...x.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...S.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...b.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async _filterCandidateHits(e,t,r){let i=[],a=new n,{resolution:o,rotation:s}=this.view.state,c=he(this.view,t);for(let t of e){a.attributes=t.attributes,a.geometry=w(t.geometry),a.symbol=null;let e=this.layerAdapter.getRenderer(a);if(!e){i.push(t);continue}let n=await F(a,{renderer:e,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!n)continue;let l=await P(n,null,this.view.spatialReference,T(t.geometry),{scale:this.view.scale,viewingMode:`2d`});if(!l)continue;let u=this.view.stage.cimAnalyzer.analyzeSymbolReference({type:`CIMSymbolReference`,symbol:l},!1).some(e=>`alignment`in e&&e.alignment===0);this._hittestDrawHelper??=new N(this.view.stage.painter.textureManager.resourceManager);let d={hittestType:r,textInfo:null,mapRotation:s,resolution:o,searchDist:0,isScreenAligned:u};this._hittestDrawHelper.hitTest(c,l,t.geometry,d)&&i.push(t)}return i}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=j.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=j.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new L(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([be([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=E(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=M.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=M.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(!this.updateSuspended||!e)&&(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion())}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=W(this.layer),r=[];for(let i of e.added){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),te(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=ye(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=D(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=me({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function D(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new A,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new A,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new A().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{xe as FeatureLikeLayerView2D};
2
+ import{__decorate as e}from"tslib";import t from"../../../AggregateGraphic.js";import n from"../../../Graphic.js";import r from"../../../TrackGraphic.js";import{isSome as i}from"../../../core/arrayUtils.js";import a from"../../../core/Collection.js";import o from"../../../core/Error.js";import{makeHandle as s,handlesGroup as c}from"../../../core/handleUtils.js";import has from"../../../core/has.js";import l from"../../../core/Logger.js";import{destroyMaybe as u}from"../../../core/maybe.js";import{notDeepEqual as d}from"../../../core/object.js";import{createAbortError as f,ignoreAbortErrors as p,throwIfNotAbortError as m,isAbortError as h}from"../../../core/promiseUtils.js";import{watch as g,sync as _}from"../../../core/reactiveUtils.js";import{sqlAnd as v}from"../../../core/sql.js";import{getMetersPerUnitForSR as y}from"../../../core/units.js";import{property as b,subclass as x}from"../../../core/accessorSupport/decorators.js";import{UpdatingHandles as S}from"../../../core/support/UpdatingHandles.js";import C from"../../../geometry/Extent.js";import{fromJSON as w,getJsonType as T}from"../../../geometry/support/jsonUtils.js";import E from"../../../geometry/support/rotate.js";import{isCurvedGeometry as D}from"../../../geometry/support/curves/curveUtils.js";import{densifyCurvedGeometry as O}from"../../../geometry/support/curves/densifyCurvedGeometry.js";import ee from"../../../layers/effects/FeatureEffectView.js";import{convertFromFeature as k}from"../../../layers/graphics/featureConversionUtils.js";import A from"../../../layers/support/FeatureFilter.js";import{checkServiceCurrentUserSupport as te}from"../../../layers/support/featureLayerUtils.js";import{packFields as ne}from"../../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as re}from"../../../layers/support/layerUtils.js";import{combineTimeExtent as ie}from"../../../layers/support/timeSupport.js";import ae from"../../../rest/support/AggregateFeatureSet.js";import oe from"../../../rest/support/AttributeBinsFeatureSet.js";import se from"../../../rest/support/AttributeBinsQuery.js";import j from"../../../rest/support/FeatureSet.js";import M from"../../../rest/support/Query.js";import{HittestDrawHelper as N}from"../../../symbols/cim/CIMSymbolDrawHelper.js";import{resolveSymbolToCIM as P}from"../../../symbols/cim/CIMSymbolHelper.js";import{getDisplayedSymbol as F}from"../../../symbols/support/symbolUtils.js";import{LayerView2D as I}from"./LayerView2D.js";import{FeatureContainer as L}from"./features/FeatureContainer.js";import{createFeaturePipelineWorkerProxy as R}from"./features/FeaturePipelineWorkerProxy.js";import{FeatureSourceEventLog as z}from"./features/FeatureSourceEventLog.js";import{AnnotationLayerAdapter as B}from"./features/layerAdapters/AnnotationLayerAdapter.js";import{CatalogFootprintLayerAdapter as V}from"./features/layerAdapters/CatalogFootprintLayerAdapter.js";import{DimensionLayerAdapter as H}from"./features/layerAdapters/DimensionLayerAdapter.js";import{FeatureLayerAdapter as U}from"./features/layerAdapters/FeatureLayerAdapter.js";import{createFeatureIdInfo as W}from"./features/layerAdapters/featureServiceUtils.js";import{InMemoryLayerAdapter as G}from"./features/layerAdapters/InMemoryLayerAdapter.js";import{KnowledgeGraphSublayerAdapter as K}from"./features/layerAdapters/KnowledgeGraphSublayerAdapter.js";import{OGCFeatureLayerAdapter as ce}from"./features/layerAdapters/OGCFeatureLayerAdapter.js";import{OrientedImageryLayerAdapter as le}from"./features/layerAdapters/OrientedImageryLayerAdapter.js";import{ParquetLayerAdapter as ue}from"./features/layerAdapters/ParquetLayerAdapter.js";import{StreamLayerAdapter as de}from"./features/layerAdapters/StreamLayerAdapter.js";import{SubtypeGroupLayerAdapter as fe}from"./features/layerAdapters/SubtypeGroupLayerAdapter.js";import{createComplexSymbolInstances as q}from"./features/schema/processor/symbols/ComplexSymbolSchema.js";import{DebouncedFeatureOverride as J}from"./support/DebouncedFeatureOverride.js";import{FeatureCommandQueue as pe}from"./support/FeatureCommandQueue.js";import{createFilterSchemas as me}from"./support/FilterSchema.js";import{handleNoEngineError as Y}from"./support/handleNoEngineError.js";import{toJSONGeometryType as X}from"./support/util.js";import{getMapPointsFromScreen as he,getHittestType as Z}from"../support/hitTestUtils.js";import{FeatureTileSubscriptionManager as ge}from"../tiling/FeatureTileSubscriptionManager.js";import{RefreshableLayerView as _e}from"../../layers/RefreshableLayerView.js";import{getHighlightName as ve}from"../../support/highlightOptionsUtils.js";function ye(e,t){let n=new Set;return e&&e.forEach(e=>n.add(e)),t&&t.forEach(e=>n.add(e)),n.has(`*`)?[`*`]:Array.from(n)}const Q=4294967294;function be(e,t){return c(e.map(e=>g(()=>{let t=e();return t&&typeof t==`object`?`getTime`in t&&typeof t.getTime==`function`?t.getTime():JSON.stringify(t):t},t,_)))}function $(e){if(!e.geometry||!D(e.geometry))return e;let t=.001/y(e.geometry.spatialReference);return{geometry:O(e.geometry,{maxSegmentsPerCurve:12e3,maxSegmentLength:100*t,maxDeviation:0}),attributes:e.attributes}}const xe=c=>{let _=_e(I(c)),y=class extends _{constructor(){super(...arguments),this._commandsQueue=new pe({process:e=>{switch(e.type){case`override-batch`:return this._doOverride(e);case`update`:return this._doUpdate()}}}),this._visibilityOverrides=new Set,this._lastAvailableFields=[],this._lastTargetState=null,this._stationaryRotation=0,this._lastSnappingComplexityExceeded=!0,this.eventLog=new z,this._sourceRefreshVersion=1,this._displayRefreshVersion=1,this._pipelineUpdating=!1,this._editUpdatingHandles=new S,this._fields=null,this._hittestDrawHelper=null,this._sourceUpdating=!1,this.featureEffectView=new ee}destroy(){this._editUpdatingHandles.destroy(),this._workerProxy?.destroy(),this._workerAttached.reject(f()),this._commandsQueue.destroy(),this._hittestDrawHelper?.destroy()}initialize(){this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this.addResolvingPromise(this._initProxy()),this.featureEffectView.featureEffect=this.featureEffect,this.featureEffectView.endTransition()}async _initProxy(){let e=this.layer;if(`isTable`in e&&e.isTable)throw new o(`featurelayerview:table-not-supported`,`table feature layer can't be displayed`,{layer:e});if((e.type===`feature`||e.type===`subtype-group`)&&re(e)?.operations.supportsQuery===!1)throw new o(`featurelayerview:query-not-supported`,`layer view requires a layer with query capability`,{layer:e});this._workerProxy&&this._workerProxy.destroy();let t=this._createClientOptions();this._workerProxy=await R(t)}async _attachProxy(){let e=E(this.view.extent,this.view.rotation,this.view.center),t={tileInfoJSON:this.view?.featuresTilingScheme?.tileInfo?.toJSON(),initialViewExtent:e.toJSON()};try{await this._workerProxy.pipeline.onAttach(t),this._workerAttached.resolve()}catch(e){this._workerAttached.reject(f()),m(e)}}async _detachProxy(){return this._workerProxy.pipeline.onDetach()}async getWorker(){return await this._workerAttached.promise,this._workerProxy}get dataUpdating(){return this._sourceUpdating||this._editUpdatingHandles.updating}get hasAllFeatures(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryAllFeatures}get hasAllFeaturesInView(){let e=this.effectiveDisplayFilter?.where||null,t=!this.eventLog.willQueryAllFeatures&&e!=null&&e!==`1=1`;return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&!t}get hasFullGeometries(){return this.layer.visible&&!this.suspended&&this.eventLog.hasAllData&&this.eventLog.willQueryFullResolutionGeometry}get snappingComplexityExceeded(){if(this.eventLog.willQueryAllFeatures)return!1;let e=this.view.featuresTilingScheme.getClosestInfoForScale(this.view.scale).level,t=this.eventLog.getGeometryDensity(e),n=t?.sampleCount??0;return this.updating&&(this._lastSnappingComplexityExceeded||n<100)||(this._lastSnappingComplexityExceeded=t!=null&&n>0&&t.densePairCount/n>.95),this._lastSnappingComplexityExceeded}get layerAdapter(){switch(this.layer.type){case`annotation-feature`:return new B(this.layer);case`dimension-feature`:return new H(this.layer);case`feature`:return this.layer.source.type===`memory`?new G(this.layer):new U(this.layer);case`geojson`:case`csv`:case`wfs`:return new G(this.layer);case`parquet`:return new ue(this.layer);case`subtype-group`:return new fe(this.layer);case`ogc-feature`:return new ce(this.layer);case`stream`:return new de(this.layer);case`oriented-imagery`:return new le(this.layer);case`knowledge-graph-sublayer`:return new K(this.layer);case`catalog-footprint`:return new V(this.layer);default:this.layer}return null}get timeExtent(){return ie(this.layerAdapter.timeOptions,this.view?.timeExtent,this._get(`timeExtent`))}get usedMemory(){return this.container.usedMemory+this.eventLog.pipelineStatistics.usedMemory}getDisplayStatistics(e,t){return this.featureContainer?.getDisplayStatistics(e,t)}highlight(e,t){let r=ve(t),o;if(e instanceof A)o=e;else{let t;e instanceof n?t=[e.getObjectId()]:typeof e==`number`||typeof e==`string`?t=[e]:a.isCollection(e)&&e.length>0?t=e.map(e=>e?.getObjectId()).toArray():Array.isArray(e)&&e.length>0&&(t=typeof e[0]==`number`||typeof e[0]==`string`?e:e.map(e=>e?.getObjectId()));let r=t?.filter(i);if(!r?.length)return s();o=new A({objectIds:r})}let c=this._addHighlightFilter(o,r);return s(()=>!this.destroyed&&this._removeHighlight(c))}async hitTest(e,i,a){let o=Z(i);if(!o)return null;let s=o===`point`,{trueHitIds:c,candidateHitIds:l}=await this.featureContainer.hitTest(i,a??null),u=await this.getWorker(),[d,f]=await Promise.all([u.pipeline.getDisplayFeatures(l),u.pipeline.getDisplayFeatures(c)]),{features:p,aggregates:m,tracks:h}=d,{features:g,aggregates:_,tracks:v}=f,y=s?p:this.hasRenderer()?await this._filterCandidateHits(p,i,o):[],b=[...g,...y],x=[..._,...m],S=[...v,...h],C=this.featureContainer.getSortKeys(b.map(e=>e.displayId)),w=({displayId:e},{displayId:t})=>C.has(e)&&C.has(t)?C.get(e)-C.get(t):e-t;return b.sort(w).reverse(),x.sort(w).reverse(),[...x.map(n=>this._createAggregateGraphicHit(e,t.fromJSON(n))),...S.map(t=>this._createTrackGraphicHit(e,r.fromJSON(t))),...b.map(t=>this._createFeatureGraphicHit(s?e:null,n.fromJSON(t)))]}async _filterCandidateHits(e,t,r){let i=[],a=new n,{resolution:o,rotation:s}=this.view.state,c=he(this.view,t);for(let t of e){a.attributes=t.attributes,a.geometry=w(t.geometry),a.symbol=null;let e=this.layerAdapter.getRenderer(a);if(!e){i.push(t);continue}let n=await F(a,{renderer:e,scale:this.view.scale,resolution:this.view.resolution,spatialReference:this.view.spatialReference,viewingMode:`2d`,timeZone:this.view.timeZone});if(!n)continue;let l=await P(n,null,this.view.spatialReference,T(t.geometry),{scale:this.view.scale,viewingMode:`2d`});if(!l)continue;let u=this.view.stage.cimAnalyzer.analyzeSymbolReference({type:`CIMSymbolReference`,symbol:l},!1).some(e=>`alignment`in e&&e.alignment===0);this._hittestDrawHelper??=new N(this.view.stage.painter.textureManager.resourceManager);let d={hittestType:r,textInfo:null,mapRotation:s,resolution:o,searchDist:0,isScreenAligned:u};this._hittestDrawHelper.hitTest(c,l,t.geometry,d)&&i.push(t)}return i}async queryAggregateSummaryStatistics(e,t,n){let r={...t,scale:this.view.scale},i=(await this.getWorker()).aggregates.executeQueryForSummaryStatistics(this._cleanUpAggregateQuery(e),r,n);return Y(i,{})}async queryUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForUniqueValues(this._cleanUpQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateUniqueValues(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForUniqueValues(this._cleanUpAggregateQuery(e),i,n);return Y(a,{uniqueValueInfos:[]})}async queryAggregateClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForClassBreaks(this._cleanUpAggregateQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForHistogram(this._cleanUpQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateCount(e,t){let n=(await this.getWorker()).aggregates.executeQueryForCount(this._cleanUpAggregateQuery(e),t);return Y(n,0)}async queryAggregateHistogram(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.aggregates.executeQueryForHistogram(this._cleanUpAggregateQuery(e),i,n);return Y(a,{bins:[],maxValue:null,minValue:null,normalizationTotal:null})}async queryAggregateIds(e,t){let n=(await this.getWorker()).aggregates.executeQueryForIds(this._cleanUpAggregateQuery(e),t);return Y(n,[])}async queryAggregateJSON(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t);return Y(n,{features:[]})}async queryAttributeBins(e,t){let n=(await this.getWorker()).features.executeAttributeBinsQuery(this._cleanUpAttributeBinsQuery(e),t),r=await Y(n,{features:[]});return oe.fromJSON(r)}async queryAggregates(e,t){let n=(await this.getWorker()).aggregates.executeQuery(this._cleanUpAggregateQuery(e),t),r=await Y(n,{features:[]}),i=ae.fromJSON(r);return i.features.forEach(e=>this.layerAdapter.setAggregateGraphicOrigin?.(e)),i}async queryClassBreaks(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForClassBreaks(this._cleanUpQuery(e),i,n);return Y(a,{classBreakInfos:[]})}async queryExtent(e,t){let n=(await this.getWorker()).features.executeQueryForExtent(this._cleanUpQuery(e),t),r=await Y(n,{count:0,extent:null});return{count:r.count,extent:C.fromJSON(r.extent)}}async queryFeatureCount(e,t){let n=(await this.getWorker()).features.executeQueryForCount(this._cleanUpQuery(e),t);return Y(n,0)}queryFeatures(e,t){return this.queryFeaturesJSON(e,t).then(e=>{let t=j.fromJSON(e);return t.features.forEach(e=>this._setOriginForFeature(e)),t})}async queryFeaturesJSON(e,t){let n=(await this.getWorker()).features.executeQuery(this._cleanUpQuery(e),t);return Y(n,{features:[]})}async queryHeatmapStatistics(e){return(await this.getWorker()).pipeline.queryHeatmapStatistics(e)}async queryObjectIds(e,t){let n=(await this.getWorker()).features.executeQueryForIds(this._cleanUpQuery(e),t);return Y(n,[])}async queryStatistics(){let e=await this.getWorker();return Y(e.pipeline.queryStatistics(),{featureCount:0,ringCount:0,vertexCount:0})}async querySummaryStatistics(e,t,n){let r=await this.getWorker(),i={...t,scale:this.view.scale},a=r.features.executeQueryForSummaryStatistics(this._cleanUpQuery(e),i,n);return Y(a,{})}async queryVisibleFeatures(e,t){let n=(await this.getWorker()).pipeline.queryVisibleFeatures(this._cleanUpQuery(e),t),r=await Y(n,{features:[]}),i=j.fromJSON(r);return i.features.forEach(e=>this._setOriginForFeature(e)),i}async getSampleFeatures(e){return(await this.getWorker()).pipeline.getSampleFeatures(e)}setVisibility(e,t){t?this._visibilityOverrides.delete(e):this._visibilityOverrides.add(e),this._update()}update(e){if(!this._subscriptions)return;this.view.animation&&!this._lastTargetState&&(this._lastTargetState=e.state.clone()),!this.view.animation&&this._lastTargetState&&(this._lastTargetState=null);let t=this.featureContainer.getPresenting(),n=this._subscriptions.update(e.targetState,this._lastTargetState,t);n&&(this.featureContainer.updateSubscriptions(n),p(this._updatingHandles.addPromise(this.getWorker().then(e=>e.pipeline.updateSubscriptions(n))))),this._subscriptions.coverage&&this.featureContainer.setCoverage(this._subscriptions.coverage)}attach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.attach`),p(this._updatingHandles.addPromise(this._workerAttached.promise)),p(this._attachProxy()),this.featureContainer=new L(this),this.container.addChild(this.featureContainer),this.view.timeline.record(`${this.layer.title} (FeatureLayer) Attach`),this._subscriptions=new ge(this.view.featuresTilingScheme),this._stationaryRotation=this.view.rotation,this.requestUpdate(),this.addAttachHandles([be([()=>this._displayRefreshVersion,()=>`displayFilterInfo`in this.layer&&this.layer.displayFilterInfo,()=>this.timeExtent,()=>this.clips,()=>this.filter,()=>this.effectiveDisplayFilterClause,()=>this.featureEffect,()=>this._sourceRefreshVersion,()=>this.view.timeZone,()=>this.view.timeExtent,...this.layerAdapter.getUpdateHashProperties(this.view)],()=>this._update()),g(()=>this.updateSuspended,e=>{e||this._subscriptions.resume(this.featureContainer.getPresenting())}),g(()=>this.view.stationary,e=>{if(!e)return;let t=this.view.rotation;t!==this._stationaryRotation&&(this._stationaryRotation=t,this._update()),this.getWorker().then(e=>{if(this.destroyed)return;let t=E(this.view.extent,this.view.rotation,this.view.center);return e.pipeline.updateViewExtent(t.toJSON(),this.featureContainer.requiresRefresh)}).catch(()=>{})})]),this._update(),this.layer.type!==`stream`&&this.layer.type!==`parquet`&&this.layer.type!==`catalog-footprint`&&this.addAttachHandles(this.layer.on(`edits`,e=>this._editUpdatingHandles.addPromise(this._edit(e))))}emitFirstDraw(e){this.emit(`first-draw`,{timestamp:e})}detach(){has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.detach`),this._detachProxy(),this._fields=null,this.featureContainer.destroy(),this.featureContainer=null,this._commandsQueue.clear(),this.container.removeAllChildren(),this._subscriptions=u(this._subscriptions),this._workerProxy.pipeline.onDetach(),this._workerAttached=Promise.withResolvers(),p(this._workerAttached.promise),this._lastAvailableFields=[],this._lastSchema=null}viewChange(){this.requestUpdate()}moveEnd(){this.requestUpdate()}addOverrides(e){return this._commandsQueue.push({type:`override`,options:{...e,release:[]}})}removeOverrides(e){for(let t of e)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an override for an invalid objectId`,{objectId:t});let t={added:[],updated:[],removed:[],release:e,isWeak:!1,historicMoment:null};return this._commandsQueue.push({type:`override`,options:t})}onProxyClientEvent(e){}hasRenderer(){return`renderer`in this.layer&&this.layer.renderer!=null}isUpdating(){let e=this.hasRenderer(),t=this._commandsQueue.updateTracking.updating,n=this._updatingRequiredPromise!=null,r=this.featureContainer.updating;return this.updateRequested||e&&(t||n)||r||this._pipelineUpdating||this.dataUpdating}_createClientOptions(){let e=this;return{updateSchemaStart(){return e.updateSchemaStart()},updateSchemaEnd(t){return e.updateSchemaEnd(t)},openMemoryPorts:async()=>{if(this.layerAdapter?.openMessagePorts){let e=await this.layerAdapter.openMessagePorts();return{result:e,transferList:e}}throw Error(`InternalError: Layer adapter does not support opening message ports`)},openGlyphPorts:async()=>{let t=await e.container.stage.textureManager.openMessagePorts();return{result:t,transferList:t}},get container(){return e.featureContainer},setUpdating:e=>{this._set(`_pipelineUpdating`,e.pipeline),this._set(`_sourceUpdating`,e.source)},emitEvent:e=>{this.onProxyClientEvent(e)},get eventLog(){return e.eventLog},fetch:async t=>{if(has(`esri-2d-stabilize-glyphs`)){let n=[];for(let r of t)n.push(await e.view.stage.painter.textureManager.rasterizeItem(r));return n}return Promise.all(t.map(t=>e.view.stage.painter.textureManager.rasterizeItem(t)))},fetchDictionary:e=>Promise.all(e.map(e=>this._fetchDictionaryRequest(e))),fetchMesh:e=>Promise.all(e.map(e=>this._fetchMeshRequest(e)))}}async _fetchDictionaryRequest(e){try{if(!(`renderer`in this.layer)||!this.layer.renderer||this.layer.renderer.type!==`dictionary`)throw Error(`InternalError: Expected renderer to be of type 'dictionary'`);let t=this.layer.renderer,n=this._lastSchema.processor.mesh.factory.symbology;if(n.type!==`dictionary`)throw Error(`InternalError: Expected schema to be of type 'dictionary'`);let r={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:n.scaleExpression,viewRotation:this._stationaryRotation};this._fields||=this.layer.fields.map(e=>e.toJSON());let i=n.visualVariableUniforms,a=X(this.layer.geometryType),o=await t.getSymbolForControlString(e.controlString,a,!1);return!o||!o.data?{type:`dictionary-response`,meshes:[]}:{type:`dictionary-response`,meshes:await q({...o.data,hasTextStringTemplates:!0},{uniforms:i,path:`renderer`,schemaOptions:r})}}catch{return{type:`dictionary-response`,meshes:[]}}}async _fetchMeshRequest(e){let{layer:t}=this;try{let n={cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,store:this.featureContainer.instanceStore,scaleExpression:null,viewRotation:this._stationaryRotation};return this._fields||=t.fields.map(e=>e.toJSON()),{type:`mesh-response`,meshes:await q({...e.symbolReference,hasTextStringTemplates:!0},{path:`anno-like`,schemaOptions:n,uniforms:{visualVariableColor:null,visualVariableOpacity:null,visualVariableRotation:null,visualVariableSizeStops:null,visualVariableSizeScaleStops:null,visualVariableSizeOutlineScaleStops:null,visualVariableSizeUnitValue:null,visualVariableSizeMinMaxValue:null}})}}catch{return{type:`mesh-response`,meshes:[]}}}_cleanUpQuery(e){let t=M.from(e)||this.createQuery();return t.outSpatialReference||=this.view.spatialReference,`returnZ`in this.layer&&(t.returnZ??=this.layer.returnZ),`returnM`in this.layer&&(t.returnM??=this.layer.returnM),t.toJSON()}_cleanUpAttributeBinsQuery(e){let t=se.from(e);return t.outSpatialReference||=this.view.spatialReference,t.toJSON()}_cleanUpAggregateQuery(e){let t=M.from(e)||this.createAggregateQuery();t.outSpatialReference||=this.view.spatialReference;let n=t.objectIds??[];for(let e of t.aggregateIds??[])n.push(e);return t.objectIds=n,t.aggregateIds=[],t.toJSON()}async _update(){return this._commandsQueue.push({type:`update`})}_edit(e){return this._commandsQueue.push({type:`edit`,event:e})}async doRefresh(e){this.attached&&(this.updateSuspended&&e||(e?this.incrementSourceRefreshVersion():this.incrementDisplayRefreshVersion()))}incrementSourceRefreshVersion(){this._sourceRefreshVersion=(this._sourceRefreshVersion+1)%Q+1}incrementDisplayRefreshVersion(){this._displayRefreshVersion=(this._displayRefreshVersion+1)%Q+1}async _resolveIdenifiers(e){let t=[],n=[];for(let r of e)r.objectId!=null&&r.objectId!==-1?t.push(r.objectId):r.globalId==null?l.getLogger(this).warn(`mapview-apply-edits`,`A feature identifier must contain either a GlobalId or ObjectId. Ignoring`,{identifier:r}):n.push(r.globalId);let r=`globalIdField`in this.layer&&this.layer.globalIdField,i=r&&this.availableFields.includes(r);if(n.length&&!i)return l.getLogger(this).error(new o(`mapview-apply-edits`,`Editing the specified service requires the layer's globalIdField, ${r} to be included the layer's outFields for updates to be reflected on the map`)),t;if(n.length){let e=await this._workerProxy.pipeline.getObjectIdsFromGlobalIds(n);for(let n of e)t.push(n)}return t}_resolveOverrides(e){let t=X(this.layer.geometryType),n=W(this.layer),r=[];for(let i of e.added){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let i of e.updated){let e=k($(i),t,!1,!1,n);if(e.objectId==null)throw new o(`featurelayerview:bad-override`,`Feature does not have an objectId`,{feature:i});r.push(e)}for(let t of e.removed)if(t==null)throw new o(`featurelayerview:bad-override`,`Tried to remove an invalid objectId`,{objectId:t});return{type:`override`,updates:r,removed:e.removed,release:e.release,isWeak:e.isWeak??!1,historicMoment:e.historicMoment??null}}async _resolveEdit(e){let t=this.layer,n=e.historicMoment?.getTime()??null,r=`layerId`in t&&e.editedFeatures?.find(e=>e.layerId===t.layerId);if(r&&this._canEditByFeature(r)){let{adds:e,deletes:t,updates:i}=r.editedFeatures,a=this.layer.objectIdField,o=i.map(e=>e.current),s=t.map(e=>`attributes`in e?{objectId:a?e.attributes[a]:null}:e),c=await this._resolveIdenifiers(s);return this._resolveOverrides({added:e,updated:o,removed:c,historicMoment:n,isWeak:!0,release:[]})}let[i,a,o]=await Promise.all([this._resolveIdenifiers(e.addedFeatures),this._resolveIdenifiers(e.updatedFeatures),this._resolveIdenifiers(e.deletedFeatures)]);return{type:`override-by-id`,updates:[...i,...a],removed:o,historicMoment:n,isWeak:!0}}_canEditByFeature(e){let{adds:t,updates:n}=e.editedFeatures;return t.every(e=>this.view.spatialReference.equals(e.geometry?.spatialReference))&&n.every(e=>this.view.spatialReference.equals(e.current.geometry?.spatialReference))}async updateSchemaStart(){let e=this.layer;`featureReduction`in e&&e.featureReduction&&e.featureReduction!==this._lastFeatureReduction&&(e.featureReduction=e.featureReduction?.clone(),this._lastFeatureReduction=e.featureReduction);try{if(await Promise.allSettled([this._handleChange(),te(e)]),this.destroyed||!this.layerAdapter?.hasRequiredSupport||!this._subscriptions)return null;let t=this.featureContainer.updateStart(e.type===`subtype-group`);this._lastFeatureEffect=this.featureEffect;let n={store:t,cimAnalyzer:this.view.stage.cimAnalyzer,cimResourceManager:this.view.stage.painter.textureManager.resourceManager,scaleExpression:void 0,viewRotation:this._stationaryRotation},r=await this._createViewSchemaConfig(),i={source:await this.layerAdapter.createSourceSchema(r,this._sourceRefreshVersion),processor:await this.layerAdapter.createProcessorSchema(n,r,this._displayRefreshVersion)};return d(this._lastSchema?.source.strategy,i.source.strategy)||d(this._lastSchema?.processor,i.processor)?(this._lastSchema=i,this._fields=null,i):null}catch{}return null}async updateSchemaEnd(e){try{this.featureEffectView.featureEffect=this._lastFeatureEffect,e&&this.featureEffectView.endTransition(),await this.featureContainer.updateEnd(this._lastSchema.processor,this.layerAdapter.getLabelingDeconflictionInfo(),e),has(`esri-2d-update-debug`)&&console.debug(`FeatureLayerView2D.updateEnd`)}catch{}}async _doUpdate(){let e=Math.round(performance.now());await(await this.getWorker()).pipeline.updateSchema(e),this.requestUpdate()}async _doOverride(e){let t=await this.getWorker();try{let n=new J;for(let r of e.messages)switch(r.type){case`edit`:n.tryAdd(await this._resolveEdit(r.event))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(await this._resolveEdit(r.event)));break;case`override`:n.tryAdd(this._resolveOverrides(r.options))||(await t.pipeline.onOverride(n.toMessage()),n=new J,n.tryAdd(this._resolveOverrides(r.options)))}await t.pipeline.onOverride(n.toMessage())}catch(e){h(e)}}_getEffectiveAvailableFields(e){let t=ye(this._lastAvailableFields,e);return this._lastAvailableFields=t,ne(this.layer.fieldsIndex,t)}async _createViewSchemaConfig(){let e=this.requiresCurrentUser?await this.signedInUser:null,t=D(this.view,this.layerAdapter,this.timeExtent,this._visibilityOverrides,this.filter,this.effectiveDisplayFilterClause),n=this.featureEffect?.filter?.toJSON()??null,r=this._getHighlightFilterGroups().map(({order:e,filters:t})=>({order:e,filters:t.map(e=>e.toJSON())})),i=me({layerFilter:t,effectFilter:n,highlightFilters:r});return{availableFields:this._getEffectiveAvailableFields(this.availableFields),displayFilterEnabled:this.displayFilterEnabled,filters:i,scale:this.view.scale,timeZone:this.view.timeZone,timeExtent:this.view.timeExtent,currentUser:e,spatialReference:this.view.spatialReference,extent:this.view.extent,returnZ:this.hasZ,returnM:this.hasM}}_onHighlightChange(){this._commandsQueue.push({type:`update`})}_setOriginForFeature(e){e.layer=e.sourceLayer=this.layer,this.layerAdapter.setGraphicOrigin(e)}_createFeatureGraphicHit(e,t){return this._setOriginForFeature(t),this._createGraphicHit(e,t)}_createTrackGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setTrackGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createAggregateGraphicHit(e,t){return t.layer=t.sourceLayer=this.layer,this.layerAdapter.setAggregateGraphicOrigin?.(t),this._createGraphicHit(e,t)}_createGraphicHit(e,t){return t.geometry!=null&&(t.geometry.spatialReference=this.view.spatialReference),{type:`graphic`,graphic:t,layer:this.layer,mapPoint:e}}};e([b()],y.prototype,`_commandsQueue`,void 0),e([b()],y.prototype,`_sourceRefreshVersion`,void 0),e([b()],y.prototype,`_displayRefreshVersion`,void 0),e([b({readOnly:!0})],y.prototype,`_pipelineUpdating`,void 0),e([b()],y.prototype,`_sourceUpdating`,void 0),e([b({readOnly:!0})],y.prototype,`dataUpdating`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeatures`,null),e([b({readOnly:!0})],y.prototype,`hasAllFeaturesInView`,null),e([b({readOnly:!0})],y.prototype,`hasFullGeometries`,null),e([b({readOnly:!0})],y.prototype,`snappingComplexityExceeded`,null),e([b()],y.prototype,`featureEffectView`,void 0),e([b()],y.prototype,`layerAdapter`,null),e([b({readOnly:!0})],y.prototype,`timeExtent`,null),y=e([x(`esri.views.2d.layers.FeatureLikeLayerView2D`)],y);function D(e,t,n,r,i,a){i&&=i.clone();let o=i==null?null:i.timeExtent,s=n!=null&&o!=null?n.intersection(o):n||o;s&&(i??=new A,i.timeExtent=s),i=t.addFilters?.(i,e)??i,a&&(i??=new A,i.where=v(i.where,a));let c=i?.toJSON()??null;return r.size&&(c??=new A().toJSON(),c.hiddenIds=Array.from(r)),c}return y};export{xe as FeatureLikeLayerView2D};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../../../core/Error.js";import{handlesGroup as t}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{getOrCreateMapValue as n}from"../../../../../../core/MapUtils.js";import{throwIfAborted as r,isAbortError as i,onAbort as a}from"../../../../../../core/promiseUtils.js";import o from"../../../../../../rest/support/QuantizationParameters.js";import{AFeatureTileLoadStrategy as s}from"./AFeatureTileLoadStrategy.js";import{ByReferenceTileSourceChunk as c}from"./chunks/ByReferenceTileSourceChunk.js";import{PagedTileSourceChunk as l}from"./chunks/PagedTileSourceChunk.js";import{FeatureSetReaderJSON as u}from"../../support/FeatureSetReaderJSON.js";import{RefCounted as d}from"../../support/RefCounted.js";class f{constructor(e,n){this.subscription=e,this._pages=new Set,this._controller=new AbortController,this._done=!1,this._handles=t([a(e.signal,()=>this._controller.abort()),a(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get pageStart(){let e=-1;for(let t of this._pages.values())e=Math.max(e,t);return e+1}get done(){return this._done}get options(){return{signal:this._controller.signal}}add(e,t){this._pages.add(e),this._done=this._done||t}}class p extends s{constructor(){super(...arguments),this._loadStates=new Map,this._levels=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){let t=n(this._loadStates,e.key.id,()=>new f(e,this._options));for await(let e of this._fetchPages(t))this._addChunk(e)}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}_onRemoveTileChunk(e){if(e instanceof c){let t=e.reader.getCursor(),n=e.tile.resolution;for(;t.next();)this._removeReferenceFeature(t.getObjectId(),n)}}async*_fetchPages(e){let t;try{for await(let t of this._concurrentPageStream(e)){r(e.options);for(let e of t)e.size()!==0&&(yield e)}}catch(e){t=e}if((!t||!i(t))&&(yield new l(u.empty(this.metadata),null,e.subscription.tile,-1,!0)),t)throw t}async*_concurrentPageStream(e){let t=has(`featurelayer-query-tile-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.some(e=>e.reader.exceededTransferLimit)||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(has(`featurelayer-query-tile-max-features`)/this._queryInfo.getPageSize(!0));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){r(t.options);let n=t.subscription.tile,i=this._queryInfo.createPagedTileQuery(n,e);if(!i){let e=u.empty(this.metadata);return[new l(e,null,n,0,!1)]}i.inner.returnExceededLimitGeometries=!1;let a=await this._fetch(i,t.options,{chunkId:`${n.id}-${e}`}),o=[],s=a.getCursor();for(;s.next();){let e=s.getByReferenceVertexCount();e&&(o.push({vertexCount:e,objectId:s.getObjectId()}),s.delete())}let c=new l(a,i.inner.toJSON(),n,e,!1),d=await this._ensureReferenceFeatures(o,n);return r(t.options),[c,...d]}async _ensureReferenceFeatures(e,t){let n=this._levels.get(t.resolution);return n??(n=new Map,this._levels.set(t.resolution,n)),(await Promise.all(this._ensureReferenceLevelFeatures(n,e,t.resolution))).map(e=>new c(e,t))}_removeReferenceFeature(e,t){let n=this._levels.get(t);if(n==null)throw Error(`Expected to find reference feature.`);this._removeReferenceLevelFeature(n,e)}_ensureReferenceLevelFeatures(e,t,n){let r=[],i=new o({mode:`view`,originPosition:`upper-left`,tolerance:n});for(let n of t){let t=e.get(n.objectId);t??(t=new d(this._queryFeature(n.objectId,i)),e.set(n.objectId,t)),t.increment(),r.push(t.data)}return r}async _onUpdateFields(){let t=[];for(let[e,n]of this._levels){let r=new o({mode:`view`,originPosition:`upper-left`,tolerance:e});for(let[e,i]of n)t.push(this._updateReferenceFields(e,i.data,r))}let n=(await Promise.all(t)).filter(e=>e!=null);if(n.length)throw new e(`featurelayer-query`,`Encountered errors when downloading reference fields`,{errors:n})}_removeReferenceLevelFeature(e,t){let n=e.get(t);if(n==null)throw Error(`Expected to find reference feature.`);n.decrement(),n.empty&&e.delete(t)}async _updateReferenceFields(e,t,n){try{let i=await t;r(this._options);let a=this._queryInfo.createQuery({objectIds:[e]});return a.inner.quantizationParameters=n,await this._tryUpdateFields(i,a.inner,{chunkId:`reference-${e}`}),null}catch(e){return e}}async _queryFeature(e,t){let n=this._queryInfo.createQuery({objectIds:[e]});return n.inner.quantizationParameters=t,this._fetch(n,null,null)}}export{p as FeatureHybridTileLoadStrategy};
2
+ import e from"../../../../../../core/Error.js";import{handlesGroup as t}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{getOrCreateMapValue as n}from"../../../../../../core/MapUtils.js";import{throwIfAborted as r,isAbortError as i,onAbort as a}from"../../../../../../core/promiseUtils.js";import o from"../../../../../../rest/support/QuantizationParameters.js";import{AFeatureTileLoadStrategy as s}from"./AFeatureTileLoadStrategy.js";import{ByReferenceTileSourceChunk as c}from"./chunks/ByReferenceTileSourceChunk.js";import{PagedTileSourceChunk as l}from"./chunks/PagedTileSourceChunk.js";import{FeatureSetReaderJSON as u}from"../../support/FeatureSetReaderJSON.js";import{RefCounted as d}from"../../support/RefCounted.js";class f{constructor(e,n){this.subscription=e,this._pages=new Set,this._controller=new AbortController,this._done=!1,this._handles=t([a(e.signal,()=>this._controller.abort()),a(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get pageStart(){let e=-1;for(let t of this._pages.values())e=Math.max(e,t);return e+1}get done(){return this._done}get options(){return{signal:this._controller.signal}}add(e,t){this._pages.add(e),this._done=this._done||t}}class p extends s{constructor(){super(...arguments),this._loadStates=new Map,this._levels=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){let t=n(this._loadStates,e.key.id,()=>new f(e,this._options));for await(let e of this._fetchPages(t))this._addChunk(e)}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}_onRemoveTileChunk(e){if(e instanceof c){let t=e.reader.getCursor(),n=e.tile.resolution;for(;t.next();)this._removeReferenceFeature(t.getObjectId(),n)}}async*_fetchPages(e){let t;try{for await(let t of this._concurrentPageStream(e)){r(e.options);for(let e of t)e.size()!==0&&(yield e)}}catch(e){t=e}if(t&&i(t)||(yield new l(u.empty(this.metadata),null,e.subscription.tile,-1,!0)),t)throw t}async*_concurrentPageStream(e){let t=has(`featurelayer-query-tile-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.some(e=>e.reader.exceededTransferLimit)||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(has(`featurelayer-query-tile-max-features`)/this._queryInfo.getPageSize(!0));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){r(t.options);let n=t.subscription.tile,i=this._queryInfo.createPagedTileQuery(n,e);if(!i){let e=u.empty(this.metadata);return[new l(e,null,n,0,!1)]}i.inner.returnExceededLimitGeometries=!1;let a=await this._fetch(i,t.options,{chunkId:`${n.id}-${e}`}),o=[],s=a.getCursor();for(;s.next();){let e=s.getByReferenceVertexCount();e&&(o.push({vertexCount:e,objectId:s.getObjectId()}),s.delete())}let c=new l(a,i.inner.toJSON(),n,e,!1),d=await this._ensureReferenceFeatures(o,n);return r(t.options),[c,...d]}async _ensureReferenceFeatures(e,t){let n=this._levels.get(t.resolution);return n??(n=new Map,this._levels.set(t.resolution,n)),(await Promise.all(this._ensureReferenceLevelFeatures(n,e,t.resolution))).map(e=>new c(e,t))}_removeReferenceFeature(e,t){let n=this._levels.get(t);if(n==null)throw Error(`Expected to find reference feature.`);this._removeReferenceLevelFeature(n,e)}_ensureReferenceLevelFeatures(e,t,n){let r=[],i=new o({mode:`view`,originPosition:`upper-left`,tolerance:n});for(let n of t){let t=e.get(n.objectId);t??(t=new d(this._queryFeature(n.objectId,i)),e.set(n.objectId,t)),t.increment(),r.push(t.data)}return r}async _onUpdateFields(){let t=[];for(let[e,n]of this._levels){let r=new o({mode:`view`,originPosition:`upper-left`,tolerance:e});for(let[e,i]of n)t.push(this._updateReferenceFields(e,i.data,r))}let n=(await Promise.all(t)).filter(e=>e!=null);if(n.length)throw new e(`featurelayer-query`,`Encountered errors when downloading reference fields`,{errors:n})}_removeReferenceLevelFeature(e,t){let n=e.get(t);if(n==null)throw Error(`Expected to find reference feature.`);n.decrement(),n.empty&&e.delete(t)}async _updateReferenceFields(e,t,n){try{let i=await t;r(this._options);let a=this._queryInfo.createQuery({objectIds:[e]});return a.inner.quantizationParameters=n,await this._tryUpdateFields(i,a.inner,{chunkId:`reference-${e}`}),null}catch(e){return e}}async _queryFeature(e,t){let n=this._queryInfo.createQuery({objectIds:[e]});return n.inner.quantizationParameters=t,this._fetch(n,null,null)}}export{p as FeatureHybridTileLoadStrategy};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{throwIfAborted as n,isAbortError as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{AFeatureTileLoadStrategy as a}from"./AFeatureTileLoadStrategy.js";import{PagedTileSourceChunk as o}from"./chunks/PagedTileSourceChunk.js";import{FeatureSetReaderJSON as s}from"../../support/FeatureSetReaderJSON.js";class c{constructor(t,n){this.subscription=t,this._pages=new Set,this._controller=new AbortController,this._done=!1,this._handles=e([i(t.signal,()=>this._controller.abort()),i(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get pageStart(){let e=-1;for(let t of this._pages.values())e=Math.max(e,t);return e+1}get done(){return this._done}get options(){return{signal:this._controller.signal}}add(e,t){this._pages.add(e),this._done=this._done||t}}class l extends a{constructor(){super(...arguments),this._loadStates=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){let n=t(this._loadStates,e.key.id,()=>new c(e,this._options));for await(let e of this._fetchPages(n))this._addChunk(e)}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}async*_fetchPages(e){let t;try{for await(let t of this._concurrentPageStream(e))n(e.options),t.size()!==0&&(yield t)}catch(e){t=e}if((!t||!r(t))&&(yield new o(s.empty(this.metadata),null,e.subscription.tile,-1,!0)),t)throw t}async*_concurrentPageStream(e){let t=has(`featurelayer-query-tile-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.reader.exceededTransferLimit||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(has(`featurelayer-query-tile-max-features`)/this._queryInfo.getPageSize(!0));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){n(t.options);let r=t.subscription.tile,i=this._queryInfo.createPagedTileQuery(r,e);if(!i){let t=s.empty(this.metadata);return new o(t,null,r,e,!1)}let a=await this._fetch(i,t.options,{chunkId:`${r.id}-${e}`});return n(t.options),new o(a,i.inner.toJSON(),r,e,!1)}}export{l as FeaturePagedTileLoadStrategy};
2
+ import{handlesGroup as e}from"../../../../../../core/handleUtils.js";import has from"../../../../../../core/has.js";import{getOrCreateMapValue as t}from"../../../../../../core/MapUtils.js";import{throwIfAborted as n,isAbortError as r,onAbort as i}from"../../../../../../core/promiseUtils.js";import{AFeatureTileLoadStrategy as a}from"./AFeatureTileLoadStrategy.js";import{PagedTileSourceChunk as o}from"./chunks/PagedTileSourceChunk.js";import{FeatureSetReaderJSON as s}from"../../support/FeatureSetReaderJSON.js";class c{constructor(t,n){this.subscription=t,this._pages=new Set,this._controller=new AbortController,this._done=!1,this._handles=e([i(t.signal,()=>this._controller.abort()),i(n,()=>this._controller.abort())])}destroy(){this._controller.abort(),this._handles.remove()}get pageStart(){let e=-1;for(let t of this._pages.values())e=Math.max(e,t);return e+1}get done(){return this._done}get options(){return{signal:this._controller.signal}}add(e,t){this._pages.add(e),this._done=this._done||t}}class l extends a{constructor(){super(...arguments),this._loadStates=new Map}destroy(){super.destroy();for(let e of this._loadStates.values())e.destroy();this._loadStates.clear()}get about(){return{willQueryAllFeatures:!1,willQueryFullResolutionGeometry:!1}}async load(e){let n=t(this._loadStates,e.key.id,()=>new c(e,this._options));for await(let e of this._fetchPages(n))this._addChunk(e)}unload(e){super.unload(e),this._loadStates.get(e.key.id)?.destroy(),this._loadStates.delete(e.key.id)}async*_fetchPages(e){let t;try{for await(let t of this._concurrentPageStream(e))n(e.options),t.size()!==0&&(yield t)}catch(e){t=e}if(t&&r(t)||(yield new o(s.empty(this.metadata),null,e.subscription.tile,-1,!0)),t)throw t}async*_concurrentPageStream(e){let t=has(`featurelayer-query-tile-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.reader.exceededTransferLimit||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(has(`featurelayer-query-tile-max-features`)/this._queryInfo.getPageSize(!0));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){n(t.options);let r=t.subscription.tile,i=this._queryInfo.createPagedTileQuery(r,e);if(!i){let t=s.empty(this.metadata);return new o(t,null,r,e,!1)}let a=await this._fetch(i,t.options,{chunkId:`${r.id}-${e}`});return n(t.options),new o(a,i.inner.toJSON(),r,e,!1)}}export{l as FeaturePagedTileLoadStrategy};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../../../../../core/Error.js";import has from"../../../../../../core/has.js";import{isAbortError as t,throwIfAborted as n}from"../../../../../../core/promiseUtils.js";import r from"../../../../../../rest/support/QuantizationParameters.js";import{AFeatureLoadStrategy as i}from"./AFeatureLoadStrategy.js";import{FeatureSnapshotSourceChunk as a}from"./chunks/FeatureSnapshotSourceChunk.js";import{FeatureSetReaderJSON as o}from"../../support/FeatureSetReaderJSON.js";class s extends i{constructor(e,t,n){super(e,t,n)}get about(){return{willQueryAllFeatures:!0,willQueryFullResolutionGeometry:!0}}load(e){return this._promise??=this._download(),this._promise}unload(e){}async _download(){let e=this._schema.snapshotInfo.initialTolerance,t=e?new r({mode:`view`,originPosition:`upper-left`,tolerance:e}):null;await this._downloadStreaming(t),t!=null&&await this._downloadRefresh()}async _downloadStreaming(t){try{for await(let e of this._fetchPages(t))this.store.insert(e)}catch(t){throw new e(`featurelayer-query`,`Encountered error when downloading data`,{error:t})}}async _downloadRefresh(){try{let e=[];for await(let t of this._fetchPages(null))e.push(t);this.store.clear();for(let t of e)this.store.insert(t);this.store.refresh()}catch(t){throw new e(`featurelayer-query`,`Encountered error when downloading data`,{error:t})}}async*_fetchPages(e){let n;try{for await(let t of this._concurrentPageStream(e))t.size()!==0&&(yield t)}catch(e){n=e}if((!n||!t(n))&&(yield new a(o.empty(this.metadata),null,-1,!0)),n)throw n}async*_concurrentPageStream(e){let t=has(`featurelayer-snapshot-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.reader.exceededTransferLimit||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(this._schema.snapshotInfo.maxFeatureCount/this._queryInfo.getPageSize(!1));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){n(this._options);let r=this._queryInfo.createPagedQuery(e,t),i=await this._fetch(r,this._options,{chunkId:e.toString()}),o=new a(i,r.inner.toJSON(),e,!1);return n(this._options),o}}export{s as FeatureSnapshotLoadStrategy};
2
+ import e from"../../../../../../core/Error.js";import has from"../../../../../../core/has.js";import{isAbortError as t,throwIfAborted as n}from"../../../../../../core/promiseUtils.js";import r from"../../../../../../rest/support/QuantizationParameters.js";import{AFeatureLoadStrategy as i}from"./AFeatureLoadStrategy.js";import{FeatureSnapshotSourceChunk as a}from"./chunks/FeatureSnapshotSourceChunk.js";import{FeatureSetReaderJSON as o}from"../../support/FeatureSetReaderJSON.js";class s extends i{constructor(e,t,n){super(e,t,n)}get about(){return{willQueryAllFeatures:!0,willQueryFullResolutionGeometry:!0}}load(e){return this._promise??=this._download(),this._promise}unload(e){}async _download(){let e=this._schema.snapshotInfo.initialTolerance,t=e?new r({mode:`view`,originPosition:`upper-left`,tolerance:e}):null;await this._downloadStreaming(t),t!=null&&await this._downloadRefresh()}async _downloadStreaming(t){try{for await(let e of this._fetchPages(t))this.store.insert(e)}catch(t){throw new e(`featurelayer-query`,`Encountered error when downloading data`,{error:t})}}async _downloadRefresh(){try{let e=[];for await(let t of this._fetchPages(null))e.push(t);this.store.clear();for(let t of e)this.store.insert(t);this.store.refresh()}catch(t){throw new e(`featurelayer-query`,`Encountered error when downloading data`,{error:t})}}async*_fetchPages(e){let n;try{for await(let t of this._concurrentPageStream(e))t.size()!==0&&(yield t)}catch(e){n=e}if(n&&t(n)||(yield new a(o.empty(this.metadata),null,-1,!0)),n)throw n}async*_concurrentPageStream(e){let t=has(`featurelayer-snapshot-concurrency`),n=this._pageStreamAll(e),r=[],i=!1,a=1;for(;!i;){let e=[];for(;!i&&r.length<a;){let t=n.next();if(!t.value){i=!0;break}let a=t.value;a.then(e=>{e.reader.exceededTransferLimit||(i=!0)}).catch(e=>{i=!0}).finally(()=>{r.splice(r.indexOf(a),1)}),r.push(a),e.push(a)}for(let t of e)yield t;r.length&&await Promise.race(r),a<t&&(a+=1)}}*_pageStreamAll(e){let t=Math.ceil(this._schema.snapshotInfo.maxFeatureCount/this._queryInfo.getPageSize(!1));for(let n=0;n<t;n++)yield this._downloadPage(n,e)}async _downloadPage(e,t){n(this._options);let r=this._queryInfo.createPagedQuery(e,t),i=await this._fetch(r,this._options,{chunkId:e.toString()}),o=new a(i,r.inner.toJSON(),e,!1);return n(this._options),o}}export{s as FeatureSnapshotLoadStrategy};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import e from"../../Viewpoint.js";import t from"../../core/Collection.js";import{deg2rad as n}from"../../core/mathUtils.js";import{getMetersPerUnitForSR as r}from"../../core/units.js";import{toRadian as i}from"../../core/libs/gl-matrix-2/math/common.js";import{fromTranslation as a,rotate as o,scale as s,translate as c,fromScaling as l,fromRotation as u,invert as d}from"../../core/libs/gl-matrix-2/math/mat2d.js";import{create as f}from"../../core/libs/gl-matrix-2/factories/mat2df64.js";import{negate as p,scale as m,set as h,copy as g,sub as _,subtract as v,normalize as y,cross as ee,dot as te,length as b,transformMat2d as x,add as ne}from"../../core/libs/gl-matrix-2/math/vec2.js";import{create as S,fromValues as re}from"../../core/libs/gl-matrix-2/factories/vec2f64.js";import ie from"../../geometry/Extent.js";import ae from"../../geometry/Geometry.js";import C from"../../geometry/Point.js";import{isLoaded as w,canProjectWithoutEngine as T,load as E,project as D}from"../../geometry/projectionUtils.js";import oe from"../../geometry/SpatialReference.js";import{getClosestDenormalizedXToReference as O,getDenormalizedExtent as se}from"../../geometry/support/normalizeUtils.js";import{getInfo as ce,isValid as k,equals as A}from"../../geometry/support/spatialReferenceUtils.js";const j=39.37,le=180/Math.PI;function M(e){return e.wkid?e:e.spatialReference||oe.WGS84}function N(e,t){return t.type?h(e,t.x,t.y):g(e,t)}function P(e){return r(e)}function F(e,t,r=0){let i=e.width,a=e.height;if(r!==0){let t=n(r),o=Math.abs(Math.cos(t)),s=Math.abs(Math.sin(t));i=e.width*o+e.height*s,a=e.width*s+e.height*o}let o=Math.max(1,t[0]),s=Math.max(1,t[1]);return Math.max(i/o,a/s)*G(e.spatialReference)}async function I(e,n,r,i){let a;if(!e||Array.isArray(e)&&!e.length)return null;if(t.isCollection(e)&&(e=e.toArray()),Array.isArray(e)&&e.length&&typeof e[0]==`object`){let t=e.every(e=>`attributes`in e),a=e.some(e=>!e.geometry),o=e;if(t&&a&&n&&n.allLayerViews){let t=new Map;for(let n of e){let e=n.layer,r=t.get(e)||[],i=n.attributes[e.objectIdField];i!=null&&r.push(i),t.set(e,r)}let r=[];t.forEach((e,t)=>{let i=n.allLayerViews?.find(e=>e.layer.id===t.id);if(i&&`queryFeatures`in i){let n=t.createQuery();n.objectIds=e,n.returnGeometry=!0,r.push(i.queryFeatures(n))}});let i=await Promise.all(r),a=[];for(let e of i)if(e&&e.features&&e.features.length)for(let t of e.features)t.geometry!=null&&a.push(t.geometry);o=a}for(let e of o)i=await I(e,n,r,i);return i}if(Array.isArray(e)&&e.length===2&&typeof e[0]==`number`&&typeof e[1]==`number`)a=new C(e);else if(`type`in e)a=e;else if(`geometry`in e){if(e.geometry)a=e.geometry;else if(e.layer){let t=e.layer,r=n.allLayerViews?.find(e=>e.layer.id===t.id);if(r&&`queryFeatures`in r){let n=t.createQuery();n.objectIds=[e.attributes[t.objectIdField]],n.returnGeometry=!0,a=(await r.queryFeatures(n))?.features?.[0]?.geometry}}}if(a==null)return null;let o=se(a);if(!o)return null;!w()&&!T(o.spatialReference,r)&&await E();let s=D(o,r);if(!s)return null;if(!i)i=s;else{let e=s.center,t=e.clone();t.x=O(e.x,i.center.x,r),t.x!==e.x&&s.centerAt(t),i=i.union(s)}return i}function ue(e){if(!(!e||Array.isArray(e)&&typeof e[0]==`number`)&&(typeof e==`object`||Array.isArray(e)&&typeof e[0]==`object`)){if(`layer`in e&&e.layer?.minScale!=null&&e.layer.maxScale!=null){let t=e.layer;return{min:t.minScale,max:t.maxScale}}if(Array.isArray(e)&&e.length&&e.every(e=>`layer`in e)){let t=0,n=0;for(let r of e){let e=r.layer;e?.minScale&&e.maxScale&&(t=e.minScale<t?e.minScale:t,n=e.maxScale>n?e.maxScale:n)}return t&&n?{min:t,max:n}:null}}}function L(e,t){let n=M(e);return A(n,t)||n.imageCoordinateSystem||t.imageCoordinateSystem?e:D(e,t)}async function de(t,n){if(!t||!n)return new e({targetGeometry:new C,scale:0,rotation:0});let r=n.spatialReference,{constraints:i,padding:a,viewpoint:o,size:s}=n,c=[a?s[0]-a.left-a.right:s[0],a?s[1]-a.top-a.bottom:s[1]],l=null;t instanceof e?l=t:t.viewpoint?l=t.viewpoint:t.target&&t.target.declaredClass===`esri.Viewpoint`&&(l=t.target);let u=null;l?.targetGeometry?u=l.targetGeometry:t instanceof ie?u=t:t instanceof ae?u=await I(t,n,r):t&&(u=await I(t.center,n,r)||await I(t.target,n,r)||await I(t,n,r)),!u&&o?.targetGeometry?u=o.targetGeometry:!u&&n.extent&&(u=n.extent),r||=M(n.spatialReference||n.extent||u),!w()&&!A(u.spatialReference,r)&&!T(u.spatialReference,r)&&await E();let d=L(u,r),f=`center`in d?d.center:d;n.pickClosestTarget!==!1&&f.type===`point`&&o.targetGeometry?.type===`point`&&(f.x=O(f.x,o.targetGeometry.x,f.spatialReference));let p=0;l?p=l.rotation:t.hasOwnProperty(`rotation`)?p=t.rotation:o&&(p=o.rotation);let m=0;m=l?.targetGeometry!=null&&l.targetGeometry.type===`point`?l.scale:`scale`in t&&t.scale?t.scale:`zoom`in t&&t.zoom!==-1&&i&&i.effectiveLODs?i.zoomToScale(t.zoom):Array.isArray(u)||u.type===`point`||u.type===`extent`&&u.width===0&&u.height===0?o.scale:F(L(u.extent,r),c,p);let h=ue(t.target??t);h&&(h.min&&h.min<m?m=h.min:h.max&&h.max>m&&(m=h.max));let g=new e({targetGeometry:f,scale:m,rotation:p});return i&&(g=i.fit(g),i.constrainByGeometry(g),i.rotationEnabled||(g.rotation=o.rotation)),g}function R(e,t){let n=e.targetGeometry,r=t.targetGeometry;return n.x=r.x,n.y=r.y,n.spatialReference=r.spatialReference,e.scale=t.scale,e.rotation=t.rotation,e}function z(e,t,n){return n?h(e,(t[0]-n.right+n.left)*.5,(t[1]-n.bottom+n.top)*.5):m(e,t,.5)}const fe=(function(){let e=S();return function(t,n,r){let i=n.targetGeometry;N(e,i);let a=H(n)*.5;return t.xmin=e[0]-a*r[0],t.ymin=e[1]-a*r[1],t.xmax=e[0]+a*r[0],t.ymax=e[1]+a*r[1],t.spatialReference=i.spatialReference,t}})();function pe(e,t,n,r,i){return Y(e,t,n.center),e.scale=F(n,r),i?.constraints?.constrain(e),e}function me(e,t,n,r){return q(e,t,n,r),d(e,e)}const B=(function(){let e=S();return function(t,n,r){return _(t,he(t,n),z(e,n,r))}})(),V=(function(){let e=f(),t=S();return function(n,r,i,a){let s=H(r),u=W(r);return h(t,s,s),l(e,t),o(e,e,u),c(e,e,B(t,i,a)),c(e,e,[0,a.top-a.bottom]),h(n,e[4],e[5])}})();function H(e){return e.scale*U(e.targetGeometry?.spatialReference)}function U(e){return k(e)?1/(P(e)*j*96):1}function W(e){return i(e.rotation)||0}function G(e){return k(e)?P(e)*j*96:1}function he(e,t){return m(e,t,.5)}const K=(function(){let e=S(),t=S(),n=S();return function(r,i,l,u,d,f){return p(e,i),m(t,l,.5*f),h(n,1/u*f,-1/u*f),a(r,t),d&&o(r,r,d),s(r,r,n),c(r,r,e),r}})(),q=(function(){let e=S();return function(t,n,r,i){let a=H(n),o=W(n);return N(e,n.targetGeometry),K(t,e,r,a,o,i)}})(),ge=(function(){let e=S();return function(t,n,r,i){let a=H(n);return N(e,n.targetGeometry),K(t,e,r,a,0,i)}})();function J(e){let t=ce(e);return t?t.valid[1]-t.valid[0]:0}function _e(e,t){return Math.round(J(e)/t)}const ve=(function(){let e=S(),t=S(),n=[0,0,0];return function(r,i,a){v(e,r,i),y(e,e),v(t,r,a),y(t,t),ee(n,e,t);let o=Math.acos(te(e,t)/(b(e)*b(t)))*le;return n[2]<0&&(o=-o),isNaN(o)&&(o=0),o}})(),ye=(function(){let e=S();return function(t,n,r,i){let a=t.targetGeometry;return R(t,n),V(e,n,r,i),a.x+=e[0],a.y+=e[1],t}})(),Y=(function(){return function(e,t,n){R(e,t);let r=e.targetGeometry;return r.x=n.x,r.y=n.y,r.spatialReference=n.spatialReference,e}})(),be=(function(){let e=S();return function(t,n,r,i,a){a||=`center`,_(e,r,i),m(e,e,.5);let o=e[0],s=e[1];switch(a){case`center`:h(e,0,0);break;case`left`:h(e,-o,0);break;case`top`:h(e,0,s);break;case`right`:h(e,o,0);break;case`bottom`:h(e,0,-s);break;case`top-left`:h(e,-o,s);break;case`bottom-left`:h(e,-o,-s);break;case`top-right`:h(e,o,s);break;case`bottom-right`:h(e,o,-s)}return $(t,n,e),t}})();function xe(e,t,n){return R(e,t),e.rotation+=n,e}function Se(e,t,n){return R(e,t),e.rotation=n,e}const Ce=(function(){let e=S();return function(t,n,r,i,a){return R(t,n),!isNaN(r)&&r!==0&&(Z(e,i,n,a),t.scale=n.scale*r,Q(e,e,t,a),$(t,t,h(e,e[0]-i[0],i[1]-e[1]))),t}})();function we(e,t,n){return R(e,t),e.scale=n,e}const X=(function(){let e=S();return function(t,n,r,i,a,o){return R(t,n),!isNaN(r)&&r!==0&&(Z(e,a,n,o),t.scale=n.scale*r,t.rotation+=i,Q(e,e,t,o),$(t,t,h(e,e[0]-a[0],a[1]-e[1]))),t}})(),Te=(function(){let e=S(),t=S();return function(n,r,i,a,o,s,c){return B(t,s,c),ne(e,o,t),a?X(n,r,i,a,e,s):Ce(n,r,i,e,s)}})(),Z=(function(){let e=f();return function(t,n,r,i){return x(t,n,me(e,r,i,1))}})(),Q=(function(){let e=f();return function(t,n,r,i){return x(t,n,q(e,r,i,1))}})(),$=(function(){let e=S(),t=f();return function(n,r,i){R(n,r);let a=H(r),o=n.targetGeometry;return u(t,W(r)),s(t,t,re(a,a)),x(e,i,t),o.x+=e[0],o.y+=e[1],n}})();export{ye as addPadding,ve as angleBetween,Y as centerAt,R as copy,de as create,F as extentToScale,z as getAnchor,fe as getExtent,K as getMatrix,V as getPaddingMapTranslation,B as getPaddingScreenTranslation,H as getResolution,G as getResolutionToScaleFactor,U as getScaleToResolutionFactor,q as getTransform,ge as getTransformNoRotation,_e as getWorldScreenWidth,J as getWorldWidth,Te as padAndScaleAndRotateBy,be as resize,xe as rotateBy,Se as rotateTo,X as scaleAndRotateBy,we as scaleTo,pe as setExtent,Z as toMap,Q as toScreen,$ as translateBy};
2
+ import e from"../../Viewpoint.js";import t from"../../core/Collection.js";import{deg2rad as n}from"../../core/mathUtils.js";import{getMetersPerUnitForSR as r}from"../../core/units.js";import{toRadian as i}from"../../core/libs/gl-matrix-2/math/common.js";import{fromTranslation as a,rotate as o,scale as s,translate as c,fromScaling as l,fromRotation as u,invert as d}from"../../core/libs/gl-matrix-2/math/mat2d.js";import{create as f}from"../../core/libs/gl-matrix-2/factories/mat2df64.js";import{negate as p,scale as m,set as h,copy as g,sub as _,subtract as v,normalize as y,cross as ee,dot as te,length as b,transformMat2d as x,add as ne}from"../../core/libs/gl-matrix-2/math/vec2.js";import{create as S,fromValues as re}from"../../core/libs/gl-matrix-2/factories/vec2f64.js";import ie from"../../geometry/Extent.js";import ae from"../../geometry/Geometry.js";import C from"../../geometry/Point.js";import{isLoaded as w,canProjectWithoutEngine as T,load as E,project as D}from"../../geometry/projectionUtils.js";import oe from"../../geometry/SpatialReference.js";import{getClosestDenormalizedXToReference as O,getDenormalizedExtent as se}from"../../geometry/support/normalizeUtils.js";import{getInfo as ce,isValid as k,equals as A}from"../../geometry/support/spatialReferenceUtils.js";const j=39.37,le=180/Math.PI;function M(e){return e.wkid?e:e.spatialReference||oe.WGS84}function N(e,t){return t.type?h(e,t.x,t.y):g(e,t)}function P(e){return r(e)}function F(e,t,r=0){let i=e.width,a=e.height;if(r!==0){let t=n(r),o=Math.abs(Math.cos(t)),s=Math.abs(Math.sin(t));i=e.width*o+e.height*s,a=e.width*s+e.height*o}let o=Math.max(1,t[0]),s=Math.max(1,t[1]);return Math.max(i/o,a/s)*G(e.spatialReference)}async function I(e,n,r,i){let a;if(!e||Array.isArray(e)&&!e.length)return null;if(t.isCollection(e)&&(e=e.toArray()),Array.isArray(e)&&e.length&&typeof e[0]==`object`){let t=e.every(e=>`attributes`in e),a=e.some(e=>!e.geometry),o=e;if(t&&a&&n&&n.allLayerViews){let t=new Map;for(let n of e){let e=n.layer,r=t.get(e)||[],i=n.attributes[e.objectIdField];i!=null&&r.push(i),t.set(e,r)}let r=[];t.forEach((e,t)=>{let i=n.allLayerViews?.find(e=>e.layer.id===t.id);if(i&&`queryFeatures`in i){let n=t.createQuery();n.objectIds=e,n.returnGeometry=!0,r.push(i.queryFeatures(n))}});let i=await Promise.all(r),a=[];for(let e of i)if(e&&e.features&&e.features.length)for(let t of e.features)t.geometry!=null&&a.push(t.geometry);o=a}for(let e of o)i=await I(e,n,r,i);return i}if(Array.isArray(e)&&e.length===2&&typeof e[0]==`number`&&typeof e[1]==`number`)a=new C(e);else if(`type`in e)a=e;else if(`geometry`in e){if(e.geometry)a=e.geometry;else if(e.layer){let t=e.layer,r=n.allLayerViews?.find(e=>e.layer.id===t.id);if(r&&`queryFeatures`in r){let n=t.createQuery();n.objectIds=[e.attributes[t.objectIdField]],n.returnGeometry=!0,a=(await r.queryFeatures(n))?.features?.[0]?.geometry}}}if(a==null)return null;let o=se(a);if(!o)return null;!w()&&!T(o.spatialReference,r)&&await E();let s=D(o,r);if(!s)return null;if(!i)i=s;else{let e=s.center,t=e.clone();t.x=O(e.x,i.center.x,r),t.x!==e.x&&s.centerAt(t),i=i.union(s)}return i}function ue(e){if(!(!e||Array.isArray(e)&&typeof e[0]==`number`)&&(typeof e==`object`||Array.isArray(e)&&typeof e[0]==`object`)){if(`layer`in e&&e.layer?.minScale!=null&&e.layer.maxScale!=null){let t=e.layer;return{min:t.minScale,max:t.maxScale}}if(Array.isArray(e)&&e.length&&e.every(e=>`layer`in e)){let t=0,n=0;for(let r of e){let e=r.layer;e?.minScale&&e.maxScale&&(t=e.minScale<t?e.minScale:t,n=e.maxScale>n?e.maxScale:n)}return t&&n?{min:t,max:n}:null}}}function L(e,t){let n=M(e);return A(n,t)||n.imageCoordinateSystem||t.imageCoordinateSystem?e:D(e,t)}async function de(t,n){if(!t||!n)return new e({targetGeometry:new C,scale:0,rotation:0});let r=n.spatialReference,{constraints:i,padding:a,viewpoint:o,size:s}=n,c=[a?s[0]-a.left-a.right:s[0],a?s[1]-a.top-a.bottom:s[1]],l=null;t instanceof e?l=t:t.viewpoint?l=t.viewpoint:t.target&&t.target.declaredClass===`esri.Viewpoint`&&(l=t.target);let u=null;l?.targetGeometry?u=l.targetGeometry:t instanceof ie?u=t:t instanceof ae?u=await I(t,n,r):t&&(u=await I(t.center,n,r)||await I(t.target,n,r)||await I(t,n,r)),!u&&o?.targetGeometry?u=o.targetGeometry:!u&&n.extent&&(u=n.extent),r||=M(n.spatialReference||n.extent||u),w()||A(u.spatialReference,r)||T(u.spatialReference,r)||await E();let d=L(u,r),f=`center`in d?d.center:d;n.pickClosestTarget!==!1&&f.type===`point`&&o.targetGeometry?.type===`point`&&(f.x=O(f.x,o.targetGeometry.x,f.spatialReference));let p=0;l?p=l.rotation:t.hasOwnProperty(`rotation`)?p=t.rotation:o&&(p=o.rotation);let m=0;m=l?.targetGeometry!=null&&l.targetGeometry.type===`point`?l.scale:`scale`in t&&t.scale?t.scale:`zoom`in t&&t.zoom!==-1&&i&&i.effectiveLODs?i.zoomToScale(t.zoom):Array.isArray(u)||u.type===`point`||u.type===`extent`&&u.width===0&&u.height===0?o.scale:F(L(u.extent,r),c,p);let h=ue(t.target??t);h&&(h.min&&h.min<m?m=h.min:h.max&&h.max>m&&(m=h.max));let g=new e({targetGeometry:f,scale:m,rotation:p});return i&&(g=i.fit(g),i.constrainByGeometry(g),i.rotationEnabled||(g.rotation=o.rotation)),g}function R(e,t){let n=e.targetGeometry,r=t.targetGeometry;return n.x=r.x,n.y=r.y,n.spatialReference=r.spatialReference,e.scale=t.scale,e.rotation=t.rotation,e}function z(e,t,n){return n?h(e,(t[0]-n.right+n.left)*.5,(t[1]-n.bottom+n.top)*.5):m(e,t,.5)}const fe=(function(){let e=S();return function(t,n,r){let i=n.targetGeometry;N(e,i);let a=H(n)*.5;return t.xmin=e[0]-a*r[0],t.ymin=e[1]-a*r[1],t.xmax=e[0]+a*r[0],t.ymax=e[1]+a*r[1],t.spatialReference=i.spatialReference,t}})();function pe(e,t,n,r,i){return Y(e,t,n.center),e.scale=F(n,r),i?.constraints?.constrain(e),e}function me(e,t,n,r){return q(e,t,n,r),d(e,e)}const B=(function(){let e=S();return function(t,n,r){return _(t,he(t,n),z(e,n,r))}})(),V=(function(){let e=f(),t=S();return function(n,r,i,a){let s=H(r),u=W(r);return h(t,s,s),l(e,t),o(e,e,u),c(e,e,B(t,i,a)),c(e,e,[0,a.top-a.bottom]),h(n,e[4],e[5])}})();function H(e){return e.scale*U(e.targetGeometry?.spatialReference)}function U(e){return k(e)?1/(P(e)*j*96):1}function W(e){return i(e.rotation)||0}function G(e){return k(e)?P(e)*j*96:1}function he(e,t){return m(e,t,.5)}const K=(function(){let e=S(),t=S(),n=S();return function(r,i,l,u,d,f){return p(e,i),m(t,l,.5*f),h(n,1/u*f,-1/u*f),a(r,t),d&&o(r,r,d),s(r,r,n),c(r,r,e),r}})(),q=(function(){let e=S();return function(t,n,r,i){let a=H(n),o=W(n);return N(e,n.targetGeometry),K(t,e,r,a,o,i)}})(),ge=(function(){let e=S();return function(t,n,r,i){let a=H(n);return N(e,n.targetGeometry),K(t,e,r,a,0,i)}})();function J(e){let t=ce(e);return t?t.valid[1]-t.valid[0]:0}function _e(e,t){return Math.round(J(e)/t)}const ve=(function(){let e=S(),t=S(),n=[0,0,0];return function(r,i,a){v(e,r,i),y(e,e),v(t,r,a),y(t,t),ee(n,e,t);let o=Math.acos(te(e,t)/(b(e)*b(t)))*le;return n[2]<0&&(o=-o),isNaN(o)&&(o=0),o}})(),ye=(function(){let e=S();return function(t,n,r,i){let a=t.targetGeometry;return R(t,n),V(e,n,r,i),a.x+=e[0],a.y+=e[1],t}})(),Y=(function(){return function(e,t,n){R(e,t);let r=e.targetGeometry;return r.x=n.x,r.y=n.y,r.spatialReference=n.spatialReference,e}})(),be=(function(){let e=S();return function(t,n,r,i,a){a||=`center`,_(e,r,i),m(e,e,.5);let o=e[0],s=e[1];switch(a){case`center`:h(e,0,0);break;case`left`:h(e,-o,0);break;case`top`:h(e,0,s);break;case`right`:h(e,o,0);break;case`bottom`:h(e,0,-s);break;case`top-left`:h(e,-o,s);break;case`bottom-left`:h(e,-o,-s);break;case`top-right`:h(e,o,s);break;case`bottom-right`:h(e,o,-s)}return $(t,n,e),t}})();function xe(e,t,n){return R(e,t),e.rotation+=n,e}function Se(e,t,n){return R(e,t),e.rotation=n,e}const Ce=(function(){let e=S();return function(t,n,r,i,a){return R(t,n),!isNaN(r)&&r!==0&&(Z(e,i,n,a),t.scale=n.scale*r,Q(e,e,t,a),$(t,t,h(e,e[0]-i[0],i[1]-e[1]))),t}})();function we(e,t,n){return R(e,t),e.scale=n,e}const X=(function(){let e=S();return function(t,n,r,i,a,o){return R(t,n),!isNaN(r)&&r!==0&&(Z(e,a,n,o),t.scale=n.scale*r,t.rotation+=i,Q(e,e,t,o),$(t,t,h(e,e[0]-a[0],a[1]-e[1]))),t}})(),Te=(function(){let e=S(),t=S();return function(n,r,i,a,o,s,c){return B(t,s,c),ne(e,o,t),a?X(n,r,i,a,e,s):Ce(n,r,i,e,s)}})(),Z=(function(){let e=f();return function(t,n,r,i){return x(t,n,me(e,r,i,1))}})(),Q=(function(){let e=f();return function(t,n,r,i){return x(t,n,q(e,r,i,1))}})(),$=(function(){let e=S(),t=f();return function(n,r,i){R(n,r);let a=H(r),o=n.targetGeometry;return u(t,W(r)),s(t,t,re(a,a)),x(e,i,t),o.x+=e[0],o.y+=e[1],n}})();export{ye as addPadding,ve as angleBetween,Y as centerAt,R as copy,de as create,F as extentToScale,z as getAnchor,fe as getExtent,K as getMatrix,V as getPaddingMapTranslation,B as getPaddingScreenTranslation,H as getResolution,G as getResolutionToScaleFactor,U as getScaleToResolutionFactor,q as getTransform,ge as getTransformNoRotation,_e as getWorldScreenWidth,J as getWorldWidth,Te as padAndScaleAndRotateBy,be as resize,xe as rotateBy,Se as rotateTo,X as scaleAndRotateBy,we as scaleTo,pe as setExtent,Z as toMap,Q as toScreen,$ as translateBy};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../../../core/Accessor.js";import{resizeFilled as n}from"../../../../../core/arrayUtils.js";import{deg2rad as r}from"../../../../../core/mathUtils.js";import{abortMaybe as i}from"../../../../../core/maybe.js";import{debounce as a,throwIfAborted as o,isPromiseLike as s}from"../../../../../core/promiseUtils.js";import{valueInUnit as c}from"../../../../../core/quantity.js";import{lengthUnitFromSpatialReference as l,areaUnitFromSpatialReference as u}from"../../../../../core/units.js";import{property as d}from"../../../../../core/accessorSupport/decorators/property.js";import{subclass as f}from"../../../../../core/accessorSupport/decorators/subclass.js";import{set as p}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as h,set as g,cross as _,subtract as v,dot as y,scale as b,add as x}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as S}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as C}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as w}from"../../../../../core/support/UpdatingHandles.js";import T from"../../../../../geometry/Polygon.js";import E from"../../../../../geometry/SpatialReference.js";import{isPCPF as D}from"../../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectDirection as O}from"../../../../../geometry/projection/projectDirection.js";import{projectPointToVector as k}from"../../../../../geometry/projection/projectPointToVector.js";import{projectVectorToVector as A}from"../../../../../geometry/projection/projectVectorToVector.js";import{Sphere as j}from"../../../../../geometry/support/sphere.js";import{bestFitPlane as M,planePointDistance as N,boundingSphere as P}from"../../support/measurementUtils.js";import{getElevationAtPoint as F}from"../../../support/ElevationProvider.js";import{midpoint3d as I,makeOrthonormal as L}from"../../../support/mathUtils.js";import{polygonToRenderInfoNotElevationAligned as R}from"../../../support/renderInfoUtils/polygon.js";import{GeometryWorkerHandle as z}from"../../../../support/GeometryWorkerHandle.js";import{computeEuclideanMeasurementSR as B}from"../../../../support/measurementUtils.js";import{autoMeasurementMode as V}from"../../../../support/measurementWorkerUtils.js";class H{constructor(e){this.positionsWorld=[],this.positionsRender=[],this.positionsFittedRender=[],this.triangleIndices=null,this.areaPolygon=new T({rings:[[]],spatialReference:e}),this.positionsFittedWorldPlaneProjected=this.areaPolygon.rings[0],this.trianglePositions=this.positionsFittedRender,this.triangleUvs=this.positionsFittedWorldPlaneProjected}}class U{constructor(e,t=null,n=null,r=null,i=null,a=null,o=null){this.mode=e,this.area=t,this.geodesicArea=n,this.perimeter=r,this.geodesicPerimeter=i,this.areaCentroidRenderCoords=a,this.geodesicAreaCentroidRenderCoords=o}}let W=class extends t{get numVertices(){return this._length}get hasStagedVertex(){return this._lastCursorPoint!=null}get fittingMode(){return this._fittingMode}get measurements(){return this._measurements}get updating(){return this._updatingHandles.updating}get renderSpatialReference(){return this.view.renderSpatialReference}get updateId(){return this._updateId}constructor(e){super(e),this._length=0,this._lastCursorPoint=null,this._lastPath=null,this._lastPathVersion=-1,this._lastMode=null,this._updatingHandles=new w,this._fittingMode=null,this._measurements=null,this._updateId=0,this._centroidRenderCoords=S(),this._planeWorldCoords=C(),this._worldUp=S(),this._worldTangent=S(),this._frame=[S(),S(),S()],this._worldOrigin=S(),this._updateAxisU=S(),this._updateAxisV=S(),this._updateWorldOrigin=S(),this._tempU=S(),this._tempV=S(),this._tempVec3=S(),this._tempSphere=new j,this._measurementWorker=new z({preloadGeodetic:!0}),this._retryAfterLoadScheduled=!1,this._updateAbortController=null,this._retryAfterTessellationLoad=()=>{if(this._retryAfterLoadScheduled=!1,this.destroyed)return;let e=this._lastPath,t=this._lastCursorPoint,n=this._lastMode;e&&n!=null&&this._update(e,t,n)},this._updateMeasurements=a(async(e,t,n,r)=>{let i=this.view.spatialReference,a=V(i)===0;h(this._updateAxisU,this._frame[0]),h(this._updateAxisV,this._frame[1]),h(this._updateWorldOrigin,this._worldOrigin);let s=(e,t)=>((!e||!this.view.renderCoordsHelper.toRenderCoords(e,t))&&g(t,0,0,0),t),c=e.areaMeasurement?.geometry,l=a&&t!==1&&c?await this._measurementWorker.geodeticLength(c,void 0,n):null;o(r);let u=this._calculateMode(t,l),d=u===`geodesic`,[f,p]=await Promise.all([d?null:this._measurementWorker.area2D(this.vertexData.areaPolygon,{unit:this._areaMeasurementUnit,lengthUnit:this._lengthMeasurementUnit,returnCentroid:!0,returnLength:!0}),d&&c?await this._measurementWorker.geodeticArea(c,{returnCentroid:!0},n):null]);o(r);let m=d?null:S();m&&f?.centroid&&this._projectWorldPlaneProjectedPointToRender(m,this._updateWorldOrigin,[f.centroid?.x??0,f.centroid?.y??0],this._updateAxisU,this._updateAxisV,this.view.renderSpatialReference,this._measurementSR);let _=p?.centroid?s(p.centroid,S()):null;this._measurements=new U(u,d?null:f?.area,d?p?.area:null,d?null:f?.length,d?l:null,d?null:m,d?_:null)});let t=B(e.view.spatialReference);this._measurementSR=t,this._lengthMeasurementUnit=l(t)??`meters`,this._areaMeasurementUnit=u(t)??`square-meters`;let n=D(t)?E.WebMercator:t;this.vertexData=new H(n)}destroy(){this._measurementWorker.destroy(),this._updatingHandles.destroy()}update(e,t,n){let r=this._lastPathVersion===e.version,i=t?t.equals(this._lastCursorPoint):this._lastCursorPoint==null,a=this._lastMode===n;return r&&a&&i?!1:(this._lastPath=e,this._lastPathVersion=e.version,this._lastCursorPoint=t,this._lastMode=n,this._update(e,t,n),!0)}_scheduleRetryAfterTessellationLoad(e){this._retryAfterLoadScheduled||(this._retryAfterLoadScheduled=!0,this._updatingHandles.consumePromise(e.then(()=>this._retryAfterTessellationLoad(),()=>{this._retryAfterLoadScheduled=!1})))}_update(e,t,n){let r=this._measurementSR,a=e.numVertices,o=t!=null&&!t.equals(e.lastPoint)&&!(a>2&&t.equals(e.firstPoint))&&!e.polygonIsClosed;o&&(a+=1);let s=!e.polygonIsClosed&&a>2,c=e.polygonIsClosed||s;this._resize(a);let{positionsWorld:l,positionsRender:u}=this.vertexData,d=(e,t)=>{G(this.view.elevationProvider,e),k(e,l[t],r),k(e,u[t],this.renderSpatialReference)};e.forEachVertexPosition((e,t)=>d(e,t)),o&&d(t,a-1),this.vertexData.areaPolygon.clearCache(),c?this._updateVertexData()&&(this._updateId++,this._updateAbortController??=new AbortController,this._updatingHandles.consumePromise(this._updateMeasurements(e,n,t,this._updateAbortController.signal))):(this._measurements=null,this.vertexData.triangleIndices=null,this._updateId++,this._updateAbortController=i(this._updateAbortController))}_resize(e){let{positionsWorld:t,positionsRender:r,positionsFittedWorldPlaneProjected:i,positionsFittedRender:a}=this.vertexData;n(t,e,S),n(r,e,S),n(i,e,m),n(a,e,S),this._length=e}_updateVertexData(){let e=this._measurementSR,t=this.view.renderCoordsHelper,{positionsWorld:n,positionsRender:r}=this.vertexData,i=this._planeWorldCoords,a=this._centroidRenderCoords;I(r,a),t.worldUpAtPosition(a,this._worldUp),t.worldBasisAtPosition(a,0,this._worldTangent),O(a,this._worldUp,this.renderSpatialReference,this._worldUp,e),O(a,this._worldTangent,this.renderSpatialReference,this._worldTangent,e),n.length>2&&M(n,i),this._fittingMode=this._selectFittingMode(i,n,this._worldUp,this.fittingSettings);let o=0;if(this._fittingMode===`horizontal`){let e=-1/0;r.forEach((n,i)=>{let a=t.getAltitude(r[i]);a>e&&(e=a,o=i)})}let{_worldOrigin:s}=this;h(this._worldOrigin,n[o]);let c=i,l=this._worldTangent;this._fittingMode===`horizontal`?c=this._worldUp:this._fittingMode===`vertical`&&(c=this._tempVec3,l=this._worldUp,L(i,this._worldUp,c));let u=this._frame[0],d=this._frame[1];h(this._frame[2],c),L(l,c,u),_(d,u,this._frame[2]);let{positionsFittedRender:f,positionsFittedWorldPlaneProjected:m}=this.vertexData,g=this._tempVec3;for(let t=0;t<this._length;++t){let r=m[t],i=f[t];v(g,n[t],s),p(r,y(u,g),y(d,g)),this._projectWorldPlaneProjectedPointToRender(i,s,r,u,d,this.renderSpatialReference,e)}return this._triangulate(new q(s,u,d,this.renderSpatialReference,e))}_triangulate(e){let{worldOrigin:t,axisU:r,axisV:i,renderSR:a,worldSR:o}=e,{areaPolygon:c}=this.vertexData,l=R(c);if(s(l))return this._scheduleRetryAfterTessellationLoad(l),!1;let u=l;if(u==null)return!0;let{positions:d,polygonIndices:f,vertexCount:h}=u,g=[],_=[];n(_,h,S),n(g,h,m);for(let e=0,n=0;e<d.length;e+=3,n++){let s=_[n],c=g[n];p(c,d[e],d[e+1]),this._projectWorldPlaneProjectedPointToRender(s,t,c,r,i,a,o)}return this.vertexData.trianglePositions=_,this.vertexData.triangleIndices=f,this.vertexData.triangleUvs=g,!0}_projectWorldPlaneProjectedPointToRender(e,t,n,r,i,a,o){let s=this._tempU,c=this._tempV;b(s,r,n[0]),b(c,i,n[1]),x(e,s,c),x(e,e,t),A(e,o,e,a)}_selectFittingMode(e,t,n,i){let a=t.map(t=>Math.abs(N(e,t))).reduce((e,t)=>Math.max(e,t),0);P(t,this._tempSphere);let o=a/(this._tempSphere.radius*2),s=o<i.maxRelativeErrorCoplanar,c=o<i.maxRelativeErrorAlmostCoplanar,l=`horizontal`;return s?l=`oblique`:c&&(l=Math.abs(y(n,e))>Math.cos(r(i.verticalAngleThreshold))?`horizontal`:`vertical`),l}_calculateMode(e,t){return t!=null&&e===0?c(t,`meters`)>K?`geodesic`:`euclidean`:t==null||e===1?`euclidean`:`geodesic`}};e([d()],W.prototype,`_measurements`,void 0),e([d()],W.prototype,`updating`,null),e([d()],W.prototype,`renderSpatialReference`,null),e([d()],W.prototype,`_updateId`,void 0),e([d()],W.prototype,`view`,void 0),e([d({constructOnly:!0})],W.prototype,`fittingSettings`,void 0),W=e([f(`esri.views.3d.analysis.AreaMeasurement.support.MeasurementData`)],W);function G(e,t){t.hasZ||(t.z=F(e,t,`ground`)??0)}const K=1e5;class q{constructor(e,t,n,r,i){this.worldOrigin=e,this.axisU=t,this.axisV=n,this.renderSR=r,this.worldSR=i}}export{U as AreaMeasurementQuantities,W as MeasurementData};
2
+ import{__decorate as e}from"tslib";import t from"../../../../../core/Accessor.js";import{resizeFilled as n}from"../../../../../core/arrayUtils.js";import{deg2rad as r}from"../../../../../core/mathUtils.js";import{abortMaybe as i}from"../../../../../core/maybe.js";import{debounce as a,throwIfAborted as o,isPromiseLike as s}from"../../../../../core/promiseUtils.js";import{valueInUnit as c}from"../../../../../core/quantity.js";import{lengthUnitFromSpatialReference as l,areaUnitFromSpatialReference as u}from"../../../../../core/units.js";import{property as d}from"../../../../../core/accessorSupport/decorators/property.js";import{subclass as f}from"../../../../../core/accessorSupport/decorators/subclass.js";import{set as p}from"../../../../../core/libs/gl-matrix-2/math/vec2.js";import{create as m}from"../../../../../core/libs/gl-matrix-2/factories/vec2f64.js";import{copy as h,set as g,cross as _,subtract as v,dot as y,scale as b,add as x}from"../../../../../core/libs/gl-matrix-2/math/vec3.js";import{create as S}from"../../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as C}from"../../../../../core/libs/gl-matrix-2/factories/vec4f64.js";import{UpdatingHandles as w}from"../../../../../core/support/UpdatingHandles.js";import T from"../../../../../geometry/Polygon.js";import E from"../../../../../geometry/SpatialReference.js";import{isPCPF as D}from"../../../../../geometry/spatialReferenceEllipsoidUtils.js";import{projectDirection as O}from"../../../../../geometry/projection/projectDirection.js";import{projectPointToVector as k}from"../../../../../geometry/projection/projectPointToVector.js";import{projectVectorToVector as A}from"../../../../../geometry/projection/projectVectorToVector.js";import{Sphere as j}from"../../../../../geometry/support/sphere.js";import{bestFitPlane as M,planePointDistance as N,boundingSphere as P}from"../../support/measurementUtils.js";import{getElevationAtPoint as F}from"../../../support/ElevationProvider.js";import{midpoint3d as I,makeOrthonormal as L}from"../../../support/mathUtils.js";import{polygonToRenderInfoNotElevationAligned as R}from"../../../support/renderInfoUtils/polygon.js";import{GeometryWorkerHandle as z}from"../../../../support/GeometryWorkerHandle.js";import{computeEuclideanMeasurementSR as B}from"../../../../support/measurementUtils.js";import{autoMeasurementMode as V}from"../../../../support/measurementWorkerUtils.js";class H{constructor(e){this.positionsWorld=[],this.positionsRender=[],this.positionsFittedRender=[],this.triangleIndices=null,this.areaPolygon=new T({rings:[[]],spatialReference:e}),this.positionsFittedWorldPlaneProjected=this.areaPolygon.rings[0],this.trianglePositions=this.positionsFittedRender,this.triangleUvs=this.positionsFittedWorldPlaneProjected}}class U{constructor(e,t=null,n=null,r=null,i=null,a=null,o=null){this.mode=e,this.area=t,this.geodesicArea=n,this.perimeter=r,this.geodesicPerimeter=i,this.areaCentroidRenderCoords=a,this.geodesicAreaCentroidRenderCoords=o}}let W=class extends t{get numVertices(){return this._length}get hasStagedVertex(){return this._lastCursorPoint!=null}get fittingMode(){return this._fittingMode}get measurements(){return this._measurements}get updating(){return this._updatingHandles.updating}get renderSpatialReference(){return this.view.renderSpatialReference}get updateId(){return this._updateId}constructor(e){super(e),this._length=0,this._lastCursorPoint=null,this._lastPath=null,this._lastPathVersion=-1,this._lastMode=null,this._updatingHandles=new w,this._fittingMode=null,this._measurements=null,this._updateId=0,this._centroidRenderCoords=S(),this._planeWorldCoords=C(),this._worldUp=S(),this._worldTangent=S(),this._frame=[S(),S(),S()],this._worldOrigin=S(),this._updateAxisU=S(),this._updateAxisV=S(),this._updateWorldOrigin=S(),this._tempU=S(),this._tempV=S(),this._tempVec3=S(),this._tempSphere=new j,this._measurementWorker=new z({preloadGeodetic:!0}),this._retryAfterLoadScheduled=!1,this._updateAbortController=null,this._retryAfterTessellationLoad=()=>{if(this._retryAfterLoadScheduled=!1,this.destroyed)return;let e=this._lastPath,t=this._lastCursorPoint,n=this._lastMode;e&&n!=null&&this._update(e,t,n)},this._updateMeasurements=a(async(e,t,n,r)=>{let i=this.view.spatialReference,a=V(i)===0;h(this._updateAxisU,this._frame[0]),h(this._updateAxisV,this._frame[1]),h(this._updateWorldOrigin,this._worldOrigin);let s=(e,t)=>(e&&this.view.renderCoordsHelper.toRenderCoords(e,t)||g(t,0,0,0),t),c=e.areaMeasurement?.geometry,l=a&&t!==1&&c?await this._measurementWorker.geodeticLength(c,void 0,n):null;o(r);let u=this._calculateMode(t,l),d=u===`geodesic`,[f,p]=await Promise.all([d?null:this._measurementWorker.area2D(this.vertexData.areaPolygon,{unit:this._areaMeasurementUnit,lengthUnit:this._lengthMeasurementUnit,returnCentroid:!0,returnLength:!0}),d&&c?await this._measurementWorker.geodeticArea(c,{returnCentroid:!0},n):null]);o(r);let m=d?null:S();m&&f?.centroid&&this._projectWorldPlaneProjectedPointToRender(m,this._updateWorldOrigin,[f.centroid?.x??0,f.centroid?.y??0],this._updateAxisU,this._updateAxisV,this.view.renderSpatialReference,this._measurementSR);let _=p?.centroid?s(p.centroid,S()):null;this._measurements=new U(u,d?null:f?.area,d?p?.area:null,d?null:f?.length,d?l:null,d?null:m,d?_:null)});let t=B(e.view.spatialReference);this._measurementSR=t,this._lengthMeasurementUnit=l(t)??`meters`,this._areaMeasurementUnit=u(t)??`square-meters`;let n=D(t)?E.WebMercator:t;this.vertexData=new H(n)}destroy(){this._measurementWorker.destroy(),this._updatingHandles.destroy()}update(e,t,n){let r=this._lastPathVersion===e.version,i=t?t.equals(this._lastCursorPoint):this._lastCursorPoint==null,a=this._lastMode===n;return r&&a&&i?!1:(this._lastPath=e,this._lastPathVersion=e.version,this._lastCursorPoint=t,this._lastMode=n,this._update(e,t,n),!0)}_scheduleRetryAfterTessellationLoad(e){this._retryAfterLoadScheduled||(this._retryAfterLoadScheduled=!0,this._updatingHandles.consumePromise(e.then(()=>this._retryAfterTessellationLoad(),()=>{this._retryAfterLoadScheduled=!1})))}_update(e,t,n){let r=this._measurementSR,a=e.numVertices,o=t!=null&&!t.equals(e.lastPoint)&&!(a>2&&t.equals(e.firstPoint))&&!e.polygonIsClosed;o&&(a+=1);let s=!e.polygonIsClosed&&a>2,c=e.polygonIsClosed||s;this._resize(a);let{positionsWorld:l,positionsRender:u}=this.vertexData,d=(e,t)=>{G(this.view.elevationProvider,e),k(e,l[t],r),k(e,u[t],this.renderSpatialReference)};e.forEachVertexPosition((e,t)=>d(e,t)),o&&d(t,a-1),this.vertexData.areaPolygon.clearCache(),c?this._updateVertexData()&&(this._updateId++,this._updateAbortController??=new AbortController,this._updatingHandles.consumePromise(this._updateMeasurements(e,n,t,this._updateAbortController.signal))):(this._measurements=null,this.vertexData.triangleIndices=null,this._updateId++,this._updateAbortController=i(this._updateAbortController))}_resize(e){let{positionsWorld:t,positionsRender:r,positionsFittedWorldPlaneProjected:i,positionsFittedRender:a}=this.vertexData;n(t,e,S),n(r,e,S),n(i,e,m),n(a,e,S),this._length=e}_updateVertexData(){let e=this._measurementSR,t=this.view.renderCoordsHelper,{positionsWorld:n,positionsRender:r}=this.vertexData,i=this._planeWorldCoords,a=this._centroidRenderCoords;I(r,a),t.worldUpAtPosition(a,this._worldUp),t.worldBasisAtPosition(a,0,this._worldTangent),O(a,this._worldUp,this.renderSpatialReference,this._worldUp,e),O(a,this._worldTangent,this.renderSpatialReference,this._worldTangent,e),n.length>2&&M(n,i),this._fittingMode=this._selectFittingMode(i,n,this._worldUp,this.fittingSettings);let o=0;if(this._fittingMode===`horizontal`){let e=-1/0;r.forEach((n,i)=>{let a=t.getAltitude(r[i]);a>e&&(e=a,o=i)})}let{_worldOrigin:s}=this;h(this._worldOrigin,n[o]);let c=i,l=this._worldTangent;this._fittingMode===`horizontal`?c=this._worldUp:this._fittingMode===`vertical`&&(c=this._tempVec3,l=this._worldUp,L(i,this._worldUp,c));let u=this._frame[0],d=this._frame[1];h(this._frame[2],c),L(l,c,u),_(d,u,this._frame[2]);let{positionsFittedRender:f,positionsFittedWorldPlaneProjected:m}=this.vertexData,g=this._tempVec3;for(let t=0;t<this._length;++t){let r=m[t],i=f[t];v(g,n[t],s),p(r,y(u,g),y(d,g)),this._projectWorldPlaneProjectedPointToRender(i,s,r,u,d,this.renderSpatialReference,e)}return this._triangulate(new q(s,u,d,this.renderSpatialReference,e))}_triangulate(e){let{worldOrigin:t,axisU:r,axisV:i,renderSR:a,worldSR:o}=e,{areaPolygon:c}=this.vertexData,l=R(c);if(s(l))return this._scheduleRetryAfterTessellationLoad(l),!1;let u=l;if(u==null)return!0;let{positions:d,polygonIndices:f,vertexCount:h}=u,g=[],_=[];n(_,h,S),n(g,h,m);for(let e=0,n=0;e<d.length;e+=3,n++){let s=_[n],c=g[n];p(c,d[e],d[e+1]),this._projectWorldPlaneProjectedPointToRender(s,t,c,r,i,a,o)}return this.vertexData.trianglePositions=_,this.vertexData.triangleIndices=f,this.vertexData.triangleUvs=g,!0}_projectWorldPlaneProjectedPointToRender(e,t,n,r,i,a,o){let s=this._tempU,c=this._tempV;b(s,r,n[0]),b(c,i,n[1]),x(e,s,c),x(e,e,t),A(e,o,e,a)}_selectFittingMode(e,t,n,i){let a=t.map(t=>Math.abs(N(e,t))).reduce((e,t)=>Math.max(e,t),0);P(t,this._tempSphere);let o=a/(this._tempSphere.radius*2),s=o<i.maxRelativeErrorCoplanar,c=o<i.maxRelativeErrorAlmostCoplanar,l=`horizontal`;return s?l=`oblique`:c&&(l=Math.abs(y(n,e))>Math.cos(r(i.verticalAngleThreshold))?`horizontal`:`vertical`),l}_calculateMode(e,t){return t!=null&&e===0?c(t,`meters`)>K?`geodesic`:`euclidean`:t==null||e===1?`euclidean`:`geodesic`}};e([d()],W.prototype,`_measurements`,void 0),e([d()],W.prototype,`updating`,null),e([d()],W.prototype,`renderSpatialReference`,null),e([d()],W.prototype,`_updateId`,void 0),e([d()],W.prototype,`view`,void 0),e([d({constructOnly:!0})],W.prototype,`fittingSettings`,void 0),W=e([f(`esri.views.3d.analysis.AreaMeasurement.support.MeasurementData`)],W);function G(e,t){t.hasZ||(t.z=F(e,t,`ground`)??0)}const K=1e5;class q{constructor(e,t,n,r,i){this.worldOrigin=e,this.axisU=t,this.axisV=n,this.renderSR=r,this.worldSR=i}}export{U as AreaMeasurementQuantities,W as MeasurementData};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as n}from"../../../core/maybe.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView3D.js";import{DirectLineMeasurementController as s}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as c}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import l from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as u,removeAnalysisViewTool as d,startPlaceOperation as f}from"../../analysis/analysisViewUtils.js";let p=class extends o{constructor(e){super(e),this.type=`direct-line-measurement-view-3d`,this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){let{analysis:e,view:t}=this;this._analysisVisualization=new c({view:t,analysis:e,analysisView:this}),this._analysisController=new s({view:t,analysis:e,viewData:this}),this.addHandles(u(this,l))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=n(this._analysisController),this._analysisVisualization=n(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(e){this._analysisVisualization.visualElementOrientation=e}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(e){this._analysisVisualization.allowVisualElementsOrientationChange=e}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(e){this._analysisVisualization.triangleCollapseRatioThreshold=e}get directLabelText(){return this._analysisVisualization.labels.direct?.text??``}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??``}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??``}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??a(this.view)}get testData(){}place(e){return f(this,{placementOptions:e})}};e([r()],p.prototype,`_analysisVisualization`,void 0),e([r()],p.prototype,`_analysisController`,void 0),e([r()],p.prototype,`updating`,null),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({constructOnly:!0,nonNullable:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`tool`,void 0),e([r()],p.prototype,`result`,void 0),e([r()],p.prototype,`measurementMode`,void 0),e([r()],p.prototype,`elevationAlignedStartPoint`,void 0),e([r()],p.prototype,`elevationAlignedEndPoint`,void 0),e([r({readOnly:!0})],p.prototype,`viewMode`,null),e([r({readOnly:!0})],p.prototype,`actualVisualizedMeasurement`,null),e([r()],p.prototype,`visualElementOrientation`,null),e([r()],p.prototype,`allowVisualElementsOrientationChange`,null),e([r()],p.prototype,`triangleCollapseRatioThreshold`,null),e([r({readOnly:!0})],p.prototype,`directLabelText`,null),e([r({readOnly:!0})],p.prototype,`horizontalLabelText`,null),e([r({readOnly:!0})],p.prototype,`verticalLabelText`,null),e([r()],p.prototype,`unit`,null),e([r()],p.prototype,`userOperation`,void 0),p=e([i(`esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D`)],p);const m=p;export{m as default};
2
+ import{__decorate as e}from"tslib";import"../../../core/has.js";import{abortMaybe as t,destroyMaybe as n}from"../../../core/maybe.js";import{property as r,subclass as i}from"../../../core/accessorSupport/decorators.js";import{getDefaultUnitForView as a}from"../../../support/getDefaultUnitForView.js";import o from"./AnalysisView3D.js";import{DirectLineMeasurementController as s}from"./DirectLineMeasurement/DirectLineMeasurementController.js";import{DirectLineMeasurementVisualization as c}from"./DirectLineMeasurement/DirectLineMeasurementVisualization.js";import l from"../interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{connectAnalysisViewToTool as u,removeAnalysisViewTool as d,startPlaceOperation as f}from"../../analysis/analysisViewUtils.js";let p=class extends o{constructor(e){super(e),this.type=`direct-line-measurement-view-3d`,this.analysis=null,this.tool=null,this.result=null,this.measurementMode=0,this.elevationAlignedStartPoint=null,this.elevationAlignedEndPoint=null,this.userOperation=null}initialize(){let{analysis:e,view:t}=this;this._analysisVisualization=new c({view:t,analysis:e,analysisView:this}),this._analysisController=new s({view:t,analysis:e,viewData:this}),this.addHandles(u(this,l))}destroy(){d(this),this.userOperation=t(this.userOperation),this._analysisController=n(this._analysisController),this._analysisVisualization=n(this._analysisVisualization)}get updating(){return!!this._analysisVisualization?.loadingMessages||!!this._analysisController?.updating||!!this.tool?.updating}get visible(){return super.visible}set visible(e){super.visible=e}get interactive(){return super.interactive}set interactive(e){super.interactive=e}get viewMode(){return this._analysisVisualization.viewMode}get actualVisualizedMeasurement(){return this._analysisVisualization.actualVisualizedMeasurement}get visualElementOrientation(){return this._analysisVisualization.visualElementOrientation}set visualElementOrientation(e){this._analysisVisualization.visualElementOrientation=e}get allowVisualElementsOrientationChange(){return this._analysisVisualization.allowVisualElementsOrientationChange}set allowVisualElementsOrientationChange(e){this._analysisVisualization.allowVisualElementsOrientationChange=e}get triangleCollapseRatioThreshold(){return this._analysisVisualization.triangleCollapseRatioThreshold}set triangleCollapseRatioThreshold(e){this._analysisVisualization.triangleCollapseRatioThreshold=e}get directLabelText(){return this._analysisVisualization.labels.direct?.text??``}get horizontalLabelText(){return this._analysisVisualization.labels.horizontal?.text??``}get verticalLabelText(){return this._analysisVisualization.labels.vertical?.text??``}get unit(){return this.analysis.unit??this.view.options.displayUnits.length??a(this.view)}get testData(){}place(e){return f(this,{placementOptions:e})}};e([r()],p.prototype,`_analysisVisualization`,void 0),e([r()],p.prototype,`_analysisController`,void 0),e([r()],p.prototype,`updating`,null),e([r({readOnly:!0})],p.prototype,`type`,void 0),e([r({constructOnly:!0,nonNullable:!0})],p.prototype,`analysis`,void 0),e([r()],p.prototype,`tool`,void 0),e([r()],p.prototype,`result`,void 0),e([r()],p.prototype,`measurementMode`,void 0),e([r()],p.prototype,`elevationAlignedStartPoint`,void 0),e([r()],p.prototype,`elevationAlignedEndPoint`,void 0),e([r({readOnly:!0})],p.prototype,`viewMode`,null),e([r({readOnly:!0})],p.prototype,`actualVisualizedMeasurement`,null),e([r()],p.prototype,`visualElementOrientation`,null),e([r()],p.prototype,`allowVisualElementsOrientationChange`,null),e([r()],p.prototype,`triangleCollapseRatioThreshold`,null),e([r({readOnly:!0})],p.prototype,`directLabelText`,null),e([r({readOnly:!0})],p.prototype,`horizontalLabelText`,null),e([r({readOnly:!0})],p.prototype,`verticalLabelText`,null),e([r()],p.prototype,`unit`,null),e([r()],p.prototype,`userOperation`,void 0),p=e([i(`esri.views.3d.analysis.DirectLineMeasurementAnalysisView3D`)],p);const m=p;export{m as default};