@arcgis/core 5.2.0-next.167 → 5.2.0-next.169

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 (307) hide show
  1. package/Map.d.ts +6 -0
  2. package/assets/esri/core/workers/RemoteClient.js +1 -1
  3. package/assets/esri/core/workers/chunks/057f245d70e57a1bcb46.js +1 -0
  4. package/assets/esri/core/workers/chunks/{1419bf346978b81b08cc.js → 094eb9677cdebfaa9e1b.js} +1 -1
  5. package/assets/esri/core/workers/chunks/0d52e1b6d38f2670658c.js +1 -0
  6. package/assets/esri/core/workers/chunks/0f7455dbe8c2ee464194.js +1 -0
  7. package/assets/esri/core/workers/chunks/10878932826ddb60fac4.js +1 -0
  8. package/assets/esri/core/workers/chunks/144bad0c2415c345736a.js +1 -0
  9. package/assets/esri/core/workers/chunks/1a614bac5db42c6263f8.js +1 -0
  10. package/assets/esri/core/workers/chunks/{99a0a434ea2162166754.js → 2095f220dc2b8f8f62db.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{5daa9429808ca31279f2.js → 216a239142dfe1306c6c.js} +1 -1
  12. package/assets/esri/core/workers/chunks/25c3be410d1c03f8f39d.js +1 -0
  13. package/assets/esri/core/workers/chunks/294276ed397023dcda44.js +1 -0
  14. package/assets/esri/core/workers/chunks/2a2a4650dd9b953d317c.js +1 -0
  15. package/assets/esri/core/workers/chunks/2b6684d057d9ad17ac13.js +1 -0
  16. package/assets/esri/core/workers/chunks/{ad96132bc89671e595f3.js → 2d3e0e4442dbc6ec6def.js} +1 -1
  17. package/assets/esri/core/workers/chunks/2d83ba260dd6bbe38206.js +1 -0
  18. package/assets/esri/core/workers/chunks/{69d5f8ef78b9b8b3d33d.js → 3286cf2afeb7f48564d9.js} +1 -1
  19. package/assets/esri/core/workers/chunks/3321cb0d4cb68b2ec8bf.js +1 -0
  20. package/assets/esri/core/workers/chunks/{e99c8c71c757bb161d87.js → 3636c2ac9b77950776d6.js} +1 -1
  21. package/assets/esri/core/workers/chunks/367b2f25cfe37847a48d.js +1 -0
  22. package/assets/esri/core/workers/chunks/379ef56f6b32494832a6.js +1 -0
  23. package/assets/esri/core/workers/chunks/3c881b1adc8a5dea9a90.js +1 -0
  24. package/assets/esri/core/workers/chunks/{6a2562cc00727155fc01.js → 4024becaf4012c1f15a7.js} +1 -1
  25. package/assets/esri/core/workers/chunks/435ad7e6ed326da2b969.js +1 -0
  26. package/assets/esri/core/workers/chunks/4419732baf3459a80e6d.js +1 -0
  27. package/assets/esri/core/workers/chunks/46f0510846a309a390ca.js +1 -0
  28. package/assets/esri/core/workers/chunks/4e17665dd9048c300d87.js +1 -0
  29. package/assets/esri/core/workers/chunks/509a74e9334f31b931d4.js +1 -0
  30. package/assets/esri/core/workers/chunks/50e8943d2c0b96fab2c1.js +1 -0
  31. package/assets/esri/core/workers/chunks/5396b6e99a0546a25d19.js +1 -0
  32. package/assets/esri/core/workers/chunks/546f5f57c9249627bb89.js +1 -0
  33. package/assets/esri/core/workers/chunks/561c48cb4d49b150765b.js +1 -0
  34. package/assets/esri/core/workers/chunks/{d90a3bfd45b5ed4092e0.js → 590fe0f56bc4c33a50e7.js} +1 -1
  35. package/assets/esri/core/workers/chunks/5d42f0898bf30ae940ea.js +1 -0
  36. package/assets/esri/core/workers/chunks/5f1cb79aec9c4a9b7ddc.js +29 -0
  37. package/assets/esri/core/workers/chunks/{5d2f043ebe1051326c56.js → 63b5418a1c3fe0a97a86.js} +1 -1
  38. package/assets/esri/core/workers/chunks/63c3a573dfe703056f8f.js +1 -0
  39. package/assets/esri/core/workers/chunks/673c61c964524150d9bc.js +1 -0
  40. package/assets/esri/core/workers/chunks/692f0093c444fcc752b5.js +1 -0
  41. package/assets/esri/core/workers/chunks/69627b2634da64dd885f.js +1 -0
  42. package/assets/esri/core/workers/chunks/{e6d10136bc08aef255ff.js → 712559f121f76c4e71ab.js} +1 -1
  43. package/assets/esri/core/workers/chunks/71a51795f715332fb4fe.js +1 -0
  44. package/assets/esri/core/workers/chunks/735c1dffc3439bdba3cc.js +1 -0
  45. package/assets/esri/core/workers/chunks/7862abd24fb5c3b12e6b.js +1 -0
  46. package/assets/esri/core/workers/chunks/{44d5508042cacdfcac47.js → 7d2be06dfbd92c8b9484.js} +1 -1
  47. package/assets/esri/core/workers/chunks/7f5b887a753bb67c8486.js +1 -0
  48. package/assets/esri/core/workers/chunks/822f83d7c09ef0a9bbdf.js +1 -0
  49. package/assets/esri/core/workers/chunks/849f446c718e892f39ce.js +1 -0
  50. package/assets/esri/core/workers/chunks/8d86b0cb0e004ad72040.js +1 -0
  51. package/assets/esri/core/workers/chunks/{76196c414e48834f7b92.js → 8f008eedb11685ee2048.js} +1 -1
  52. package/assets/esri/core/workers/chunks/98760040f0c9d47c718d.js +1 -0
  53. package/assets/esri/core/workers/chunks/{4b99b4cf729881e616bc.js → 98d1efb6f2439c6344cf.js} +1 -1
  54. package/assets/esri/core/workers/chunks/{18f20fd43ec9ce03cef1.js → 9e04703ee5f5ec47db43.js} +1 -1
  55. package/assets/esri/core/workers/chunks/9e0b0262dec496451762.js +1 -0
  56. package/assets/esri/core/workers/chunks/{23fd4de56de352f63e2d.js → a2196a49f89d57a0a1c7.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{89c8b0f684c1f27d149e.js → a2f0894218e665780a21.js} +1 -1
  58. package/assets/esri/core/workers/chunks/a79cae328e866272754a.js +1 -0
  59. package/assets/esri/core/workers/chunks/a85cdafbaf1848bb924b.js +1 -0
  60. package/assets/esri/core/workers/chunks/b01688ccc29d33bfc82d.js +1 -0
  61. package/assets/esri/core/workers/chunks/b0a612d8ffa5c46d7db4.js +1 -0
  62. package/assets/esri/core/workers/chunks/b5eff28cf482d920b9ea.js +1 -0
  63. package/assets/esri/core/workers/chunks/b70885deebc6106597ad.js +1 -0
  64. package/assets/esri/core/workers/chunks/bedaa5e64ed81803829a.js +1 -0
  65. package/assets/esri/core/workers/chunks/{a88f346786b04bd194dc.js → c0b38f8c808d434af5f6.js} +1 -1
  66. package/assets/esri/core/workers/chunks/c1cf3edce15f09648eb4.js +1 -0
  67. package/assets/esri/core/workers/chunks/c249a91dd23104723fab.js +1 -0
  68. package/assets/esri/core/workers/chunks/c45edd0a7d57263bb7d6.js +1 -0
  69. package/assets/esri/core/workers/chunks/c4bbe4707e90b7cd0379.js +1 -0
  70. package/assets/esri/core/workers/chunks/c52466eb1f3c33ae1f5a.js +1 -0
  71. package/assets/esri/core/workers/chunks/c570b90995c65bbb2e14.js +1 -0
  72. package/assets/esri/core/workers/chunks/c576bef77e34920af188.js +1 -0
  73. package/assets/esri/core/workers/chunks/c7699edd14497d174445.js +1 -0
  74. package/assets/esri/core/workers/chunks/c80a3b039e510c118399.js +1 -0
  75. package/assets/esri/core/workers/chunks/{196979cc6a765be3c5cd.js → c88a70f68c8ce8c30e9b.js} +1 -1
  76. package/assets/esri/core/workers/chunks/c9feffb9884cfed52c4b.js +1 -0
  77. package/assets/esri/core/workers/chunks/caaf6306cc73f618d27d.js +1 -0
  78. package/assets/esri/core/workers/chunks/{b704f489d0f072a0bfcd.js → ccd19c490ca24db6ffb1.js} +1 -1
  79. package/assets/esri/core/workers/chunks/cdacc3e42f01c3b852d6.js +1 -0
  80. package/assets/esri/core/workers/chunks/d1d6154b4af1c9cc497b.js +1 -0
  81. package/assets/esri/core/workers/chunks/d20dcd4ce4b0111d924f.js +1 -0
  82. package/assets/esri/core/workers/chunks/{784a2fba3e18286958d1.js → d56fdf5ce5ff53dc0e69.js} +1 -1
  83. package/assets/esri/core/workers/chunks/d7cf32a8c6060a208f06.js +1 -0
  84. package/assets/esri/core/workers/chunks/daae21cf77864f3293ef.js +1 -0
  85. package/assets/esri/core/workers/chunks/dd08dff19a2ffd36f284.js +1 -0
  86. package/assets/esri/core/workers/chunks/de3f140058aa0b907b65.js +1 -0
  87. package/assets/esri/core/workers/chunks/df375d1b0dab5ecbd1be.js +1 -0
  88. package/assets/esri/core/workers/chunks/{e2775b4b753306dc8477.js → df7603ef7d2a7cbeaaa2.js} +1 -1
  89. package/assets/esri/core/workers/chunks/e9cdb0b0f074583edebd.js +1 -0
  90. package/assets/esri/core/workers/chunks/eaab787a5f2445be5e5a.js +1 -0
  91. package/assets/esri/core/workers/chunks/edd36a1fc80b1d29907e.js +1 -0
  92. package/assets/esri/core/workers/chunks/{444e5f214abce3d607cd.js → eeb068c265bd3a22a8c1.js} +1 -1
  93. package/assets/esri/core/workers/chunks/f2cfee8a761ae91f7a3e.js +1 -0
  94. package/assets/esri/core/workers/chunks/f3fdf75843ade0ca591e.js +1 -0
  95. package/assets/esri/core/workers/chunks/f5cc78291b53931b91e8.js +1 -0
  96. package/assets/esri/core/workers/chunks/f9dc38761b314d33890f.js +1 -0
  97. package/assets/esri/core/workers/chunks/feb6e041dd0aa1c59c31.js +1 -0
  98. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
  99. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
  100. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
  101. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
  102. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
  103. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
  104. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
  105. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
  106. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
  107. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
  108. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
  109. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
  110. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
  111. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
  112. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
  113. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
  114. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
  115. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
  116. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
  117. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
  118. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
  119. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
  120. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
  121. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
  122. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
  123. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
  124. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
  125. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
  126. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
  127. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
  128. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
  129. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
  130. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
  131. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
  132. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
  133. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
  134. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
  135. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
  136. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
  137. package/config.js +1 -1
  138. package/core/workers/workers.js +2 -2
  139. package/core/workers.d.ts +1 -1
  140. package/form/elements/inputs/DynamicChoiceInput.d.ts +2 -2
  141. package/geometry/operators/containsOperator.d.ts +1 -1
  142. package/geometry/operators/densifyOperator.d.ts +1 -1
  143. package/geometry/operators/differenceOperator.d.ts +6 -4
  144. package/geometry/operators/distanceOperator.d.ts +1 -1
  145. package/geometry/operators/geodesicProximityOperator.d.ts +8 -8
  146. package/geometry/operators/graphicBufferOperator.d.ts +6 -6
  147. package/geometry/operators/integrateOperator.d.ts +2 -2
  148. package/geometry/operators/intersectsOperator.d.ts +3 -3
  149. package/geometry/operators/linesToPolygonsOperator.d.ts +2 -2
  150. package/geometry/operators/locateBetweenOperator.d.ts +2 -2
  151. package/geometry/operators/minimumBoundingCircleOperator.d.ts +1 -1
  152. package/geometry/operators/multiPartToSinglePartOperator.d.ts +2 -2
  153. package/geometry/operators/polygonSlicerOperator.d.ts +2 -2
  154. package/geometry/operators/projectOperator.d.ts +2 -2
  155. package/geometry/operators/proximityOperator.d.ts +15 -15
  156. package/geometry/operators/shapePreservingProjectOperator.d.ts +2 -2
  157. package/geometry/operators/simplifyOperator.d.ts +2 -2
  158. package/geometry/operators/support/GeographicTransformationStep.d.ts +3 -3
  159. package/geometry/operators/support/Transformation.d.ts +8 -8
  160. package/geometry/operators/support/geographicTransformationUtils.d.ts +3 -3
  161. package/geometry/operators/symmetricDifferenceOperator.d.ts +2 -2
  162. package/geometry/operators/withinOperator.d.ts +3 -3
  163. package/graphic/MapNotesGraphicOrigin.d.ts +1 -0
  164. package/kernel.js +1 -1
  165. package/layers/ElevationLayer.d.ts +6 -2
  166. package/layers/GeospatialPDFLayer.d.ts +2 -2
  167. package/layers/ParquetLayer.d.ts +1 -1
  168. package/layers/VectorTileLayer.d.ts +10 -1
  169. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  170. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  171. package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
  172. package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
  173. package/layers/orientedImagery/transformations/rotationUtils.js +2 -0
  174. package/layers/orientedImagery/transformations/utils.js +1 -1
  175. package/package.json +2 -2
  176. package/popup/FeaturesModel.js +1 -1
  177. package/popup/support/featureUtils.js +1 -1
  178. package/rest/featureService/FeatureService.d.ts +0 -5
  179. package/rest/networks/support/TraceLocation.d.ts +2 -1
  180. package/rest/networks/support/TraceResult.d.ts +0 -4
  181. package/rest/support/OutDistance.d.ts +0 -1
  182. package/smartMapping/statistics/histogramForTimeSeries.js +1 -1
  183. package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +1 -1
  184. package/support/BasemapStyle.d.ts +2 -2
  185. package/symbols/cim/types.d.ts +7 -9
  186. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  187. package/views/2d/engine/webgl/collisions/LabelStore.js +1 -1
  188. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/MeshWriterVertexPack.js +1 -1
  189. package/views/2d/layers/features/FeatureContainer.js +1 -1
  190. package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
  191. package/views/3d/environment/SunLighting.d.ts +15 -2
  192. package/views/3d/environment/VirtualLighting.d.ts +15 -2
  193. package/views/3d/interactive/editingTools/reshape/ReshapeOperation.js +1 -1
  194. package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
  195. package/views/draw/DrawOperation.js +1 -1
  196. package/views/draw/DrawScreenTool.js +1 -1
  197. package/views/input/types.d.ts +2 -4
  198. package/views/interactive/options/LabelOptions.d.ts +5 -5
  199. package/views/interactive/options/SnappingOptions.d.ts +2 -2
  200. package/widgets/BatchAttributeForm/inputs/FieldInput.d.ts +0 -1
  201. package/widgets/Editor/VisibleElements.d.ts +4 -0
  202. package/widgets/Editor.d.ts +2 -0
  203. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  204. package/widgets/FeatureTable.js +1 -1
  205. package/widgets/Features/FeaturesViewModel.js +1 -1
  206. package/widgets/OrientedImageryViewer/ImageMeasurementWorker.js +1 -1
  207. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  208. package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
  209. package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
  210. package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
  211. package/widgets/OrientedImageryViewer/imageMeasurementWorkerUtils.js +2 -0
  212. package/widgets/OrientedImageryViewer/services/ImageMeasurementService.js +1 -1
  213. package/widgets/OrientedImageryViewer/services/SuperimposeService.js +1 -1
  214. package/widgets/OrientedImageryViewer/support/NonPanoramicMedia.js +1 -1
  215. package/widgets/OrientedImageryViewer/support/dataCaptureUtils.js +1 -1
  216. package/widgets/OrientedImageryViewer/support/superimposeUtils.js +1 -1
  217. package/widgets/OrientedImageryViewer.js +2 -2
  218. package/widgets/PanoramicViewer/utils.js +1 -1
  219. package/widgets/Search/LayerSearchSource.d.ts +1 -1
  220. package/widgets/Sketch/VisibleElements.d.ts +4 -0
  221. package/widgets/Sketch.d.ts +2 -0
  222. package/widgets/support/iconUtils.js +1 -1
  223. package/assets/esri/core/workers/chunks/010f57ec7fdbedf78d02.js +0 -1
  224. package/assets/esri/core/workers/chunks/02e10f44edf911832c2a.js +0 -1
  225. package/assets/esri/core/workers/chunks/07f7177bfaf9de73bc25.js +0 -1
  226. package/assets/esri/core/workers/chunks/090adefe20412e8a5084.js +0 -1
  227. package/assets/esri/core/workers/chunks/0d9c4c6c571ce26d356b.js +0 -1
  228. package/assets/esri/core/workers/chunks/1201b8c5852830836eac.js +0 -1
  229. package/assets/esri/core/workers/chunks/151e5799ede763a03ee2.js +0 -1
  230. package/assets/esri/core/workers/chunks/168a523bdc3653081f8a.js +0 -1
  231. package/assets/esri/core/workers/chunks/175c268e64ccd01f8c25.js +0 -1
  232. package/assets/esri/core/workers/chunks/18787aa685524b958561.js +0 -1
  233. package/assets/esri/core/workers/chunks/1e1c45f75020d5e05dc3.js +0 -1
  234. package/assets/esri/core/workers/chunks/28104681ba161967039f.js +0 -1
  235. package/assets/esri/core/workers/chunks/2a36fe3f3f257a779a1b.js +0 -1
  236. package/assets/esri/core/workers/chunks/30af63b3b750142faadb.js +0 -1
  237. package/assets/esri/core/workers/chunks/3dddae78286d05eb10fc.js +0 -1
  238. package/assets/esri/core/workers/chunks/3f946c13ad97fbed867b.js +0 -1
  239. package/assets/esri/core/workers/chunks/40d803584eeade4df433.js +0 -1
  240. package/assets/esri/core/workers/chunks/41773d858e212468db88.js +0 -1
  241. package/assets/esri/core/workers/chunks/426b4eb500fdfe9df325.js +0 -1
  242. package/assets/esri/core/workers/chunks/45367aa8e5c5d574de94.js +0 -1
  243. package/assets/esri/core/workers/chunks/47d074136a7f8e551a9a.js +0 -1
  244. package/assets/esri/core/workers/chunks/4932773663469919d10a.js +0 -1
  245. package/assets/esri/core/workers/chunks/49b967d89d2841cea675.js +0 -1
  246. package/assets/esri/core/workers/chunks/4a6b92ecbb1f1c55cc43.js +0 -1
  247. package/assets/esri/core/workers/chunks/4cb751dc8d00bdaeb04c.js +0 -1
  248. package/assets/esri/core/workers/chunks/4d3d7ec407ee5cd5f036.js +0 -1
  249. package/assets/esri/core/workers/chunks/4fd0d9688df6fcc0d0b8.js +0 -1
  250. package/assets/esri/core/workers/chunks/53ff68d4f9e365fc15cd.js +0 -1
  251. package/assets/esri/core/workers/chunks/548b8f74a6883e364931.js +0 -1
  252. package/assets/esri/core/workers/chunks/5af8fb4ec2c72697e35b.js +0 -1
  253. package/assets/esri/core/workers/chunks/5d76f4d97beee494bbbf.js +0 -1
  254. package/assets/esri/core/workers/chunks/5dc604e3691f36f03959.js +0 -1
  255. package/assets/esri/core/workers/chunks/611e3cdf67283c11576f.js +0 -1
  256. package/assets/esri/core/workers/chunks/61552b4b8111a8624d84.js +0 -1
  257. package/assets/esri/core/workers/chunks/6299be5e7e26bf3c6859.js +0 -1
  258. package/assets/esri/core/workers/chunks/632fdf1d95ad69109427.js +0 -1
  259. package/assets/esri/core/workers/chunks/652faf4359ac072c5dde.js +0 -1
  260. package/assets/esri/core/workers/chunks/6b9961261241fdce0e94.js +0 -1
  261. package/assets/esri/core/workers/chunks/710b8251a59884aee31e.js +0 -1
  262. package/assets/esri/core/workers/chunks/7159d9c36869cd82599e.js +0 -29
  263. package/assets/esri/core/workers/chunks/7393f63043a1da3d05a6.js +0 -1
  264. package/assets/esri/core/workers/chunks/7449568eb2305bf2d650.js +0 -1
  265. package/assets/esri/core/workers/chunks/771dd92cb3e6a3427f66.js +0 -1
  266. package/assets/esri/core/workers/chunks/7748c2886d0122b40eeb.js +0 -1
  267. package/assets/esri/core/workers/chunks/78c4e43cfa1eda06b4d9.js +0 -1
  268. package/assets/esri/core/workers/chunks/7e0f04a5038e2a4f6e4b.js +0 -1
  269. package/assets/esri/core/workers/chunks/7f0f9dddc44b1f1600f0.js +0 -1
  270. package/assets/esri/core/workers/chunks/7f16ae01ccd9b6114d1c.js +0 -1
  271. package/assets/esri/core/workers/chunks/82a022cc21364c9a8539.js +0 -1
  272. package/assets/esri/core/workers/chunks/8924e2f3b7d03afb3a6a.js +0 -1
  273. package/assets/esri/core/workers/chunks/90153b5230b3a4985c14.js +0 -1
  274. package/assets/esri/core/workers/chunks/9189dfe19a2a2ccd5173.js +0 -1
  275. package/assets/esri/core/workers/chunks/9215b59c5ccecf9add58.js +0 -1
  276. package/assets/esri/core/workers/chunks/943a0f140813ee4ab04a.js +0 -1
  277. package/assets/esri/core/workers/chunks/967b4992b400517ee712.js +0 -1
  278. package/assets/esri/core/workers/chunks/9dd1fc56eb1ea6eb705e.js +0 -1
  279. package/assets/esri/core/workers/chunks/a163c6005aba3378edaa.js +0 -1
  280. package/assets/esri/core/workers/chunks/a53823cf03dbdce1aecd.js +0 -1
  281. package/assets/esri/core/workers/chunks/a62c12925303ff802c3d.js +0 -1
  282. package/assets/esri/core/workers/chunks/acb265a22be5e12f38e5.js +0 -1
  283. package/assets/esri/core/workers/chunks/acdfd275dbf8533a67f3.js +0 -1
  284. package/assets/esri/core/workers/chunks/ace802483484519658f3.js +0 -1
  285. package/assets/esri/core/workers/chunks/b3007aedbf731dacaff1.js +0 -1
  286. package/assets/esri/core/workers/chunks/b4334713bacdfe40ce3d.js +0 -1
  287. package/assets/esri/core/workers/chunks/b83cef2d3f528726d492.js +0 -1
  288. package/assets/esri/core/workers/chunks/be97a629e2ae4d13ceb3.js +0 -1
  289. package/assets/esri/core/workers/chunks/c337fc0e6dc69c233e6d.js +0 -1
  290. package/assets/esri/core/workers/chunks/c47d095434d09b5f10c6.js +0 -1
  291. package/assets/esri/core/workers/chunks/c4b7111dcedd9d6e1c2a.js +0 -1
  292. package/assets/esri/core/workers/chunks/c5d85be6e16bc895e7fb.js +0 -1
  293. package/assets/esri/core/workers/chunks/c8d6bb5cca49926a0214.js +0 -1
  294. package/assets/esri/core/workers/chunks/cb4be68cc5085d421615.js +0 -1
  295. package/assets/esri/core/workers/chunks/cb4db5489388559d6bd9.js +0 -1
  296. package/assets/esri/core/workers/chunks/cc794bb94ebc1cb66024.js +0 -1
  297. package/assets/esri/core/workers/chunks/cc94bf05b235e65291fc.js +0 -1
  298. package/assets/esri/core/workers/chunks/d4af9faa5d901274fad2.js +0 -1
  299. package/assets/esri/core/workers/chunks/d77c68e0fc3b259bf4f9.js +0 -1
  300. package/assets/esri/core/workers/chunks/daf9b691817e83a11f3c.js +0 -1
  301. package/assets/esri/core/workers/chunks/de0f335f702ae85a1df3.js +0 -1
  302. package/assets/esri/core/workers/chunks/e11159e3dc3353b27c57.js +0 -1
  303. package/assets/esri/core/workers/chunks/f8379cd45f750f28a3d8.js +0 -1
  304. package/assets/esri/core/workers/chunks/f905f1a1aa4c123cbe83.js +0 -1
  305. package/assets/esri/core/workers/chunks/fd4635410b27bcedb752.js +0 -1
  306. package/assets/esri/core/workers/chunks/fda83bcb8e40e8044c24.js +0 -1
  307. package/assets/esri/core/workers/chunks/feb4f8c807bb0dca488f.js +0 -1
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{rad2deg as e}from"../../core/mathUtils.js";import{throwIfAborted as t}from"../../core/promiseUtils.js";import{createArea as n,createLength as r}from"../../core/quantity.js";import{formatArea as i,formatLength as a}from"../../core/quantityFormatUtils.js";import{set as o,determinant as s}from"../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../core/libs/gl-matrix-2/factories/mat3f64.js";import{zeros as l}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{distance as u}from"../../core/libs/gl-matrix-2/math/vec2.js";import{set as d,cross as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{isSupported as p,geodesicLengths as m,geodesicAreas as h}from"../../geometry/geodesicUtils.js";import g from"../../geometry/Point.js";import _ from"../../geometry/Polygon.js";import v from"../../geometry/Polyline.js";import{projectAsync as y,project as b}from"../../geometry/projectionUtils.js";import x from"../../geometry/SpatialReference.js";import{areaExecute as S}from"../../geometry/operators/areaOperator.js";import{geodeticAreaLoad as C,geodeticAreaExecute as w}from"../../geometry/operators/geodeticAreaOperator.js";import{geodeticDensifyLoad as T,geodeticDensifyExecute as E}from"../../geometry/operators/geodeticDensifyOperator.js";import{geodeticLengthLoad as D,geodeticLengthExecute as O}from"../../geometry/operators/geodeticLengthOperator.js";import{lengthExecute as k}from"../../geometry/operators/lengthOperator.js";import{simplifyExecute as A}from"../../geometry/operators/simplifyOperator.js";import{imageToWorldPanoramic as j,imageToWorld as M}from"../../layers/orientedImagery/transformations/imageToWorld.js";import{createRotationMatrixFromHPR as ee,getUpdateElevationProps as N,convertSphereVertexToPixelLocation as P,getImageToWorldProperties as te}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as F,worldToImage as I}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getPanoramicImageProperties as ne}from"./panoramicImageProperties.js";const re=1e5,L=`meters`,R=`square-meters`;function z(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function ie(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function B(e,t,n){if(!e?.length||!t?.length||!n)return;let[r,i]=e,[,a]=t,o=a-i;return[r+o*Math.cos(n),i+o*Math.sin(n)]}async function V(e,t,n){if(await T(),p(e)){let e=m([t],L)[0];return{area:h([n],R)[0],perimeter:e}}let r=x.WGS84,i=b(t,r),a=b(n,r),o=E(a,re);if(o=o?A(o):null,!o)return null;let s=m([i],L)[0];return{area:h([o],R)[0],perimeter:s}}function ae(e,t,n=1){let r=J(e,!1);return r?.length?u([r[0].x,r[0].y],[r.at(-1).x,r.at(-1).y])*20*n/t:void 0}async function oe(e){await D();let t=e.spatialReference;if(t.isGeographic){if(p(t))return m([e],L)[0];let n=b(e,x.WGS84);return m([n],L)[0]}return t.isWebMercator?O(e,{unit:L}):k(e,{unit:L})}function se(e){if(!e?.length)throw Error(`Invalid deviations array`);let[t,n,r]=[0,1,2].map(t=>e.map(e=>e[t]).filter(e=>e!==null)).map(e=>e.length?X(e):0);return[t,n,r]}function H(e,t){let n=A(t);if(!n)return null;let r=k(e,{unit:L});return{area:S(n,{unit:R}),perimeter:r}}function ce(e,t){return[(e[1][0]-e[0][0])/t,(e[1][1]-e[0][1])/t,(e[1][2]-e[0][2])/t]}async function U(e,t){await Promise.all([C(),T(),D()]);let n=E(t,re);if(n=n?A(n):null,!n)return null;let r=O(e,{unit:L});return{area:w(n,{unit:R}),perimeter:r}}async function le(e,n,r){if(!n||!e)throw Error(`Missing required parameters`);let i=await M(e,n);t(r);let a=i.clone();a.z?a.z+=20:a.z=20;let{averageElevation:o,cameraPitch:s,cameraRoll:c,farDistance:l,...u}=n;return I(a,u)}async function ue(e,n,r,i){let{attributes:a}=r,{location:o}=a,{updateElevationProps:s,...c}=n;if(!e||!n)throw Error(`Missing parameters`);let l=o.clone();l.spatialReference.isGeographic&&(l=await y(l,x.WebMercator));let u=await j(e,{...c,cameraLocation:l},s);t(i);let d=u.clone();return d.z?d.z+=20:d.z=20,F(d,c)}function W(e,t,n,r,i=0,a=1,o){let{averageElevation:s,cameraPitch:c,cameraRoll:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=I(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return W(y,t,n,r,i+1,b)}function G(e,t,n,r,i=0,a=1,o){let{averageElevation:s,horizontalFieldOfView:c,verticalFieldOfView:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=F(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return G(y,t,n,r,i+1,b)}async function K(e,t,n){return e.spatialReference&&!t.spatialReference.equals(e.spatialReference)&&(t=await y(t,e.spatialReference)),new v({paths:[[[e.x,e.y,e.z??0],[t.x,t.y,t.z??0]]],spatialReference:n})}function de(e){return 1/Math.cos(Math.PI/2-2*Math.atan(Math.exp(-1*e/6378137)))}function fe(e,t){return Math.sqrt((Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t)**2+(e[0][2]-e[1][2])**2)}function pe(e,t){return Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t}function me(t){return e(Math.atan((t[1][2]-t[0][2])/Math.sqrt((t[1][0]-t[0][0])**2+(t[1][1]-t[0][1])**2)))}function he(t){let n=90-e(Math.atan2(t[1][1]-t[0][1],t[1][0]-t[0][0]));return n<0&&(n+=360),n}function q(e,t){return new g({x:(e.pointOnA[0]+e.pointOnB[0])/2,y:(e.pointOnA[1]+e.pointOnB[1])/2,z:(e.pointOnA[2]+e.pointOnB[2])/2,spatialReference:t})}async function ge(e){if(e?.length===2){let t=[],n=1,[r,i]=e,a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let o=await Q(await K(r.camera,r.measurePoints[e],a),await K(i.camera,i.measurePoints[e],a));if(!o)return null;let s=q(o,a);s.spatialReference.isWebMercator&&(n=de(s.y)),t.push([s.x,s.y,s.z??0])}if(t?.length>1)return{distance:fe(t,n),horizontalDistance:pe(t,n),verticalDistance:Math.abs(t[0][2]-t[1][2]),slope:me(t),aspect:he(t)}}return null}async function _e(e){let t=e[0].camera.spatialReference;if(e?.length!==2)return null;let[n,r]=e,{camera:i,measurePoints:a}=n,{camera:o,measurePoints:s}=r,c=await Q(await K(i,a[0],t),await K(o,s[0],t));return c?q(c,t)??null:null}async function ve(e,t){if(!e?.length)return null;let n=[],r=e[0],i=e[1],a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let t=await Q(await K(r.camera,r.measurePoints[e],a),await K(i.camera,i.measurePoints[e],a));if(!t)return null;let o=q(t,a);n.push([o.x,o.y,o.z??0])}if(n?.length<2)return null;let s=new v({paths:[n],spatialReference:t}),c=new _({rings:[n],spatialReference:t});return t.isGeographic?(await V(t,s,c))?.area??null:t.isWebMercator?(await U(s,c))?.area??null:H(s,c)?.area??null}function ye(e,t){return e?{camera:t.geometry.clone(),measurePoints:Array.isArray(e)?e:[e]}:null}async function be(e,t){let{updateElevationProps:n,...r}=t;return await M(e,r,n)}async function xe(e,t){let{updateElevationProps:n,...r}=t;return j(e,r,n)}function Se(e){navigator.clipboard.writeText(e).catch(e=>{throw e})}function Ce(e){let t=e.map(e=>[e.x,e.y]),n=e[0].spatialReference;return new v({paths:[t],spatialReference:n})}function J(e,t){return e.map(e=>({x:t?.5+e[0]:e[0],y:t?.5-e[1]:e[1]}))}function we(e,t,n,i,o){let s=e===`measurement`?t:n;if(o&&s)return a(i,r(s,L),o,3)||null}function Y(e){return e>0?[-e,0,e]:[0]}function Te(e,t,n){let{cameraPitch:r,cameraRoll:i,cameraLocation:a}=e,{x:o,y:s,z:c,spatialReference:l}=a;if(t.every(e=>e===0)||!t||!t.length||!l)throw Error(`Invalid parameters`);let[u,d,f,p,m]=t,h=Y(f),g=Y(p),_=Y(m),v=Y(u),y=Y(d),b=[];for(let t of g)for(let a of _)for(let u of v)for(let d of v)for(let f of y)for(let p of h){let m={...e};m.cameraPitch=r+t,m.cameraRoll=i+a,m.rotationMatrix=ee([n+p,m.cameraPitch,m.cameraRoll]),m.cameraLocation={x:o+u,y:s+d,z:c?c+f:0,spatialReference:{wkid:l.wkid}},b.push(m)}return b}function Ee(e,t){let{cameraHeading:n,cameraLocation:r}=e,{x:i,y:a,z:o,spatialReference:s}=r;if(!t||t.every(e=>e===0)||!t.length||!s)throw Error(`Invalid parameters`);let[c,l,u]=t,d=Y(u),f=Y(c),p=Y(l),m=[];for(let t of d)for(let r of f)for(let c of f)for(let l of p){let u={...e};u.cameraHeading=n+t,u.cameraLocation={x:i+r,y:a+c,z:o?o+l:0,spatialReference:{wkid:s.wkid}},m.push(u)}return m}function De(e,t,n,i,o){let s=e===`measurement`?t:X(n);if(o&&s)return a(i,r(s,L),o,3)||null}function Oe(e,t,r,a,o){let s=e===`measurement`?t:r;if(o&&s)return i(a,n(s,R),o,3)||null}function X(e){return Math.sqrt(e.reduce((e,t)=>e+t**2,0))}function ke(e,t,n){if(!e||!t)return;let{elevationSample:r,attributes:i}=e,{elevationSource:a,cameraHeight:o}=i,s={...te(i,t[0],t[1]),cameraLocation:i.location},c=s.cameraLocation;return(c.spatialReference.isGeographic?y(c,x.WebMercator):Promise.resolve(c)).then(e=>(c=e,N(c.spatialReference,c.z??0,o,{elevationSample:r,elevationSource:a,extent:n}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...s,cameraLocation:c,updateElevationProps:t}))}function Ae(e,t,n){if(!e||!t)return;let{elevationSample:r,attributes:i}=e,{elevationSource:a,cameraHeight:o}=i,s=ne(i,t[0],t[1]),c=s.cameraLocation;return(c.spatialReference.isGeographic?y(c,x.WebMercator):Promise.resolve(c)).then(e=>(c=e,N(c.spatialReference,c.z??0,o,{elevationSample:r,elevationSource:a,extent:n}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...s,cameraLocation:c,updateElevationProps:t}))}function je(e,t,n){if(t==="default")return e;let r={x:e[0],y:e[1],z:e[2]},i=P(r,n[0],n[1]);return[i.x,i.y]}function Z(e){return e.metersPerUnit}function Me(e,t,n,r){let i=[];return i=t===`panoramic`?e.map(([e,t,i])=>{let{x:a,y:o}=P({x:e,y:t,z:i},n[0],n[1],r);return[a-.5,-.5-o]}):e.map(([e,t])=>[e-.5,-.5-t]),i}function Ne(e,t,n){return e.map(e=>P({x:e[0],y:e[1],z:e[2]},t[0],t[1],n))}async function Pe(e,n,r,i=!1,a=!1,o){if(!e||!n||e.length<2)return null;let s=J(e,i);if(!s||s.length<2)return null;let[c,l]=[s[0],s.at(-1)];if(!l)return null;let d=[c],f=await M(c,n);t(o);let p=f.clone();p.z?p.z+=20:p.z=20;let{averageElevation:m,cameraPitch:h,cameraRoll:g,farDistance:_,...v}=n,y=I(p,v),b=u([c.x,c.y],[y.x,y.y]),x=z(c,y);if(!x)return;let S=B([c.x,c.y],[l.x,l.y],x);if(!S?.length)return;d.push({x:S[0],y:S[1]});let C=u([d[0].x,d[0].y],[d[1].x,d[1].y]),w=n.cameraLocation,T=Z(w.spatialReference),E=C*20*T/b;return a?W(E,f,d,n,0,1)?.value:E}async function Fe(e,n,r,i,a=!1,o=!1,s){let{attributes:c}=i,{location:l}=c,{updateElevationProps:d,...f}=n;if(!e||!n||e.length<2)throw Error(`Invalid parameters`);let p=J(e,a),[m,h]=[p[0],p.at(-1)],g=[m],_=l.clone();_.spatialReference.isGeographic&&(_=await y(_,x.WebMercator));let v=await j(m,{...f,cameraLocation:_},d);t(s);let b=v.clone();b.z?b.z+=20:b.z=20;let S=F(b,f),C=u([m.x,m.y],[S.x,S.y]),w=z(m,S);if(!w)return;let T=B([m.x,m.y],[h.x,h.y],w);if(!T?.length)return;g.push({x:T[0],y:T[1]});let E=u([g[0].x,g[0].y],[g[1].x,g[1].y]),D=n.cameraLocation,O=Z(D.spatialReference),k=E*20*O/C;return o?G(k,v,g,n,0,1)?.value:k}async function Ie(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await M(e,i,r);return I(s,o)}async function Le(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await j(e,i,r);return F(s,o)}async function Re(e,t,n=!1){if(e.length<3)return null;let r=await be(J(e,n),t),i=r.map(({x:e,y:t})=>[e,t]);i.push(i[0]);let a=r[0].spatialReference,o=new v({paths:[i],spatialReference:a}),s=new _({rings:[i],spatialReference:a});return a.isGeographic?V(a,o,s):a.isWebMercator?U(o,s):H(o,s)}async function ze(e,n,r=!1,i){if(e.length<3)return null;let a=await xe(J(e,r),n);t(i);let o=a.map(({x:e,y:t})=>[e,t]);o.push(o[0]);let s=a[0].spatialReference,c=new v({paths:[o],spatialReference:s}),l=new _({rings:[o],spatialReference:s});return s.isGeographic?V(s,c,l):s.isWebMercator?U(c,l):H(c,l)}async function Be(e,t,n=!1){return oe(Ce(await be(J(e,n),t)))}async function Ve(e,n,r=!1,i){let a=await xe(J(e,r),n);return t(i),oe(Ce(a))}async function Q(e,t){let n=c(),r=e.paths[0][0],i=t.paths[0][0],a,l;e.spatialReference.isWGS84||e.spatialReference.isWebMercator?(await D(),a=O(e),l=O(t)):(a=k(e),l=k(t));let u=ce(e.paths[0],a),d=ce(t.paths[0],l),f=He(u,d),[p,m,h]=u,[g,_,v]=d.map(e=>-e),[y,b,x]=f,[S,C,w]=[i[0]-r[0],i[1]-r[1],i[2]-r[2]];o(n,p,g,y,m,_,b,h,v,x);let T=s(n);if(T===0)return null;o(n,S,g,y,C,_,b,w,v,x);let E=s(n);o(n,p,S,y,m,C,b,h,w,x);let A=s(n);o(n,p,g,S,m,_,C,h,v,w);let j=s(n),M=E/T,ee=A/T,N=j/T;return{distance:Math.abs(N/Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2])),pointOnA:$(r,M,u),pointOnB:$(i,ee,d)}}function He(e,t){let n=l(),r=d(l(),e[0],e[1],e[2]),i=d(l(),t[0],t[1],t[2]),a=f(n,r,i);return[a[0],a[1],a[2]]}function $(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1],e[2]+t*n[2]]}export{z as calculateAngle,ie as calculateAnglePano,B as calculateCorrectedPixel,ae as calculateHeightFromTemporaryDistance,se as calculateLocationAccuracyFromDeviations,ue as calculateReferenceImagePointPanoramic,le as calculateTempImagePoint,de as calculateUpdatedWmsf,W as computeHeightIteratively,G as computeHeightIterativelyPanoramic,ve as computeTriangulatedAreaMeasurement,ge as computeTriangulatedDistanceMeasurement,_e as computeTriangulatedPoint,ye as computeTriangulatedVector,Se as copyToClipboard,J as formatPixels,Te as generateCombinations,Ee as generateCombinationsPanoramic,Oe as getConvertedArea,De as getConvertedDistance,we as getConvertedHeight,ke as getMeasurementProperties,Ae as getMeasurementPropertiesPanoramic,je as getModeCorrectedPoint,Me as getModeCorrectedPoints,Ne as getPixelLocationFromSphereVertices,X as getRootOfSumOfSquaredErrors,Z as getUnitRateFromSpatialReference,Pe as heightMeasurement2D,Fe as heightMeasurementPanoramic,Ie as imageToImageTransform,Le as imageToImageTransformPanoramic,Re as pixelAreaMeasurement2D,ze as pixelAreaMeasurementPanoramic,Be as pixelDistanceMeasurement2D,Ve as pixelDistanceMeasurementPanoramic,Q as solveSkewLinesIntersection};
2
+ import{rad2deg as e}from"../../core/mathUtils.js";import{throwIfAborted as t}from"../../core/promiseUtils.js";import{createArea as n,createLength as r}from"../../core/quantity.js";import{formatArea as i,formatLength as a}from"../../core/quantityFormatUtils.js";import{set as o,determinant as s}from"../../core/libs/gl-matrix-2/math/mat3.js";import{create as c}from"../../core/libs/gl-matrix-2/factories/mat3f64.js";import{zeros as l}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{distance as u}from"../../core/libs/gl-matrix-2/math/vec2.js";import{set as d,cross as f}from"../../core/libs/gl-matrix-2/math/vec3.js";import{isSupported as p,geodesicLengths as m,geodesicAreas as h}from"../../geometry/geodesicUtils.js";import g from"../../geometry/Point.js";import _ from"../../geometry/Polygon.js";import v from"../../geometry/Polyline.js";import{projectAsync as y,project as b}from"../../geometry/projectionUtils.js";import x from"../../geometry/SpatialReference.js";import{areaExecute as S}from"../../geometry/operators/areaOperator.js";import{geodeticAreaLoad as C,geodeticAreaExecute as w}from"../../geometry/operators/geodeticAreaOperator.js";import{geodeticDensifyLoad as T,geodeticDensifyExecute as E}from"../../geometry/operators/geodeticDensifyOperator.js";import{geodeticLengthLoad as D,geodeticLengthExecute as O}from"../../geometry/operators/geodeticLengthOperator.js";import{lengthExecute as k}from"../../geometry/operators/lengthOperator.js";import{simplifyExecute as A}from"../../geometry/operators/simplifyOperator.js";import{imageToWorldPanoramic as j,imageToWorld as M}from"../../layers/orientedImagery/transformations/imageToWorld.js";import{getUpdateElevationProps as N,convertSphereVertexToPixelLocation as P,getImageToWorldProperties as ee}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as F,worldToImage as I}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getPanoramicImageProperties as te}from"./panoramicImageProperties.js";const ne=1e5,L=`meters`,R=`square-meters`;function z(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function re(e,t){let n=Math.atan2(-e.y+t.y,e.x-t.x)*180/Math.PI;return n<0&&(n+=180),n*Math.PI/180}function B(e,t,n){if(!e?.length||!t?.length||!n)return;let[r,i]=e,[,a]=t,o=a-i;return[r+o*Math.cos(n),i+o*Math.sin(n)]}async function V(e,t,n){if(await T(),p(e)){let e=m([t],L)[0];return{area:h([n],R)[0],perimeter:e}}let r=x.WGS84,i=b(t,r),a=b(n,r),o=E(a,ne);if(o=o?A(o):null,!o)return null;let s=m([i],L)[0];return{area:h([o],R)[0],perimeter:s}}function ie(e,t,n=1){let r=Y(e,!1);return r?.length?u([r[0].x,r[0].y],[r.at(-1).x,r.at(-1).y])*20*n/t:void 0}async function H(e){await D();let t=e.spatialReference;if(t.isGeographic){if(p(t))return m([e],L)[0];let n=b(e,x.WGS84);return m([n],L)[0]}return t.isWebMercator?O(e,{unit:L}):k(e,{unit:L})}function ae(e){if(!e?.length)throw Error(`Invalid deviations array`);let[t,n,r]=[0,1,2].map(t=>e.map(e=>e[t]).filter(e=>e!==null)).map(e=>e.length?X(e):0);return[t,n,r]}function U(e,t){let n=A(t);if(!n)return null;let r=k(e,{unit:L});return{area:S(n,{unit:R}),perimeter:r}}function oe(e,t){return[(e[1][0]-e[0][0])/t,(e[1][1]-e[0][1])/t,(e[1][2]-e[0][2])/t]}async function W(e,t){await Promise.all([C(),T(),D()]);let n=E(t,ne);if(n=n?A(n):null,!n)return null;let r=O(e,{unit:L});return{area:w(n,{unit:R}),perimeter:r}}async function se(e,n,r){if(!n||!e)throw Error(`Missing required parameters`);let i=await M(e,n);t(r);let a=i.clone();a.z?a.z+=20:a.z=20;let{averageElevation:o,cameraPitch:s,cameraRoll:c,farDistance:l,...u}=n;return I(a,u)}async function ce(e,n,r,i){let{attributes:a}=r,{location:o}=a,{updateElevationProps:s,...c}=n;if(!e||!n)throw Error(`Missing parameters`);let l=o.clone();l.spatialReference.isGeographic&&(l=await y(l,x.WebMercator));let u=await j(e,{...c,cameraLocation:l},s);t(i);let d=u.clone();return d.z?d.z+=20:d.z=20,F(d,c)}function G(e,t,n,r,i=0,a=1,o){let{averageElevation:s,cameraPitch:c,cameraRoll:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=I(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return G(y,t,n,r,i+1,b)}function K(e,t,n,r,i=0,a=1,o){let{averageElevation:s,horizontalFieldOfView:c,verticalFieldOfView:l,farDistance:d,...f}=r;if(i>=5||a<=.1)return{value:e*Z(r.cameraLocation.spatialReference)};let p=new g({x:t.x,y:t.y,z:t.z?t.z+e:e,spatialReference:r.cameraLocation.spatialReference}),m=F(p,f),h=u([n[0].x,n[0].y],[m.x,m.y]),_=n.at(0),v=n.at(-1);if(!_||!v)return null;let y=u([_.x,_.y],[v.x,v.y])*e/h,b=Math.abs(e-y);return K(y,t,n,r,i+1,b)}async function q(e,t,n){return e.spatialReference&&!t.spatialReference.equals(e.spatialReference)&&(t=await y(t,e.spatialReference)),new v({paths:[[[e.x,e.y,e.z??0],[t.x,t.y,t.z??0]]],spatialReference:n})}function le(e){return 1/Math.cos(Math.PI/2-2*Math.atan(Math.exp(-1*e/6378137)))}function ue(e,t){return Math.sqrt((Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t)**2+(e[0][2]-e[1][2])**2)}function de(e,t){return Math.sqrt((e[0][0]-e[1][0])**2+(e[0][1]-e[1][1])**2)/t}function fe(t){return e(Math.atan((t[1][2]-t[0][2])/Math.sqrt((t[1][0]-t[0][0])**2+(t[1][1]-t[0][1])**2)))}function pe(t){let n=90-e(Math.atan2(t[1][1]-t[0][1],t[1][0]-t[0][0]));return n<0&&(n+=360),n}function J(e,t){return new g({x:(e.pointOnA[0]+e.pointOnB[0])/2,y:(e.pointOnA[1]+e.pointOnB[1])/2,z:(e.pointOnA[2]+e.pointOnB[2])/2,spatialReference:t})}async function me(e){if(e?.length===2){let t=[],n=1,[r,i]=e,a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let o=await Q(await q(r.camera,r.measurePoints[e],a),await q(i.camera,i.measurePoints[e],a));if(!o)return null;let s=J(o,a);s.spatialReference.isWebMercator&&(n=le(s.y)),t.push([s.x,s.y,s.z??0])}if(t?.length>1)return{distance:ue(t,n),horizontalDistance:de(t,n),verticalDistance:Math.abs(t[0][2]-t[1][2]),slope:fe(t),aspect:pe(t)}}return null}async function he(e){let t=e[0].camera.spatialReference;if(e?.length!==2)return null;let[n,r]=e,{camera:i,measurePoints:a}=n,{camera:o,measurePoints:s}=r,c=await Q(await q(i,a[0],t),await q(o,s[0],t));return c?J(c,t)??null:null}async function ge(e,t){if(!e?.length)return null;let n=[],r=e[0],i=e[1],a=r.camera.spatialReference,{measurePoints:o}=r;for(let e=0;e<o.length;e++){let t=await Q(await q(r.camera,r.measurePoints[e],a),await q(i.camera,i.measurePoints[e],a));if(!t)return null;let o=J(t,a);n.push([o.x,o.y,o.z??0])}if(n?.length<2)return null;let s=new v({paths:[n],spatialReference:t}),c=new _({rings:[n],spatialReference:t});return t.isGeographic?(await V(t,s,c))?.area??null:t.isWebMercator?(await W(s,c))?.area??null:U(s,c)?.area??null}function _e(e,t){return e?{camera:t.geometry.clone(),measurePoints:Array.isArray(e)?e:[e]}:null}async function ve(e,t){let{updateElevationProps:n,...r}=t;return await M(e,r,n)}async function ye(e,t){let{updateElevationProps:n,...r}=t;return j(e,r,n)}function be(e){navigator.clipboard.writeText(e).catch(e=>{throw e})}function xe(e){let t=e.map(e=>[e.x,e.y]),n=e[0].spatialReference;return new v({paths:[t],spatialReference:n})}function Y(e,t){return e.map(e=>({x:t?.5+e[0]:e[0],y:t?.5-e[1]:e[1]}))}function Se(e,t,n,i,o){let s=e===`measurement`?t:n;if(o&&s)return a(i,r(s,L),o,3)||null}function Ce(e,t,n,i,o){let s=e===`measurement`?t:X(n);if(o&&s)return a(i,r(s,L),o,3)||null}function we(e,t,r,a,o){let s=e===`measurement`?t:r;if(o&&s)return i(a,n(s,R),o,3)||null}function X(e){return Math.sqrt(e.reduce((e,t)=>e+t**2,0))}function Te(e,t,n,r){if(!e||!t)return;let{elevationSample:i,attributes:a}=e,{elevationSource:o,cameraHeight:s}=a,c={...ee(a,t[0],t[1]),cameraLocation:a.location},l=c.cameraLocation;return(l.spatialReference.isGeographic?y(l,x.WebMercator,{signal:r}):Promise.resolve(l)).then(e=>(l=e,N(l.spatialReference,l.z??0,s,{elevationSample:i,elevationSource:o,extent:n},{signal:r}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...c,cameraLocation:l,updateElevationProps:t}))}function Ee(e,t,n,r){if(!e||!t)return;let{elevationSample:i,attributes:a}=e,{elevationSource:o,cameraHeight:s}=a,c=te(a,t[0],t[1]),l=c.cameraLocation;return(l.spatialReference.isGeographic?y(l,x.WebMercator,{signal:r}):Promise.resolve(l)).then(e=>(l=e,N(l.spatialReference,l.z??0,s,{elevationSample:i,elevationSource:o,extent:n},{signal:r}))).then(t=>(`elevationSample`in t&&(e.elevationSample=t.elevationSample),{...c,cameraLocation:l,updateElevationProps:t}))}function De(e,t,n){if(t==="default")return e;let r={x:e[0],y:e[1],z:e[2]},i=P(r,n[0],n[1]);return[i.x,i.y]}function Z(e){return e.metersPerUnit}function Oe(e,t,n,r){let i=[];return i=t===`panoramic`?e.map(([e,t,i])=>{let{x:a,y:o}=P({x:e,y:t,z:i},n[0],n[1],r);return[a-.5,-.5-o]}):e.map(([e,t])=>[e-.5,-.5-t]),i}function ke(e,t,n){return e.map(e=>P({x:e[0],y:e[1],z:e[2]},t[0],t[1],n))}async function Ae(e,n,r,i=!1,a=!1,o){if(!e||!n||e.length<2)return null;let s=Y(e,i);if(!s||s.length<2)return null;let[c,l]=[s[0],s.at(-1)];if(!l)return null;let d=[c],f=await M(c,n);t(o);let p=f.clone();p.z?p.z+=20:p.z=20;let{averageElevation:m,cameraPitch:h,cameraRoll:g,farDistance:_,...v}=n,y=I(p,v),b=u([c.x,c.y],[y.x,y.y]),x=z(c,y);if(!x)return;let S=B([c.x,c.y],[l.x,l.y],x);if(!S?.length)return;d.push({x:S[0],y:S[1]});let C=u([d[0].x,d[0].y],[d[1].x,d[1].y]),w=n.cameraLocation,T=Z(w.spatialReference),E=C*20*T/b;return a?G(E,f,d,n,0,1)?.value:E}async function je(e,n,r,i,a=!1,o=!1,s){let{attributes:c}=i,{location:l}=c,{updateElevationProps:d,...f}=n;if(!e||!n||e.length<2)throw Error(`Invalid parameters`);let p=Y(e,a),[m,h]=[p[0],p.at(-1)],g=[m],_=l.clone();_.spatialReference.isGeographic&&(_=await y(_,x.WebMercator));let v=await j(m,{...f,cameraLocation:_},d);t(s);let b=v.clone();b.z?b.z+=20:b.z=20;let S=F(b,f),C=u([m.x,m.y],[S.x,S.y]),w=z(m,S);if(!w)return;let T=B([m.x,m.y],[h.x,h.y],w);if(!T?.length)return;g.push({x:T[0],y:T[1]});let E=u([g[0].x,g[0].y],[g[1].x,g[1].y]),D=n.cameraLocation,O=Z(D.spatialReference),k=E*20*O/C;return o?K(k,v,g,n,0,1)?.value:k}async function Me(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await M(e,i,r);return I(s,o)}async function Ne(e,t,n){let{updateElevationProps:r,...i}=t,{updateElevationProps:a,...o}=n,s=await j(e,i,r);return F(s,o)}async function Pe(e,t,n=!1){if(e.length<3)return null;let r=await ve(Y(e,n),t),i=r.map(({x:e,y:t})=>[e,t]);i.push([...i[0]]);let a=r[0].spatialReference,o=new v({paths:[i],spatialReference:a}),s=new _({rings:[i],spatialReference:a});return a.isGeographic?V(a,o,s):a.isWebMercator?W(o,s):U(o,s)}async function Fe(e,n,r=!1,i){if(e.length<3)return null;let a=await ye(Y(e,r),n);t(i);let o=a.map(({x:e,y:t})=>[e,t]);o.push([...o[0]]);let s=a[0].spatialReference,c=new v({paths:[o],spatialReference:s}),l=new _({rings:[o],spatialReference:s});return s.isGeographic?V(s,c,l):s.isWebMercator?W(c,l):U(c,l)}async function Ie(e,t,n=!1){return H(xe(await ve(Y(e,n),t)))}async function Le(e,n,r=!1,i){let a=await ye(Y(e,r),n);return t(i),H(xe(a))}async function Q(e,t){let n=c(),r=e.paths[0][0],i=t.paths[0][0],a,l;e.spatialReference.isWGS84||e.spatialReference.isWebMercator?(await D(),a=O(e),l=O(t)):(a=k(e),l=k(t));let u=oe(e.paths[0],a),d=oe(t.paths[0],l),f=Re(u,d),[p,m,h]=u,[g,_,v]=d.map(e=>-e),[y,b,x]=f,[S,C,w]=[i[0]-r[0],i[1]-r[1],i[2]-r[2]];o(n,p,g,y,m,_,b,h,v,x);let T=s(n);if(T===0)return null;o(n,S,g,y,C,_,b,w,v,x);let E=s(n);o(n,p,S,y,m,C,b,h,w,x);let A=s(n);o(n,p,g,S,m,_,C,h,v,w);let j=s(n),M=E/T,N=A/T,P=j/T;return{distance:Math.abs(P/Math.sqrt(f[0]*f[0]+f[1]*f[1]+f[2]*f[2])),pointOnA:$(r,M,u),pointOnB:$(i,N,d)}}function Re(e,t){let n=l(),r=d(l(),e[0],e[1],e[2]),i=d(l(),t[0],t[1],t[2]),a=f(n,r,i);return[a[0],a[1],a[2]]}function $(e,t,n){return[e[0]+t*n[0],e[1]+t*n[1],e[2]+t*n[2]]}export{z as calculateAngle,re as calculateAnglePano,B as calculateCorrectedPixel,ie as calculateHeightFromTemporaryDistance,ae as calculateLocationAccuracyFromDeviations,ce as calculateReferenceImagePointPanoramic,se as calculateTempImagePoint,le as calculateUpdatedWmsf,G as computeHeightIteratively,K as computeHeightIterativelyPanoramic,ge as computeTriangulatedAreaMeasurement,me as computeTriangulatedDistanceMeasurement,he as computeTriangulatedPoint,_e as computeTriangulatedVector,be as copyToClipboard,Y as formatPixels,we as getConvertedArea,Ce as getConvertedDistance,Se as getConvertedHeight,Te as getMeasurementProperties,Ee as getMeasurementPropertiesPanoramic,De as getModeCorrectedPoint,Oe as getModeCorrectedPoints,ke as getPixelLocationFromSphereVertices,X as getRootOfSumOfSquaredErrors,Z as getUnitRateFromSpatialReference,Ae as heightMeasurement2D,je as heightMeasurementPanoramic,Me as imageToImageTransform,Ne as imageToImageTransformPanoramic,Pe as pixelAreaMeasurement2D,Fe as pixelAreaMeasurementPanoramic,Ie as pixelDistanceMeasurement2D,Le as pixelDistanceMeasurementPanoramic,Q as solveSkewLinesIntersection};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
+ import{createRotationMatrixFromHPR as e}from"../../layers/orientedImagery/transformations/rotationUtils.js";function t(e){return e>0?[-e,0,e]:[0]}function n(n,r,i){let{cameraPitch:a,cameraRoll:o,cameraLocation:s}=n,{x:c,y:l,z:u,spatialReference:d}=s;if(r.every(e=>e===0)||!r||!r.length||!d)throw Error(`Invalid parameters`);let[f,p,m,h,g]=r,_=t(m),v=t(h),y=t(g),b=t(f),x=t(p),S=[];for(let t of v)for(let r of y)for(let s of b)for(let f of b)for(let p of x)for(let m of _){let h={...n};h.cameraPitch=a+t,h.cameraRoll=o+r,h.rotationMatrix=e([i+m,h.cameraPitch,h.cameraRoll]),h.cameraLocation={x:c+s,y:l+f,z:u?u+p:0,spatialReference:{wkid:d.wkid}},S.push(h)}return S}function r(e,n){let{cameraHeading:r,cameraLocation:i}=e,{x:a,y:o,z:s,spatialReference:c}=i;if(!n||n.every(e=>e===0)||!n.length||!c)throw Error(`Invalid parameters`);let[l,u,d]=n,f=t(d),p=t(l),m=t(u),h=[];for(let t of f)for(let n of p)for(let i of p)for(let l of m){let u={...e};u.cameraHeading=r+t,u.cameraLocation={x:a+n,y:o+i,z:s?s+l:0,spatialReference:{wkid:c.wkid}},h.push(u)}return h}export{n as generateCombinations,r as generateCombinationsPanoramic};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{throwIfAborted as e}from"../../../core/promiseUtils.js";import{open as t}from"../../../core/workers.js";import n from"../../../geometry/Point.js";import{projectAsync as r}from"../../../geometry/projectionUtils.js";import{imageToWorld as i,imageToWorldPanoramic as a}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import{convertSphereVertexToPixelLocation as o}from"../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as s,pixelAreaMeasurement2D as c,pixelDistanceMeasurement2D as l,getRootOfSumOfSquaredErrors as u,heightMeasurementPanoramic as d,heightMeasurement2D as f,getMeasurementPropertiesPanoramic as p,calculateLocationAccuracyFromDeviations as m,pixelAreaMeasurementPanoramic as h,pixelDistanceMeasurementPanoramic as g,computeTriangulatedAreaMeasurement as _,computeTriangulatedDistanceMeasurement as v,getModeCorrectedPoints as y,computeTriangulatedVector as b}from"../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as x}from"../utils.js";class S{constructor(e){this.referenceTransformationService=null,this.measurementVectors=[],this._connection=null,this.transformationService=e.transformationService,this.referenceTransformationService=e.referenceTransformationService}async _load(){this._connection??=await t(`ImageMeasurementWorker`)}async calculateAccuracy(t){await this._load();let{measurementArray:r,measurementType:i,currentBestFeature:a,currentBestFeatureMeasurementImage:o,activeViewer:d,imageSize:f,triangularMeasurementActive:p,footprintExtent:m,signal:h}=t,g=p&&o&&f?o:a,_=g?.attributes.orientationAccuracy,v=!_||_.every(e=>e===0);if(i===`area`&&r.length<3||i===`distance`&&r.length<2||!a||!d?.imageSize||v)return null;let y=null;if(p&&o&&f?y=await s(o,f,m):(y=await s(a,d?.imageSize,m),e(h)),!y)return null;let b=i===`area`?await c(r,y,!0):await l([r.at(0),r.at(-1)],y,!0);e(h);let{updateElevationProps:x}=y,S=this.getWorkerMethodProps(y,_,g.attributes.cameraHeading),C=await this._connection?.invoke(`generateCombinationsWorker`,S,{signal:h});if(e(h),!C?.length)return null;let w=C.map(async t=>{let a={...t,cameraLocation:new n(t.cameraLocation),updateElevationProps:x},o=i===`area`?await c(r,a,!0):await l([r.at(0),r.at(-1)],a,!0);if(e(h),o&&b){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-b.area):null}return Math.abs(o-b)}return null}),T=await Promise.all(w);e(h);let E=T.filter(e=>e!==null);return E.length===0?null:u(E)}async calculateHeightAccuracy(e){await this._load();let{mode:t,pixelObj:n,accuracyParameters:r,height:i,properties:a,currentBestFeature:o,signal:s}=e;return t===`panoramic`?this.calculateHeightAccuracyPanoramic(r,n,a,i,o,s):this.calculateHeightAccuracy2D(r,n,a,i,o.attributes.cameraHeading,s)}async calculateHeightAccuracyPanoramic(t,r,i,a,o,s){if(r.length<2||!a||!i||!t||!o)throw Error(`Missing parameters`);let c=this.getWorkerMethodProps(i,t,i.cameraHeading),l=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,c,{signal:s});if(e(s),!l?.length)return null;let u=r.map(e=>[e.x,e.y]),f=u.at(0),p=u.at(-1),m=l.map(e=>(e.cameraLocation=new n(e.cameraLocation),d([f,p],e,t,o,!0,!1,s))),h=await Promise.all(m);e(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateHeightAccuracy2D(t,r,i,a,o,s){if(r.length<2||!a||!i||!t)throw Error(`Missing parameters`);let c=this.getWorkerMethodProps(i,t,o),l=await this._connection?.invoke(`generateCombinationsWorker`,c,{signal:s});if(e(s),!l?.length)return null;let u=r.map(e=>[e.x,e.y]),d=u.at(0),p=u.at(-1);if(!d||!p)return null;let m=l.map(e=>(e.cameraLocation=new n(e.cameraLocation),f([d,p],e,t,!0,!1,s))),h=await Promise.all(m);e(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateLocationAccuracy(t){await this._load();let{pixel:o,currentResult:c,currentBestFeature:l,mode:u,activeViewer:d,footprintExtent:f,accuracyParameters:h,viewSpatialReference:g,signal:_}=t,v=u??`default`,y=g??null,b=v==="default"?await s(l,d?.imageSize,f):await p(l,d?.imageSize,f);if(e(_),!b)return null;let{updateElevationProps:x}=b,S=v==="default"?`generateCombinationsWorker`:`generateCombinationsPanoramicWorker`,C=this.getWorkerMethodProps(b,h,l.attributes.cameraHeading),w=await this._connection?.invoke(S,C,{signal:_});if(e(_),!w?.length)return null;let T=w.map(async t=>{let{...s}={...t,cameraLocation:new n(t.cameraLocation)},l=v==="default"?await i(o,s,x):await a(o,s,x);return e(_),y&&!l.spatialReference.equals(y)&&(l=await r(l,y),e(_)),l&&c?[Math.abs(l.x-c.x),Math.abs(l.y-c.y),l.z&&c.z?Math.abs(l.z-c.z):0]:null}),E=await Promise.all(T);if(e(_),!E?.length)return null;let D=E.map(e=>[e?.[0]??0,e?.[1]??0,e?.[2]??0]),[O,k,A]=m(D);return{x:O,y:k,z:A}}async calculateAccuracyPanoramic(t){await this._load();let{measurementArray:r,measurementType:i,secondaryViewer:a,currentBestFeature:o,currentBestFeatureMeasurementImage:s,activeViewer:c,activeTriangulatedViewer:l,footprintExtent:d,signal:f}=t,m=a??!1,_=(m&&s&&l?.imageSize?s:o)?.attributes.orientationAccuracy,v=!_||_.every(e=>e===0);if(i===`area`&&r.length<3||i===`distance`&&r.length<2||!o||!c?.imageSize||v)return null;let y=l?.imageSize,b=m&&s&&y?await p(s,y,d):await p(o,c?.imageSize,d);if(e(f),!b)return null;let x=i===`area`?await h(r,b,!0):await g([r.at(0),r.at(-1)],b,!0);e(f);let{updateElevationProps:S}=b,C=this.getWorkerMethodProps(b,_,b.cameraHeading),w=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,C,{signal:f});if(e(f),!w?.length)return null;let T=w.map(async t=>{let a={...t,cameraLocation:new n(t.cameraLocation),updateElevationProps:S},o=i===`area`?await h(r,a,!0):await g([r.at(0),r.at(-1)],a,!0);if(e(f),o&&x){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-x.area):null}return Math.abs(o-x)}return null}),E=await Promise.all(T);e(f);let D=E.filter(e=>e!==null);return D.length===0?null:u(D)}async calculateTriangulatedMeasurements(e){let{pixels:t,measureType:n,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:s,mode:c,imageSize:l,footprintExtent:u}=e;if(!s?.imageSize)return;let[d,f]=s.imageSize;switch(n){case`distance`:{let e=await v(this.measurementVectors),n=t.map(([e,t,n])=>o({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),p={measurementArray:t,measurementType:`distance`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},m={measurementArray:n,measurementType:`distance`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:s,footprintExtent:u},h=c==="default"?await this.calculateAccuracy(p):await this.calculateAccuracyPanoramic(m);if(h&&e?.distance)return{distance:e,accuracy:{distanceAccuracy:h,angleAccuracy:Math.atan(h/e.distance)}};break}case`area`:if(i?.geometry.spatialReference){let e=await _(this.measurementVectors,i.geometry.spatialReference),n=null;if(c==="default"){let e={measurementArray:t,measurementType:`area`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},o=await this.calculateAccuracy(e);o&&(n=o)}else if(c===`panoramic`){let e={measurementArray:t.map(([e,t,n])=>o({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),measurementType:`area`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:s,footprintExtent:u},c=await this.calculateAccuracyPanoramic(e);c&&(n=c)}return{area:e,accuracy:n}}}c===`panoramic`&&s.viewModel.restoreNavigationHandles()}async computeMeasurementVector(e){let{pixels:t,activeFeature:n,activeViewer:i,mode:a,spatialReference:o}=e,s=i?.imageSize,c=x(i?.media);if(!t||!n||!s)return;let l=y(t,a,s,c).map(async e=>{let t={x:e[0],y:e[1]},n=null;return n=this.measurementVectors.length===0?await this.transformationService.pixelToMapPoint(t):await this.referenceTransformationService?.pixelToMapPoint(t),n?(o&&!n.spatialReference.equals(o)&&(n=await r(n,o)),n):null}),u=(await Promise.all(l)).filter(e=>e!==null);return b(u,n)}resetMeasurementVectors(){this.measurementVectors=[]}async updateMeasurementVectorsArray(e){let{activeFeature:t}=e;if(t){let t=await this.computeMeasurementVector(e);t&&this.measurementVectors.push(t)}}getWorkerMethodProps(e,t,n){let{updateElevationProps:r,...i}=e;return{imageToWorldProps:{...i,cameraLocation:i.cameraLocation.toJSON()},accuracyParameters:t,cameraHeading:n}}}export{S as ImageMeasurementService};
2
+ import e from"../../../core/Logger.js";import{throwIfAborted as t}from"../../../core/promiseUtils.js";import{open as n}from"../../../core/workers.js";import r from"../../../geometry/Point.js";import{projectAsync as i}from"../../../geometry/projectionUtils.js";import{imageToWorld as a,imageToWorldPanoramic as o}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import{convertSphereVertexToPixelLocation as s}from"../../../layers/orientedImagery/transformations/utils.js";import{getMeasurementProperties as c,pixelAreaMeasurement2D as l,pixelDistanceMeasurement2D as u,getRootOfSumOfSquaredErrors as d,heightMeasurementPanoramic as f,heightMeasurement2D as p,getMeasurementPropertiesPanoramic as m,calculateLocationAccuracyFromDeviations as h,pixelAreaMeasurementPanoramic as g,pixelDistanceMeasurementPanoramic as _,computeTriangulatedAreaMeasurement as v,computeTriangulatedDistanceMeasurement as y,getModeCorrectedPoints as b,computeTriangulatedVector as x}from"../imageMeasurementUtils.js";import{extractHorizonAnglesFromMedia as S}from"../utils.js";class C{constructor(t){this.referenceTransformationService=null,this.measurementVectors=[],this._connection=null,this._loadPromise=null,this.transformationService=t.transformationService,this.referenceTransformationService=t.referenceTransformationService,this._load().catch(t=>{e.getLogger(`esri.widgets.OrientedImageryViewer.services.ImageMeasurementService`).warn(`oriented-imagery-viewer:measurement-worker-warmup-failed`,t)})}async _load(){return this._connection?this._connection:(this._loadPromise??=n(`ImageMeasurementWorker`).catch(e=>{throw this._loadPromise=null,e}),this._connection=await this._loadPromise,this._connection)}getCachedMeasurementProperties(e,t,n=!1){if(!t)return null;let r=n?this.referenceTransformationService:this.transformationService,{imageToWorldProperties:i,imageSize:a,updateElevationProps:o}=r??{};return!r||!i||!a||r.mode!==e||a[0]!==t[0]||a[1]!==t[1]?null:{...i,updateElevationProps:o}}async calculateAccuracy(e){let{measurementArray:n,measurementType:i,currentBestFeature:a,currentBestFeatureMeasurementImage:o,activeViewer:s,imageSize:f,triangularMeasurementActive:p,footprintExtent:m,signal:h}=e,g=p&&o&&f?o:a,_=g?.attributes.orientationAccuracy,v=!_||_.every(e=>e===0);if(i===`area`&&n.length<3||i===`distance`&&n.length<2||!a||!s?.imageSize||v)return null;await this._load(),t(h);let y=p&&!!o&&!!f,b=y?o:a,x=y?f:s.imageSize,S=this.getCachedMeasurementProperties(`default`,x,y)??await c(b,x,m,h);if(t(h),!S)return null;let C=i===`area`?await l(n,S,!0):await u([n.at(0),n.at(-1)],S,!0);t(h);let{updateElevationProps:w}=S,T=this.getWorkerMethodProps(S,_,g.attributes.cameraHeading),E=await this._connection?.invoke(`generateCombinationsWorker`,T,{signal:h});if(t(h),!E?.length)return null;let D=E.map(async e=>{let a={...e,cameraLocation:new r(e.cameraLocation),updateElevationProps:w},o=i===`area`?await l(n,a,!0):await u([n.at(0),n.at(-1)],a,!0);if(t(h),o&&C){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-C.area):null}return Math.abs(o-C)}return null}),O=await Promise.all(D);t(h);let k=O.filter(e=>e!==null);return k.length===0?null:d(k)}async calculateHeightAccuracy(e){let{mode:t,pixelObj:n,accuracyParameters:r,height:i,properties:a,currentBestFeature:o,signal:s}=e;return t===`panoramic`?this.calculateHeightAccuracyPanoramic(r,n,a,i,o,s):this.calculateHeightAccuracy2D(r,n,a,i,o.attributes.cameraHeading,s)}async calculateHeightAccuracyPanoramic(e,n,i,a,o,s){if(n.length<2||!a||!i||!e||!o)throw Error(`Missing parameters`);await this._load(),t(s);let c=this.getWorkerMethodProps(i,e,i.cameraHeading),l=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,c,{signal:s});if(t(s),!l?.length)return null;let u=n.map(e=>[e.x,e.y]),d=u.at(0),p=u.at(-1),m=l.map(t=>(t.cameraLocation=new r(t.cameraLocation),f([d,p],t,e,o,!0,!1,s))),h=await Promise.all(m);t(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateHeightAccuracy2D(e,n,i,a,o,s){if(n.length<2||!a||!i||!e)throw Error(`Missing parameters`);await this._load(),t(s);let c=this.getWorkerMethodProps(i,e,o),l=await this._connection?.invoke(`generateCombinationsWorker`,c,{signal:s});if(t(s),!l?.length)return null;let u=n.map(e=>[e.x,e.y]),d=u.at(0),f=u.at(-1);if(!d||!f)return null;let m=l.map(t=>(t.cameraLocation=new r(t.cameraLocation),p([d,f],t,e,!0,!1,s))),h=await Promise.all(m);t(s);let g=0;for(let e of h){if(!e)return 0;let t=Math.abs(e-a);g=Math.max(t,g)}return g}async calculateLocationAccuracy(e){let{pixel:n,currentResult:s,currentBestFeature:l,mode:u,activeViewer:d,footprintExtent:f,accuracyParameters:p,viewSpatialReference:g,signal:_}=e,v=u??`default`,y=g??null,b=v==="default"?await c(l,d?.imageSize,f,_):await m(l,d?.imageSize,f,_);if(t(_),!b)return null;await this._load(),t(_);let{updateElevationProps:x}=b,S=v==="default"?`generateCombinationsWorker`:`generateCombinationsPanoramicWorker`,C=this.getWorkerMethodProps(b,p,l.attributes.cameraHeading),w=await this._connection?.invoke(S,C,{signal:_});if(t(_),!w?.length)return null;let T=w.map(async e=>{let{...c}={...e,cameraLocation:new r(e.cameraLocation)},l=v==="default"?await a(n,c,x):await o(n,c,x);return t(_),y&&!l.spatialReference.equals(y)&&(l=await i(l,y),t(_)),l&&s?[Math.abs(l.x-s.x),Math.abs(l.y-s.y),l.z&&s.z?Math.abs(l.z-s.z):0]:null}),E=await Promise.all(T);if(t(_),!E?.length)return null;let D=E.map(e=>[e?.[0]??0,e?.[1]??0,e?.[2]??0]),[O,k,A]=h(D);return{x:O,y:k,z:A}}async calculateAccuracyPanoramic(e){let{measurementArray:n,measurementType:i,secondaryViewer:a,currentBestFeature:o,currentBestFeatureMeasurementImage:s,activeViewer:c,activeTriangulatedViewer:l,footprintExtent:u,signal:f}=e,p=a??!1,h=(p&&s&&l?.imageSize?s:o)?.attributes.orientationAccuracy,v=!h||h.every(e=>e===0);if(i===`area`&&n.length<3||i===`distance`&&n.length<2||!o||!c?.imageSize||v)return null;await this._load(),t(f);let y=l?.imageSize,b=p&&!!s&&!!y,x=b?s:o,S=b?y:c.imageSize,C=this.getCachedMeasurementProperties(`panoramic`,S,b)??await m(x,S,u,f);if(t(f),!C)return null;let w=i===`area`?await g(n,C,!0):await _([n.at(0),n.at(-1)],C,!0);t(f);let{updateElevationProps:T}=C,E=this.getWorkerMethodProps(C,h,C.cameraHeading),D=await this._connection?.invoke(`generateCombinationsPanoramicWorker`,E,{signal:f});if(t(f),!D?.length)return null;let O=D.map(async e=>{let a={...e,cameraLocation:new r(e.cameraLocation),updateElevationProps:T},o=i===`area`?await g(n,a,!0):await _([n.at(0),n.at(-1)],a,!0);if(t(f),o&&w){if(i===`area`){let e=typeof o==`number`?null:o.area;return e?Math.abs(e-w.area):null}return Math.abs(o-w)}return null}),k=await Promise.all(O);t(f);let A=k.filter(e=>e!==null);return A.length===0?null:d(A)}async calculateTriangulatedMeasurements(e){let{pixels:t,measureType:n,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,mode:c,imageSize:l,footprintExtent:u}=e;if(!o?.imageSize)return;let[d,f]=o.imageSize;switch(n){case`distance`:{let e=await y(this.measurementVectors),n=t.map(([e,t,n])=>s({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),p={measurementArray:t,measurementType:`distance`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},m={measurementArray:n,measurementType:`distance`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,footprintExtent:u},h=c==="default"?await this.calculateAccuracy(p):await this.calculateAccuracyPanoramic(m);if(h&&e?.distance)return{distance:e,accuracy:{distanceAccuracy:h,angleAccuracy:Math.atan(h/e.distance)}};break}case`area`:if(i?.geometry.spatialReference){let e=await v(this.measurementVectors,i.geometry.spatialReference),n=null;if(c==="default"){let e={measurementArray:t,measurementType:`area`,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,imageSize:l,triangularMeasurementActive:!0,footprintExtent:u},o=await this.calculateAccuracy(e);o&&(n=o)}else if(c===`panoramic`){let e={measurementArray:t.map(([e,t,n])=>s({x:e,y:t,z:n},d,f)).map(({x:e,y:t})=>[e,t]),measurementType:`area`,secondaryViewer:!0,currentBestFeature:r,currentBestFeatureMeasurementImage:i,activeViewer:a,activeTriangulatedViewer:o,footprintExtent:u},c=await this.calculateAccuracyPanoramic(e);c&&(n=c)}return{area:e,accuracy:n}}}c===`panoramic`&&o.viewModel.restoreNavigationHandles()}async computeMeasurementVector(e){let{pixels:t,activeFeature:n,activeViewer:r,mode:a,spatialReference:o}=e,s=r?.imageSize,c=S(r?.media);if(!t||!n||!s)return;let l=b(t,a,s,c).map(async e=>{let t={x:e[0],y:e[1]},n=null;return n=this.measurementVectors.length===0?await this.transformationService.pixelToMapPoint(t):await this.referenceTransformationService?.pixelToMapPoint(t),n?(o&&!n.spatialReference.equals(o)&&(n=await i(n,o)),n):null}),u=(await Promise.all(l)).filter(e=>e!==null);return x(u,n)}resetMeasurementVectors(){this.measurementVectors=[]}async updateMeasurementVectorsArray(e){let{activeFeature:t}=e;if(t){let t=await this.computeMeasurementVector(e);t&&this.measurementVectors.push(t)}}getWorkerMethodProps(e,t,n){let{updateElevationProps:r,...i}=e;return{imageToWorldProps:{...i,cameraLocation:i.cameraLocation.toJSON()},accuracyParameters:t,cameraHeading:n}}}export{C as ImageMeasurementService};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../Graphic.js";import{createTask as t}from"../../../core/asyncUtils.js";import n from"../../../core/Collection.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import a from"../../../geometry/Mesh.js";import{projectAsync as o}from"../../../geometry/projectionUtils.js";import s from"../../../geometry/support/MeshComponent.js";import c from"../../../geometry/support/MeshMaterial.js";import l from"../../../geometry/support/MeshTexture.js";import u from"../../../geometry/support/MeshVertexAttributes.js";import{imageToWorldPanoramic as d}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import f from"../../../symbols/FillSymbol3DLayer.js";import p from"../../../symbols/MeshSymbol3D.js";import{calculateUpdatedWmsf as m}from"../imageMeasurementUtils.js";import{validateTifOrMrfExtension as h}from"../utils.js";import g from"../support/resolveMediaProps.js";import{computeDefaultAreaOfInterest as _,getBaseRasterLevel as v,computePanoramicAreasOfInterest as y,applySphereMeshOffsetInMeters as b,getRasterFetchParameters as x,getRasterLevelSize as S,getViewDependentRasterLevel as C,clampRasterLevelForTextureSize as w,createSuperimposeGridVertexAttributes as T,createSuperimposeSamplePixels as E}from"../support/superimposeUtils.js";const D=[255,255,255,255];class O{constructor(e){this._properties=e,this._cachedBaseTexture=null,this._cachedPanoramicRadiusObjectId=null,this._defaultGraphicProperties=null,this._defaultZOffsetPercentage=0,this._defaultCameraFeature=null,this._graphics=[],this._panoramicRadiusOffsetInMeters=0,this._panoramicRadiusOffsetPercentage=0,this._panoramicRadiusOffsetRangeInMeters=0,this._panoramicNavigationFeature=null,this._rasterTextureCacheFeature=null,this._rasterTextureFetchCache=new Map,this._task=null}clear(){this._destroyGraphics(this._graphics,!0),this._cachedBaseTexture=null,this._cachedPanoramicRadiusObjectId=null,this._defaultGraphicProperties=null,this._defaultZOffsetPercentage=0,this._defaultCameraFeature=null,this._graphics=[],this._panoramicRadiusOffsetInMeters=0,this._panoramicRadiusOffsetPercentage=0,this._panoramicRadiusOffsetRangeInMeters=0,this._panoramicNavigationFeature=null,this._rasterTextureCacheFeature=null,this._rasterTextureFetchCache.clear()}destroy(){this._task=this._task?.abort()??null,this.clear()}update(e){this._task?.abort(),this._task=t(async t=>{if(!this._canUpdate(e)){this._resetInactiveState(e.adapter);return}let n=!1,r=[];try{await this._updateDefaultCameraIfNeeded(e,t),this._resetRasterTextureCacheIfNeeded(e.currentBestFeature);let a=await this._resolveMedia(e,t);if(!a||({graphics:r}=await this._createGraphics(e,a,t),!r.length))return;await this._updateNavigation(e,t),e.mode===`panoramic`&&await this._applyPersistentPanoramicRadiusOffset(r,e.currentBestFeature,e.view,t),i(t),this._replaceGraphics(r,e.mode),n=!0}finally{n||this._destroyGraphics(r,!1)}})}_canUpdate(e){return e.superimposeViewEnabled&&e.state===`image-loaded`&&e.view?.type===`3d`&&!!e.currentBestFeature&&!!e.layer&&[`default`,`panoramic`].includes(e.mode)}_resetInactiveState(e){e?.disableDefaultSuperimposeNavigation?.(),e?.disablePanoramicSuperimposeNavigation?.(),this.clear()}async _updateDefaultCameraIfNeeded(e,t){let{currentBestFeature:n,mode:r}=e;if(n&&r==="default"&&this._shouldUpdateDefaultCamera(r,n)){await e.adapter?.updateDefaultSuperimposeCamera?.({currentBestFeature:n},{signal:t}),i(t),this._defaultCameraFeature=n;return}}async _resolveMedia(e,t){let{currentBestFeature:n,layer:r,mode:a,view:o}=e;if(!n||!r||!o||a!=="default"&&a!==`panoramic`)return null;let s=await g(n.attributes,r,{signal:t});if(i(t),!s?.mediaUrl)return null;if(!h(s.datasetFormat))return this._resolveNonRasterMedia(s);let c=await this._resolveRasterMedia(s,o,t);if(!c)return null;switch(a){case`default`:{let n=await this._resolveDefaultAreaOfInterest(e,s,t);return this._resolveDefaultRasterMedia(c,n,o,t)}case`panoramic`:return this._resolvePanoramicRasterMedia(c,e,t)}}_resolveNonRasterMedia(e){return{areaOfInterest:null,textureUrl:this._resolveTextureUrl(e)}}async _resolveDefaultAreaOfInterest(e,t,n){let{activeImageSize:r,currentBestFeature:a,mode:o,view:s}=e;if(o!=="default"||!r||!a||!s||!h(t.datasetFormat))return null;let c=await _(a,s,r,this._properties.pointToPixel,{signal:n});return i(n),c}async _resolveRasterMedia(e,t,n){let r=await this._loadRaster(e,{signal:n});if(i(n),!r)return null;let a=v(r,t),o=this._cachedBaseTexture;if(!o){let e=await this._createRasterTexture(r,null,a,{signal:n});i(n),e&&(o=e,this._cachedBaseTexture=e)}return o?{baseLevel:a,baseTexture:o,raster:r}:null}async _resolveDefaultRasterMedia(e,t,n,r){let{baseLevel:a,baseTexture:o,raster:s}=e;if(!t)return{areaOfInterest:null,baseTexture:o,raster:s,texture:o};let c=v(s,n,t),l=await this._createCompositedDefaultRasterTexture(s,t,c,a,{signal:r});return i(r),{areaOfInterest:t,baseTexture:o,overlayTexture:l,raster:s,texture:l??o}}async _resolvePanoramicRasterMedia(e,t,n){let{activeImageSize:r,currentBestFeature:a,view:o}=t,{baseTexture:s,raster:c}=e;if(!r||!a||!o)return{areaOfInterest:null,baseTexture:s,panoramicAreasOfInterest:void 0,raster:c,texture:s};let l=await y(a,o,r,this._properties.pointToPixel,{signal:n});i(n);let u=await this._createPanoramicRasterTexture(c,a,o,r,l,{signal:n})??s;return i(n),{areaOfInterest:null,baseTexture:s,panoramicAreasOfInterest:l,raster:c,texture:u}}async _createGraphics(e,t,n){switch(e.mode){case`default`:return this._createDefaultGraphics(e,t,n);case`panoramic`:return this._createPanoramicGraphics(e,t,n)}return{graphics:[]}}async _createDefaultGraphics(e,t,n){let r=await this._createAndDrapeDefaultGraphic(e,n,{texture:t.texture,textureUrl:t.textureUrl});return{graphics:r?[r]:[]}}async _createAndDrapeDefaultGraphic(e,t,n){let{activeImageSize:r,currentBestFeature:a,depthImageLoaded:o,view:s}=e,{areaOfInterest:c,texture:l,textureUrl:u}=n;if(!r||s?.type!==`3d`||!a)return null;let d=await this._createDefaultGraphic({areaOfInterest:c,currentBestFeature:a,depthImageLoaded:o,imageSize:r,signal:t,texture:l,textureUrl:u,view:s});if(!d)return null;let f=await this._resolveDefaultMeshPosition(d,r,s,a,c,t,100),p=await this._resolveDefaultMeshPosition(d,r,s,a,c,t,0);return i(t),this._defaultGraphicProperties={areaOfInterest:c??null,currentBestFeature:a,farPosition:p??(d.geometry?.type===`mesh`?d.geometry.vertexAttributes.position.slice():new Float64Array),imageSize:r,nearPosition:f,view:s},d}async _createPanoramicGraphics(e,t,n){let r=await this._createPanoramicSuperimposeGraphic(e,t,n,null);return{graphics:r?[r]:[]}}async _createPanoramicSuperimposeGraphic(e,t,n,r){let{activeImageSize:i,currentBestFeature:a,view:o}=e;return o?this._createPanoramicGraphic({areaOfInterest:r,currentBestFeature:a??void 0,imageSize:i,signal:n,texture:t.texture,textureUrl:t.textureUrl,view:o}):null}async _updateNavigation(e,t){let{currentBestFeature:n,mode:r,view:i}=e;if(n&&i&&i.type===`3d`)switch(r){case`default`:this._updateDefaultNavigation(e);return;case`panoramic`:await this._updatePanoramicNavigation(e,n,i,t);return}}_updateDefaultNavigation(e){this._updateDefaultSuperimposeNavigation(e.adapter,e.defaultSuperimposeCameraLockEnabled)}async _updatePanoramicNavigation(e,t,n,r){e.adapter?.disableDefaultSuperimposeNavigation?.();let a=t===this._panoramicNavigationFeature?n.camera:e.panoramicCamera??n.camera;a&&this._shouldUpdatePanoramicCamera(e.mode,t)&&(e.adapter?.disablePanoramicSuperimposeNavigation?.(),await e.adapter?.updatePanoramicSuperimposeCamera?.({camera:a,currentBestFeature:t},{signal:r}),i(r)),this._panoramicNavigationFeature=t}_replaceGraphics(e,t){if(t===`panoramic`&&this._updatePanoramicGraphicInPlace(e))return;let n=this._graphics;this._graphics=e,this._properties.overlays.addMany(e),this._destroyGraphics(n,!0)}_updatePanoramicGraphicInPlace(e){if(this._graphics.length!==1||e.length!==1)return!1;let t=this._graphics[0],n=e[0];return!t||!n?!1:(t.geometry=n.geometry,t.symbol=n.symbol,t.visible=n.visible,n.geometry=null,n.symbol=null,r(n),!0)}_destroyGraphics(e,t){e.length&&(t&&this._properties.overlays.removeMany(e),e.forEach(e=>r(e)))}_updateDefaultSuperimposeNavigation(e,t=!0){t?e?.enableDefaultSuperimposeNavigation?.():e?.disableDefaultSuperimposeNavigation?.(),this._panoramicNavigationFeature&&e?.disablePanoramicSuperimposeNavigation?.(),this._panoramicNavigationFeature=null}_shouldUpdateDefaultCamera(e,t){return e==="default"&&t!==this._defaultCameraFeature}_shouldUpdatePanoramicCamera(e,t){return e===`panoramic`&&t!==this._panoramicNavigationFeature}setDefaultZOffsetPercentage(e){this._defaultZOffsetPercentage=Math.max(0,Math.min(100,e)),this._defaultGraphicProperties&&this._graphics.length===1&&this._rebuildDefaultGraphicForPercentage(this._defaultZOffsetPercentage)}setPanoramicRadiusPercentage(e){let t=Math.max(0,Math.min(100,e)),n=this._panoramicRadiusOffsetRangeInMeters*t/100,r=n-this._panoramicRadiusOffsetInMeters;this._panoramicRadiusOffsetPercentage=t,this._panoramicRadiusOffsetInMeters=n,this._applyPanoramicRadiusOffset(this._graphics,r)}updatePanoramicRadiusOffset(e){e!==0&&(this._panoramicRadiusOffsetInMeters+=e,this._applyPanoramicRadiusOffset(this._graphics,e))}_applyPanoramicRadiusOffset(e,t){t!==0&&e.forEach(e=>{let n=e.geometry;n?.type===`mesh`&&b(n,{radiusOffset:t,minimumRadiusInMeters:10})})}async _applyPersistentPanoramicRadiusOffset(e,t,n,r){this._panoramicRadiusOffsetRangeInMeters=await this._resolvePanoramicRadiusOffsetRangeInMeters(t,n,r),this._panoramicRadiusOffsetInMeters=this._panoramicRadiusOffsetRangeInMeters*this._panoramicRadiusOffsetPercentage/100,this._applyPanoramicRadiusOffset(e,this._panoramicRadiusOffsetInMeters)}_rebuildDefaultGraphicForPercentage(e){let t=this._defaultGraphicProperties,[n]=this._graphics;if(!t||!n||n.geometry?.type!==`mesh`)return;let r=this._createDefaultMeshForPercentage(t,n.geometry,e);r&&(this._applyDefaultMeshAppearance(r,n.geometry),n.geometry=r)}_createDefaultMeshForPercentage(e,t,n){let{farPosition:r,nearPosition:i,view:o}=e;if(!i||i.length!==r.length)return null;let c=new Float64Array(r.length),l=n/100;for(let e=0;e<r.length;e+=1)c[e]=r[e]+(i[e]-r[e])*l;let d=t.vertexAttributes.uv,f=t.components;return!d||!f||f.some(e=>!e.faces)?null:new a({vertexAttributes:new u({position:c,uv:d.slice()}),components:f.map(e=>new s({faces:e.faces.slice()})),spatialReference:o.spatialReference.clone()})}_resolveDefaultSuperimposeDistance(e,t){let n=e.attributes.farDistance,r=Math.max(0,e.attributes.nearDistance??n);if(n>0&&r>=0)return n+(r-n)*t/100}async _resolvePanoramicRadiusOffsetRangeInMeters(e,t,n){let r=e.attributes.objectId;if(this._cachedPanoramicRadiusObjectId!==r){let a=e.attributes.farDistance,s=Math.max(10,e.attributes.nearDistance??a);if(!(a>0)||!(s>=0))return this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=0,0;let c=e.attributes.location,l=c.spatialReference.equals(t.spatialReference)?c:await o(c,t.spatialReference,{signal:n});if(i(n),!l)return this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=0,0;let u=l.spatialReference.isWebMercator?m(l.y):1;this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=(s-a)*u}return this._panoramicRadiusOffsetRangeInMeters}_resolveTextureUrl(e){let t=new URL(e.mediaUrl);return Object.entries(e.searchParams).forEach(([e,n])=>{t.searchParams.has(e)||t.searchParams.set(e,n)}),t.toString()}_resetRasterTextureCacheIfNeeded(e){e&&e!==this._rasterTextureCacheFeature&&(this._cachedBaseTexture=null,this._rasterTextureFetchCache.clear(),this._rasterTextureCacheFeature=e)}_createImageDataFromPixelBlock(e){return new ImageData(e.getAsRGBA(),e.width,e.height)}_copyImageData(e,t,n,r,i=e.width,a=e.height){let o=e.data,s=t.data,c=e.width,l=e.height,u=t.width,d=t.height;for(let e=0;e<a;e+=1){let t=r+e;if(t<0||t>=d)continue;let f=Math.min(l-1,Math.floor(e*l/a));for(let e=0;e<i;e+=1){let r=n+e;if(r<0||r>=u)continue;let a=Math.min(c-1,Math.floor(e*c/i)),l=(f*c+a)*4,d=(t*u+r)*4;s[d]=o[l],s[d+1]=o[l+1],s[d+2]=o[l+2],s[d+3]=o[l+3]}}}_copyImageDataRegion(e,t,n,r,i,a,o,s){let c=e.data,l=t.data,u=e.width,d=t.width;for(let e=0;e<s;e+=1)for(let t=0;t<o;t+=1){let o=((r+e)*u+(n+t))*4,s=((a+e)*d+(i+t))*4;l[s]=c[o],l[s+1]=c[o+1],l[s+2]=c[o+2],l[s+3]=c[o+3]}}async _fetchRasterTextureAtLevel(e,t,n,r){let{offset:a,size:o}=x(e,t,n),s=this._createRasterTextureExtent(a,o),c=this._createRasterTextureLevelCacheKey(e,t),l=this._getOrCreateRasterTextureLevelCache(c),u=this._getUncoveredRasterTextureExtents(s,l.patches);for(let n of u){let a=this._createRasterTextureExtentCacheKey(n),o=l.inflight.get(a);o||(o=this._fetchRasterTexturePatch(e,t,n,r),l.inflight.set(a,o));try{let e=await o;i(r),e&&l.patches.push(e)}finally{l.inflight.delete(a)}}return this._composeRasterTextureFromCachedPatches(s,l.patches)}_getOrCreateRasterTextureLevelCache(e){let t=this._rasterTextureFetchCache.get(e);return t||(t={inflight:new Map,patches:[]},this._rasterTextureFetchCache.set(e,t)),t}_createRasterTextureLevelCacheKey(e,t){return[e.url,e.rasterInfo.width,e.rasterInfo.height,t].join(`:`)}_createRasterTextureExtentCacheKey(e){return[e.xmin,e.ymin,e.xmax,e.ymax].join(`:`)}_createRasterTextureExtent(e,t){return{xmin:e.x,ymin:e.y,xmax:e.x+t.width,ymax:e.y+t.height}}_getUncoveredRasterTextureExtents(e,t){let n=[e];for(let e of t)if(n=n.flatMap(t=>this._subtractRasterTextureExtent(t,e.extent)),!n.length)break;return n}_subtractRasterTextureExtent(e,t){let n=this._intersectRasterTextureExtents(e,t);if(!n)return[e];let r=[];return e.ymin<n.ymin&&r.push({xmin:e.xmin,ymin:e.ymin,xmax:e.xmax,ymax:n.ymin}),n.ymax<e.ymax&&r.push({xmin:e.xmin,ymin:n.ymax,xmax:e.xmax,ymax:e.ymax}),e.xmin<n.xmin&&r.push({xmin:e.xmin,ymin:n.ymin,xmax:n.xmin,ymax:n.ymax}),n.xmax<e.xmax&&r.push({xmin:n.xmax,ymin:n.ymin,xmax:e.xmax,ymax:n.ymax}),r.filter(({xmin:e,ymin:t,xmax:n,ymax:r})=>n>e&&r>t)}_intersectRasterTextureExtents(e,t){let n=Math.max(e.xmin,t.xmin),r=Math.max(e.ymin,t.ymin),i=Math.min(e.xmax,t.xmax),a=Math.min(e.ymax,t.ymax);return i>n&&a>r?{xmin:n,ymin:r,xmax:i,ymax:a}:null}async _fetchRasterTexturePatch(e,t,n,r){let{pixelBlock:a}=await e.fetchRawPixels(t,{x:n.xmin,y:n.ymin},{width:n.xmax-n.xmin,height:n.ymax-n.ymin},r);if(i(r),a)return{extent:n,imageData:this._createImageDataFromPixelBlock(a)}}_composeRasterTextureFromCachedPatches(e,t){let n=t.filter(t=>this._intersectRasterTextureExtents(e,t.extent));if(!n.length)return;let r=new ImageData(e.xmax-e.xmin,e.ymax-e.ymin);for(let t of n){let n=this._intersectRasterTextureExtents(e,t.extent);n&&this._copyImageDataRegion(t.imageData,r,n.xmin-t.extent.xmin,n.ymin-t.extent.ymin,n.xmin-e.xmin,n.ymin-e.ymin,n.xmax-n.xmin,n.ymax-n.ymin)}return r}async _loadRaster(e,t){let{loadRaster:n}=await import(`../../PanoramicViewer/utils.js`),r=await n(this._resolveTextureUrl(e),t);return i(t),r}async _createCompositedDefaultRasterTexture(e,t,n,r,a){let{pyramidScalingFactor:o}=e.rasterInfo.storageInfo,s=o??2,c=S(e.rasterInfo.width,e.rasterInfo.height,n,s),u=await this._fetchRasterTextureAtLevel(e,r,null,a);if(i(a),!u)return;let d=await this._fetchRasterTextureAtLevel(e,n,t,a);if(i(a),!d)return new l({data:u});let f=new ImageData(c.width,c.height);this._copyImageData(u,f,0,0,c.width,c.height);let p=s**n,{x:m,y:h}=this._resolveRasterDrawOrigin(t,p);return this._copyImageData(d,f,m,h),new l({data:f})}async _createRasterTexture(e,t,n,r){let{maximumPyramidLevel:i}=e.rasterInfo.storageInfo,a=await this._fetchRasterTextureAtLevel(e,n??i,t,r);if(a)return new l({data:a})}async _createPanoramicRasterTexture(e,t,n,r,a,o){if(a??=await y(t,n,r,this._properties.pointToPixel,o),i(o),!a?.length)return this._createRasterTexture(e,null,void 0,o);let{baseLevel:s,level:c,scalingFactor:l}=this._resolvePanoramicRasterLevels(e,n,a);return s<=c?this._createRasterTexture(e,null,c,o):this._createCompositedPanoramicRasterTexture(e,a,{baseLevel:s,level:c,scalingFactor:l},o)}_resolvePanoramicRasterLevels(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=n.reduce((n,r)=>Math.min(n,C(e,t,r)),r),o=w(e,a),s=i??2;return{baseLevel:Math.min(r,o+2),level:o,scalingFactor:s}}async _createCompositedPanoramicRasterTexture(e,t,n,r){let{baseLevel:a,level:o,scalingFactor:s}=n,c=S(e.rasterInfo.width,e.rasterInfo.height,o,s),u=await this._fetchRasterTextureAtLevel(e,a,null,r);if(i(r),!u)return;let d=new ImageData(c.width,c.height);this._copyImageData(u,d,0,0,c.width,c.height);let f=s**o;for(let n of t){let t=await this._fetchRasterTextureAtLevel(e,o,n,r);if(i(r),!t)continue;let{x:a,y:s}=this._resolveRasterDrawOrigin(n,f);this._copyImageData(t,d,a,s)}return new l({data:d})}_resolveRasterDrawOrigin(e,t){return{x:Math.max(0,Math.floor(e.xmin/t)),y:Math.max(0,Math.floor(e.ymin/t))}}async _createGridMesh(e,t,n,r,c,l,d){if(t.type!==`3d`)return null;let f=await Promise.all(r.map(e=>e.spatialReference.equals(t.spatialReference)?e:o(e,t.spatialReference,d)));if(i(d),f.some(e=>!e))return null;let{faces:p,position:m,uv:h}=T(f,e,n,c);return l?.forEach((t,n)=>{let r=n*2;h[r]=t.x/e[0],h[r+1]=t.y/e[1]}),new a({vertexAttributes:new u({position:m,uv:h}),components:[new s({faces:p})],spatialReference:t.spatialReference.clone()})}async _createFootprintMesh(e,t,n,r,a,o){if(t.type!==`3d`)return null;let s=n?.attributes.farDistance,c=E(e,r),l=a??s,u=typeof l==`number`&&l>0?await this._properties.getPointAtDistance(c,l,o):await this._properties.getMapPoint(c,o);return i(o),this._createGridMesh(e,t,r,u)}async _resolveDefaultMeshPosition(e,t,n,r,a,o,s){let c=e.geometry;if(c?.type===`mesh`&&s===this._defaultZOffsetPercentage)return c.vertexAttributes.position.slice();let l=this._resolveDefaultSuperimposeDistance(r,s),u=await this._createFootprintMesh(t,n,r,a,l,{signal:o});return i(o),u?.vertexAttributes.position.slice()??null}async _createPanoramicGraphic(t){let{areaOfInterest:r,imageSize:i,signal:a,texture:o,textureUrl:s,view:u}=t;if(!o&&!s)throw Error(`Missing texture URL or texture data.`);if(!i)return null;let d=await this._createPanoramicMesh(i,u,r,t.currentBestFeature,a);if(!d)return null;let m=d.vertexAttributes.position,h=[];for(let e=0;e<m.length;e+=3)h.push(...D);d.vertexAttributes.color=new Uint8Array(h);let g=new c({colorTexture:o??new l({url:s})});return d.components?.forEach(e=>{e.shading=`source`,e.material=g}),new e({geometry:d,symbol:new p({symbolLayers:new n([new f({})])})})}async _createPanoramicMesh(e,t,n,r,a){if(t.type!==`3d`||!r)return null;let{attributes:o}=r,{farDistance:s}=o;if(typeof s!=`number`||!(s>0))return null;let c=E(e,n,128),l=this._properties.getPanoramicTransformationState?.();if(!l)return null;let{imageToWorldProperties:u,updateElevationProps:f}=l,p=await d(c.map(e=>({...e,depth:s??u.farDistance})),u,f);return i(a),this._createGridMesh(e,t,n,p,128,c)}async _createDefaultGraphic(t){let{texture:r,textureUrl:i}=t;if(!r&&!i)throw Error(`Missing texture URL or texture data.`);if(!t.imageSize)return null;let a=t.currentBestFeature?this._resolveDefaultSuperimposeDistance(t.currentBestFeature,this._defaultZOffsetPercentage):void 0,o=await this._createFootprintMesh(t.imageSize,t.view,t.currentBestFeature,t.areaOfInterest,a,{signal:t.signal});return o?(this._applyDefaultMeshAppearance(o,r??new l({url:i})),new e({geometry:o,symbol:new p({symbolLayers:new n([new f({})])})})):null}_applyDefaultMeshAppearance(e,t){let n=e.vertexAttributes.position,r=[];for(let e=0;e<n.length;e+=3)r.push(...D);e.vertexAttributes.color=new Uint8Array(r);let i=t instanceof a?t.components?.[0]?.material??null:new c({colorTexture:t});e.components?.forEach((e,n)=>{e.shading=`source`,e.material=t instanceof a?t.components?.[n]?.material??i:i})}}export{O as default};
2
+ import e from"../../../Graphic.js";import{createTask as t}from"../../../core/asyncUtils.js";import n from"../../../core/Collection.js";import{destroyMaybe as r}from"../../../core/maybe.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import a from"../../../geometry/Mesh.js";import{projectAsync as o}from"../../../geometry/projectionUtils.js";import s from"../../../geometry/support/MeshComponent.js";import c from"../../../geometry/support/MeshMaterial.js";import l from"../../../geometry/support/MeshTexture.js";import u from"../../../geometry/support/MeshVertexAttributes.js";import{imageToWorldPanoramic as d}from"../../../layers/orientedImagery/transformations/imageToWorld.js";import f from"../../../symbols/FillSymbol3DLayer.js";import p from"../../../symbols/MeshSymbol3D.js";import{calculateUpdatedWmsf as m}from"../imageMeasurementUtils.js";import{validateTifOrMrfExtension as h}from"../utils.js";import g from"../support/resolveMediaProps.js";import{computeDefaultAreaOfInterest as _,getBaseRasterLevel as v,computePanoramicAreasOfInterest as y,applySphereMeshOffsetInMeters as b,getRasterFetchParameters as x,getRasterLevelSize as S,getViewDependentRasterLevel as C,clampRasterLevelForTextureSize as w,createSuperimposeGridVertexAttributes as T,createSuperimposeSamplePixels as E}from"../support/superimposeUtils.js";const D=[255,255,255,255];class O{constructor(e){this._properties=e,this._cachedBaseTexture=null,this._cachedPanoramicRadiusObjectId=null,this._defaultGraphicProperties=null,this._defaultZOffsetPercentage=50,this._defaultCameraFeature=null,this._graphics=[],this._panoramicRadiusOffsetInMeters=0,this._panoramicRadiusOffsetPercentage=50,this._panoramicRadiusOffsetRangeInMeters=0,this._panoramicNavigationFeature=null,this._rasterTextureCacheFeature=null,this._rasterTextureFetchCache=new Map,this._task=null}clear(){this._destroyGraphics(this._graphics,!0),this._cachedBaseTexture=null,this._cachedPanoramicRadiusObjectId=null,this._defaultGraphicProperties=null,this._defaultZOffsetPercentage=50,this._defaultCameraFeature=null,this._graphics=[],this._panoramicRadiusOffsetInMeters=0,this._panoramicRadiusOffsetPercentage=50,this._panoramicRadiusOffsetRangeInMeters=0,this._panoramicNavigationFeature=null,this._rasterTextureCacheFeature=null,this._rasterTextureFetchCache.clear()}destroy(){this._task=this._task?.abort()??null,this.clear()}update(e){this._task?.abort(),this._task=t(async t=>{if(!this._canUpdate(e)){this._resetInactiveState(e.adapter);return}let n=!1,r=[];try{this._resetRasterTextureCacheIfNeeded(e.currentBestFeature);let a=await this._resolveMedia(e,t);if(!a||({graphics:r}=await this._createGraphics(e,a,t),!r.length))return;await this._updateDefaultCameraIfNeeded(e,t),await this._updateNavigation(e,t),e.mode===`panoramic`&&await this._applyPersistentPanoramicRadiusOffset(r,e.currentBestFeature,e.view,t),i(t),this._replaceGraphics(r,e.mode),n=!0}finally{n||this._destroyGraphics(r,!1)}})}_canUpdate(e){return e.superimposeViewEnabled&&e.state===`image-loaded`&&e.view?.type===`3d`&&!!e.currentBestFeature&&!!e.layer&&[`default`,`panoramic`].includes(e.mode)}_resetInactiveState(e){e?.disableDefaultSuperimposeNavigation?.(),e?.disablePanoramicSuperimposeNavigation?.(),this.clear()}async _updateDefaultCameraIfNeeded(e,t){let{activeImageSize:n,currentBestFeature:r,mode:a}=e;if(n&&r&&a==="default"&&this._shouldUpdateDefaultCamera(a,r)){let a=[{x:n[0]/2,y:n[1]/2}],o=this._resolveDefaultSuperimposeDistance(r,this._defaultZOffsetPercentage)??r.attributes.farDistance,[s]=typeof o==`number`&&o>0?await this._properties.getPointAtDistance(a,o,{signal:t}):await this._properties.getMapPoint(a,{signal:t});i(t),await e.adapter?.updateDefaultSuperimposeCamera?.({currentBestFeature:r,target:s??null},{signal:t}),i(t),this._defaultCameraFeature=r;return}}async _resolveMedia(e,t){let{currentBestFeature:n,layer:r,mode:a,view:o}=e;if(!n||!r||!o||a!=="default"&&a!==`panoramic`)return null;let s=await g(n.attributes,r,{signal:t});if(i(t),!s?.mediaUrl)return null;if(!h(s.datasetFormat))return this._resolveNonRasterMedia(s);let c=await this._resolveRasterMedia(s,o,t);if(!c)return null;switch(a){case`default`:{let n=await this._resolveDefaultAreaOfInterest(e,s,t);return this._resolveDefaultRasterMedia(c,n,o,t)}case`panoramic`:return this._resolvePanoramicRasterMedia(c,e,t)}}_resolveNonRasterMedia(e){return{areaOfInterest:null,textureUrl:this._resolveTextureUrl(e)}}async _resolveDefaultAreaOfInterest(e,t,n){let{activeImageSize:r,currentBestFeature:a,mode:o,view:s}=e;if(o!=="default"||!r||!a||!s||!h(t.datasetFormat))return null;let c=await _(a,s,r,this._properties.pointToPixel,{signal:n});return i(n),c}async _resolveRasterMedia(e,t,n){let r=await this._loadRaster(e,{signal:n});if(i(n),!r)return null;let a=v(r,t),o=this._cachedBaseTexture;if(!o){let e=await this._createRasterTexture(r,null,a,{signal:n});i(n),e&&(o=e,this._cachedBaseTexture=e)}return o?{baseLevel:a,baseTexture:o,raster:r}:null}async _resolveDefaultRasterMedia(e,t,n,r){let{baseLevel:a,baseTexture:o,raster:s}=e;if(!t)return{areaOfInterest:null,baseTexture:o,raster:s,texture:o};let c=v(s,n,t),l=await this._createCompositedDefaultRasterTexture(s,t,c,a,{signal:r});return i(r),{areaOfInterest:t,baseTexture:o,overlayTexture:l,raster:s,texture:l??o}}async _resolvePanoramicRasterMedia(e,t,n){let{activeImageSize:r,currentBestFeature:a,view:o}=t,{baseTexture:s,raster:c}=e;if(!r||!a||!o)return{areaOfInterest:null,baseTexture:s,panoramicAreasOfInterest:void 0,raster:c,texture:s};let l=await y(a,o,r,this._properties.pointToPixel,{signal:n});i(n);let u=await this._createPanoramicRasterTexture(c,a,o,r,l,{signal:n})??s;return i(n),{areaOfInterest:null,baseTexture:s,panoramicAreasOfInterest:l,raster:c,texture:u}}async _createGraphics(e,t,n){switch(e.mode){case`default`:return this._createDefaultGraphics(e,t,n);case`panoramic`:return this._createPanoramicGraphics(e,t,n)}return{graphics:[]}}async _createDefaultGraphics(e,t,n){let r=await this._createAndDrapeDefaultGraphic(e,n,{texture:t.texture,textureUrl:t.textureUrl});return{graphics:r?[r]:[]}}async _createAndDrapeDefaultGraphic(e,t,n){let{activeImageSize:r,currentBestFeature:a,depthImageLoaded:o,view:s}=e,{areaOfInterest:c,texture:l,textureUrl:u}=n;if(!r||s?.type!==`3d`||!a)return null;let d=await this._createDefaultGraphic({areaOfInterest:c,currentBestFeature:a,depthImageLoaded:o,imageSize:r,signal:t,texture:l,textureUrl:u,view:s});if(!d)return null;let f=await this._resolveDefaultMeshPosition(d,r,s,a,c,t,100),p=await this._resolveDefaultMeshPosition(d,r,s,a,c,t,0);return i(t),this._defaultGraphicProperties={areaOfInterest:c??null,currentBestFeature:a,farPosition:p??(d.geometry?.type===`mesh`?d.geometry.vertexAttributes.position.slice():new Float64Array),imageSize:r,nearPosition:f,view:s},d}async _createPanoramicGraphics(e,t,n){let r=await this._createPanoramicSuperimposeGraphic(e,t,n,null);return{graphics:r?[r]:[]}}async _createPanoramicSuperimposeGraphic(e,t,n,r){let{activeImageSize:i,currentBestFeature:a,view:o}=e;return o?this._createPanoramicGraphic({areaOfInterest:r,currentBestFeature:a??void 0,imageSize:i,signal:n,texture:t.texture,textureUrl:t.textureUrl,view:o}):null}async _updateNavigation(e,t){let{currentBestFeature:n,mode:r,view:i}=e;if(n&&i&&i.type===`3d`)switch(r){case`default`:this._updateDefaultNavigation(e);return;case`panoramic`:await this._updatePanoramicNavigation(e,n,i,t);return}}_updateDefaultNavigation(e){this._updateDefaultSuperimposeNavigation(e.adapter,e.defaultSuperimposeCameraLockEnabled)}async _updatePanoramicNavigation(e,t,n,r){e.adapter?.disableDefaultSuperimposeNavigation?.();let a=t===this._panoramicNavigationFeature?n.camera:e.panoramicCamera??n.camera;a&&this._shouldUpdatePanoramicCamera(e.mode,t)&&(e.adapter?.disablePanoramicSuperimposeNavigation?.(),await e.adapter?.updatePanoramicSuperimposeCamera?.({camera:a,currentBestFeature:t},{signal:r}),i(r)),this._panoramicNavigationFeature=t}_replaceGraphics(e,t){if(t===`panoramic`&&this._updatePanoramicGraphicInPlace(e))return;let n=this._graphics;this._graphics=e,this._properties.overlays.addMany(e),this._destroyGraphics(n,!0)}_updatePanoramicGraphicInPlace(e){if(this._graphics.length!==1||e.length!==1)return!1;let t=this._graphics[0],n=e[0];return!t||!n?!1:(t.geometry=n.geometry,t.symbol=n.symbol,t.visible=n.visible,n.geometry=null,n.symbol=null,r(n),!0)}_destroyGraphics(e,t){e.length&&(t&&this._properties.overlays.removeMany(e),e.forEach(e=>r(e)))}_updateDefaultSuperimposeNavigation(e,t=!0){t?e?.enableDefaultSuperimposeNavigation?.():e?.disableDefaultSuperimposeNavigation?.(),this._panoramicNavigationFeature&&e?.disablePanoramicSuperimposeNavigation?.(),this._panoramicNavigationFeature=null}_shouldUpdateDefaultCamera(e,t){return e==="default"&&t!==this._defaultCameraFeature}_shouldUpdatePanoramicCamera(e,t){return e===`panoramic`&&t!==this._panoramicNavigationFeature}setDefaultZOffsetPercentage(e){this._defaultZOffsetPercentage=Math.max(0,Math.min(100,e)),this._defaultGraphicProperties&&this._graphics.length===1&&this._rebuildDefaultGraphicForPercentage(this._defaultZOffsetPercentage)}setPanoramicRadiusPercentage(e){let t=Math.max(0,Math.min(100,e)),n=this._panoramicRadiusOffsetRangeInMeters*t/100,r=n-this._panoramicRadiusOffsetInMeters;this._panoramicRadiusOffsetPercentage=t,this._panoramicRadiusOffsetInMeters=n,this._applyPanoramicRadiusOffset(this._graphics,r)}updatePanoramicRadiusOffset(e){e!==0&&(this._panoramicRadiusOffsetInMeters+=e,this._applyPanoramicRadiusOffset(this._graphics,e))}_applyPanoramicRadiusOffset(e,t){t!==0&&e.forEach(e=>{let n=e.geometry;n?.type===`mesh`&&b(n,{radiusOffset:t,minimumRadiusInMeters:10})})}async _applyPersistentPanoramicRadiusOffset(e,t,n,r){this._panoramicRadiusOffsetRangeInMeters=await this._resolvePanoramicRadiusOffsetRangeInMeters(t,n,r),this._panoramicRadiusOffsetInMeters=this._panoramicRadiusOffsetRangeInMeters*this._panoramicRadiusOffsetPercentage/100,this._applyPanoramicRadiusOffset(e,this._panoramicRadiusOffsetInMeters)}_rebuildDefaultGraphicForPercentage(e){let t=this._defaultGraphicProperties,[n]=this._graphics;if(!t||!n||n.geometry?.type!==`mesh`)return;let r=this._createDefaultMeshForPercentage(t,n.geometry,e);r&&(this._applyDefaultMeshAppearance(r,n.geometry),n.geometry=r)}_createDefaultMeshForPercentage(e,t,n){let{farPosition:r,nearPosition:i,view:o}=e;if(!i||i.length!==r.length)return null;let c=new Float64Array(r.length),l=n/100;for(let e=0;e<r.length;e+=1)c[e]=r[e]+(i[e]-r[e])*l;let d=t.vertexAttributes.uv,f=t.components;return!d||!f||f.some(e=>!e.faces)?null:new a({vertexAttributes:new u({position:c,uv:d.slice()}),components:f.map(e=>new s({faces:e.faces.slice()})),spatialReference:o.spatialReference.clone()})}_resolveDefaultSuperimposeDistance(e,t){let n=e.attributes.farDistance,r=Math.max(0,e.attributes.nearDistance??n);if(n>0&&r>=0)return n+(r-n)*t/100}async _resolvePanoramicRadiusOffsetRangeInMeters(e,t,n){let r=e.attributes.objectId;if(this._cachedPanoramicRadiusObjectId!==r){let a=e.attributes.farDistance,s=Math.max(10,e.attributes.nearDistance??a);if(!(a>0)||!(s>=0))return this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=0,0;let c=e.attributes.location,l=c.spatialReference.equals(t.spatialReference)?c:await o(c,t.spatialReference,{signal:n});if(i(n),!l)return this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=0,0;let u=l.spatialReference.isWebMercator?m(l.y):1;this._cachedPanoramicRadiusObjectId=r,this._panoramicRadiusOffsetRangeInMeters=(s-a)*u}return this._panoramicRadiusOffsetRangeInMeters}_resolveTextureUrl(e){let t=new URL(e.mediaUrl);return Object.entries(e.searchParams).forEach(([e,n])=>{t.searchParams.has(e)||t.searchParams.set(e,n)}),t.toString()}_resetRasterTextureCacheIfNeeded(e){e&&e!==this._rasterTextureCacheFeature&&(this._cachedBaseTexture=null,this._rasterTextureFetchCache.clear(),this._rasterTextureCacheFeature=e)}_createImageDataFromPixelBlock(e){return new ImageData(e.getAsRGBA(),e.width,e.height)}_copyImageData(e,t,n,r,i=e.width,a=e.height){let o=e.data,s=t.data,c=e.width,l=e.height,u=t.width,d=t.height;for(let e=0;e<a;e+=1){let t=r+e;if(t<0||t>=d)continue;let f=Math.min(l-1,Math.floor(e*l/a));for(let e=0;e<i;e+=1){let r=n+e;if(r<0||r>=u)continue;let a=Math.min(c-1,Math.floor(e*c/i)),l=(f*c+a)*4,d=(t*u+r)*4;s[d]=o[l],s[d+1]=o[l+1],s[d+2]=o[l+2],s[d+3]=o[l+3]}}}_copyImageDataRegion(e,t,n,r,i,a,o,s){let c=e.data,l=t.data,u=e.width,d=t.width;for(let e=0;e<s;e+=1)for(let t=0;t<o;t+=1){let o=((r+e)*u+(n+t))*4,s=((a+e)*d+(i+t))*4;l[s]=c[o],l[s+1]=c[o+1],l[s+2]=c[o+2],l[s+3]=c[o+3]}}async _fetchRasterTextureAtLevel(e,t,n,r){let{offset:a,size:o}=x(e,t,n),s=this._createRasterTextureExtent(a,o),c=this._createRasterTextureLevelCacheKey(e,t),l=this._getOrCreateRasterTextureLevelCache(c),u=this._getUncoveredRasterTextureExtents(s,l.patches);for(let n of u){let a=this._createRasterTextureExtentCacheKey(n),o=l.inflight.get(a);o||(o=this._fetchRasterTexturePatch(e,t,n,r),l.inflight.set(a,o));try{let e=await o;i(r),e&&l.patches.push(e)}finally{l.inflight.delete(a)}}return this._composeRasterTextureFromCachedPatches(s,l.patches)}_getOrCreateRasterTextureLevelCache(e){let t=this._rasterTextureFetchCache.get(e);return t||(t={inflight:new Map,patches:[]},this._rasterTextureFetchCache.set(e,t)),t}_createRasterTextureLevelCacheKey(e,t){return[e.url,e.rasterInfo.width,e.rasterInfo.height,t].join(`:`)}_createRasterTextureExtentCacheKey(e){return[e.xmin,e.ymin,e.xmax,e.ymax].join(`:`)}_createRasterTextureExtent(e,t){return{xmin:e.x,ymin:e.y,xmax:e.x+t.width,ymax:e.y+t.height}}_getUncoveredRasterTextureExtents(e,t){let n=[e];for(let e of t)if(n=n.flatMap(t=>this._subtractRasterTextureExtent(t,e.extent)),!n.length)break;return n}_subtractRasterTextureExtent(e,t){let n=this._intersectRasterTextureExtents(e,t);if(!n)return[e];let r=[];return e.ymin<n.ymin&&r.push({xmin:e.xmin,ymin:e.ymin,xmax:e.xmax,ymax:n.ymin}),n.ymax<e.ymax&&r.push({xmin:e.xmin,ymin:n.ymax,xmax:e.xmax,ymax:e.ymax}),e.xmin<n.xmin&&r.push({xmin:e.xmin,ymin:n.ymin,xmax:n.xmin,ymax:n.ymax}),n.xmax<e.xmax&&r.push({xmin:n.xmax,ymin:n.ymin,xmax:e.xmax,ymax:n.ymax}),r.filter(({xmin:e,ymin:t,xmax:n,ymax:r})=>n>e&&r>t)}_intersectRasterTextureExtents(e,t){let n=Math.max(e.xmin,t.xmin),r=Math.max(e.ymin,t.ymin),i=Math.min(e.xmax,t.xmax),a=Math.min(e.ymax,t.ymax);return i>n&&a>r?{xmin:n,ymin:r,xmax:i,ymax:a}:null}async _fetchRasterTexturePatch(e,t,n,r){let{pixelBlock:a}=await e.fetchRawPixels(t,{x:n.xmin,y:n.ymin},{width:n.xmax-n.xmin,height:n.ymax-n.ymin},r);if(i(r),a)return{extent:n,imageData:this._createImageDataFromPixelBlock(a)}}_composeRasterTextureFromCachedPatches(e,t){let n=t.filter(t=>this._intersectRasterTextureExtents(e,t.extent));if(!n.length)return;let r=new ImageData(e.xmax-e.xmin,e.ymax-e.ymin);for(let t of n){let n=this._intersectRasterTextureExtents(e,t.extent);n&&this._copyImageDataRegion(t.imageData,r,n.xmin-t.extent.xmin,n.ymin-t.extent.ymin,n.xmin-e.xmin,n.ymin-e.ymin,n.xmax-n.xmin,n.ymax-n.ymin)}return r}async _loadRaster(e,t){let{loadRaster:n}=await import(`../../PanoramicViewer/utils.js`),r=await n(this._resolveTextureUrl(e),t);return i(t),r}async _createCompositedDefaultRasterTexture(e,t,n,r,a){let{pyramidScalingFactor:o}=e.rasterInfo.storageInfo,s=o??2,c=S(e.rasterInfo.width,e.rasterInfo.height,n,s),u=await this._fetchRasterTextureAtLevel(e,r,null,a);if(i(a),!u)return;let d=await this._fetchRasterTextureAtLevel(e,n,t,a);if(i(a),!d)return new l({data:u});let f=new ImageData(c.width,c.height);this._copyImageData(u,f,0,0,c.width,c.height);let p=s**n,{x:m,y:h}=this._resolveRasterDrawOrigin(t,p);return this._copyImageData(d,f,m,h),new l({data:f})}async _createRasterTexture(e,t,n,r){let{maximumPyramidLevel:i}=e.rasterInfo.storageInfo,a=await this._fetchRasterTextureAtLevel(e,n??i,t,r);if(a)return new l({data:a})}async _createPanoramicRasterTexture(e,t,n,r,a,o){if(a??=await y(t,n,r,this._properties.pointToPixel,o),i(o),!a?.length)return this._createRasterTexture(e,null,void 0,o);let{baseLevel:s,level:c,scalingFactor:l}=this._resolvePanoramicRasterLevels(e,n,a);return s<=c?this._createRasterTexture(e,null,c,o):this._createCompositedPanoramicRasterTexture(e,a,{baseLevel:s,level:c,scalingFactor:l},o)}_resolvePanoramicRasterLevels(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=n.reduce((n,r)=>Math.min(n,C(e,t,r)),r),o=w(e,a),s=i??2;return{baseLevel:Math.min(r,o+2),level:o,scalingFactor:s}}async _createCompositedPanoramicRasterTexture(e,t,n,r){let{baseLevel:a,level:o,scalingFactor:s}=n,c=S(e.rasterInfo.width,e.rasterInfo.height,o,s),u=await this._fetchRasterTextureAtLevel(e,a,null,r);if(i(r),!u)return;let d=new ImageData(c.width,c.height);this._copyImageData(u,d,0,0,c.width,c.height);let f=s**o;for(let n of t){let t=await this._fetchRasterTextureAtLevel(e,o,n,r);if(i(r),!t)continue;let{x:a,y:s}=this._resolveRasterDrawOrigin(n,f);this._copyImageData(t,d,a,s)}return new l({data:d})}_resolveRasterDrawOrigin(e,t){return{x:Math.max(0,Math.floor(e.xmin/t)),y:Math.max(0,Math.floor(e.ymin/t))}}async _createGridMesh(e,t,n,r,c,l,d){if(t.type!==`3d`)return null;let f=await Promise.all(r.map(e=>e.spatialReference.equals(t.spatialReference)?e:o(e,t.spatialReference,d)));if(i(d),f.some(e=>!e))return null;let{faces:p,position:m,uv:h}=T(f,e,n,c);return l?.forEach((t,n)=>{let r=n*2;h[r]=t.x/e[0],h[r+1]=t.y/e[1]}),new a({vertexAttributes:new u({position:m,uv:h}),components:[new s({faces:p})],spatialReference:t.spatialReference.clone()})}async _createFootprintMesh(e,t,n,r,a,o){if(t.type!==`3d`)return null;let s=n?.attributes.farDistance,c=E(e,r),l=a??s,u=typeof l==`number`&&l>0?await this._properties.getPointAtDistance(c,l,o):await this._properties.getMapPoint(c,o);return i(o),this._createGridMesh(e,t,r,u)}async _resolveDefaultMeshPosition(e,t,n,r,a,o,s){let c=e.geometry;if(c?.type===`mesh`&&s===this._defaultZOffsetPercentage)return c.vertexAttributes.position.slice();let l=this._resolveDefaultSuperimposeDistance(r,s),u=await this._createFootprintMesh(t,n,r,a,l,{signal:o});return i(o),u?.vertexAttributes.position.slice()??null}async _createPanoramicGraphic(t){let{areaOfInterest:r,imageSize:i,signal:a,texture:o,textureUrl:s,view:u}=t;if(!o&&!s)throw Error(`Missing texture URL or texture data.`);if(!i)return null;let d=await this._createPanoramicMesh(i,u,r,t.currentBestFeature,a);if(!d)return null;let m=d.vertexAttributes.position,h=[];for(let e=0;e<m.length;e+=3)h.push(...D);d.vertexAttributes.color=new Uint8Array(h);let g=new c({colorTexture:o??new l({url:s})});return d.components?.forEach(e=>{e.shading=`source`,e.material=g}),new e({geometry:d,symbol:new p({symbolLayers:new n([new f({})])})})}async _createPanoramicMesh(e,t,n,r,a){if(t.type!==`3d`||!r)return null;let{attributes:o}=r,{farDistance:s}=o;if(typeof s!=`number`||!(s>0))return null;let c=E(e,n,128),l=this._properties.getPanoramicTransformationState?.();if(!l)return null;let{imageToWorldProperties:u,updateElevationProps:f}=l,p=await d(c.map(e=>({...e,depth:s??u.farDistance})),u,f);return i(a),this._createGridMesh(e,t,n,p,128,c)}async _createDefaultGraphic(t){let{texture:r,textureUrl:i}=t;if(!r&&!i)throw Error(`Missing texture URL or texture data.`);if(!t.imageSize)return null;let a=t.currentBestFeature?this._resolveDefaultSuperimposeDistance(t.currentBestFeature,this._defaultZOffsetPercentage):void 0,o=await this._createFootprintMesh(t.imageSize,t.view,t.currentBestFeature,t.areaOfInterest,a,{signal:t.signal});return o?(this._applyDefaultMeshAppearance(o,r??new l({url:i})),new e({geometry:o,symbol:new p({symbolLayers:new n([new f({})])})})):null}_applyDefaultMeshAppearance(e,t){let n=e.vertexAttributes.position,r=[];for(let e=0;e<n.length;e+=3)r.push(...D);e.vertexAttributes.color=new Uint8Array(r);let i=t instanceof a?t.components?.[0]?.material??null:new c({colorTexture:t});e.components?.forEach((e,n)=>{e.shading=`source`,e.material=t instanceof a?t.components?.[n]?.material??i:i})}}export{O as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{__decorate as e}from"tslib";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{EsriPromise as r}from"../../../core/Promise.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";let s=class extends r{constructor(e){super(e),this.autoLoad=!1,this.customParameters=null,this.datasetFormat=null,this.url=null,this.rotation=null}destroy(){this._cache=n(this._cache)}get layer(){return this._cache}get size(){if(!this._cache?.loaded||!this._cache.serviceRasterInfo)return;let{serviceRasterInfo:e}=this._cache;return[e.width,e.height]}async load(e){if(this._cache?.loaded)return await this._cache.load(e),{layer:this._cache,size:this.size};let{url:n,customParameters:r}=this,a=this.datasetFormat;if(!n)throw Error(`URL is required to load NonPanoramicMedia.`);let o=await import(`./urlUtils.js`);if(i(e),a||=o.guessExtensionFromURI(n),!a){try{a=await o.getDatasetFormat(n)}catch(e){t.getLogger(this).warn(`non-panoramic-media:dataset-format`,e)}i(e)}a??=`UNKNOWN FORMAT`,this.datasetFormat=a;let s=(await import(`../../../layers/ImageryTileLayer.js`)).default;i(e),this._cache=new s({url:n,ioConfig:{skipExtensions:[`aux.xml`,`jgw`],skipMapInfo:!0,datasetFormat:a},customParameters:r??void 0});let c=this._cache.load(e);return this.addResolvingPromise(c),await c,i(e),{layer:this._cache,size:this.size}}};e([a()],s.prototype,`_cache`,void 0),e([a()],s.prototype,`autoLoad`,void 0),e([a()],s.prototype,`customParameters`,void 0),e([a()],s.prototype,`datasetFormat`,void 0),e([a()],s.prototype,`url`,void 0),e([a()],s.prototype,`layer`,null),e([a()],s.prototype,`rotation`,void 0),e([a()],s.prototype,`size`,null),s=e([o(`esri.widgets.OrientedImageryViewer.support.NonPanoramicMedia`)],s);const c=s;export{c as default};
2
+ import{__decorate as e}from"tslib";import t from"../../../core/Logger.js";import{destroyMaybe as n}from"../../../core/maybe.js";import{EsriPromise as r}from"../../../core/Promise.js";import{throwIfAborted as i}from"../../../core/promiseUtils.js";import{property as a}from"../../../core/accessorSupport/decorators/property.js";import{subclass as o}from"../../../core/accessorSupport/decorators/subclass.js";let s=class extends r{constructor(e){super(e),this.autoLoad=!1,this.customParameters=null,this.datasetFormat=null,this.url=null,this.rotation=null}destroy(){this._cache=n(this._cache)}get layer(){return this._cache}get size(){if(!this._cache?.loaded||!this._cache.serviceRasterInfo)return;let{serviceRasterInfo:e}=this._cache;return[e.width,e.height]}async load(e){if(this._cache?.loaded)return await this._cache.load(e),{layer:this._cache,size:this.size};let{url:n,customParameters:r}=this,a=this.datasetFormat;if(!n)throw Error(`URL is required to load NonPanoramicMedia.`);let o=await import(`./urlUtils.js`);if(i(e),a||=o.guessExtensionFromURI(n),!a){try{a=await o.getDatasetFormat(n)}catch(e){t.getLogger(this).warn(`non-panoramic-media:dataset-format`,e)}i(e)}a??=`UNKNOWN FORMAT`,this.datasetFormat=a;let s=(await import(`../../../layers/ImageryTileLayer.js`)).default;i(e),this._cache=new s({url:n,ioConfig:{skipExtensions:[`aux.xml`,`jgw`],skipMapInfo:!0,datasetFormat:a,tileGeneration:`immediate`},customParameters:r??void 0});let c=this._cache.load(e);return this.addResolvingPromise(c),await c,i(e),{layer:this._cache,size:this.size}}};e([a()],s.prototype,`_cache`,void 0),e([a()],s.prototype,`autoLoad`,void 0),e([a()],s.prototype,`customParameters`,void 0),e([a()],s.prototype,`datasetFormat`,void 0),e([a()],s.prototype,`url`,void 0),e([a()],s.prototype,`layer`,null),e([a()],s.prototype,`rotation`,void 0),e([a()],s.prototype,`size`,null),s=e([o(`esri.widgets.OrientedImageryViewer.support.NonPanoramicMedia`)],s);const c=s;export{c as default};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as r}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as i,convertSphereVertexToPixelLocation as a}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as c,dataCaptureFeatureSymbol as l}from"../symbols.js";import{checkNameOrAlias as u}from"./typeUtils.js";function d(e,t,n){if(!e)return;let{renderer:r}=e,i=l(t),a=r?`symbol`in r?r.symbol:`defaultSymbol`in r?r.defaultSymbol:r.getSymbol():null,o=i(a?.color);n[`${t}Symbol`]=(t===e.geometryType?a:null)??o}function f(e,n,r){let i=e.fields.find(({name:e,alias:t,type:r})=>u(n?.length?n:o,e,t)&&r===`blob`),a=e.fields.find(({name:e,alias:t})=>u(r?.length?r:s,e,t));if(!i||!a)throw new t(`orientedimageryviewer:invalid-data-capture-layer`,`Data capture layer is not configured correctly.`,{layer:e,imageGeometryField:i,oiObjectIdField:a});return{imageGeometryField:i,oiObjectIdField:a}}function p(n,r,i,a,o,s,l,u){let d=m(n,r);if(!d)throw new t(`orientedimageryviewer:invalid-geometry`,`InvalidGeometry`);return d=v(d,s,o,u),new e({attributes:n,layer:i,symbol:c(d.type,i.geometryType,l),geometry:d,visible:i.visible&&a})}function m(e,t){let{geometry:n}=JSON.parse(atob(e[t]));return r(n)}function h(e,t,n,r){switch(t){case`default`:return g(e);case`panoramic`:case`panoramic-video`:return _(e,n,r)}}function g(e){switch(e.type){case`point`:e.x+=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case`extent`:e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function _(e,t,r){switch(e.type){case`point`:{let{x:n,y:i}=a(e,...t,r);e.x=n,e.y=i,delete e.z;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`multipoint`:e.points=e.points.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=_(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o;break}}return e}function v(e,t,n,r){switch(t){case`default`:return y(e);case`panoramic`:case`panoramic-video`:return b(e,n,r)}}function y(e){switch(e.type){case`point`:e.x-=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e-.5,.5-t]);break;case`extent`:e.xmin-=.5,e.xmax-=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function b(e,t,r){switch(e.type){case`point`:{let[n,a,o]=i(e,...t,r);e.x=n,e.y=a,e.z=o;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`multipoint`:e.points=e.points.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=b(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o}}return e}export{d as configureSketchTool,p as constructGraphicFromImageGeometry,f as extractFieldsFromDataCaptureLayer,h as mapSpaceToImageSpace,g as mapSpaceToImageSpaceDefault,_ as mapSpaceToImageSpacePanoramic,m as parseAndExtractField,v as pixelToMapSpace,y as pixelToMapSpaceDefault,b as pixelToMapSpacePanoramic};
2
+ import e from"../../../Graphic.js";import t from"../../../core/Error.js";import n from"../../../geometry/Polygon.js";import{fromJSON as r}from"../../../geometry/support/jsonUtils.js";import{convertPixelLocationToSphereVertex as i,convertSphereVertexToPixelLocation as a}from"../../../layers/orientedImagery/transformations/utils.js";import{defaultImageGeometryField as o,defaultOIObjectIDField as s}from"../constants.js";import{createGraphicSymbol as c,dataCaptureFeatureSymbol as l}from"../symbols.js";import{checkNameOrAlias as u}from"./typeUtils.js";function d(e,t,n){if(!e)return;let{renderer:r}=e,i=l(t),a=r?`symbol`in r?r.symbol:`defaultSymbol`in r?r.defaultSymbol:r.getSymbol():null,o=i(a?.color);n[`${t}Symbol`]=(t===e.geometryType?a:null)??o}function f(e,n,r){let i=e.fields.find(({name:e,alias:t,type:r})=>u(n?.length?n:o,e,t)&&r===`blob`),a=e.fields.find(({name:e,alias:t})=>u(r?.length?r:s,e,t));if(!i||!a)throw new t(`orientedimageryviewer:invalid-data-capture-layer`,`Data capture layer is not configured correctly.`,{layer:e,imageGeometryField:i,oiObjectIdField:a});return{imageGeometryField:i,oiObjectIdField:a}}function p(n,r,i,a,o,s,l,u){let d=m(n,r);if(!d)throw new t(`orientedimageryviewer:invalid-geometry`,`InvalidGeometry`);return d=v(d,s,o,u),new e({attributes:n,layer:i,symbol:c(d.type,i.geometryType,l),geometry:d,visible:i.visible&&a})}function m(e,t){let{geometry:n}=JSON.parse(atob(e[t]));return r(n)}function h(e,t,n,r){switch(t){case`default`:return g(e);case`panoramic`:case`panoramic-video`:return _(e,n,r)}}function g(e){switch(e.type){case`point`:e.x+=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e+.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e+.5,.5-t]);break;case`extent`:e.xmin+=.5,e.xmax+=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function _(e,t,r){switch(e.type){case`point`:{let{x:n,y:i}=a(e,...t,r);e.x=n,e.y=i,e.z=void 0;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]}));break;case`multipoint`:e.points=e.points.map(e=>{let{x:n,y:i}=a({x:e[0],y:e[1],z:e[2]},...t,r);return[n,i]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=_(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o;break}}return e}function v(e,t,n,r){switch(t){case`default`:return y(e);case`panoramic`:case`panoramic-video`:return b(e,n,r)}}function y(e){switch(e.type){case`point`:e.x-=.5,e.y=.5-e.y;break;case`polyline`:e.paths=e.paths.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`polygon`:e.rings=e.rings.map(e=>e.map(([e,t])=>[e-.5,.5-t]));break;case`multipoint`:e.points=e.points.map(([e,t])=>[e-.5,.5-t]);break;case`extent`:e.xmin-=.5,e.xmax-=.5,e.ymin=.5-e.ymin,e.ymax=.5-e.ymax}return e}function b(e,t,r){switch(e.type){case`point`:{let[n,a,o]=i(e,...t,r);e.x=n,e.y=a,e.z=o;break}case`polyline`:e.paths=e.paths.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`polygon`:e.rings=e.rings.map(e=>e.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]}));break;case`multipoint`:e.points=e.points.map(e=>{let[n,a,o]=i({x:e[0],y:e[1]},...t,r);return[n,a,o]});break;case`extent`:{let{xmin:i,xmax:a,ymin:o,ymax:s}=b(n.fromExtent(e),t,r).extent;e.xmax=a,e.xmin=i,e.ymax=s,e.ymin=o}}return e}export{d as configureSketchTool,p as constructGraphicFromImageGeometry,f as extractFieldsFromDataCaptureLayer,h as mapSpaceToImageSpace,g as mapSpaceToImageSpaceDefault,_ as mapSpaceToImageSpacePanoramic,m as parseAndExtractField,v as pixelToMapSpace,y as pixelToMapSpaceDefault,b as pixelToMapSpacePanoramic};
@@ -1,2 +1,2 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import{throwIfAborted as e}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as t}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import i from"../../../geometry/SpatialReference.js";import{intersectionExecute as a}from"../../../geometry/operators/intersectionOperator.js";import{computeFarplaneVertices as o,createRotationMatrixFromHPR as s}from"../../../layers/orientedImagery/transformations/utils.js";import{calculateUpdatedWmsf as c}from"../imageMeasurementUtils.js";const l=15,u=120,d=.9,f=1.1,p=1,m=179,h=3,g=.05;function _(e,n){let{radiusOffset:r=0,minimumRadiusInMeters:i=0}=n;if(r===0)return;let a=t(e.spatialReference),o=a?r/a:r,{position:s}=e.vertexAttributes,c=Math.floor(s.length/3),l=0,u=0,d=0;for(let e=0;e<c;e++)l+=s[e*3],u+=s[e*3+1],d+=s[e*3+2];l/=c,u/=c,d/=c;let f=0;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;f+=Math.sqrt(t*t+n*n+r*r)}f/=c;let p=a?i/a:i,m=Math.max(p,f+o),h=f>0?m/f:1;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;t*=h,n*=h,r*=h,s[e*3]=l+t,s[e*3+1]=u+n,s[e*3+2]=d+r}e.vertexAttributesChanged()}function v(e,t,n){let{columns:r,rows:i}=I(e,t,n),[a,o]=e,s=t?.xmin??0,c=t?.ymin??0,l=t?Math.max(1,t.xmax-t.xmin):a,u=t?Math.max(1,t.ymax-t.ymin):o,d=[];for(let e=0;e<=i;e+=1){let t=c+e/i*u;for(let e=0;e<=r;e+=1)d.push({x:s+e/r*l,y:t})}return d}function y(e,t,n,r){let{columns:i,rows:a}=I(t,n,r),o=i+1,s=new Float64Array(e.length*3),c=new Float32Array(e.length*2),l=[];e.forEach((e,t)=>{let n=t*3,r=t*2,l=t%o,u=Math.floor(t/o);s[n]=e.x,s[n+1]=e.y,s[n+2]=e.z??0,c[r]=l/i,c[r+1]=u/a});for(let e=0;e<a;e+=1)for(let t=0;t<i;t+=1){let n=e*o+t,r=n+1,i=n+o,a=i+1;l.push(n,r,a,n,a,i)}return{faces:l,position:s,uv:c}}function b(e,t,n,r=2){return{width:Math.ceil(e/r**n),height:Math.ceil(t/r**n)}}function x(e,t,n){let{width:r,height:i,storageInfo:a}=e.rasterInfo,{pyramidScalingFactor:o}=a,s=b(r,i,t,o??void 0);if(!n)return{offset:{x:0,y:0},size:s};let c=(o??2)**t,l={x:Math.max(0,Math.floor(n.xmin/c)),y:Math.max(0,Math.floor(n.ymin/c))},u=Math.min(s.width,Math.ceil(n.xmax/c)),d=Math.min(s.height,Math.ceil(n.ymax/c));return{offset:l,size:{width:Math.max(1,u-l.x),height:Math.max(1,d-l.y)}}}function S(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=Math.max(1,o/c,s/l),d=Math.ceil(Math.log(u)/Math.log(a));return Math.max(0,Math.min(r,Number.isFinite(d)?d:r))}function C(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=r;for(let e=r;e>=0&&(u=e,!(e===0||o/a**e>c||s/a**e>l));--e);return u}function w(e,t,n=4096){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(0,Math.min(r,t));for(;o<r;){let t=b(e.rasterInfo.width,e.rasterInfo.height,o,a);if(t.width<=n&&t.height<=n)break;o+=1}return o}function T(e){let{camera:t,width:n,height:r}=e;if(n<=0||r<=0)return{horizontal:t.fov,vertical:t.fov};let i=Math.sqrt(n*n+r*r);return{horizontal:2*Math.atan(Math.tan(t.fov*Math.PI/360)*n/i)*180/Math.PI,vertical:2*Math.atan(Math.tan(t.fov*Math.PI/360)*r/i)*180/Math.PI}}function E(e,t,n){if(e==null||t==null||!Number.isFinite(e)||!Number.isFinite(t))return{horizontal:e??null,vertical:t??null};let r=Math.sin(n*Math.PI/180),i=Math.cos(n*Math.PI/180),a=[[e,0],[e,t],[0,t]].map(([e,t])=>[i*e-r*t,r*e+i*t]),o=Math.min(0,...a.map(([e])=>e)),s=Math.max(0,...a.map(([e])=>e)),c=Math.min(0,...a.map(([,e])=>e)),l=Math.max(0,...a.map(([,e])=>e));return{horizontal:Math.min(Math.abs(s-o),150),vertical:Math.min(Math.abs(l-c),150)}}function D(e,t,n,r){let{width:i,height:a}=e,o=E(t,n,r),s=Math.sqrt(i*i+a*a);if(s<=0)return o.vertical??o.horizontal??null;if(i>=a){let e=o.vertical;return e==null||a<=0?null:2*Math.atan(Math.tan(e*Math.PI/360)*s/a)*180/Math.PI}let c=o.horizontal;return c==null||i<=0?null:2*Math.atan(Math.tan(c*Math.PI/360)*s/i)*180/Math.PI}function O(e,t,r=16,i=0){let a=e.camera.position,{horizontal:l,vertical:u}=T(e),d=a.spatialReference.isWebMercator?c(a.y):1,f=o({cameraLocation:a,farDistance:t,horizontalFieldOfView:l,rotationMatrix:s([e.camera.heading,e.camera.tilt,i]),scalingFactor:d,verticalFieldOfView:u}),p=[];for(let e=0;e<f.length;e+=1){let t=f[e],i=f[(e+1)%f.length];for(let e=0;e<r;e+=1){let o=e/r;p.push(new n({x:t[0]+(i[0]-t[0])*o,y:t[1]+(i[1]-t[1])*o,z:t[2]+(i[2]-t[2])*o,spatialReference:a.spatialReference}))}}return p}async function k(t,n,o,s,c){if(n.type!==`3d`)return null;let{cameraRoll:l,farDistance:u}=t.attributes;if(typeof u!=`number`||!Number.isFinite(u)||u<=0)return null;let d=await s(O(n,u,32,l??0),c);e(c);let f=d.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(f.length<4)return null;let[p,m]=o,h=new r({rings:[[[0,0],[p,0],[p,m],[0,m],[0,0]]],spatialReference:i.WebMercator}),g=new r({rings:[[...f.map(({x:e,y:t})=>[e,t]),[f[0].x,f[0].y]]],spatialReference:i.WebMercator}),_=a(g,h),v=_?_.rings.flatMap(e=>e.map(([e,t])=>({x:e,y:t}))):f;if(!v.length)return null;let y=v.map(({x:e})=>Math.max(0,Math.min(p,e))),b=v.map(({y:e})=>Math.max(0,Math.min(m,e)));return j({xmin:Math.floor(Math.max(0,Math.min(...y))),xmax:Math.ceil(Math.min(p,Math.max(...y))),ymin:Math.floor(Math.max(0,Math.min(...b))),ymax:Math.ceil(Math.min(m,Math.max(...b)))},p,m)}async function A(t,n,r,i,a){if(n.type!==`3d`)return null;let{farDistance:o}=t.attributes;if(typeof o!=`number`||!Number.isFinite(o)||o<=0)return null;let s=o,[c,l]=r,u=await i(O(n,s),a);e(a);let d=u.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(d.length<4)return null;let f=M(d,l);if(!f)return null;let p=P(d.map(({x:e})=>N(e,c)),c),m=c-p.gap;return m<=0?null:m>=c-1?[{xmin:0,xmax:c,ymin:f.ymin,ymax:f.ymax}]:F(p,c,f)}function j(e,t,n){let r=Math.max(1,e.xmax-e.xmin),i=Math.max(1,e.ymax-e.ymin),a=Math.max(8,Math.round(r*g)),o=Math.max(8,Math.round(i*g)),s=Math.floor(Math.max(0,e.xmin-a)),c=Math.ceil(Math.min(t,e.xmax+a)),l=Math.floor(Math.max(0,e.ymin-o)),u=Math.ceil(Math.min(n,e.ymax+o));return c>s&&u>l?{xmin:s,xmax:c,ymin:l,ymax:u}:null}function M(e,t){let n=e.map(({y:e})=>Math.max(0,Math.min(t,e))),r=Math.floor(Math.max(0,Math.min(...n))),i=Math.ceil(Math.min(t,Math.max(...n)));return i>r?{ymin:r,ymax:i}:null}function N(e,t){return(e%t+t)%t}function P(e,t){let n=e.slice().sort((e,t)=>e-t),r=-1,i=0,a=0;for(let e=0;e<n.length;e+=1){let o=n[e],s=e===n.length-1?n[0]+t:n[e+1],c=s-o;c>r&&(r=c,i=o,a=s)}return{gap:r,start:i,end:a}}function F(e,t,n){let r=N(e.end,t),i=N(e.start,t);return r<=i?[{xmin:Math.floor(r),xmax:Math.ceil(i),...n}]:[{xmin:0,xmax:Math.ceil(i),...n},{xmin:Math.floor(r),xmax:t,...n}].filter(({xmin:e,xmax:t})=>t>e)}function I(e,t,n=20){let[r,i]=e,a=t?Math.max(1,t.xmax-t.xmin):r,o=t?Math.max(1,t.ymax-t.ymin):i;if(a<=0||o<=0)return{columns:2,rows:2};let s=a/o;return s>=1?{columns:n,rows:Math.max(2,Math.round(n/s))}:{columns:Math.max(2,Math.round(n*s)),rows:n}}export{_ as applySphereMeshOffsetInMeters,w as clampRasterLevelForTextureSize,k as computeDefaultAreaOfInterest,A as computePanoramicAreasOfInterest,O as createFarplaneSamplePoints,y as createSuperimposeGridVertexAttributes,v as createSuperimposeSamplePixels,C as getBaseRasterLevel,D as getDefaultSuperimposeFov,E as getEffectiveImageFieldOfView,x as getRasterFetchParameters,b as getRasterLevelSize,T as getViewCameraFieldOfView,S as getViewDependentRasterLevel,h as panoramicSuperimposeKeyboardAngleStep,u as panoramicSuperimposeMaxFov,m as panoramicSuperimposeMaxTilt,l as panoramicSuperimposeMinFov,p as panoramicSuperimposeMinTilt,d as panoramicSuperimposeZoomInFactor,f as panoramicSuperimposeZoomOutFactor};
2
+ import{throwIfAborted as e}from"../../../core/promiseUtils.js";import{getMetersPerUnitForSR as t}from"../../../core/units.js";import n from"../../../geometry/Point.js";import r from"../../../geometry/Polygon.js";import i from"../../../geometry/SpatialReference.js";import{intersectionExecute as a}from"../../../geometry/operators/intersectionOperator.js";import{computeFarplaneVertices as o}from"../../../layers/orientedImagery/transformations/utils.js";import{calculateUpdatedWmsf as s}from"../imageMeasurementUtils.js";import{createRotationMatrixFromHPR as c}from"../../../layers/orientedImagery/transformations/rotationUtils.js";const l=15,u=120,d=.9,f=1.1,p=1,m=179,h=3,g=.05;function _(e,n){let{radiusOffset:r=0,minimumRadiusInMeters:i=0}=n;if(r===0)return;let a=t(e.spatialReference),o=a?r/a:r,{position:s}=e.vertexAttributes,c=Math.floor(s.length/3),l=0,u=0,d=0;for(let e=0;e<c;e++)l+=s[e*3],u+=s[e*3+1],d+=s[e*3+2];l/=c,u/=c,d/=c;let f=0;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;f+=Math.sqrt(t*t+n*n+r*r)}f/=c;let p=a?i/a:i,m=Math.max(p,f+o),h=f>0?m/f:1;for(let e=0;e<c;e++){let t=s[e*3]-l,n=s[e*3+1]-u,r=s[e*3+2]-d;t*=h,n*=h,r*=h,s[e*3]=l+t,s[e*3+1]=u+n,s[e*3+2]=d+r}e.vertexAttributesChanged()}function v(e,t,n){let{columns:r,rows:i}=I(e,t,n),[a,o]=e,s=t?.xmin??0,c=t?.ymin??0,l=t?Math.max(1,t.xmax-t.xmin):a,u=t?Math.max(1,t.ymax-t.ymin):o,d=[];for(let e=0;e<=i;e+=1){let t=c+e/i*u;for(let e=0;e<=r;e+=1)d.push({x:s+e/r*l,y:t})}return d}function y(e,t,n,r){let{columns:i,rows:a}=I(t,n,r),o=i+1,s=new Float64Array(e.length*3),c=new Float32Array(e.length*2),l=[];e.forEach((e,t)=>{let n=t*3,r=t*2,l=t%o,u=Math.floor(t/o);s[n]=e.x,s[n+1]=e.y,s[n+2]=e.z??0,c[r]=l/i,c[r+1]=u/a});for(let e=0;e<a;e+=1)for(let t=0;t<i;t+=1){let n=e*o+t,r=n+1,i=n+o,a=i+1;l.push(n,r,a,n,a,i)}return{faces:l,position:s,uv:c}}function b(e,t,n,r=2){return{width:Math.ceil(e/r**n),height:Math.ceil(t/r**n)}}function x(e,t,n){let{width:r,height:i,storageInfo:a}=e.rasterInfo,{pyramidScalingFactor:o}=a,s=b(r,i,t,o??void 0);if(!n)return{offset:{x:0,y:0},size:s};let c=(o??2)**t,l={x:Math.max(0,Math.floor(n.xmin/c)),y:Math.max(0,Math.floor(n.ymin/c))},u=Math.min(s.width,Math.ceil(n.xmax/c)),d=Math.min(s.height,Math.ceil(n.ymax/c));return{offset:l,size:{width:Math.max(1,u-l.x),height:Math.max(1,d-l.y)}}}function S(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=Math.max(1,o/c,s/l),d=Math.ceil(Math.log(u)/Math.log(a));return Math.max(0,Math.min(r,Number.isFinite(d)?d:r))}function C(e,t,n){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(1,(n?.xmax??e.rasterInfo.width)-(n?.xmin??0)),s=Math.max(1,(n?.ymax??e.rasterInfo.height)-(n?.ymin??0)),c=Math.max(1,t.width),l=Math.max(1,t.height),u=r;for(let e=r;e>=0&&(u=e,!(e===0||o/a**e>c||s/a**e>l));--e);return u}function w(e,t,n=4096){let{maximumPyramidLevel:r,pyramidScalingFactor:i}=e.rasterInfo.storageInfo,a=i??2,o=Math.max(0,Math.min(r,t));for(;o<r;){let t=b(e.rasterInfo.width,e.rasterInfo.height,o,a);if(t.width<=n&&t.height<=n)break;o+=1}return o}function T(e){let{camera:t,width:n,height:r}=e;if(n<=0||r<=0)return{horizontal:t.fov,vertical:t.fov};let i=Math.sqrt(n*n+r*r);return{horizontal:2*Math.atan(Math.tan(t.fov*Math.PI/360)*n/i)*180/Math.PI,vertical:2*Math.atan(Math.tan(t.fov*Math.PI/360)*r/i)*180/Math.PI}}function E(e,t,n){if(e==null||t==null||!Number.isFinite(e)||!Number.isFinite(t))return{horizontal:e??null,vertical:t??null};let r=Math.sin(n*Math.PI/180),i=Math.cos(n*Math.PI/180),a=[[e,0],[e,t],[0,t]].map(([e,t])=>[i*e-r*t,r*e+i*t]),o=Math.min(0,...a.map(([e])=>e)),s=Math.max(0,...a.map(([e])=>e)),c=Math.min(0,...a.map(([,e])=>e)),l=Math.max(0,...a.map(([,e])=>e));return{horizontal:Math.min(Math.abs(s-o),150),vertical:Math.min(Math.abs(l-c),150)}}function D(e,t,n,r){let{width:i,height:a}=e,o=E(t,n,r),s=Math.sqrt(i*i+a*a);if(s<=0)return o.vertical??o.horizontal??null;if(i>=a){let e=o.vertical;return e==null||a<=0?null:2*Math.atan(Math.tan(e*Math.PI/360)*s/a)*180/Math.PI}let c=o.horizontal;return c==null||i<=0?null:2*Math.atan(Math.tan(c*Math.PI/360)*s/i)*180/Math.PI}function O(e,t,r=16,i=0){let a=e.camera.position,{horizontal:l,vertical:u}=T(e),d=a.spatialReference.isWebMercator?s(a.y):1,f=o({cameraLocation:a,farDistance:t,horizontalFieldOfView:l,rotationMatrix:c([e.camera.heading,e.camera.tilt,i]),scalingFactor:d,verticalFieldOfView:u}),p=[];for(let e=0;e<f.length;e+=1){let t=f[e],i=f[(e+1)%f.length];for(let e=0;e<r;e+=1){let o=e/r;p.push(new n({x:t[0]+(i[0]-t[0])*o,y:t[1]+(i[1]-t[1])*o,z:t[2]+(i[2]-t[2])*o,spatialReference:a.spatialReference}))}}return p}async function k(t,n,o,s,c){if(n.type!==`3d`)return null;let{cameraRoll:l,farDistance:u}=t.attributes;if(typeof u!=`number`||!Number.isFinite(u)||u<=0)return null;let d=await s(O(n,u,32,l??0),c);e(c);let f=d.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(f.length<4)return null;let[p,m]=o,h=new r({rings:[[[0,0],[p,0],[p,m],[0,m],[0,0]]],spatialReference:i.WebMercator}),g=new r({rings:[[...f.map(({x:e,y:t})=>[e,t]),[f[0].x,f[0].y]]],spatialReference:i.WebMercator}),_=a(g,h),v=_?_.rings.flatMap(e=>e.map(([e,t])=>({x:e,y:t}))):f;if(!v.length)return null;let y=v.map(({x:e})=>Math.max(0,Math.min(p,e))),b=v.map(({y:e})=>Math.max(0,Math.min(m,e)));return j({xmin:Math.floor(Math.max(0,Math.min(...y))),xmax:Math.ceil(Math.min(p,Math.max(...y))),ymin:Math.floor(Math.max(0,Math.min(...b))),ymax:Math.ceil(Math.min(m,Math.max(...b)))},p,m)}async function A(t,n,r,i,a){if(n.type!==`3d`)return null;let{farDistance:o}=t.attributes;if(typeof o!=`number`||!Number.isFinite(o)||o<=0)return null;let s=o,[c,l]=r,u=await i(O(n,s),a);e(a);let d=u.filter(({x:e,y:t})=>Number.isFinite(e)&&Number.isFinite(t));if(d.length<4)return null;let f=M(d,l);if(!f)return null;let p=P(d.map(({x:e})=>N(e,c)),c),m=c-p.gap;return m<=0?null:m>=c-1?[{xmin:0,xmax:c,ymin:f.ymin,ymax:f.ymax}]:F(p,c,f)}function j(e,t,n){let r=Math.max(1,e.xmax-e.xmin),i=Math.max(1,e.ymax-e.ymin),a=Math.max(8,Math.round(r*g)),o=Math.max(8,Math.round(i*g)),s=Math.floor(Math.max(0,e.xmin-a)),c=Math.ceil(Math.min(t,e.xmax+a)),l=Math.floor(Math.max(0,e.ymin-o)),u=Math.ceil(Math.min(n,e.ymax+o));return c>s&&u>l?{xmin:s,xmax:c,ymin:l,ymax:u}:null}function M(e,t){let n=e.map(({y:e})=>Math.max(0,Math.min(t,e))),r=Math.floor(Math.max(0,Math.min(...n))),i=Math.ceil(Math.min(t,Math.max(...n)));return i>r?{ymin:r,ymax:i}:null}function N(e,t){return(e%t+t)%t}function P(e,t){let n=e.slice().sort((e,t)=>e-t),r=-1,i=0,a=0;for(let e=0;e<n.length;e+=1){let o=n[e],s=e===n.length-1?n[0]+t:n[e+1],c=s-o;c>r&&(r=c,i=o,a=s)}return{gap:r,start:i,end:a}}function F(e,t,n){let r=N(e.end,t),i=N(e.start,t);return r<=i?[{xmin:Math.floor(r),xmax:Math.ceil(i),...n}]:[{xmin:0,xmax:Math.ceil(i),...n},{xmin:Math.floor(r),xmax:t,...n}].filter(({xmin:e,xmax:t})=>t>e)}function I(e,t,n=20){let[r,i]=e,a=t?Math.max(1,t.xmax-t.xmin):r,o=t?Math.max(1,t.ymax-t.ymin):i;if(a<=0||o<=0)return{columns:2,rows:2};let s=a/o;return s>=1?{columns:n,rows:Math.max(2,Math.round(n/s))}:{columns:Math.max(2,Math.round(n*s)),rows:n}}export{_ as applySphereMeshOffsetInMeters,w as clampRasterLevelForTextureSize,k as computeDefaultAreaOfInterest,A as computePanoramicAreasOfInterest,O as createFarplaneSamplePoints,y as createSuperimposeGridVertexAttributes,v as createSuperimposeSamplePixels,C as getBaseRasterLevel,D as getDefaultSuperimposeFov,E as getEffectiveImageFieldOfView,x as getRasterFetchParameters,b as getRasterLevelSize,T as getViewCameraFieldOfView,S as getViewDependentRasterLevel,h as panoramicSuperimposeKeyboardAngleStep,u as panoramicSuperimposeMaxFov,m as panoramicSuperimposeMaxTilt,l as panoramicSuperimposeMinFov,p as panoramicSuperimposeMinTilt,d as panoramicSuperimposeZoomInFactor,f as panoramicSuperimposeZoomOutFactor};