@arcgis/core 4.32.0-next.20250121 → 4.32.0-next.20250123
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.
- package/Graphic.js +1 -1
- package/Viewpoint.js +1 -1
- package/WebLinkChart.js +1 -1
- package/analysis/LengthDimension.js +1 -1
- package/analysis/SlicePlane.js +1 -1
- package/analysis/Viewshed.js +1 -1
- package/analysis/ViewshedAnalysis.js +1 -1
- package/arcade/featureSetUtils.js +1 -1
- package/arcade/featureset/sources/FeatureLayerMemory.js +1 -1
- package/arcade/featureset/support/shared.js +1 -1
- package/arcade/functions/knowledgegraph.js +1 -1
- package/arcade/treeAnalysis.js +1 -1
- package/assets/components/assets/icon/crosshair16.json +1 -0
- package/assets/components/assets/icon/crosshair24.json +1 -0
- package/assets/components/assets/icon/crosshair32.json +1 -0
- package/assets/components/assets/icon/utilityNetworkLayer16.json +1 -0
- package/assets/components/assets/icon/utilityNetworkLayer24.json +1 -0
- package/assets/components/assets/icon/utilityNetworkLayer32.json +1 -0
- package/assets/esri/core/t9n/Units_ar.json +1 -1
- package/assets/esri/core/t9n/Units_bg.json +1 -1
- package/assets/esri/core/t9n/Units_bs.json +1 -1
- package/assets/esri/core/t9n/Units_ca.json +1 -1
- package/assets/esri/core/t9n/Units_cs.json +1 -1
- package/assets/esri/core/t9n/Units_da.json +1 -1
- package/assets/esri/core/t9n/Units_de.json +1 -1
- package/assets/esri/core/t9n/Units_el.json +1 -1
- package/assets/esri/core/t9n/Units_es.json +1 -1
- package/assets/esri/core/t9n/Units_et.json +1 -1
- package/assets/esri/core/t9n/Units_fi.json +1 -1
- package/assets/esri/core/t9n/Units_fr.json +1 -1
- package/assets/esri/core/t9n/Units_he.json +1 -1
- package/assets/esri/core/t9n/Units_hr.json +1 -1
- package/assets/esri/core/t9n/Units_hu.json +1 -1
- package/assets/esri/core/t9n/Units_id.json +1 -1
- package/assets/esri/core/t9n/Units_it.json +1 -1
- package/assets/esri/core/t9n/Units_ja.json +1 -1
- package/assets/esri/core/t9n/Units_ko.json +1 -1
- package/assets/esri/core/t9n/Units_lt.json +1 -1
- package/assets/esri/core/t9n/Units_lv.json +1 -1
- package/assets/esri/core/t9n/Units_nl.json +1 -1
- package/assets/esri/core/t9n/Units_no.json +1 -1
- package/assets/esri/core/t9n/Units_pl.json +1 -1
- package/assets/esri/core/t9n/Units_pt-BR.json +1 -1
- package/assets/esri/core/t9n/Units_pt-PT.json +1 -1
- package/assets/esri/core/t9n/Units_ro.json +1 -1
- package/assets/esri/core/t9n/Units_ru.json +1 -1
- package/assets/esri/core/t9n/Units_sk.json +1 -1
- package/assets/esri/core/t9n/Units_sl.json +1 -1
- package/assets/esri/core/t9n/Units_sr.json +1 -1
- package/assets/esri/core/t9n/Units_sv.json +1 -1
- package/assets/esri/core/t9n/Units_th.json +1 -1
- package/assets/esri/core/t9n/Units_tr.json +1 -1
- package/assets/esri/core/t9n/Units_uk.json +1 -1
- package/assets/esri/core/t9n/Units_vi.json +1 -1
- package/assets/esri/core/t9n/Units_zh-CN.json +1 -1
- package/assets/esri/core/t9n/Units_zh-HK.json +1 -1
- package/assets/esri/core/t9n/Units_zh-TW.json +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/00479bc2393e5ad0e9b7.js +1 -0
- package/assets/esri/core/workers/chunks/0167cf867d8e46c818b0.js +1 -0
- package/assets/esri/core/workers/chunks/{6d17488396583d83d9be.js → 0711d3ad4d403bcfdcad.js} +1 -1
- package/assets/esri/core/workers/chunks/07360fde6ea65664e6ca.js +1 -0
- package/assets/esri/core/workers/chunks/{f8e188af5608293d5b2b.js → 07bff9e742f3e5877f3f.js} +1 -1
- package/assets/esri/core/workers/chunks/08ba4ab873a0da6a95eb.js +1 -0
- package/assets/esri/core/workers/chunks/{baf6b773b8c714d86cba.js → 0982611dd86f0805d102.js} +1 -1
- package/assets/esri/core/workers/chunks/12dd892cf61a76fb40ad.js +1 -0
- package/assets/esri/core/workers/chunks/13453393e40ab80329d9.js +1 -0
- package/assets/esri/core/workers/chunks/15e08e8a8a72b177d74c.js +1 -0
- package/assets/esri/core/workers/chunks/16f82e9d98371431b46d.js +1 -0
- package/assets/esri/core/workers/chunks/1787932b984ec8977095.js +1 -0
- package/assets/esri/core/workers/chunks/1e3ab66d0e8a7f160f33.js +1 -0
- package/assets/esri/core/workers/chunks/1f8eb143f5d665b95593.js +1 -0
- package/assets/esri/core/workers/chunks/2079d6e3da42d1ceb4c5.js +1 -0
- package/assets/esri/core/workers/chunks/207c040b0e42358a5389.js +1 -0
- package/assets/esri/core/workers/chunks/21016d58428b15f7427c.js +1 -0
- package/assets/esri/core/workers/chunks/{af0b0a7eedebcf99d05d.js → 2118e9ffb24178ed7f59.js} +1 -1
- package/assets/esri/core/workers/chunks/21c12edc0632eb911e73.js +1 -0
- package/assets/esri/core/workers/chunks/{12b2c8251ec2d0e2ca46.js → 22721fa9d1e8a8d47b0e.js} +1 -1
- package/assets/esri/core/workers/chunks/24a86c52c8bdd0b5eb4d.js +1 -0
- package/assets/esri/core/workers/chunks/{9970e0e74cf2877a7ffc.js → 2503beb30f905b78d85f.js} +2 -2
- package/assets/esri/core/workers/chunks/2503beb30f905b78d85f.js.LICENSE.txt +15 -0
- package/assets/esri/core/workers/chunks/25a6641938a9ccab39b7.js +1 -0
- package/assets/esri/core/workers/chunks/26a2bd432e7a1b3870c3.js +1 -0
- package/assets/esri/core/workers/chunks/26e9a1889d069e81a483.js +1 -0
- package/assets/esri/core/workers/chunks/2840705ae7fa909ab4ed.js +1 -0
- package/assets/esri/core/workers/chunks/2971266a49226e769360.js +1 -0
- package/assets/esri/core/workers/chunks/298da83f8d507d128213.js +1 -0
- package/assets/esri/core/workers/chunks/2a33e83ff2ef16a2b421.js +1 -0
- package/assets/esri/core/workers/chunks/2a7f5d09cdc0333fa4bd.js +1 -0
- package/assets/esri/core/workers/chunks/2e82c8882a0989ed5431.js +1 -0
- package/assets/esri/core/workers/chunks/2ea5e5e6c4660a06b516.js +1 -0
- package/assets/esri/core/workers/chunks/304722106439951da6e1.js +1 -0
- package/assets/esri/core/workers/chunks/324a5547c64a3bae670d.js +1 -0
- package/assets/esri/core/workers/chunks/349f31a1fb489fbfe60d.js +1 -0
- package/assets/esri/core/workers/chunks/{f95d4fb1199161d8b683.js → 34b31091e172e910d750.js} +1 -1
- package/assets/esri/core/workers/chunks/{c690268f48bc84778b23.js → 3b6f2e5ec0a372ae8b94.js} +1 -1
- package/assets/esri/core/workers/chunks/3c23e567cfb7372c44ba.js +1 -0
- package/assets/esri/core/workers/chunks/{66d40a486aa3caa76106.js → 3c591f76e7d6204b7780.js} +1 -1
- package/assets/esri/core/workers/chunks/3f25b7844816bbc3a9fe.js +1 -0
- package/assets/esri/core/workers/chunks/402de76b5de05615e111.js +1 -0
- package/assets/esri/core/workers/chunks/453f71ac3579524221b2.js +1 -0
- package/assets/esri/core/workers/chunks/454034bad60414a9ab7f.js +1 -0
- package/assets/esri/core/workers/chunks/472564bd841d0c5d8f17.js +1 -0
- package/assets/esri/core/workers/chunks/483787099d2ba8b8022d.js +1 -0
- package/assets/esri/core/workers/chunks/499e845c727b7891283d.js +2 -0
- package/assets/esri/core/workers/chunks/{34b86b4b9e6c1937ee39.js.LICENSE.txt → 499e845c727b7891283d.js.LICENSE.txt} +4 -6
- package/assets/esri/core/workers/chunks/4d7bd2bbe9045a2fee7a.js +1 -0
- package/assets/esri/core/workers/chunks/4e5cf2d489db2a57d3bd.js +1 -0
- package/assets/esri/core/workers/chunks/52a1c14dc33964e197f6.js +1 -0
- package/assets/esri/core/workers/chunks/{f8b85c0074d4fe4c158e.js → 571a0af503dbe8093814.js} +1 -1
- package/assets/esri/core/workers/chunks/57ebfa7f163a1b40cd1e.js +1 -0
- package/assets/esri/core/workers/chunks/589777dab423b619da47.js +1 -0
- package/assets/esri/core/workers/chunks/{2de5fe03e28ca8a72597.js → 5a83f90b55a5efbe1ef2.js} +1 -1
- package/assets/esri/core/workers/chunks/5c57aa9fdc4e1bab61ac.js +1 -0
- package/assets/esri/core/workers/chunks/5e889a675cbaff03ad5a.js +1 -0
- package/assets/esri/core/workers/chunks/5fbdb5fea7d6676fcf19.js +1 -0
- package/assets/esri/core/workers/chunks/610b33b7291cffcc4e5d.js +1 -0
- package/assets/esri/core/workers/chunks/644e83f48752a34f0d1a.js +1 -0
- package/assets/esri/core/workers/chunks/{c81204ae663e58c7b689.js → 6aa6a56bcece0793967e.js} +1 -1
- package/assets/esri/core/workers/chunks/6d179eb8edcefb91d5d7.js +1 -0
- package/assets/esri/core/workers/chunks/6df1bda3826a4a3c1dc9.js +1 -0
- package/assets/esri/core/workers/chunks/6e6422eda398774acbc7.js +1 -0
- package/assets/esri/core/workers/chunks/6eb829a7959df2269b0e.js +1 -0
- package/assets/esri/core/workers/chunks/7719fe672ea74cdc87be.js +1 -0
- package/assets/esri/core/workers/chunks/774cbf14c74504458a6f.js +1 -0
- package/assets/esri/core/workers/chunks/79afe4674a0557eb26e4.js +1 -0
- package/assets/esri/core/workers/chunks/{02b2175132c9720bc756.js → 7a0415db78c68d31733f.js} +1 -1
- package/assets/esri/core/workers/chunks/7a9e1696dc6120df15b0.js +1 -0
- package/assets/esri/core/workers/chunks/7ae1f26ded268099f429.js +1 -0
- package/assets/esri/core/workers/chunks/7bf08823f861628144a1.js +1 -0
- package/assets/esri/core/workers/chunks/7d49b5bc9eb102e467ab.js +1 -0
- package/assets/esri/core/workers/chunks/7e4d72279cc599b7029c.js +1 -0
- package/assets/esri/core/workers/chunks/{89198ca24466d939e4e8.js → 7ee2d34d9eaab5e8f589.js} +1 -1
- package/assets/esri/core/workers/chunks/7fd48f0a2b35779e680a.js +1 -0
- package/assets/esri/core/workers/chunks/81efe1f47fd41b7a5cc1.js +1 -0
- package/assets/esri/core/workers/chunks/835fa4484c58d9b31c78.js +1 -0
- package/assets/esri/core/workers/chunks/{44ec3c77339b9765aaa4.js → 8584ccce34972e28c040.js} +1 -1
- package/assets/esri/core/workers/chunks/86149b4a5a148744c7d1.js +1 -0
- package/assets/esri/core/workers/chunks/86b63a4805f7dfbf5857.js +1 -0
- package/assets/esri/core/workers/chunks/89df68dd6a0386210d5d.js +1 -0
- package/assets/esri/core/workers/chunks/8a13cd313d309281dbb9.js +1 -0
- package/assets/esri/core/workers/chunks/{1bf472f3ca67b0275667.js → 8a1e4f65fc81aba7a704.js} +1 -1
- package/assets/esri/core/workers/chunks/8b8dd0771fbc582e1e24.js +2 -0
- package/assets/esri/core/workers/chunks/{280b7b885b96a5a68716.js.LICENSE.txt → 8b8dd0771fbc582e1e24.js.LICENSE.txt} +4 -6
- package/assets/esri/core/workers/chunks/8e334fa440ae542e2e34.js +1 -0
- package/assets/esri/core/workers/chunks/91384398f01485631f70.js +1 -0
- package/assets/esri/core/workers/chunks/92155d112ebb6a4c6c6e.js +1 -0
- package/assets/esri/core/workers/chunks/{6a737f056b2b95f09776.js → 92871ebb339a7b6ff29c.js} +1 -1
- package/assets/esri/core/workers/chunks/92d243c7bc2f92f6cd33.js +1 -0
- package/assets/esri/core/workers/chunks/971c956de1f8dd230d0f.js +1 -0
- package/assets/esri/core/workers/chunks/9848e9b9cc62328bfeb4.js +1 -0
- package/assets/esri/core/workers/chunks/9848f496d534feff6df1.js +314 -0
- package/assets/esri/core/workers/chunks/9bd22cdf6eb158555906.js +1 -0
- package/assets/esri/core/workers/chunks/{3a3e9701e5d7b05f41b7.js → 9bfb091cec7eed6c8111.js} +1 -1
- package/assets/esri/core/workers/chunks/9c5c6ecaf5be24279fa5.js +1 -0
- package/assets/esri/core/workers/chunks/9c6380af3bc3130658e1.js +1 -0
- package/assets/esri/core/workers/chunks/{17726b0ab1bf66185d66.js → 9d6d82419de2b76508d8.js} +1 -1
- package/assets/esri/core/workers/chunks/9ed1691eab19dfb1cf04.js +1 -0
- package/assets/esri/core/workers/chunks/a0a4c7605c678d2de7ef.js +1 -0
- package/assets/esri/core/workers/chunks/a3ae5ea96898de327147.js +1 -0
- package/assets/esri/core/workers/chunks/aca9a39eb1181a7733bb.js +1 -0
- package/assets/esri/core/workers/chunks/ad215219e5eef8598745.js +1 -0
- package/assets/esri/core/workers/chunks/ad7596e7f81f557bb2c8.js +1 -0
- package/assets/esri/core/workers/chunks/adf361e8b2887921a69c.js +1 -0
- package/assets/esri/core/workers/chunks/adfa126cea32298c28e9.js +1 -0
- package/assets/esri/core/workers/chunks/b21b152fa15896577242.js +2 -0
- package/assets/esri/core/workers/chunks/b21b152fa15896577242.js.LICENSE.txt +8 -0
- package/assets/esri/core/workers/chunks/b3aeda290470dcb2bdd2.js +1 -0
- package/assets/esri/core/workers/chunks/b3f9d7a676076a7557f5.js +1 -0
- package/assets/esri/core/workers/chunks/b42ecc7c3eb2fd8d1308.js +1 -0
- package/assets/esri/core/workers/chunks/b44cf0e4c2f93408cabc.js +1 -0
- package/assets/esri/core/workers/chunks/b70a9d23e549d0e60e0f.js +1 -0
- package/assets/esri/core/workers/chunks/b882f921387e21fb263d.js +1 -0
- package/assets/esri/core/workers/chunks/ba3c18d1efde46461231.js +1 -0
- package/assets/esri/core/workers/chunks/bb73cd34fbae935ccbcc.js +1 -0
- package/assets/esri/core/workers/chunks/bbdf93f2ac9bd80338b2.js +1 -0
- package/assets/esri/core/workers/chunks/bc0183350841e09d71fa.js +1 -0
- package/assets/esri/core/workers/chunks/bddfdbb2fb1dd813e8f2.js +1 -0
- package/assets/esri/core/workers/chunks/bf3c4c1bff8b71bc0b13.js +1 -0
- package/assets/esri/core/workers/chunks/c1970657a287ec96001e.js +1 -0
- package/assets/esri/core/workers/chunks/{399e67ccb69a5b206354.js → c1fd87af3129873369fd.js} +1 -1
- package/assets/esri/core/workers/chunks/{82266ca8002554198208.js → c2336d1f5b2b7bf6e7a7.js} +1 -1
- package/assets/esri/core/workers/chunks/c571c2155589d711005c.js +1 -0
- package/assets/esri/core/workers/chunks/c83b26ff96e39266adc2.js +1 -0
- package/assets/esri/core/workers/chunks/ca5bd71bc2c1b1b3f9d9.js +1 -0
- package/assets/esri/core/workers/chunks/{98da074899c82f0ded0b.js → cdd8983cf3a301805680.js} +1 -1
- package/assets/esri/core/workers/chunks/{435c037ccba71f1e22d3.js → d31f7598629f7cc50233.js} +1 -1
- package/assets/esri/core/workers/chunks/d45ff061bf71b73e9f26.js +1 -0
- package/assets/esri/core/workers/chunks/d4760e583dfac95dc8a1.js +1 -0
- package/assets/esri/core/workers/chunks/{7fe92f072d3641ec4662.js → d5a749156cb4ade92128.js} +1 -1
- package/assets/esri/core/workers/chunks/d6f2a023ddd26a544eb4.js +1 -0
- package/assets/esri/core/workers/chunks/d71a5c029fc9f4820589.js +1 -0
- package/assets/esri/core/workers/chunks/d7ccbe9b36e89b385040.js +1 -0
- package/assets/esri/core/workers/chunks/{e9c21907fabcedbd32ae.js → d8386803854f4b3e2576.js} +1 -1
- package/assets/esri/core/workers/chunks/d8c762ca94e3a11b125d.js +1 -0
- package/assets/esri/core/workers/chunks/da01b509b2237689faad.js +1 -0
- package/assets/esri/core/workers/chunks/daeca0feb37bbb198677.js +1 -0
- package/assets/esri/core/workers/chunks/dbc447413ab40a79ba87.js +1 -0
- package/assets/esri/core/workers/chunks/de2ca2dc1b5d62c0d82e.js +1 -0
- package/assets/esri/core/workers/chunks/df86a49ddc505b4a7c4a.js +1 -0
- package/assets/esri/core/workers/chunks/dfa4be2e07cc4c0938b0.js +1 -0
- package/assets/esri/core/workers/chunks/{fa331c8b556bb7fb8ae3.js → dfaf1da323906ee60549.js} +1 -1
- package/assets/esri/core/workers/chunks/e067cef3b3ac3af49b88.js +1 -0
- package/assets/esri/core/workers/chunks/e1108227821a85a784bc.js +2 -0
- package/assets/esri/core/workers/chunks/e1108227821a85a784bc.js.LICENSE.txt +9 -0
- package/assets/esri/core/workers/chunks/e42c8045f54aa88c9f6e.js +1 -0
- package/assets/esri/core/workers/chunks/e56647e61296643c5f84.js +1 -0
- package/assets/esri/core/workers/chunks/e6087eda5e3b7e5ad3e1.js +1 -0
- package/assets/esri/core/workers/chunks/e89439cc20b7f4c6a9d1.js +1 -0
- package/assets/esri/core/workers/chunks/e9993d4f2bfdc434fbcc.js +1 -0
- package/assets/esri/core/workers/chunks/ecc3a2adc384677bec38.js +1 -0
- package/assets/esri/core/workers/chunks/{54c149f90bf94b797b36.js → ed30f46236da29c15430.js} +1 -1
- package/assets/esri/core/workers/chunks/f2cf05fbbb51d657d300.js +1 -0
- package/assets/esri/core/workers/chunks/{1c67f4f84fff70e20902.js → f31a9d88113bb86d946e.js} +2 -2
- package/assets/esri/core/workers/chunks/{1c67f4f84fff70e20902.js.LICENSE.txt → f31a9d88113bb86d946e.js.LICENSE.txt} +4 -6
- package/assets/esri/core/workers/chunks/f62f657f9fef28f492e0.js +1 -0
- package/assets/esri/core/workers/chunks/fd1506eedb1cee717822.js +2 -0
- package/assets/esri/core/workers/chunks/fd1506eedb1cee717822.js.LICENSE.txt +3 -0
- package/assets/esri/core/workers/chunks/fef135e55706d84d1947.js +1 -0
- package/assets/esri/libs/lyr3d/lyr3DMain.wasm +0 -0
- package/assets/esri/libs/lyr3d/lyr3DWorker.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core-simd.wasm +0 -0
- package/assets/esri/rest/knowledgeGraph/wasmInterface/arcgis-knowledge-client-core.wasm +0 -0
- package/assets/esri/themes/base/widgets/_FeatureTable.scss +8 -7
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +24 -0
- package/assets/esri/themes/base/widgets/_UtilityNetworkTrace.scss +49 -24
- package/assets/esri/themes/dark/main.css +1 -1
- package/assets/esri/themes/light/main.css +1 -1
- package/assets/esri/themes/light/view.css +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ar.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bg.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_bs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ca.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_cs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_da.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_de.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_el.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_en.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_es.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_et.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_fr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_he.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_hu.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_id.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_it.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ja.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ko.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lt.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_lv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_nl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_no.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-BR.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_pt-PT.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ro.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_ru.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_sv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_th.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_tr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_uk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_vi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-CN.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-HK.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer_zh-TW.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ar.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bg.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_bs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ca.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_cs.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_da.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_de.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_el.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_en.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_es.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_et.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_fr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_he.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_hu.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_id.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_it.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ja.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ko.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lt.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_lv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_nl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_no.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-BR.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_pt-PT.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ro.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_ru.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sl.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_sv.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_th.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_tr.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_uk.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_vi.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-CN.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-HK.json +1 -1
- package/assets/esri/widgets/UtilityNetworkTrace/t9n/UtilityNetworkTrace_zh-TW.json +1 -1
- package/chunks/BloomComposition.glsl.js +33 -23
- package/chunks/Fog.glsl.js +4 -6
- package/chunks/Viewshed.glsl.js +7 -15
- package/chunks/arcgis-knowledge-client-core-simd.js +1 -1
- package/chunks/arcgis-knowledge-client-core.js +1 -1
- package/chunks/cameraUtilsPlanar.js +1 -1
- package/chunks/cameraUtilsSpherical.js +1 -1
- package/chunks/lyr3DMain.js +1 -1
- package/chunks/lyr3DWorker.js +1 -1
- package/core/quantity.d.ts +1 -1
- package/core/quantity.js +5 -0
- package/core/units.d.ts +1 -1
- package/core/units.js +5 -0
- package/editing/sharedTemplates/SharedTemplate.js +1 -1
- package/editing/sharedTemplates/SharedTemplateMetadata.d.ts +4 -0
- package/editing/sharedTemplates/SharedTemplateMetadata.js +1 -1
- package/editing/sharedTemplates/templateDefinitions/parts/PresetTemplatePart.js +1 -1
- package/editing/templateUtils.js +5 -0
- package/form/elements/UtilityNetworkAssociationsElement.js +1 -1
- package/geometry/geometryEngine.js +1 -1
- package/geometry/geometryEngineAsync.js +1 -1
- package/geometry/operators/projectOperator.d.ts +4 -0
- package/geometry/operators/shapePreservingProjectOperator.d.ts +4 -0
- package/geometry/operators/support/GeographicTransformation.d.ts +4 -0
- package/geometry/operators/support/GeographicTransformation.js +1 -1
- package/geometry/operators/support/GeographicTransformationStep.d.ts +4 -0
- package/geometry/operators/support/apiConverter.js +1 -1
- package/geometry/operators/support/geographicTransformationUtils.d.ts +4 -0
- package/geometry/support/GeographicTransformation.d.ts +2 -2
- package/geometry/support/GeographicTransformationStep.d.ts +2 -2
- package/geometry/support/geodesicUtils.js +1 -1
- package/geometry/support/geometryUtils.js +1 -1
- package/geometry/support/meshUtils/elevation.js +1 -1
- package/geometry/support/near.js +1 -1
- package/geometry/support/rotate.js +1 -1
- package/geometry/support/typeUtils.js +1 -1
- package/geometry.js +1 -1
- package/grids/MeasuredGrid.js +1 -1
- package/interfaces.d.ts +2069 -622
- package/layers/BaseElevationLayer.js +1 -1
- package/layers/BingMapsLayer.js +1 -1
- package/layers/CSVLayer.js +1 -1
- package/layers/FeatureLayer.js +1 -1
- package/layers/GeoJSONLayer.js +1 -1
- package/layers/GeoRSSLayer.js +1 -1
- package/layers/ILyr3DWasmPerSceneView.js +1 -1
- package/layers/KMLLayer.js +1 -1
- package/layers/KnowledgeGraphLayer.js +1 -1
- package/layers/Layer.js +1 -1
- package/layers/LinkChartLayer.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/MapNotesLayer.js +1 -1
- package/layers/OGCFeatureLayer.js +1 -1
- package/layers/OpenStreetMapLayer.js +1 -1
- package/layers/ParquetLayer.js +1 -1
- package/layers/RouteLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/StreamLayer.js +1 -1
- package/layers/VideoLayer.js +1 -1
- package/layers/WFSLayer.js +1 -1
- package/layers/WebTileLayer.js +1 -1
- package/layers/buildingSublayers/BuildingComponentSublayer.js +1 -1
- package/layers/catalog/CatalogFootprintLayer.js +1 -1
- package/layers/graphics/controllers/FeatureTileController3D.js +1 -1
- package/layers/graphics/controllers/StreamController.js +1 -1
- package/layers/graphics/data/QueryEngineResult.js +1 -1
- package/layers/graphics/hydratedFeatures.js +1 -1
- package/layers/graphics/sources/CSVSource.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/graphics/sources/GeoJSONSource.js +1 -1
- package/layers/graphics/sources/MemorySource.js +1 -1
- package/layers/graphics/sources/OGCFeatureSource.js +1 -1
- package/layers/graphics/sources/ParquetSource.js +1 -1
- package/layers/graphics/sources/WFSSource.js +1 -1
- package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
- package/layers/graphics/sources/support/CSVSourceWorker.js +1 -1
- package/layers/graphics/sources/support/uploadAssets.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphLayerDataManager.js +1 -1
- package/layers/knowledgeGraph/KnowledgeGraphSublayer.js +1 -1
- package/layers/knowledgeGraph/SessionMemoryStorage.js +1 -1
- package/layers/knowledgeGraph/supportUtils.js +1 -1
- package/layers/mixins/ArcGISCachedService.js +1 -1
- package/layers/mixins/ArcGISImageService.js +1 -1
- package/layers/mixins/FeatureReductionLayer.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/ogc/ogcFeatureUtils.js +1 -1
- package/layers/ogc/wfsUtils.js +1 -1
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/queries.js +1 -1
- package/layers/orientedImagery/transformations/imageToWorld.js +1 -1
- package/layers/orientedImagery/transformations/rectifyMapPoint.js +1 -1
- package/layers/orientedImagery/transformations/utils.js +1 -1
- package/layers/support/ElevationSampler.js +1 -1
- package/layers/support/FeatureFilter.js +1 -1
- package/layers/support/FeatureReductionBinning.js +1 -1
- package/layers/support/FeatureReductionCluster.js +1 -1
- package/layers/support/KMLMapImage.js +1 -1
- package/layers/support/KMLSublayer.js +1 -1
- package/layers/support/LabelClass.js +1 -1
- package/layers/support/LocalMediaElementSource.js +1 -1
- package/layers/support/MultidimensionalSubset.js +1 -1
- package/layers/support/OrderByInfo.d.ts +4 -0
- package/layers/support/RasterWorker.js +1 -1
- package/layers/support/RouteStopSymbols.js +1 -1
- package/layers/support/RouteSymbols.js +1 -1
- package/layers/support/SceneModification.js +1 -1
- package/layers/support/Sublayer.js +1 -1
- package/layers/support/SubtypeSublayer.js +1 -1
- package/layers/support/TelemetryData.js +1 -1
- package/layers/support/TrackInfo.js +1 -1
- package/layers/support/VideoFrame.js +1 -1
- package/layers/support/featureLayerUtils.js +1 -1
- package/layers/support/mediaUtils.js +1 -1
- package/layers/support/rasterDatasets/BaseRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageAuxRaster.js +1 -1
- package/layers/support/rasterDatasets/ImageServerRaster.js +1 -1
- package/layers/support/rasterDatasets/InMemoryRaster.js +1 -1
- package/layers/support/rasterDatasets/MRFRaster.js +1 -1
- package/layers/support/rasterDatasets/RawBlockCache.js +1 -1
- package/layers/support/rasterDatasets/TIFFRaster.js +1 -1
- package/layers/support/rasterDatasets/WCSRaster.js +1 -1
- package/layers/support/rasterDatasets/covJSONParser.js +1 -1
- package/layers/support/rasterDatasets/pamParser.js +1 -1
- package/layers/support/rasterFunctions/ClipFunctionArguments.js +1 -1
- package/layers/support/rasterFunctions/rasterProjectionHelper.js +1 -1
- package/layers/support/rasterTransforms/PolynomialTransform.js +1 -1
- package/layers/support/serviceCapabilitiesUtils.js +1 -1
- package/layers/support/source/QueryTableDataSource.js +1 -1
- package/layers/support/subtypeGroupLayerUtils.js +1 -1
- package/networks/Network.js +1 -1
- package/networks/support/utils.js +1 -1
- package/package.json +2 -2
- package/pointCloudRenderers.js +1 -1
- package/rasterRenderers.js +1 -1
- package/renderers/ClassBreaksRenderer.js +1 -1
- package/renderers/HeatmapRenderer.js +1 -1
- package/renderers/PieChartRenderer.js +1 -1
- package/renderers/UniqueValueRenderer.js +1 -1
- package/renderers/VectorFieldRenderer.js +1 -1
- package/renderers/support/RasterPresetRenderer.js +1 -1
- package/renderers/support/commonProperties.js +1 -1
- package/renderers/support/jsonUtils.js +1 -1
- package/renderers/support/rasterRendererHelper.js +1 -1
- package/renderers/support/rasterTypeUtils.js +5 -0
- package/renderers/support/typeUtils.js +5 -0
- package/renderers.js +1 -1
- package/rest/featureService/FeatureService.js +1 -1
- package/rest/geometryService/autoComplete.js +1 -1
- package/rest/geometryService/buffer.js +1 -1
- package/rest/geometryService/cut.js +1 -1
- package/rest/geometryService/trimExtend.js +1 -1
- package/rest/imageService.js +1 -1
- package/rest/knowledgeGraph/Entity.js +1 -1
- package/rest/knowledgeGraph/GraphQueryStreaming.js +1 -1
- package/rest/knowledgeGraph/ProtoFeatureCollection.js +1 -1
- package/rest/knowledgeGraph/Relationship.js +1 -1
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsConfiguration.d.ts +4 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsConfiguration.js +5 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsEntity.d.ts +4 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsEntity.js +5 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsPathFilter.d.ts +4 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsPathFilter.js +5 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMKGTraversalDirection.d.ts +4 -0
- package/rest/knowledgeGraph/toolService/findPaths/CIMKGTraversalDirection.js +5 -0
- package/rest/knowledgeGraph/toolService/findPaths/FindPathsToolSettings.d.ts +4 -0
- package/rest/knowledgeGraph/toolService/findPaths/FindPathsToolSettings.js +5 -0
- package/rest/knowledgeGraph/wasmInterface/queryToWasmEncodedFactories.js +1 -1
- package/rest/knowledgeGraph/wasmInterface/updateToWasmEncodedFactories.js +1 -1
- package/rest/knowledgeGraph/wasmInterface/wasmToQueryResponseObjFactories.js +1 -1
- package/rest/knowledgeGraphService.js +1 -1
- package/rest/networks/support/Association.js +1 -1
- package/rest/networks/support/ValidateNetworkTopologyParameters.js +1 -1
- package/rest/places.js +1 -1
- package/rest/print.js +1 -1
- package/rest/query/executeForExtent.js +1 -1
- package/rest/query/executeForTopExtents.js +1 -1
- package/rest/support/AddressToLocationsParameters.js +1 -1
- package/rest/support/AddressesToLocationsParameters.js +1 -1
- package/rest/support/AggregateFeatureSet.js +1 -1
- package/rest/support/AttributeBinsQuery.js +1 -1
- package/rest/support/BaseImageMeasureParameters.js +1 -1
- package/rest/support/BufferParameters.js +1 -1
- package/rest/support/ClosestFacilityParameters.js +1 -1
- package/rest/support/DataLayer.js +1 -1
- package/rest/support/DensifyParameters.js +1 -1
- package/rest/support/DirectionLine.js +1 -1
- package/rest/support/DirectionPoint.js +1 -1
- package/rest/support/DirectionsEvent.js +1 -1
- package/rest/support/DirectionsFeature.js +1 -1
- package/rest/support/DirectionsFeatureSet.js +1 -1
- package/rest/support/DistanceParameters.js +1 -1
- package/rest/support/FeatureSet.js +1 -1
- package/rest/support/FindParameters.js +1 -1
- package/rest/support/FindResult.js +1 -1
- package/rest/support/IdentifyParameters.js +1 -1
- package/rest/support/IdentifyResult.js +1 -1
- package/rest/support/ImageAngleParameters.js +1 -1
- package/rest/support/ImageAngleResult.js +1 -1
- package/rest/support/ImageAreaParameters.js +1 -1
- package/rest/support/ImageBoundaryResult.js +1 -1
- package/rest/support/ImageDistanceParameters.js +1 -1
- package/rest/support/ImageGPSInfoParameters.js +1 -1
- package/rest/support/ImageHeightParameters.js +1 -1
- package/rest/support/ImageHistogramParameters.js +1 -1
- package/rest/support/ImageIdentifyParameters.js +1 -1
- package/rest/support/ImagePixelLocationParameters.js +1 -1
- package/rest/support/ImagePointParameters.js +1 -1
- package/rest/support/ImagePointResult.js +1 -1
- package/rest/support/ImageSampleParameters.js +1 -1
- package/rest/support/ImageToMapMultirayParameters.js +1 -1
- package/rest/support/ImageToMapParameters.js +1 -1
- package/rest/support/ImageVolumeParameters.js +1 -1
- package/rest/support/LengthsParameters.js +1 -1
- package/rest/support/LocationToAddressParameters.js +1 -1
- package/rest/support/MapToImageParameters.js +1 -1
- package/rest/support/MeasureAreaFromImageResult.js +1 -1
- package/rest/support/MeasureFromImageParameters.js +1 -1
- package/rest/support/MeasureLengthFromImageResult.js +1 -1
- package/rest/support/PointBarrier.js +1 -1
- package/rest/support/PolygonBarrier.js +1 -1
- package/rest/support/PolylineBarrier.js +1 -1
- package/rest/support/ProjectParameters.js +1 -1
- package/rest/support/QuantizationParameters.js +1 -1
- package/rest/support/Query.js +1 -1
- package/rest/support/RelationshipQuery.js +1 -1
- package/rest/support/RouteInfo.js +1 -1
- package/rest/support/RouteParameters.js +1 -1
- package/rest/support/ServiceAreaParameters.js +1 -1
- package/rest/support/Stop.js +1 -1
- package/rest/support/SuggestLocationsParameters.js +1 -1
- package/rest/support/TopFeaturesQuery.js +1 -1
- package/rest/support/TrimExtendParameters.js +1 -1
- package/rest/support/meshFeatureAttributes.js +1 -1
- package/smartMapping/labels/support/utils.js +1 -1
- package/smartMapping/raster/support/adapters/ImageryLayerAdapter.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/dotDensity.js +1 -1
- package/smartMapping/renderers/heatmap.js +1 -1
- package/smartMapping/renderers/location.js +1 -1
- package/smartMapping/renderers/pieChart.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/referenceSizeUtils.js +1 -1
- package/smartMapping/renderers/support/utils.js +1 -1
- package/smartMapping/renderers/type.js +1 -1
- package/smartMapping/statistics/support/utils.js +1 -1
- package/support/arcadeOnDemand.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/CIMSymbolHelper.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/symbols/cim/effects/EffectBuffer.js +1 -1
- package/symbols/cim/effects/EffectDonut.js +1 -1
- package/symbols/cim/effects/EffectOffset.js +1 -1
- package/symbols/support/cimConversionUtils.js +1 -1
- package/symbols/support/defaults3D.js +1 -1
- package/symbols/support/jsonUtils.js +1 -1
- package/symbols/support/symbolConversion.js +1 -1
- package/symbols/support/typeUtils.js +5 -0
- package/symbols/support/utils.js +1 -1
- package/symbols/support/webStyleSymbolUtils.js +1 -1
- package/symbols.js +1 -1
- package/undoredo/support/Services.js +1 -1
- package/unionTypes.d.ts +4 -0
- package/unionTypes.js +5 -0
- package/views/2d/AnimationManager.js +1 -1
- package/views/2d/MapViewConstraints.js +1 -1
- package/views/2d/ViewState.js +1 -1
- package/views/2d/ViewStateManager.js +1 -1
- package/views/2d/engine/flow/FlowStrategy.js +1 -1
- package/views/2d/engine/flow/dataUtils.js +1 -1
- package/views/2d/engine/vectorTiles/tileInfoUtils.js +1 -1
- package/views/2d/engine/webgl/OverlayMultipoint.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/createTestMeshData.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
- package/views/2d/grid/gridUtils.js +1 -1
- package/views/2d/interactive/SnappingVisualizer2D.js +1 -1
- package/views/2d/interactive/editingTools/ControlPointsTransformTool.js +1 -1
- package/views/2d/interactive/editingTools/TransformTool.js +1 -1
- package/views/2d/interactive/editingTools/draw/DrawGraphicTool2D.js +1 -1
- package/views/2d/interactive/editingTools/draw/symbols.js +1 -1
- package/views/2d/layers/FeatureLayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/TileLayerView2D.js +1 -1
- package/views/2d/layers/VideoLayerView2D.js +1 -1
- package/views/2d/layers/features/processor/BinningStrategy.js +1 -1
- package/views/2d/layers/features/processor/TrackStrategy.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
- package/views/2d/layers/support/clusterUtils.js +1 -1
- package/views/2d/navigation/actions/Pan.js +1 -1
- package/views/2d/navigation/actions/Rotate.js +1 -1
- package/views/2d/pointToPoint/Camera.js +1 -1
- package/views/3d/analysis/Dimension/DimensionTool.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionConstraintUtils.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedComputedData.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedTool.js +1 -1
- package/views/3d/environment/EnvironmentManager.js +1 -1
- package/views/3d/environment/Fog.glsl.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/editingTools/dragEventPipeline3D.js +1 -1
- package/views/3d/interactive/editingTools/media/MediaElementControllerControlPoints.js +1 -1
- package/views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js +1 -1
- package/views/3d/layers/I3SMeshViewLabeler.js +1 -1
- package/views/3d/layers/IntegratedMesh3DTilesLayerView3D.js +1 -1
- package/views/3d/layers/Lyr3DWasm.js +1 -1
- package/views/3d/layers/VoxelLayerView3D.js +1 -1
- package/views/3d/layers/graphics/ElevationQuery.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/QueryEngine.js +1 -1
- package/views/3d/layers/graphics/elevationAlignPointsInFeatures.js +1 -1
- package/views/3d/layers/graphics/polygonUtils.js +1 -1
- package/views/3d/layers/i3s/I3SMeshViewFilter.js +1 -1
- package/views/3d/layers/i3s/I3SUtil.js +1 -1
- package/views/3d/layers/support/FeatureTile.js +1 -1
- package/views/3d/layers/support/FeatureTileDescriptor.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3D.js +1 -1
- package/views/3d/layers/support/FeatureTileFetcher3DDebugger.js +1 -1
- package/views/3d/layers/support/FeatureTileMeasurements3D.js +1 -1
- package/views/3d/layers/support/FeatureTileTree3D.js +1 -1
- package/views/3d/layers/support/FeatureTileTree3DDebugger.js +1 -1
- package/views/3d/layers/support/FeatureTileVisibility3D.js +1 -1
- package/views/3d/layers/support/I3STreeDebugger.js +1 -1
- package/views/3d/layers/support/TerrainTileTree3DDebugger.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/support/FrustumExtentIntersection.js +1 -1
- package/views/3d/support/cameraUtilsPlanar.js +1 -1
- package/views/3d/support/cameraUtilsSpherical.js +1 -1
- package/views/3d/support/debugUtils.js +1 -1
- package/views/3d/support/hitTest.js +1 -1
- package/views/3d/support/viewpointUtils.js +1 -1
- package/views/3d/terrain/PlanarPatch.js +1 -1
- package/views/3d/terrain/SphericalPatch.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TilingScheme.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginManager.js +1 -1
- package/views/3d/webgl-engine/effects/bloom/BloomComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/bloom/BloomRenderNode.js +1 -1
- package/views/3d/webgl-engine/effects/debug/RenderNodeVisualizerNode.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/Viewshed.js +1 -1
- package/views/3d/webgl-engine/shaders/Viewshed.glsl.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/View2D.js +1 -1
- package/views/draw/MultipointDrawAction.js +1 -1
- package/views/draw/PointDrawAction.js +1 -1
- package/views/draw/PolygonDrawAction.js +1 -1
- package/views/draw/PolylineDrawAction.js +1 -1
- package/views/draw/SegmentDrawAction.js +1 -1
- package/views/draw/drawSurfaces.js +1 -1
- package/views/draw/support/Box.js +1 -1
- package/views/draw/support/GraphicMover.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/draw/support/createUtils.js +1 -1
- package/views/draw/support/surfaceCoordinateSystems.js +1 -1
- package/views/interactive/sketch/constraintUtils.js +1 -1
- package/views/interactive/snapping/featureSources/featureServiceSource/FeatureServiceSnappingSourceWorker.js +1 -1
- package/views/layers/support/Geometry.js +1 -1
- package/views/support/HighlightOptions.d.ts +4 -0
- package/views/support/drapedUtils.js +1 -1
- package/webdoc/geotriggersInfo/FeatureFilter.js +1 -1
- package/widgets/AreaMeasurement2D/AreaMeasurement2DTool.js +1 -1
- package/widgets/CoordinateConversion/CoordinateConversionViewModel.js +1 -1
- package/widgets/CoordinateConversion/support/Format.js +1 -1
- package/widgets/CoordinateConversion/support/coordinateConversionUtils.js +1 -1
- package/widgets/DistanceMeasurement2D/DistanceMeasurement2DTool.js +1 -1
- package/widgets/Editor/CreateFeaturesWorkflow.js +1 -1
- package/widgets/Editor/UpdateWorkflow.js +1 -1
- package/widgets/Editor/workflowUtils.js +1 -1
- package/widgets/ElevationProfile/support/ProfileLine2D.js +1 -1
- package/widgets/Feature/FeatureExpression/FeatureExpressionViewModel.js +1 -1
- package/widgets/Feature/FeatureViewModel.js +1 -1
- package/widgets/FeatureForm/FeatureFormUtilityNetworkAssociations/FeatureFormUtilityNetworkAssociationList.js +1 -1
- package/widgets/FeatureForm/UtilityNetworkAssociationInput.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
- package/widgets/FeatureTemplates/TemplateItem.js +1 -1
- package/widgets/FeatureTemplates/featureTemplatesUtils.js +1 -1
- package/widgets/FeatureTemplates.js +1 -1
- package/widgets/Features/FeaturesViewModel.js +1 -1
- package/widgets/LayerList/LayerListItem.js +1 -1
- package/widgets/Legend/support/ActiveLayerInfo.js +1 -1
- package/widgets/Legend/support/sizeRampUtils.js +1 -1
- package/widgets/Legend/support/utils.js +1 -1
- package/widgets/Locate.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerVisibleElements.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/sketch/MeasurementAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/MapViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/adapters/view/SceneViewAdapter.js +1 -1
- package/widgets/OrientedImageryViewer/components/ImageAreaMeasurement.js +5 -0
- package/widgets/OrientedImageryViewer/components/ImageDistanceMeasurement.js +5 -0
- package/widgets/OrientedImageryViewer/components/ImageMeasurement.js +5 -0
- package/widgets/OrientedImageryViewer/components/ImageViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/css.js +1 -1
- package/widgets/OrientedImageryViewer/imageMeasurementUtils.js +1 -1
- package/widgets/OrientedImageryViewer/symbols.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/PanoramicViewer/PanoramicViewerViewModel.js +1 -1
- package/widgets/PanoramicViewer/constants.js +1 -1
- package/widgets/PanoramicViewer/utils.js +1 -1
- package/widgets/Print/PrintViewModel.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleBar/ScaleBarViewModel.js +1 -1
- package/widgets/Search/SearchViewModel.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeature.js +5 -0
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceFeaturesDrillIn.js +5 -0
- package/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel.js +1 -1
- package/widgets/UtilityNetworkTrace/support/GeometryHandler.js +1 -1
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/support/GridControls/GridControlsViewModel.js +1 -1
- package/widgets/support/Selector2D/SelectionOperation.js +1 -1
- package/widgets/support/UtilityNetworkAssociations/UtilityNetworkAssociationList.js +1 -1
- package/widgets/support/UtilityNetworkAssociations/UtilityNetworkAssociationsViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/0651586dc7bd2e8b34db.js +0 -1
- package/assets/esri/core/workers/chunks/077070295499b9bfabb6.js +0 -1
- package/assets/esri/core/workers/chunks/090cfc7f088a729afd47.js +0 -1
- package/assets/esri/core/workers/chunks/0d387baa64a89f88b1de.js +0 -1
- package/assets/esri/core/workers/chunks/105dcc7b7284b1e965b7.js +0 -1
- package/assets/esri/core/workers/chunks/134de9fa142129a43b1e.js +0 -1
- package/assets/esri/core/workers/chunks/16fa0a5f73ab67a8d3e4.js +0 -1
- package/assets/esri/core/workers/chunks/1797f62e9bf8f1ac8d13.js +0 -1
- package/assets/esri/core/workers/chunks/182722e2fe0a35c4d8db.js +0 -1
- package/assets/esri/core/workers/chunks/184846d2dde25ee12904.js +0 -1
- package/assets/esri/core/workers/chunks/1b3215f3290fb2f07ab8.js +0 -1
- package/assets/esri/core/workers/chunks/1d34a146b32b959923b0.js +0 -1
- package/assets/esri/core/workers/chunks/1f4dd96aacf8c40a1120.js +0 -1
- package/assets/esri/core/workers/chunks/1fa705ee39556ef4bb3b.js +0 -1
- package/assets/esri/core/workers/chunks/206194cf069ad4bcc3ad.js +0 -1
- package/assets/esri/core/workers/chunks/217f8139bea225d1fcc6.js +0 -1
- package/assets/esri/core/workers/chunks/22748779ca94eda44de5.js +0 -1
- package/assets/esri/core/workers/chunks/2427a01678f3d9fbf30b.js +0 -1
- package/assets/esri/core/workers/chunks/243520d9f4a118e63bbc.js +0 -1
- package/assets/esri/core/workers/chunks/26c8e30a5ee8db0314c8.js +0 -1
- package/assets/esri/core/workers/chunks/2779cf112299b612a73a.js +0 -1
- package/assets/esri/core/workers/chunks/280b7b885b96a5a68716.js +0 -2
- package/assets/esri/core/workers/chunks/299ed506209562be4fad.js +0 -1
- package/assets/esri/core/workers/chunks/2f5722844208d0f5d616.js +0 -1
- package/assets/esri/core/workers/chunks/2fb884799de54182d2c3.js +0 -2
- package/assets/esri/core/workers/chunks/2fb884799de54182d2c3.js.LICENSE.txt +0 -11
- package/assets/esri/core/workers/chunks/300a5f4842b90bda55b3.js +0 -1
- package/assets/esri/core/workers/chunks/33a13544b9e5f4f20bce.js +0 -1
- package/assets/esri/core/workers/chunks/33eebe5cb22a03ae90c8.js +0 -1
- package/assets/esri/core/workers/chunks/346ec2f8c373337c18c7.js +0 -1
- package/assets/esri/core/workers/chunks/34b86b4b9e6c1937ee39.js +0 -2
- package/assets/esri/core/workers/chunks/3512d53abe9abee7f420.js +0 -1
- package/assets/esri/core/workers/chunks/423329432fbf007c620b.js +0 -1
- package/assets/esri/core/workers/chunks/467bd3c0da9518a0058b.js +0 -1
- package/assets/esri/core/workers/chunks/47745c4f74830f981fd4.js +0 -1
- package/assets/esri/core/workers/chunks/4af0674fabfc965f1660.js +0 -1
- package/assets/esri/core/workers/chunks/4c1d11a91291b28a73be.js +0 -1
- package/assets/esri/core/workers/chunks/4c40fd932113a71cbe8e.js +0 -1
- package/assets/esri/core/workers/chunks/51fbbd082ca78e4417d9.js +0 -1
- package/assets/esri/core/workers/chunks/5a937486b9fd62b57dca.js +0 -1
- package/assets/esri/core/workers/chunks/5c05c899f7e6f764fedd.js +0 -1
- package/assets/esri/core/workers/chunks/636b944604480a905888.js +0 -1
- package/assets/esri/core/workers/chunks/6400f39a965900f66ce7.js +0 -1
- package/assets/esri/core/workers/chunks/643da327858a68ffbd88.js +0 -1
- package/assets/esri/core/workers/chunks/6c1470dc0bd4389d1a2d.js +0 -1
- package/assets/esri/core/workers/chunks/6c3862f42b6b27edf1cf.js +0 -2
- package/assets/esri/core/workers/chunks/6c3862f42b6b27edf1cf.js.LICENSE.txt +0 -10
- package/assets/esri/core/workers/chunks/6e804ee2d96d4de85a5f.js +0 -1
- package/assets/esri/core/workers/chunks/712f0dd46932c544df68.js +0 -1
- package/assets/esri/core/workers/chunks/71e88c90e9f9a9bddcd8.js +0 -1
- package/assets/esri/core/workers/chunks/7341108896d0e4d44dab.js +0 -1
- package/assets/esri/core/workers/chunks/74ba752dfab8ea5b6d2a.js +0 -314
- package/assets/esri/core/workers/chunks/79903647d4ed16d9a402.js +0 -1
- package/assets/esri/core/workers/chunks/7b4880b2dc6b01d70ccc.js +0 -1
- package/assets/esri/core/workers/chunks/7c98e4fcba1dc24eb788.js +0 -1
- package/assets/esri/core/workers/chunks/7d0fc25ce1f74adcfeb6.js +0 -1
- package/assets/esri/core/workers/chunks/8249351daa45ca82ca0c.js +0 -1
- package/assets/esri/core/workers/chunks/87ddc3d5d751d565cd97.js +0 -1
- package/assets/esri/core/workers/chunks/87f33a60768801ca1ce8.js +0 -1
- package/assets/esri/core/workers/chunks/885205379220ccee5802.js +0 -1
- package/assets/esri/core/workers/chunks/88bb55bca76f978c0aa3.js +0 -1
- package/assets/esri/core/workers/chunks/8b2f0c33e10e163d5c8f.js +0 -1
- package/assets/esri/core/workers/chunks/8c5d1fd2b2c7c26e8ff5.js +0 -1
- package/assets/esri/core/workers/chunks/8cda8dbd95f0a78063a8.js +0 -1
- package/assets/esri/core/workers/chunks/8e0e5183c88a45fbfd8e.js +0 -1
- package/assets/esri/core/workers/chunks/90eea0c2435bb5d10460.js +0 -1
- package/assets/esri/core/workers/chunks/93c1541241f92fc07eaa.js +0 -1
- package/assets/esri/core/workers/chunks/964f2897794d8d71dcb7.js +0 -1
- package/assets/esri/core/workers/chunks/97169740043b4a0a40fb.js +0 -1
- package/assets/esri/core/workers/chunks/976daa00d35ee7f27a26.js +0 -1
- package/assets/esri/core/workers/chunks/97d66b0d0ff1132966de.js +0 -1
- package/assets/esri/core/workers/chunks/984d5533dcc831c426be.js +0 -1
- package/assets/esri/core/workers/chunks/9970e0e74cf2877a7ffc.js.LICENSE.txt +0 -17
- package/assets/esri/core/workers/chunks/99b4f146d0f1661a217c.js +0 -1
- package/assets/esri/core/workers/chunks/9e4d68da11995a5b66c3.js +0 -1
- package/assets/esri/core/workers/chunks/a6095a6abb2610bb95c1.js +0 -1
- package/assets/esri/core/workers/chunks/aa96a05b94ae642c1c9f.js +0 -1
- package/assets/esri/core/workers/chunks/b0055e7b2e840d478de8.js +0 -1
- package/assets/esri/core/workers/chunks/b1bf8ad629a6b8f4489a.js +0 -1
- package/assets/esri/core/workers/chunks/b1e3448ba51557ff6c13.js +0 -1
- package/assets/esri/core/workers/chunks/b30046a40bcfbec8abe4.js +0 -1
- package/assets/esri/core/workers/chunks/b538d02706a25bbbe2d0.js +0 -1
- package/assets/esri/core/workers/chunks/b81b8a800eec9db7ece2.js +0 -1
- package/assets/esri/core/workers/chunks/c1c216b0aebe86311fae.js +0 -1
- package/assets/esri/core/workers/chunks/c436a112a3119ceabebf.js +0 -1
- package/assets/esri/core/workers/chunks/c609bc34b14e4956292e.js +0 -1
- package/assets/esri/core/workers/chunks/c8a09db652389f0d254d.js +0 -1
- package/assets/esri/core/workers/chunks/c8a645601d041f411060.js +0 -1
- package/assets/esri/core/workers/chunks/c9741eb7a66ff7ec9184.js +0 -1
- package/assets/esri/core/workers/chunks/cb3b7f83b3efb315bd14.js +0 -1
- package/assets/esri/core/workers/chunks/cdc5e4cd1214362e752a.js +0 -1
- package/assets/esri/core/workers/chunks/ce0fb7cbf72bbb4cfe98.js +0 -1
- package/assets/esri/core/workers/chunks/cf244cbd0558cc1142ed.js +0 -1
- package/assets/esri/core/workers/chunks/d181447e2be06beaa23f.js +0 -1
- package/assets/esri/core/workers/chunks/d5c93caa3a8bb06a0b3f.js +0 -1
- package/assets/esri/core/workers/chunks/da5fc368eb5b3592d05e.js +0 -1
- package/assets/esri/core/workers/chunks/dae7e8357936466482fe.js +0 -1
- package/assets/esri/core/workers/chunks/db20b986a5681316070b.js +0 -2
- package/assets/esri/core/workers/chunks/db20b986a5681316070b.js.LICENSE.txt +0 -5
- package/assets/esri/core/workers/chunks/dc7fb41ebe57b463d408.js +0 -1
- package/assets/esri/core/workers/chunks/dd935b6335c674b6f596.js +0 -1
- package/assets/esri/core/workers/chunks/ddd20894b5107b76b815.js +0 -1
- package/assets/esri/core/workers/chunks/de00150030003de05146.js +0 -1
- package/assets/esri/core/workers/chunks/decd316936df1ad3fa65.js +0 -1
- package/assets/esri/core/workers/chunks/df4d7f100222ea671730.js +0 -1
- package/assets/esri/core/workers/chunks/e2320e4e6fd976966c0b.js +0 -1
- package/assets/esri/core/workers/chunks/e418c4f7866d03d5352e.js +0 -1
- package/assets/esri/core/workers/chunks/e4f4ad67d778dea5b956.js +0 -1
- package/assets/esri/core/workers/chunks/e610dd938d30f75778bc.js +0 -1
- package/assets/esri/core/workers/chunks/eb256e8488e341c4a6f2.js +0 -1
- package/assets/esri/core/workers/chunks/ebc0094355504ec09fb8.js +0 -1
- package/assets/esri/core/workers/chunks/ec195549b274cca09d81.js +0 -1
- package/assets/esri/core/workers/chunks/ec4a45b40021abdead45.js +0 -1
- package/assets/esri/core/workers/chunks/ee5f43fbe4c2cc199e64.js +0 -1
- package/assets/esri/core/workers/chunks/f0334d31c8cac38baa25.js +0 -1
- package/assets/esri/core/workers/chunks/f1b63f092e239f84b849.js +0 -1
- package/assets/esri/core/workers/chunks/f2126b79f41dc62cc576.js +0 -1
- package/assets/esri/core/workers/chunks/f3a75dffb285590cb451.js +0 -1
- package/assets/esri/core/workers/chunks/f3e0b0f07a622fcdd6ae.js +0 -1
- package/assets/esri/core/workers/chunks/f581aec77accce7411e0.js +0 -1
- package/assets/esri/core/workers/chunks/f606350e4d040ad70f4d.js +0 -1
- package/assets/esri/core/workers/chunks/f849ffe8e551bd5896ef.js +0 -1
- package/assets/esri/core/workers/chunks/f877bcbd277a28154d82.js +0 -1
- package/assets/esri/core/workers/chunks/fa1c68f2ffcdff7986b6.js +0 -1
- package/assets/esri/core/workers/chunks/fa849ff6132c2cd6d8e8.js +0 -1
- package/assets/esri/core/workers/chunks/feeb36ffdffb227c4353.js +0 -1
- package/renderers/support/types.js +0 -5
- package/widgets/support/templateUtils.js +0 -5
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as i}from"../../../kernel.js";import s from"../../../request.js";import"../../../symbols.js";import l from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import has from"../../../core/has.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{parseWhereClause as f}from"../../../core/sql.js";import{addQueryParameters as p}from"../../../core/urlUtils.js";import{property as g}from"../../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as S}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as _}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as w}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as v}from"../../../layers/support/ExportImageParameters.js";import{getRendererFields as L}from"../../../layers/support/fieldUtils.js";import{isFeatureLayer as E}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as C}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as I}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as R}from"../../../renderers/support/rendererConversion.js";import F from"../../../renderers/visualVariables/SizeVariable.js";import V from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{updateReferenceSizeSymbol as x}from"../../../smartMapping/renderers/support/referenceSizeUtils.js";import{applyCIMSymbolColor as D}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as z}from"../../../symbols/support/previewUtils.js";import{renderSymbol as T}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as j,renderDotDensityPreviewHTML as O,renderPieChartPreviewHTML as P,renderPreviewHTML as A}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as M}from"../../../symbols/support/utils.js";import{getEffectiveClusterSizeVariable as U}from"./clusterUtils.js";import{getColorFromPointCloudStops as k,getRampStopsForPointCloud as B,getStretchRampStops as N,getRampStops as q}from"./colorRampUtils.js";import{getHeatmapRampStops as H}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as $,getRelationshipRampElement as W}from"./relationshipRampUtils.js";import{getRampStops as G,realWorldMaxSize as J,realWorldMinSize as Q}from"./sizeRampUtils.js";import{specialCharsLessThan as Z,specialCharsGreaterThan as K,getReferenceSizeAuthoringInfoVisualVariable as X,getSymbolForFlowRenderer as Y,getMedianColor as ee,rgbImgSource as te,getDateFormatOptions as ie}from"./utils.js";import{formatNumberLabel as se}from"../../smartMapping/support/utils.js";import le from"../../../symbols/SimpleMarkerSymbol.js";import re from"../../../symbols/SimpleFillSymbol.js";import{fetchMessageBundle as ne}from"../../../intl/messages.js";import{substitute as ae}from"../../../intl/substitute.js";const oe=16,ue="https://utility.arcgis.com/sharing/tools/legend",ce="esri.layers.ImageryLayer",de="esri.layers.ImageryTileLayer",ye="esri.layers.WCSLayer",he=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,me=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),fe=new le({size:6,outline:{color:[128,128,128,.5],width:.5}}),pe=new re({style:"solid"});function ge(e){return"flow"===e.type}function be(e){return"vector-field"===e.type}function Se(e){return"raster-colormap"===e.type}function _e(e){return"raster-stretch"===e.type}function we(e){return"raster-shaded-relief"===e.type}function ve(e){return"esri.renderers.SimpleRenderer"===e.declaredClass}function Le(e){return"esri.renderers.ClassBreaksRenderer"===e.declaredClass}function Ee(e){return"esri.renderers.UniqueValueRenderer"===e.declaredClass}function Ce(e){return"esri.renderers.HeatmapRenderer"===e.declaredClass}function Ie(e){return Fe(e)||Ve(e)||xe(e)||Re(e)}function Re(e){return"esri.renderers.PointCloudRGBRenderer"===e.declaredClass}function Fe(e){return"esri.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ve(e){return"esri.renderers.PointCloudStretchRenderer"===e.declaredClass}function xe(e){return"esri.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function De(e){return"esri.renderers.DotDensityRenderer"===e.declaredClass}function ze(e){return"esri.renderers.PieChartRenderer"===e.declaredClass}function Te(e,t){return ve(e)||Le(e)||Ee(e)||Ce(e)||De(e)||ze(e)?"2d"===t.type||R(e):_e(e)||Se(e)||we(e)||Fe(e)||Ve(e)||xe(e)||be(e)||ge(e)}function je(e){return"esri.layers.BuildingSceneLayer"===e.declaredClass}function Oe(e){return"esri.layers.SubtypeGroupLayer"===e.declaredClass}function Pe(e){return"esri.layers.VoxelLayer"===e.declaredClass}function Ae(e){return"esri.layers.WMSLayer"===e.declaredClass}function Me(e){return"esri.layers.WMTSLayer"===e.declaredClass}function Ue(e){return"esri.layers.MapImageLayer"===e.declaredClass}function ke(e){return"esri.layers.TileLayer"===e.declaredClass}function Be(e){return e.declaredClass===ce}function Ne(e){return e.declaredClass===de}function qe(e){return e.declaredClass===ye}function He(e){return"stretch-ramp"===e.type}function $e(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function We(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ge(e){return"sublayers"in e}async function Je(e,t){const i=await ne("esri/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),ae(i[e],{label:t})}function Qe(e,t){const{field:i,field2:s,field3:l,fieldDelimiter:r,valueExpression:n}=e;if(!i)return null;const a=!(!i&&!n||!s&&!l)?t?.toString().split(r||""):[t],o=i?{[i]:a?.[0]}:null;return o&&(s&&(o[s]=a?.[1]),l&&(o[l]=a?.[2])),o}const Ze=new le({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let Ke={},Xe=class extends l{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this._layerDefinitionExpression=null,this._layerDefinitionExpressionClause=null,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerDefinitionExpression=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:i,removed:s}=t;i.forEach((t=>{const i=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),i)})),s.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||(Ke={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||(Ke=null),this._layerDefinitionExpressionClause=null}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new _,t.effect=e.effect,t.endTransition(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,i=this.layer.parent,s=i&&"uid"in i?this._getParentLayerOpacity(i):null;return null!=t?t*e:null!=s?s*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(E(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){const t=e.layerDefinition,i=t?.drawingInfo,s=i&&I(i.renderer),l=me.read(t.geometryType);return s?this._getRendererLegendElements(s,{title:e.name,geometryType:l}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],i=await Promise.allSettled(t);for(const t of i)if("fulfilled"===t.status)for(const i of t.value??[])e.push(i);this.legendElements=e,this.notifyChange("ready")}catch(i){o.getLogger(this).warn("error while building legend for layer!",i)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(Pe(e))this._constructLegendElementsForVoxelLayer();else if(Me(e))this._constructLegendElementsForWMTSlayer();else if(Ae(e))await this._constructLegendElementsForWMSSublayers();else if(je(e))await this._constructLegendElementsForBuildingSceneLayer();else if(Ue(e)||ke(e)||Oe(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Be(e)){const i=e;t=(i?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}if(Ne(e)||"link-chart"===e.type)return;await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const i=t.map((async t=>{if(Be(e)){const t=d((()=>[e.rasterFunction,e.bandIds]),(()=>u((async()=>{Ke.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const i=this._generateSymbolTableElementForLegendLayer(t);i?.infos.length&&(Be(e)&&(i.title=e.title),this.legendElements.push(i)),this.notifyChange("ready")}));await Promise.allSettled(i)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,i=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!i&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const s=i?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!s)return!0;s.geometry=this.view.extent;return 0!==(i?"queryFeatureCount"in t&&await t.queryFeatureCount(s):"queryFeatureCount"in e&&await e.queryFeatureCount(s))}_getParentLayerOpacity(e){let t=1;const i=e.parent;return i&&"uid"in i&&(t=this._getParentLayerOpacity(i)),e.opacity*t}_isGroupActive(){return this.children.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(he.test(t))return!0;const i="visualVariables"in e?e.visualVariables:null;return!!i?.some((e=>this._isScaleDrivenSizeVariable(e)))||this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case"simple":return this._isScaleDrivenSymbol(e.symbol);case"class-breaks":return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some((e=>this._isScaleDrivenSymbol(e.symbol)));case"unique-value":return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some((e=>this._isScaleDrivenSymbol(e.symbol)))}return!1}_isScaleDrivenSymbol(e){if("cim"===e?.type){const{primitiveOverrides:t,minScale:i,maxScale:s}=e.data,l=t?.some((e=>/\$view\.scale/.test(e.valueExpressionInfo?.expression||"")))??!1;return null!=i||null!=s||l}return!1}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,i=t.minSize,s=t.maxSize;return!("object"!=typeof i||!i||!this._isScaleDrivenSizeVariable(i))||(!("object"!=typeof s||!s||!this._isScaleDrivenSizeVariable(s))||he.test(t.valueExpression))}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&Ue(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const i of t.sourceJSON.layers??[])if(i.id===e.source.mapLayerId&&(i.minScale>0||i.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxelLayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),i=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new re({color:t.color,outline:null})})})),e.length&&i.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:s}=t.transferFunction,l=e.toArray().reverse(),r=s.map(((e,t)=>`${0===t?Z:K} ${se(e)}`)).reverse(),n=l.map((e=>({color:e.color,value:null,label:null})));n[0].label=r[0],n[n.length-1].label=r[1],i.push({type:"color-ramp",title:t.label,infos:n,preview:j(l.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})})}const s=e.opacity,l=i.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,s)));await Promise.allSettled(l),this.legendElements=i,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher");const t=e.styleId?e.styles?.find((({id:t})=>t===e.styleId))?.legendUrl:void 0;t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const i=this.layer,s=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const l=this.sublayerIds?.map((e=>i.findSublayerById(e)))?.filter(r)??[],n=l.length?l:e.toArray();for(const r of n){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e?.infos.length&&s.unshift(e)}}return s}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const i=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:i}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let i=e.legendUrl;if(!i)return;const l={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(i=p(i,t));let r=null;const n=e.layer?.opacity;try{r=(await s(i,{responseType:"image"})).data,r&&(r.style.opacity=n)}catch{}return l.infos.push({src:i,preview:r,opacity:n}),l}_getLegendLayers(e,t){const i=Ke&&Ke[e];return i?Promise.resolve(i):this._legendRequest(t).then((t=>{const i=t.layers;return Ke[e]=i,i}))}_legendRequest(e){const t=this.layer;let i={f:"json",dynamicLayers:e};if(Be(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(i.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(i.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:s,customParameters:l}=t;i={raster:e,viewId:s,...i,...l}}}let l=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=l.indexOf("?");e>-1?l=l.slice(0,e)+"/legend"+l.slice(e):l+="/legend"}else{const e=l.toLowerCase().indexOf("/rest/"),t=-1===e?l:l.slice(0,e)+l.slice(e+5);l=ue+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return s(l,{query:i}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let i=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const s=e.toArray();for(const l of s){const e=d((()=>["renderer"in l&&l.renderer,l.opacity,l.title,l.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||l.visible){const e=null!=l?.opacity?l.opacity:null,s=null!=e?e*t:t;if("building-group"===l.type){const e={type:"symbol-table",title:l.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(l.sublayers,s);e.infos.push(...t),i=[e,...i]}else if(l.renderer){i=[...await this._getRendererLegendElements(l.renderer,{title:l.title,opacity:s,sublayer:l}),...i]}}}return i.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(Ue(e)||ke(e)||Oe(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,i){const s=this.layer;let l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!i&&this.sublayerIds&&this.sublayerIds.length&&(n=Oe(s)?this.sublayerIds.map((e=>s.findSublayerForSubtypeCode(e))).filter(r):this.sublayerIds.map((e=>s.findSublayerById(e))).filter(r));for(const r of n){const e=d((()=>[r.renderer,r.opacity,r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled&&this._isSublayerInScale(r)){const e=null!=r?.opacity?r.opacity:null,s=null!=e?e*t:t,n=!Ge(r)||r.originIdOf("renderer")>S.SERVICE&&!r.sublayers;if(r.renderer&&n){await r.load();l=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:s,sublayer:r}),...l]}else if(Ge(r)){const e=await this._generateSymbolTableElementForSublayer(r,s,i);e&&l.unshift(e)}}}return l.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,i){if(!i){i=new Map;const t=this.layer,s=e.source;let l=null;if(!(!s||"map-layer"===s.type&&s.mapLayerId===e.id&&(!s.gdbVersion||s.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>S.SERVICE||e.originIdOf("labelingInfo")>S.SERVICE||e.originIdOf("labelsVisible")>S.SERVICE){const e=new v({layer:this.layer});l=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const r=l||`${t.uid}-default`;(await this._getLegendLayers(r,l)).forEach((e=>i.set(e.layerId,e)))}const s=i.get(e.id);if((!s||s?.subLayerIds&&s.defaultVisibility)&&e.sublayers){const s=await this._generateLegendElementsForSublayers(e.sublayers,t,i);return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendLayer(s,e,t)}_generateSymbolTableElementForLegendLayer(e,t,i){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const s=t?.renderer;let l=t?.title||e.layerName;if(s&&(!t||t?.originIdOf("renderer")>S.SERVICE)){const e=t?.title||this._getRendererTitle(s,t);e&&(l&&"string"!=typeof e&&"title"in e&&(e.title=l),l=e)}const r={type:"symbol-table",title:l,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const s={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,i)};s.infos?.length>0&&r.infos.push(s)})):r.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,i),r.infos.length>0?r:null}_generateSymbolTableElementInfosForLegendLayer(e,t,s){return e.map((e=>{let l=e.url;if(e.imageData&&e.imageData.length>0)l=`data:image/png;base64,${e.imageData}`;else{if(0===l.indexOf("http"))return null;l=i(`${this.layer.url}/${t}/images/${l}`)}return{label:e.label,src:l,opacity:s??this.opacity,width:e.width,height:e.height}})).filter(r)}_isSublayerInScale(e){const t=e.minScale||0,i=e.maxScale||0;return!(t>0&&t<this.scale||i>this.scale)}_isLegendLayerInScale(e,t){const i=t||this.layer;let s=null,l=null,r=!0;return!i.minScale&&0!==i.minScale||!i.maxScale&&0!==i.maxScale?(0===e.minScale&&i.tileInfo&&(s=i.tileInfo.lods[0].scale),0===e.maxScale&&i.tileInfo&&(l=i.tileInfo.lods[i.tileInfo.lods.length-1].scale)):(s=Math.min(i.minScale,e.minScale)||i.minScale||e.minScale,l=Math.max(i.maxScale,e.maxScale)),(s>0&&s<this.scale||l>this.scale)&&(r=!1),r}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const i=t.renderer,s=e.some((e=>e.values));let l=0,r=null;return s&&e.some(((e,t)=>(e.values||(l=t,r=e,r.label||(r.label="others")),null!=r))),i?"unique-value"===i.type?r&&(e.splice(l,1),e.push(r)):"class-breaks"===i.type&&(r&&e.splice(l,1),i.legendOptions?.order||e.reverse(),r&&e.push(r)):r&&(e.splice(l,1),e.push(r)),e}async _getRendererLegendElements(e,t={}){if(!Te(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Ie(e))return this._constructPointCloudRendererLegendElements(e,t);if(De(e))return this._constructDotDensityRendererLegendElements(e);const i=await this._loadRenderer(e);return ze(i)?this._constructPieChartRendererLegendElements(i):this._constructRendererLegendElements(i,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const i=t.title,s=[];let l=null,r=null;if(Fe(e))l={type:"symbol-table",title:i||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{l.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(fe,e.color)})}));else if(Ve(e)){const t=e.stops;let s=null;if(t?.length&&(1===t.length&&(s=t[0].color),!s)){const e=t[0].value,i=t[t.length-1].value;if(null!=e&&null!=i){s=k(e+(i-e)/2,t)}}l={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(fe,s||fe.color)}]};const n=B(e.stops??[])??[];r={type:"color-ramp",title:i||this._getPointCloudRendererTitle(e),infos:n,preview:j(n.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})}}else xe(e)&&(l={type:"symbol-table",title:i||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{l.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(fe,e.color)})})));l?.infos.length&&s.push(l),r?.infos.length&&s.push(r);const n=s.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),s}async _getElementInfoForDotDensity(e,t){const{color:i,label:s,valueExpressionTitle:l}=t,{backgroundColor:r,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=w(u),d=await Je("previewTemplateAriaLabel",s||l),y=a+"-"+i+"-"+r+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):O(e,i,{ariaLabel:d});h.set(y,m);const f={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},p=T([[f]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:p,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),i=e.legendOptions?.unit,s={type:"symbol-table",title:{value:t&&Math.round(t),unit:i||""},infos:[]};for(const l of e.attributes){const t=await this._getElementInfoForDotDensity(e,l);t.label=l.label||l.valueExpressionTitle||l.field,s.infos.push(t)}return[s]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,i=[];let s=null;const l=e.outline;e.attributes.forEach((e=>{const t=new le({color:e.color,outline:l}),s=e.label||e.valueExpressionTitle||e.field;i.push({label:s,symbol:t})}));const r=i.length?[...i]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new le({color:e.othersCategory.color,outline:l});s=e.othersCategory.label||"Other",i.push({label:s,symbol:t})}if(e.defaultColor?.a){const t=new le({color:e.defaultColor,outline:l});i.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(i.length){n.unshift({type:"symbol-table",title:null,infos:i});const t=r.filter((e=>e.label!==s)).map((e=>e.symbol.color)).filter(Boolean),a=P(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:l,ariaLabel:await Je("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:i,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:i,sublayer:s}=t,l=s||this.layer,r=X(e);if("definitionExpression"in l){const t=l.definitionExpression;if(t&&this.respectLayerDefinitionExpression&&Ee(e)){if(this._layerDefinitionExpression!==t){this._layerDefinitionExpressionClause=await f(t,l.fieldsIndex);const i=new Set((await L(e,l.fieldsIndex)).map((e=>e.toLowerCase()))),s=this._layerDefinitionExpressionClause?.fieldNames.map((e=>e.toLowerCase()));s?.every((e=>i.has(e)))||(this._layerDefinitionExpressionClause=null,s?.length&&o.getLogger(this).warn("Definition expression will be ignored in the Legend, as fields in the expression do not match with renderer fields"))}}else this._layerDefinitionExpressionClause=null;this._layerDefinitionExpression=t}this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const n=await this._getVisualVariableLegendElements(e,l)||[],a={type:"symbol-table",title:i||this._getRendererTitle(e,l),infos:[]};let u=null,c=!1;const d=new Set;if(ge(e)&&!this._hasSizeRamp){const t=await Y(e);a.infos.push({label:null,symbol:t})}else if($e(e)){let t=i;const s=We(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",l=n.findIndex((e=>"color-ramp"===e.type)),r=-1!==l?n.splice(l,1)[0]:null,a=n.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?n.splice(a,1)[0]:null,u=[];r&&(t=r.title,u.push(r)),o&&(t=o.title,u.push(o)),u.length>0&&n.push({type:s,title:t,infos:u})}else if(Ce(e)){const t=H(e);n.push({type:"heatmap-ramp",title:i||this._getRendererTitle(e,l),infos:t,preview:j(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await Je("previewColorRampAriaLabel")})})}else if(Ee(e)){const t=e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:i,field1:s,field2:r}=t,o=t.focus;if(i&&s&&r){const t=[s,r];let u=$(o)||0;for(const e of t){const{field:t,normalizationField:i,label:s}=e,r=s||{field:this._getFieldAlias(t,l),normField:i&&this._getFieldAlias(i,l)},n=Ze.clone();n.angle=u,a.infos.push({label:r,symbol:n}),d.add(n),u+=90}const c=W({focus:o,numClasses:i,infos:e.uniqueValueInfos??[]});n.unshift(c)}}else if(Be(this.layer)||Ne(this.layer))e.uniqueValueInfos?.forEach((t=>{t.symbol&&this._checkDefinitionExpressionForUVR(e,t.value)&&a.infos.push({label:t.label||t.value,value:t.value,symbol:t.symbol})}));else{const{field:t,field2:s,field3:n,fieldDelimiter:o,valueExpression:u,defaultSymbol:d}=e,y=!(!t&&!u||!s&&!n),h=[];if(e.uniqueValueGroups?.forEach((i=>{const a={type:"symbol-table",title:i.heading,infos:[]};i.classes?.forEach((i=>{const{symbol:c,values:d}=i;if(c){const h=[],m=[];for(const e of d??[]){const{value:i,value2:r,value3:a}=e,c=[],d=[];(t||u)&&(c.push(i),d.push(this._getDomainName(t,i,l))),s&&(c.push(r),d.push(this._getDomainName(s,r,l))),n&&(c.push(a),d.push(this._getDomainName(n,a,l))),h.push(y?c.join(o||""):c[0]),m.push(d.join(" - "))}const f=h.join(", ");let p=i.label;if(!p){const e=m.filter(Boolean);p=e.length?e.join(", "):f}const g=c.clone();"cim"===g.type&&r&&x(g,{innerDotSize:.5*oe,outerRingSize:oe}),h.some((t=>this._checkDefinitionExpressionForUVR(e,t)))&&a.infos.push({label:p,value:f,symbol:g})}})),a.infos.length&&h.push(a)})),h.length){const t=h[0];1===h.length&&"title"in t&&!t.title?a.infos.push(...t.infos??[]):(d&&(h.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:d}]}),c=!0),a.infos.push(...h)),i||e.legendOptions?.title||e.valueExpressionTitle||(a.title=null)}}e.defaultSymbol&&!c&&(a.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),c=!0)}else if(Le(e)){if(!r){u=this._isUnclassedRenderer(e);if(!u||!this._hasSizeRamp){const t=e.classBreakInfos.filter((({symbol:e})=>e)),i="ascending-values"===e.legendOptions?.order;for(const{label:e,minValue:s,maxValue:l,symbol:r}of t){const t={label:e||(u?null:`${s} - ${l}`),value:[s,l],symbol:r};i?a.infos.push(t):a.infos.unshift(t)}u&&(a.title=null),this._updateInfosForClassedSizeRenderer(e,a.infos)}e.defaultSymbol&&!u&&(a.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),c=!0)}}else if(_e(e))if(Ne(this.layer)||qe(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);He(t)?n.push(t):a.infos=t}else{const t=this.layer;let i,s;e.customStatistics?.length&&({min:i,max:s}=e.customStatistics[0]);let l=[],r=t.serviceRasterInfo;if(t.rasterFunction)try{r=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=C(r.pixelType);if(1===r.bandCount){const l=t.bandIds?.[0]||0;i=null!=i?i:r.statistics?r.statistics[l].min:o[0],s=null!=s?s:r.statistics?r.statistics[l].max:o[1],i||s?n.push(await this._getStretchLegendElements(e,{min:i,max:s})):this._getServerSideLegend()}else if(t.bandIds&&1===t.bandIds.length)i=null!=i?i:r.statistics?r.statistics[t.bandIds[0]].min:o[0],s=null!=s?s:r.statistics?r.statistics[t.bandIds[0]].max:o[1],i||s?n.push(await this._getStretchLegendElements(e,{min:i,max:s})):this._getServerSideLegend();else if(r.bandCount>=3){const{bandInfos:e}=r,{bandIds:i}=t;e.length>=r.bandCount?3===i?.length?(l=i.map((t=>e[t].name)),a.infos=this._createSymbolTableElementMultiBand(l)):"lerc"===t.format?(l=[0,1,2].map((t=>e[t].name)),a.infos=this._createSymbolTableElementMultiBand(l)):this._getServerSideLegend():"lerc"===t.format?(l=["band1","band2","band3"],a.infos=this._createSymbolTableElementMultiBand(l)):this._getServerSideLegend()}else this._getServerSideLegend()}else if(Se(e))e.colormapInfos.forEach((e=>{a.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(pe,e.color)})}));else if(ve(e)){let i=e.symbol;switch(t.geometryType){case"point":i="pointSymbol"in l?l.pointSymbol:null;break;case"polyline":i="lineSymbol"in l?l.lineSymbol:null;break;case"polygon":i="polygonSymbol"in l?l.polygonSymbol:null}const s=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&s&&a.infos.push({label:e.label,symbol:i})}else if(be(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),a.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{a.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):a.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else we(e)&&n.push(await this._getStretchLegendElements(e,{min:0,max:255}));const y=e.defaultSymbol;!y||c||ve(e)||u&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||n.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:y}]}),a.infos.length&&n.unshift(a);const h=null==t.opacity?this.opacity:t.opacity,m=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),p=Be(this.layer)||Ne(this.layer),g=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).filter((e=>{if("cim"===e.symbol.type){const{minScale:t,maxScale:i}=e.symbol.data;if(t&&t<this.scale||i&&i>this.scale)return!1}return!0})).map((e=>this._getSymbolPreview(e,h,{isDefault:e.symbol===y,applyScaleDrivenSize:!d.has(e.symbol),symbolConfig:{isTall:m,isSquareFill:p},effectList:d.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(g),n}_checkDefinitionExpressionForUVR(e,t){if(!this._layerDefinitionExpressionClause)return!0;const i=Qe(e,t);return(i&&this._layerDefinitionExpressionClause.testFeature(i))??!0}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,i=t.symbolizer.rasterInfo??t.raster.rasterInfo;let s,l;const r=e?.customStatistics?.length?e.customStatistics:i?.statistics;if(r)({min:s,max:l}=r[0]);else{const e=C(i.pixelType);s=e[0],l=e[1]}if(t.hasStandardTime()&&(s=t.getStandardTimeValue(s),l=t.getStandardTimeValue(l)),1===i.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:s,max:l});const n=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(i.bandCount,3)).keys())).map((e=>i.bandInfos[e].name));return n.length<3?n.push(n[1]):n.length>3&&n.splice(3),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const i=e.colorRamp,s=N(i,t);return{type:"stretch-ramp",title:"",infos:s,preview:j(s.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,i=t&&"symbol"in t&&t.renderer;return i&&!0!==i?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,i,s){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await G(i,t,await ee(i),this.scale,this.view,s,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],i=["red","green","blue"];return e.forEach(((e,s)=>{t.push({label:{colorName:i[s],bandName:e},src:te[s],opacity:this.opacity??1})})),t}_updateInfosForClassedSizeRenderer(e,t){const i=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,s=e.classBreakInfos.some((e=>M(e.symbol)));if(i&&s){const i=J,s=Q,l=e.classBreakInfos.length,r=(i-s)/(l>1?l-1:l);t.forEach(((e,t)=>{e.size=i-r*t}))}}_isTallSymbol(e){let t=!1,i=!1;if(e)for(let s=0;s<e.length&&(!t||!i);s++){const l=e[s];"size"===l.type&&("height"===l.axis&&(t=!0),"width-and-depth"===l.axis&&(i=!0))}return t&&i}async _getSymbolPreview(e,t,i){let s=!i?.isDefault&&null==e.size&&this._hasSizeRamp?m(z.size):e.size;if(this._scaleDrivenSizeVariable&&i?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");s=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}const l=!i?.isDefault&&this._hasSizeRamp||!(!this._scaleDrivenSizeVariable||!i?.applyScaleDrivenSize);return A(e.symbol,{size:s,opacity:t,scale:!1,symbolConfig:i?.symbolConfig,effectView:i?.effectList,style:"legend",cimOptions:{allowScalingUp:l,viewParams:this.isScaleDriven?{viewingMode:"2d"===this.view?.type?"map":this.view?.viewingMode,scale:this.view?.scale}:null},ariaLabel:e.label&&"string"!=typeof e.label?null:await Je("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,i=e.renderer?.clone()||t?.clone(),s=U(e,this.layerView,this.view);if(s&&null!=i&&"visualVariables"in i){const t=i.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!he.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:i}=e;s.legendOptions=new V({showLegend:t!==i})}const t=i.visualVariables||[];i.visualVariables=t.concat([s]),this._hasClusterSizeVariable=!0}}return i}async _loadRenderer(e){const t=[],i=e.clone(),s=await ee(i);if(Le(i)||Ee(i)){const e=(i.classBreakInfos||i.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,s).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(i.symbol||i.defaultSymbol,i.defaultSymbol?null:s).then((e=>{this._applySymbolToRenderer(i,e,ve(i))})).catch((()=>{this._applySymbolToRenderer(i,null,ve(i))}))),await Promise.allSettled(t),i}_applySymbolToRenderer(e,t,i){i?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const i=this._webStyleSymbolCache;try{const s=await("2d"===this.view.type?e.fetchCIMSymbol({cache:i}):e.fetchSymbol({cache:i}));return this._getAppliedCloneSymbol(s,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,i){if(!e||!i)return e;const s=e.clone(),l=i&&i.toRgba();return s.type.includes("3d")?this._applyColorTo3dSymbol(s,l):"cim"===s.type?D(s,i):s.color&&(s.color=new t(l||s.color)),s}_applyColorTo3dSymbol(e,i){i&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(i))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||"vector-field"===e.type)return null;const i=e.visualVariables??[],s=[],l=[],n=[],a=X(e);if(2===a?.sizeStops?.length&&(Le(e)||Ee(e))){const[e,t]=a.sizeStops;l.push(new F({field:a.field??void 0,normalizationField:a.normalizationField,minSize:e.size,maxSize:t.size,minDataValue:e.value,maxDataValue:t.value}))}for(const r of i)"color"===r.type?s.push(r):"size"===r.type?l.push(r):"opacity"===r.type&&n.push(r);const o=[...s,...l,...n];let u,c;if(0===s.length&&Le(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];u=t&&t.symbol}if(0===s.length&&ve(e)&&(u=e.symbol),u)if(u.type.includes("3d")){const e=u.symbolLayers.at(0);"water"===e.type?null!=e.color&&(c=e.color):null!=e.material?.color&&(c=e.material.color)}else u.url||(c=u.color);const d=this.effectList;return(await Promise.all(o.map((async i=>{if(!i.legendOptions||!1!==i.legendOptions.showLegend){const s=ge(e)?i.field:this._getRampTitle(i,t);let l=null;const r=ie(t,i,this.view.timeZone);if("color"===i.type){const e=await q(i,null,r)??[];l={type:"color-ramp",title:s,infos:e,preview:j(e.map((e=>e.color)),{effectList:d,ariaLabel:await Je("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===i.type&&"outline"!==i.target)he.test(i.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=i):(l=await this._getSizeLegendElement(s,i,e,r),this._hasSizeRamp||(this._hasSizeRamp=!(null==l.infos||!l.infos.length)));else if("opacity"===i.type){const e=await q(i,c,r)??[];l={type:"opacity-ramp",title:s,infos:e,preview:j(e.map((e=>e.color)),{effectList:d,ariaLabel:await Je("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return l?.infos?l:null}})))).filter(r)}_getDomainName(e,t,i){if(e&&"function"!=typeof e){const s="getField"in i&&i.getField?.(e),l=s&&"getFieldDomain"in i&&i.getFieldDomain?i.getFieldDomain(s.name,{excludeImpliedDomains:has("esri-widget-legacy-field-domain-calculation")}):null;return"coded-value"===l?.type?l.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,i=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,s="popupTemplate"in e&&e.popupTemplate,l=s&&s.fieldInfos;if(l)for(const t of l)if(t.fieldName===i)return"cluster_count"===i?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let i=e.field,s=e.normalizationField,l=!1,r=!1,n=!1,a=null;i="function"==typeof i?null:i,s="function"==typeof s?null:s;const o=e.legendOptions?.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo?.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const i=e[t];if("color"===i.type){if("ratio"===i.style){l=!0;break}if("percent"===i.style){r=!0;break}if("percent-of-total"===i.style){n=!0;break}}}}a={field:i&&this._getFieldAlias(i,t),normField:s&&this._getFieldAlias(s,t),ratio:l,ratioPercent:r,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const i=e;if(i.legendOptions?.title)return i.legendOptions.title;if(i.valueExpressionTitle)return i.valueExpressionTitle;let s=i.field,l=null,r=null;if(Le(i)&&(l=i.normalizationField,r="percent-of-total"===i.normalizationType),s="function"==typeof s?null:s,l="function"==typeof l?null:l,Ee(i)){const{field2:e,field3:l,fieldDelimiter:r}=i;let n=s&&this._getFieldAlias(s,t);return e&&(n=`<${n}>${r}<${this._getFieldAlias(e,t)}>`,l&&(n=`${n}${r}<${this._getFieldAlias(l,t)}>`)),n}let n=null;return(s||l)&&(n={field:s&&this._getFieldAlias(s,t),normField:l&&this._getFieldAlias(l,t),normByPct:r}),n}_getFieldAlias(e,t){const i="popupTemplate"in t?t.popupTemplate:null,s=i?.fieldInfos;let l=s?.find((t=>e===t.fieldName)),r=null;"getField"in t&&t.getField?r=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(r=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(l??="popupTemplate"in a?a.popupTemplate?.fieldInfos?.find((t=>e?.toLowerCase()===t.fieldName?.toLowerCase())):void 0,"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=l||r||n;let u=null;return o&&(u=l?.label||r?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let i=!1;return Le(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(i=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),i}};e([g()],Xe.prototype,"children",void 0),e([g({readOnly:!0})],Xe.prototype,"effectList",null),e([g()],Xe.prototype,"layerView",void 0),e([g()],Xe.prototype,"layer",void 0),e([g()],Xe.prototype,"legendElements",void 0),e([g({readOnly:!0})],Xe.prototype,"opacity",null),e([g()],Xe.prototype,"parent",void 0),e([g({readOnly:!0,dependsOn:[]})],Xe.prototype,"ready",null),e([g()],Xe.prototype,"hideLayersNotInCurrentView",void 0),e([g()],Xe.prototype,"keepCacheOnDestroy",void 0),e([g()],Xe.prototype,"respectLayerDefinitionExpression",void 0),e([g()],Xe.prototype,"respectLayerVisibility",void 0),e([g({readOnly:!0})],Xe.prototype,"scale",null),e([g()],Xe.prototype,"sublayerIds",void 0),e([g({readOnly:!0})],Xe.prototype,"isScaleDriven",null),e([g()],Xe.prototype,"title",void 0),e([g({readOnly:!0,dependsOn:["ready"],value:0})],Xe.prototype,"version",null),e([g()],Xe.prototype,"view",void 0),Xe=e([b("esri.widgets.Legend.support.ActiveLayerInfo")],Xe);const Ye=Xe;export{Ye as default};
|
|
5
|
+
import{_ as e}from"../../../chunks/tslib.es6.js";import t from"../../../Color.js";import"../../../intl.js";import{addTokenParameter as i}from"../../../kernel.js";import s from"../../../request.js";import l from"../../../core/Accessor.js";import{isSome as r}from"../../../core/arrayUtils.js";import n from"../../../core/Collection.js";import has from"../../../core/has.js";import{JSONMap as a}from"../../../core/jsonMap.js";import o from"../../../core/Logger.js";import{debounce as u}from"../../../core/promiseUtils.js";import{on as c,watch as d,whenOnce as y,initial as h}from"../../../core/reactiveUtils.js";import{px2pt as m}from"../../../core/screenUtils.js";import{parseWhereClause as f}from"../../../core/sql.js";import{addQueryParameters as p}from"../../../core/urlUtils.js";import{property as g}from"../../../core/accessorSupport/decorators/property.js";import{subclass as b}from"../../../core/accessorSupport/decorators/subclass.js";import{OriginId as S}from"../../../core/accessorSupport/PropertyOrigin.js";import{EffectView as _}from"../../../layers/effects/EffectView.js";import{effectFunctionsFromJSON as w}from"../../../layers/effects/jsonUtils.js";import{ExportImageParameters as v}from"../../../layers/support/ExportImageParameters.js";import{getRendererFields as L}from"../../../layers/support/fieldUtils.js";import{isFeatureLayer as E}from"../../../layers/support/layerUtils.js";import{getPixelValueRange as C}from"../../../layers/support/rasterFormats/pixelRangeUtils.js";import{fromJSON as I}from"../../../renderers/support/jsonUtils.js";import{isSupportedRenderer3D as R}from"../../../renderers/support/rendererConversion.js";import F from"../../../renderers/visualVariables/SizeVariable.js";import V from"../../../renderers/visualVariables/support/SizeVariableLegendOptions.js";import{updateReferenceSizeSymbol as x}from"../../../smartMapping/renderers/support/referenceSizeUtils.js";import D from"../../../symbols/SimpleFillSymbol.js";import z from"../../../symbols/SimpleMarkerSymbol.js";import{applyCIMSymbolColor as T}from"../../../symbols/support/cimSymbolUtils.js";import{SymbolSizeDefaults as j}from"../../../symbols/support/previewUtils.js";import{renderSymbol as O}from"../../../symbols/support/renderUtils.js";import{renderColorRampPreviewHTML as P,renderDotDensityPreviewHTML as A,renderPieChartPreviewHTML as M,renderPreviewHTML as U}from"../../../symbols/support/symbolUtils.js";import{isVolumetricSymbol as k}from"../../../symbols/support/utils.js";import{getEffectiveClusterSizeVariable as B}from"./clusterUtils.js";import{getColorFromPointCloudStops as N,getRampStopsForPointCloud as q,getStretchRampStops as H,getRampStops as $}from"./colorRampUtils.js";import{getHeatmapRampStops as W}from"./heatmapRampUtils.js";import{getRotationAngleForFocus as G,getRelationshipRampElement as J}from"./relationshipRampUtils.js";import{getRampStops as Q,realWorldMaxSize as Z,realWorldMinSize as K}from"./sizeRampUtils.js";import{specialCharsLessThan as X,specialCharsGreaterThan as Y,getReferenceSizeAuthoringInfoVisualVariable as ee,getSymbolForFlowRenderer as te,getMedianColor as ie,rgbImgSource as se,getDateFormatOptions as le}from"./utils.js";import{formatNumberLabel as re}from"../../smartMapping/support/utils.js";import{fetchMessageBundle as ne}from"../../../intl/messages.js";import{substitute as ae}from"../../../intl/substitute.js";const oe=16,ue="https://utility.arcgis.com/sharing/tools/legend",ce="esri.layers.ImageryLayer",de="esri.layers.ImageryTileLayer",ye="esri.layers.WCSLayer",he=/^\s*(return\s+)?\$view\.scale\s*(;)?\s*$/i,me=new a({esriGeometryPoint:"point",esriGeometryMultipoint:"multipoint",esriGeometryPolyline:"polyline",esriGeometryPolygon:"polygon",esriGeometryMultiPatch:"multipatch"}),fe=new z({size:6,outline:{color:[128,128,128,.5],width:.5}}),pe=new D({style:"solid"});function ge(e){return"flow"===e.type}function be(e){return"vector-field"===e.type}function Se(e){return"raster-colormap"===e.type}function _e(e){return"raster-stretch"===e.type}function we(e){return"raster-shaded-relief"===e.type}function ve(e){return"esri.renderers.SimpleRenderer"===e.declaredClass}function Le(e){return"esri.renderers.ClassBreaksRenderer"===e.declaredClass}function Ee(e){return"esri.renderers.UniqueValueRenderer"===e.declaredClass}function Ce(e){return"esri.renderers.HeatmapRenderer"===e.declaredClass}function Ie(e){return Fe(e)||Ve(e)||xe(e)||Re(e)}function Re(e){return"esri.renderers.PointCloudRGBRenderer"===e.declaredClass}function Fe(e){return"esri.renderers.PointCloudClassBreaksRenderer"===e.declaredClass}function Ve(e){return"esri.renderers.PointCloudStretchRenderer"===e.declaredClass}function xe(e){return"esri.renderers.PointCloudUniqueValueRenderer"===e.declaredClass}function De(e){return"esri.renderers.DotDensityRenderer"===e.declaredClass}function ze(e){return"esri.renderers.PieChartRenderer"===e.declaredClass}function Te(e,t){return ve(e)||Le(e)||Ee(e)||Ce(e)||De(e)||ze(e)?"2d"===t.type||R(e):_e(e)||Se(e)||we(e)||Fe(e)||Ve(e)||xe(e)||be(e)||ge(e)}function je(e){return"esri.layers.BuildingSceneLayer"===e.declaredClass}function Oe(e){return"esri.layers.SubtypeGroupLayer"===e.declaredClass}function Pe(e){return"esri.layers.VoxelLayer"===e.declaredClass}function Ae(e){return"esri.layers.WMSLayer"===e.declaredClass}function Me(e){return"esri.layers.WMTSLayer"===e.declaredClass}function Ue(e){return"esri.layers.MapImageLayer"===e.declaredClass}function ke(e){return"esri.layers.TileLayer"===e.declaredClass}function Be(e){return e.declaredClass===ce}function Ne(e){return e.declaredClass===de}function qe(e){return e.declaredClass===ye}function He(e){return"stretch-ramp"===e.type}function $e(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type}function We(e){const t="authoringInfo"in e?e?.authoringInfo:null;return"univariate-color-size"===t?.type&&"above-and-below"===t?.univariateTheme}function Ge(e){return"sublayers"in e}async function Je(e,t){const i=await ne("esri/widgets/Legend/t9n/Legend");return"previewTemplateAriaLabel"!==e||t||(e="previewAriaLabel"),ae(i[e],{label:t})}function Qe(e,t){const{field:i,field2:s,field3:l,fieldDelimiter:r,valueExpression:n}=e;if(!i)return null;const a=!(!i&&!n||!s&&!l)?t?.toString().split(r||""):[t],o=i?{[i]:a?.[0]}:null;return o&&(s&&(o[s]=a?.[1]),l&&(o[l]=a?.[2])),o}const Ze=new z({style:"path",path:"M10,5 L5,0 0,5 M5,0 L5,15",size:15,outline:{width:1,color:[85,85,85,1]}});let Ke={},Xe=class extends l{constructor(e){super(e),this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._webStyleSymbolCache=new Map,this._dotDensityUrlCache=new Map,this._scaleDrivenSizeVariable=null,this._hasClusterSizeVariable=!1,this._layerDefinitionExpression=null,this._layerDefinitionExpressionClause=null,this.children=new n,this.layerView=null,this.layer=null,this.legendElements=[],this.parent=null,this.hideLayersNotInCurrentView=!1,this.keepCacheOnDestroy=!1,this.respectLayerDefinitionExpression=!1,this.respectLayerVisibility=!0,this.sublayerIds=[],this.title=null,this.view=null}initialize(){const e=()=>this.notifyChange("ready");this.addHandles([c((()=>this.children),"change",(t=>{const{added:i,removed:s}=t;i.forEach((t=>{const i=`activeLayerInfo-ready-watcher-${t.layer.uid}`;this.addHandles(d((()=>t.ready),e,h),i)})),s.forEach((e=>this.removeHandles(e.layer.uid))),e()}))]),this.keepCacheOnDestroy||(Ke={})}destroy(){this._webStyleSymbolCache=null,this._dotDensityUrlCache=null,this._scaleDrivenSizeVariable=null,this.keepCacheOnDestroy||(Ke=null),this._layerDefinitionExpressionClause=null}get effectList(){const e=this.layer;let t=null;return"effect"in e&&e.effect&&(t=new _,t.effect=e.effect,t.endTransition(),t.scale=this.scale),t}get opacity(){const e=this.layer.opacity,t=this.parent?.opacity,i=this.layer.parent,s=i&&"uid"in i?this._getParentLayerOpacity(i):null;return null!=t?t*e:null!=s?s*e:e}get ready(){return null===this.layer||(this.children.length>0?this._isGroupActive():this.legendElements.length>0)}get scale(){return this.view?.scale??0}get isScaleDriven(){const e=this.layer;if(null===e)return!1;if("effect"in e&&e.effect&&Array.isArray(e.effect))return!0;if("featureReduction"in e&&e.featureReduction){if("cluster"===e.featureReduction.type)return!0;if("binning"===e.featureReduction.type&&"renderer"in e.featureReduction&&e.featureReduction.renderer)return this._isRendererScaleDriven(e.featureReduction.renderer)}return"renderer"in e&&e.renderer?this._isRendererScaleDriven(e.renderer):this._isLayerScaleDriven(this.layer)}get version(){return this._get("version")+1}async buildLegendElementsForFeatureCollections(e){if(!(!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView()))return this.legendElements=[],void this.notifyChange("ready");const t=Array.from(e,(e=>{if(E(e))return this._getRendererLegendElements(e.renderer,{title:e.title});if(e.featureSet?.features.length){const t=e.layerDefinition,i=t?.drawingInfo,s=i&&I(i.renderer),l=me.read(t.geometryType);return s?this._getRendererLegendElements(s,{title:e.name,geometryType:l}):(o.getLogger(this).warn("drawingInfo not available!"),null)}return null}));try{const e=[],i=await Promise.allSettled(t);for(const t of i)if("fulfilled"===t.status)for(const i of t.value??[])e.push(i);this.legendElements=e,this.notifyChange("ready")}catch(i){o.getLogger(this).warn("error while building legend for layer!",i)}}async buildLegendElementsForRenderer(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getRendererLegendElements(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForFeatureReduction(e){try{const t=!this.hideLayersNotInCurrentView||await this._isLayerInCurrentView();this.legendElements=t?await this._getLegendElementsForFeatureReduction(e):[],this.notifyChange("ready")}catch(t){o.getLogger(this).warn("error while building legend for layer!",t)}}async buildLegendElementsForTools(){const e=this.layer;if(Pe(e))this._constructLegendElementsForVoxelLayer();else if(Me(e))this._constructLegendElementsForWMTSlayer();else if(Ae(e))await this._constructLegendElementsForWMSSublayers();else if(je(e))await this._constructLegendElementsForBuildingSceneLayer();else if(Ue(e)||ke(e)||Oe(e))await this._constructLegendElementsForSublayers();else{this.removeHandles("imageryLayers-watcher");let t="default";if(Be(e)){const i=e;t=(i?.rasterFunction?.functionName||"default")+"_"+(e.bandIds?.length?e.bandIds.join(""):"###")}if(Ne(e)||"link-chart"===e.type)return;await this._getLegendLayers(`${e.uid}-${t}`).then((async t=>{this.legendElements=[],this.notifyChange("ready");const i=t.map((async t=>{if(Be(e)){const t=d((()=>[e.rasterFunction,e.bandIds]),(()=>u((async()=>{Ke.default=null,e.renderer?await this.buildLegendElementsForRenderer(e.renderer):await this.buildLegendElementsForTools()}))()));this.addHandles(t,"imageryLayers-watcher")}const i=this._generateSymbolTableElementForLegendLayer(t);i?.infos.length&&(Be(e)&&(i.title=e.title),this.legendElements.push(i)),this.notifyChange("ready")}));await Promise.allSettled(i)})).catch((e=>{o.getLogger(this).warn("Request to server for legend has failed!",e)}))}}async _isLayerInCurrentView(){const e=this.layer,t=this.layerView,i=t&&"createQuery"in t&&"queryFeatureCount"in t;if(!i&&!(t&&"createQuery"in e&&"queryFeatureCount"in e))return!0;await y((()=>!t.updating));const s=i?"createQuery"in t&&t.createQuery():"createQuery"in e&&e.createQuery();if(!s)return!0;s.geometry=this.view.extent;return 0!==(i?"queryFeatureCount"in t&&await t.queryFeatureCount(s):"queryFeatureCount"in e&&await e.queryFeatureCount(s))}_getParentLayerOpacity(e){let t=1;const i=e.parent;return i&&"uid"in i&&(t=this._getParentLayerOpacity(i)),e.opacity*t}_isGroupActive(){return this.children.some((e=>e.ready))}_isRendererScaleDriven(e){if("dot-density"===e.type)return!0;const t="valueExpression"in e?e.valueExpression:null;if(he.test(t))return!0;const i="visualVariables"in e?e.visualVariables:null;return!!i?.some((e=>this._isScaleDrivenSizeVariable(e)))||this._hasScaleDrivenSymbols(e)}_hasScaleDrivenSymbols(e){switch(e.type){case"simple":return this._isScaleDrivenSymbol(e.symbol);case"class-breaks":return this._isScaleDrivenSymbol(e.defaultSymbol)||e.classBreakInfos.some((e=>this._isScaleDrivenSymbol(e.symbol)));case"unique-value":return this._isScaleDrivenSymbol(e.defaultSymbol)||!!e.uniqueValueInfos?.some((e=>this._isScaleDrivenSymbol(e.symbol)))}return!1}_isScaleDrivenSymbol(e){if("cim"===e?.type){const{primitiveOverrides:t,minScale:i,maxScale:s}=e.data,l=t?.some((e=>/\$view\.scale/.test(e.valueExpressionInfo?.expression||"")))??!1;return null!=i||null!=s||l}return!1}_isScaleDrivenSizeVariable(e){if(e&&"size"!==e.type)return!1;const t=e,i=t.minSize,s=t.maxSize;return!("object"!=typeof i||!i||!this._isScaleDrivenSizeVariable(i))||(!("object"!=typeof s||!s||!this._isScaleDrivenSizeVariable(s))||he.test(t.valueExpression))}_isLayerScaleDriven(e){if("minScale"in e&&e.minScale>0||"maxScale"in e&&e.maxScale>0)return!0;if("sublayers"in e&&e.sublayers)return e.sublayers.some((e=>this._isLayerScaleDriven(e)));const t=e.parent;if(!1===e.loaded&&t&&Ue(t)&&"source"in e&&e.source&&"map-layer"===e.source.type)for(const i of t.sourceJSON.layers??[])if(i.id===e.source.mapLayerId&&(i.minScale>0||i.maxScale>0))return!0;return!1}async _constructLegendElementsForVoxelLayer(){this.legendElements=[],this.removeHandles("voxel-style-watcher"),this.removeHandles("voxel-current-variable");const e=this.layer;this.addHandles(d((()=>e.currentVariableId),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-current-variable"),this.addHandles(d((()=>e.getVariableStyles()),(()=>this._constructLegendElementsForVoxelLayer())),"voxel-style-watcher");const t=e.getVariableStyle(null),i=[];if(t)if(t.uniqueValues?.length){const e=[];t.uniqueValues.forEach((t=>{t.enabled&&e.push({label:t.label||`${t.value}`,value:t.value,symbol:new D({color:t.color,outline:null})})})),e.length&&i.push({type:"symbol-table",title:t.label,infos:e})}else if(t.transferFunction){const{colorStops:e,stretchRange:s}=t.transferFunction,l=e.toArray().reverse(),r=s.map(((e,t)=>`${0===t?X:Y} ${re(e)}`)).reverse(),n=l.map((e=>({color:e.color,value:null,label:null})));n[0].label=r[0],n[n.length-1].label=r[1],i.push({type:"color-ramp",title:t.label,infos:n,preview:P(l.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})})}const s=e.opacity,l=i.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).map((e=>this._getSymbolPreview(e,s)));await Promise.allSettled(l),this.legendElements=i,this.notifyChange("ready")}_constructLegendElementsForWMTSlayer(){this.legendElements=[],this.removeHandles("wmts-activeLayer-watcher");const e=this.layer.activeLayer;this.addHandles(d((()=>{const{layer:e}=this;return e&&"activeLayer"in e&&e.activeLayer}),(()=>this._constructLegendElementsForWMTSlayer())),"wmts-activeLayer-watcher");const t=e.styleId?e.styles?.find((({id:t})=>t===e.styleId))?.legendUrl:void 0;t&&(this.legendElements=[{type:"symbol-table",title:e.title,infos:[{src:t,opacity:this.opacity}]}]),this.notifyChange("ready")}async _constructLegendElementsForWMSSublayers(){this.legendElements=[],this.removeHandles("wms-sublayers-watcher");const e=this.layer;let t=null;(e.customParameters||e.customLayerParameters)&&(t={...e.customParameters,...e.customLayerParameters}),this.addHandles(d((()=>{const{layer:e}=this;return e&&"sublayers"in e&&e.sublayers}),(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher"),this.legendElements=await this._generateLegendElementsForWMSSublayers(e.sublayers,t),this.notifyChange("ready")}async _generateLegendElementsForWMSSublayers(e,t){const i=this.layer,s=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForWMSSublayers())),"wms-sublayers-watcher");const l=this.sublayerIds?.map((e=>i.findSublayerById(e)))?.filter(r)??[],n=l.length?l:e.toArray();for(const r of n){const e=d((()=>[r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForWMSSublayers()));if(this.addHandles(e,"wms-sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled){const e=await this._generateSymbolTableElementForWMSSublayer(r,t);e?.infos.length&&s.unshift(e)}}return s}async _generateSymbolTableElementForWMSSublayer(e,t){if(!e.legendUrl&&e.sublayers){const i=(await this._generateLegendElementsForWMSSublayers(e.sublayers,t)).filter((e=>e));return{type:"symbol-table",title:e.title,infos:i}}return this._generateSymbolTableElementForLegendUrl(e,t)}async _generateSymbolTableElementForLegendUrl(e,t){let i=e.legendUrl;if(!i)return;const l={type:"symbol-table",title:e.title||e.name||String(e.id??""),infos:[]};t&&(i=p(i,t));let r=null;const n=e.layer?.opacity;try{r=(await s(i,{responseType:"image"})).data,r&&(r.style.opacity=n)}catch{}return l.infos.push({src:i,preview:r,opacity:n}),l}_getLegendLayers(e,t){const i=Ke&&Ke[e];return i?Promise.resolve(i):this._legendRequest(t).then((t=>{const i=t.layers;return Ke[e]=i,i}))}_legendRequest(e){const t=this.layer;let i={f:"json",dynamicLayers:e};if(Be(t)){const e=t.exportImageServiceParameters.rasterFunction;if(e&&(i.renderingRule=JSON.stringify(e.functionDefinition?.toJSON()||e.toJSON())),t.bandIds&&(i.bandIds=t.bandIds.join()),t.raster||t.viewId||t.customParameters){const{raster:e,viewId:s,customParameters:l}=t;i={raster:e,viewId:s,...i,...l}}}let l=t.url.replace(/(\/)+$/,"");if("version"in t&&+t.version>=10.01){const e=l.indexOf("?");e>-1?l=l.slice(0,e)+"/legend"+l.slice(e):l+="/legend"}else{const e=l.toLowerCase().indexOf("/rest/"),t=-1===e?l:l.slice(0,e)+l.slice(e+5);l=ue+"?soapUrl="+encodeURI(t)+"&returnbytes=true"}return s(l,{query:i}).then((e=>e.data))}async _constructLegendElementsForBuildingSceneLayer(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForBuildingSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}async _generateLegendElementsForBuildingSublayers(e,t){let i=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForBuildingSceneLayer())),"sublayers-watcher");const s=e.toArray();for(const l of s){const e=d((()=>["renderer"in l&&l.renderer,l.opacity,l.title,l.visible]),(()=>this._constructLegendElementsForBuildingSceneLayer()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||l.visible){const e=null!=l?.opacity?l.opacity:null,s=null!=e?e*t:t;if("building-group"===l.type){const e={type:"symbol-table",title:l.title,infos:[]},t=await this._generateLegendElementsForBuildingSublayers(l.sublayers,s);e.infos.push(...t),i=[e,...i]}else if(l.renderer){i=[...await this._getRendererLegendElements(l.renderer,{title:l.title,opacity:s,sublayer:l}),...i]}}}return i.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _constructLegendElementsForSublayers(){this.legendElements=[],this.removeHandles("sublayers-watcher");const e=this.layer;if(Ue(e)||ke(e)||Oe(e)){this.addHandles(d((()=>e.sublayers),(()=>this._constructLegendElementsForSublayers)),"sublayers-watcher");try{this.legendElements=await this._generateLegendElementsForSublayers(e.sublayers,this.opacity),this.notifyChange("ready")}catch(t){o.getLogger(this).warn("Request to server for legend has failed!",t)}}}async _generateLegendElementsForSublayers(e,t,i){const s=this.layer;let l=[];this.addHandles(e.on("change",(()=>this._constructLegendElementsForSublayers())),"sublayers-watcher");let n=e.toArray();!i&&this.sublayerIds&&this.sublayerIds.length&&(n=Oe(s)?this.sublayerIds.map((e=>s.findSublayerForSubtypeCode(e))).filter(r):this.sublayerIds.map((e=>s.findSublayerById(e))).filter(r));for(const r of n){const e=d((()=>[r.renderer,r.opacity,r.title,r.visible,r.legendEnabled]),(()=>this._constructLegendElementsForSublayers()));if(this.addHandles(e,"sublayers-watcher"),!this.respectLayerVisibility||r.visible&&r.legendEnabled&&this._isSublayerInScale(r)){const e=null!=r?.opacity?r.opacity:null,s=null!=e?e*t:t,n=!Ge(r)||r.originIdOf("renderer")>S.SERVICE&&!r.sublayers;if(r.renderer&&n){await r.load();l=[...await this._getRendererLegendElements(r.renderer,{title:r.title,opacity:s,sublayer:r}),...l]}else if(Ge(r)){const e=await this._generateSymbolTableElementForSublayer(r,s,i);e&&l.unshift(e)}}}return l.filter((e=>!!e&&(!("infos"in e)||!e.infos||e.infos.length>0)))}async _generateSymbolTableElementForSublayer(e,t,i){if(!i){i=new Map;const t=this.layer,s=e.source;let l=null;if(!(!s||"map-layer"===s.type&&s.mapLayerId===e.id&&(!s.gdbVersion||s.gdbVersion===("gdbVersion"in t&&t.gdbVersion)))||e.originIdOf("renderer")>S.SERVICE||e.originIdOf("labelingInfo")>S.SERVICE||e.originIdOf("labelsVisible")>S.SERVICE){const e=new v({layer:this.layer});l=e.hasDynamicLayers?e.dynamicLayers:null,e.destroy()}const r=l||`${t.uid}-default`;(await this._getLegendLayers(r,l)).forEach((e=>i.set(e.layerId,e)))}const s=i.get(e.id);if((!s||s?.subLayerIds&&s.defaultVisibility)&&e.sublayers){const s=await this._generateLegendElementsForSublayers(e.sublayers,t,i);return{type:"symbol-table",title:e.title,infos:s}}return this._generateSymbolTableElementForLegendLayer(s,e,t)}_generateSymbolTableElementForLegendLayer(e,t,i){if(!e?.legend||this.respectLayerVisibility&&!this._isLegendLayerInScale(e,t))return null;const s=t?.renderer;let l=t?.title||e.layerName;if(s&&(!t||t?.originIdOf("renderer")>S.SERVICE)){const e=t?.title||this._getRendererTitle(s,t);e&&(l&&"string"!=typeof e&&"title"in e&&(e.title=l),l=e)}const r={type:"symbol-table",title:l,legendType:e.legendType||null,infos:[]},n=t?this._sanitizeLegendForSublayer(e.legend.slice(),t):e.legend;return e.legendGroups&&e.legendGroups.length>0?e.legendGroups.forEach((t=>{const s={type:"symbol-table",title:t.heading,legendType:e.legendType||null,infos:this._generateSymbolTableElementInfosForLegendLayer(n.filter((e=>e.groupId===t.id)),e.layerId,i)};s.infos?.length>0&&r.infos.push(s)})):r.infos=this._generateSymbolTableElementInfosForLegendLayer(n,e.layerId,i),r.infos.length>0?r:null}_generateSymbolTableElementInfosForLegendLayer(e,t,s){return e.map((e=>{let l=e.url;if(e.imageData&&e.imageData.length>0)l=`data:image/png;base64,${e.imageData}`;else{if(0===l.indexOf("http"))return null;l=i(`${this.layer.url}/${t}/images/${l}`)}return{label:e.label,src:l,opacity:s??this.opacity,width:e.width,height:e.height}})).filter(r)}_isSublayerInScale(e){const t=e.minScale||0,i=e.maxScale||0;return!(t>0&&t<this.scale||i>this.scale)}_isLegendLayerInScale(e,t){const i=t||this.layer;let s=null,l=null,r=!0;return!i.minScale&&0!==i.minScale||!i.maxScale&&0!==i.maxScale?(0===e.minScale&&i.tileInfo&&(s=i.tileInfo.lods[0].scale),0===e.maxScale&&i.tileInfo&&(l=i.tileInfo.lods[i.tileInfo.lods.length-1].scale)):(s=Math.min(i.minScale,e.minScale)||i.minScale||e.minScale,l=Math.max(i.maxScale,e.maxScale)),(s>0&&s<this.scale||l>this.scale)&&(r=!1),r}_sanitizeLegendForSublayer(e,t){if("version"in this.layer&&+this.layer.version<10.1||0===e.length)return e;const i=t.renderer,s=e.some((e=>e.values));let l=0,r=null;return s&&e.some(((e,t)=>(e.values||(l=t,r=e,r.label||(r.label="others")),null!=r))),i?"unique-value"===i.type?r&&(e.splice(l,1),e.push(r)):"class-breaks"===i.type&&(r&&e.splice(l,1),i.legendOptions?.order||e.reverse(),r&&e.push(r)):r&&(e.splice(l,1),e.push(r)),e}async _getRendererLegendElements(e,t={}){if(!Te(e,this.view))return o.getLogger(this).warn(`Renderer of type '${e.type}' not supported!`),[];if(Ie(e))return this._constructPointCloudRendererLegendElements(e,t);if(De(e))return this._constructDotDensityRendererLegendElements(e);const i=await this._loadRenderer(e);return ze(i)?this._constructPieChartRendererLegendElements(i):this._constructRendererLegendElements(i,t)}async _getLegendElementsForFeatureReduction(e){let t=null;return"binning"===e.type?t=e.renderer:"cluster"===e.type&&(t=this._getClusterRenderer(e)),t?this._getRendererLegendElements(t):[]}_getPointCloudRendererTitle(e){return(e.legendOptions?.title||e.field)??""}async _constructPointCloudRendererLegendElements(e,t={}){const i=t.title,s=[];let l=null,r=null;if(Fe(e))l={type:"symbol-table",title:i||this._getPointCloudRendererTitle(e),infos:[]},e.colorClassBreakInfos.forEach((e=>{l.infos.unshift({label:e.label||e.minValue+" - "+e.maxValue,value:[e.minValue,e.maxValue],symbol:this._getAppliedCloneSymbol(fe,e.color)})}));else if(Ve(e)){const t=e.stops;let s=null;if(t?.length&&(1===t.length&&(s=t[0].color),!s)){const e=t[0].value,i=t[t.length-1].value;if(null!=e&&null!=i){s=N(e+(i-e)/2,t)}}l={type:"symbol-table",title:null,infos:[{label:null,value:null,symbol:this._getAppliedCloneSymbol(fe,s||fe.color)}]};const n=q(e.stops??[])??[];r={type:"color-ramp",title:i||this._getPointCloudRendererTitle(e),infos:n,preview:P(n.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})}}else xe(e)&&(l={type:"symbol-table",title:i||this._getPointCloudRendererTitle(e),infos:[]},e.colorUniqueValueInfos?.forEach((e=>{l.infos.push({label:e.label||e.values.join(", "),value:e.values.join(", "),symbol:this._getAppliedCloneSymbol(fe,e.color)})})));l?.infos.length&&s.push(l),r?.infos.length&&s.push(r);const n=s.reduce(((e,t)=>[...e,...t.infos??[]]),[]).filter((e=>!!e.symbol)).map((t=>this._getSymbolPreview(t,this.opacity,{symbolConfig:{applyColorModulation:!!e.colorModulation}})));return await Promise.allSettled(n),s}async _getElementInfoForDotDensity(e,t){const{color:i,label:s,valueExpressionTitle:l}=t,{backgroundColor:r,outline:n,dotSize:a}=e,o=this.effectList,u=o?.effects.map((e=>e.toJSON())),c=w(u),d=await Je("previewTemplateAriaLabel",s||l),y=a+"-"+i+"-"+r+"-"+(n&&JSON.stringify(n.toJSON()))+"-"+c,h=this._dotDensityUrlCache,m=h.has(y)?h.get(y):A(e,i,{ariaLabel:d});h.set(y,m);const f={shape:{type:"image",x:0,y:0,width:m.width,height:m.height,src:m.src},fill:null,stroke:null,offset:[0,0]},p=O([[f]],[m.width,m.height],{effectView:this.effectList,ariaLabel:d});return{opacity:1,src:m.src,preview:p,width:m.width,height:m.height}}async _constructDotDensityRendererLegendElements(e){const t=e.calculateDotValue(this.view.scale),i=e.legendOptions?.unit,s={type:"symbol-table",title:{value:t&&Math.round(t),unit:i||""},infos:[]};for(const l of e.attributes){const t=await this._getElementInfoForDotDensity(e,l);t.label=l.label||l.valueExpressionTitle||l.field,s.infos.push(t)}return[s]}async _constructPieChartRendererLegendElements(e){const t=this.layer.opacity,i=[];let s=null;const l=e.outline;e.attributes.forEach((e=>{const t=new z({color:e.color,outline:l}),s=e.label||e.valueExpressionTitle||e.field;i.push({label:s,symbol:t})}));const r=i.length?[...i]:[];if(e.othersCategory?.color&&0!==e.othersCategory?.threshold){const t=new z({color:e.othersCategory.color,outline:l});s=e.othersCategory.label||"Other",i.push({label:s,symbol:t})}if(e.defaultColor?.a){const t=new z({color:e.defaultColor,outline:l});i.push({label:e.defaultLabel,symbol:t})}const n=await this._getVisualVariableLegendElements(e,this.layer)||[];if(i.length){n.unshift({type:"symbol-table",title:null,infos:i});const t=r.filter((e=>e.label!==s)).map((e=>e.symbol.color)).filter(Boolean),a=M(t,{holePercentage:e.holePercentage,backgroundColor:e.backgroundFillSymbol?.color,effectList:this.effectList,outline:l,ariaLabel:await Je("previewPieChartAriaLabel")});n.unshift({type:"pie-chart-ramp",title:this._getRendererTitle(e,this.layer),infos:i,preview:a})}const a=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol&&!e?.preview)).map((e=>this._getSymbolPreview(e,t,{effectList:this.effectList})));return await Promise.allSettled(a),n}async _constructRendererLegendElements(e,t={}){const{title:i,sublayer:s}=t,l=s||this.layer,r=ee(e);if("definitionExpression"in l){const t=l.definitionExpression;if(t&&this.respectLayerDefinitionExpression&&Ee(e)){if(this._layerDefinitionExpression!==t){this._layerDefinitionExpressionClause=await f(t,l.fieldsIndex);const i=new Set((await L(e,l.fieldsIndex)).map((e=>e.toLowerCase()))),s=this._layerDefinitionExpressionClause?.fieldNames.map((e=>e.toLowerCase()));s?.every((e=>i.has(e)))||(this._layerDefinitionExpressionClause=null,s?.length&&o.getLogger(this).warn("Definition expression will be ignored in the Legend, as fields in the expression do not match with renderer fields"))}}else this._layerDefinitionExpressionClause=null;this._layerDefinitionExpression=t}this._hasColorRamp=!1,this._hasOpacityRamp=!1,this._hasSizeRamp=!1,this._scaleDrivenSizeVariable=null;const n=await this._getVisualVariableLegendElements(e,l)||[],a={type:"symbol-table",title:i||this._getRendererTitle(e,l),infos:[]};let u=null,c=!1;const d=new Set;if(ge(e)&&!this._hasSizeRamp){const t=await te(e);a.infos.push({label:null,symbol:t})}else if($e(e)){let t=i;const s=We(e)?"univariate-above-and-below-ramp":"univariate-color-size-ramp",l=n.findIndex((e=>"color-ramp"===e.type)),r=-1!==l?n.splice(l,1)[0]:null,a=n.findIndex((e=>"size-ramp"===e.type)),o=-1!==a?n.splice(a,1)[0]:null,u=[];r&&(t=r.title,u.push(r)),o&&(t=o.title,u.push(o)),u.length>0&&n.push({type:s,title:t,infos:u})}else if(Ce(e)){const t=W(e);n.push({type:"heatmap-ramp",title:i||this._getRendererTitle(e,l),infos:t,preview:P(t.map((e=>e.color)),{effectList:this.effectList,ariaLabel:await Je("previewColorRampAriaLabel")})})}else if(Ee(e)){const t=e.authoringInfo;if(t&&"relationship"===t.type){const{numClasses:i,field1:s,field2:r}=t,o=t.focus;if(i&&s&&r){const t=[s,r];let u=G(o)||0;for(const e of t){const{field:t,normalizationField:i,label:s}=e,r=s||{field:this._getFieldAlias(t,l),normField:i&&this._getFieldAlias(i,l)},n=Ze.clone();n.angle=u,a.infos.push({label:r,symbol:n}),d.add(n),u+=90}const c=J({focus:o,numClasses:i,infos:e.uniqueValueInfos??[]});n.unshift(c)}}else if(Be(this.layer)||Ne(this.layer))e.uniqueValueInfos?.forEach((t=>{t.symbol&&this._checkDefinitionExpressionForUVR(e,t.value)&&a.infos.push({label:t.label||t.value,value:t.value,symbol:t.symbol})}));else{const{field:t,field2:s,field3:n,fieldDelimiter:o,valueExpression:u,defaultSymbol:d}=e,y=!(!t&&!u||!s&&!n),h=[];if(e.uniqueValueGroups?.forEach((i=>{const a={type:"symbol-table",title:i.heading,infos:[]};i.classes?.forEach((i=>{const{symbol:c,values:d}=i;if(c){const h=[],m=[];for(const e of d??[]){const{value:i,value2:r,value3:a}=e,c=[],d=[];(t||u)&&(c.push(i),d.push(this._getDomainName(t,i,l))),s&&(c.push(r),d.push(this._getDomainName(s,r,l))),n&&(c.push(a),d.push(this._getDomainName(n,a,l))),h.push(y?c.join(o||""):c[0]),m.push(d.join(" - "))}const f=h.join(", ");let p=i.label;if(!p){const e=m.filter(Boolean);p=e.length?e.join(", "):f}const g=c.clone();"cim"===g.type&&r&&x(g,{innerDotSize:.5*oe,outerRingSize:oe}),h.some((t=>this._checkDefinitionExpressionForUVR(e,t)))&&a.infos.push({label:p,value:f,symbol:g})}})),a.infos.length&&h.push(a)})),h.length){const t=h[0];1===h.length&&"title"in t&&!t.title?a.infos.push(...t.infos??[]):(d&&(h.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:d}]}),c=!0),a.infos.push(...h)),i||e.legendOptions?.title||e.valueExpressionTitle||(a.title=null)}}e.defaultSymbol&&!c&&(a.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),c=!0)}else if(Le(e)){if(!r){u=this._isUnclassedRenderer(e);if(!u||!this._hasSizeRamp){const t=e.classBreakInfos.filter((({symbol:e})=>e)),i="ascending-values"===e.legendOptions?.order;for(const{label:e,minValue:s,maxValue:l,symbol:r}of t){const t={label:e||(u?null:`${s} - ${l}`),value:[s,l],symbol:r};i?a.infos.push(t):a.infos.unshift(t)}u&&(a.title=null),this._updateInfosForClassedSizeRenderer(e,a.infos)}e.defaultSymbol&&!u&&(a.infos.push({label:e.defaultLabel||"others",symbol:e.defaultSymbol}),c=!0)}}else if(_e(e))if(Ne(this.layer)||qe(this.layer)){const t=await this._constructTileImageryStretchRendererElements(e);He(t)?n.push(t):a.infos=t}else{const t=this.layer;let i,s;e.customStatistics?.length&&({min:i,max:s}=e.customStatistics[0]);let l=[],r=t.serviceRasterInfo;if(t.rasterFunction)try{r=await t.generateRasterInfo(t.rasterFunction)}catch{}const o=C(r.pixelType);if(1===r.bandCount){const l=t.bandIds?.[0]||0;i=null!=i?i:r.statistics?r.statistics[l].min:o[0],s=null!=s?s:r.statistics?r.statistics[l].max:o[1],i||s?n.push(await this._getStretchLegendElements(e,{min:i,max:s})):this._getServerSideLegend()}else if(t.bandIds&&1===t.bandIds.length)i=null!=i?i:r.statistics?r.statistics[t.bandIds[0]].min:o[0],s=null!=s?s:r.statistics?r.statistics[t.bandIds[0]].max:o[1],i||s?n.push(await this._getStretchLegendElements(e,{min:i,max:s})):this._getServerSideLegend();else if(r.bandCount>=3){const{bandInfos:e}=r,{bandIds:i}=t;e.length>=r.bandCount?3===i?.length?(l=i.map((t=>e[t].name)),a.infos=this._createSymbolTableElementMultiBand(l)):"lerc"===t.format?(l=[0,1,2].map((t=>e[t].name)),a.infos=this._createSymbolTableElementMultiBand(l)):this._getServerSideLegend():"lerc"===t.format?(l=["band1","band2","band3"],a.infos=this._createSymbolTableElementMultiBand(l)):this._getServerSideLegend()}else this._getServerSideLegend()}else if(Se(e))e.colormapInfos.forEach((e=>{a.infos.push({label:e.label,value:e.value,symbol:this._getAppliedCloneSymbol(pe,e.color)})}));else if(ve(e)){let i=e.symbol;switch(t.geometryType){case"point":i="pointSymbol"in l?l.pointSymbol:null;break;case"polyline":i="lineSymbol"in l?l.lineSymbol:null;break;case"polygon":i="polygonSymbol"in l?l.polygonSymbol:null}const s=this._hasClusterSizeVariable&&this._getClusterSymbol()||!this._hasSizeRamp;e.symbol&&s&&a.infos.push({label:e.label,symbol:i})}else if(be(e)){e.outputUnit&&(this.title="("+e.toJSON().outputUnit+")"),a.title=e.attributeField;const t=e.getClassBreakInfos();t?.length?t.forEach((e=>{a.infos.push({label:e.minValue+" - "+e.maxValue,symbol:e.symbol})})):a.infos.push({label:e.attributeField,symbol:e.getDefaultSymbol()})}else we(e)&&n.push(await this._getStretchLegendElements(e,{min:0,max:255}));const y=e.defaultSymbol;!y||c||ve(e)||u&&!this._hasColorRamp&&!this._hasSizeRamp&&!this._hasOpacityRamp||n.push({type:"symbol-table",infos:[{label:e.defaultLabel||"others",symbol:y}]}),a.infos.length&&n.unshift(a);const h=null==t.opacity?this.opacity:t.opacity,m=this._isTallSymbol("visualVariables"in e?e.visualVariables:null),p=Be(this.layer)||Ne(this.layer),g=n.reduce(((e,t)=>[...e,...this._getAllInfos(t)]),[]).filter((e=>!!e?.symbol)).filter((e=>{if("cim"===e.symbol.type){const{minScale:t,maxScale:i}=e.symbol.data;if(t&&t<this.scale||i&&i>this.scale)return!1}return!0})).map((e=>this._getSymbolPreview(e,h,{isDefault:e.symbol===y,applyScaleDrivenSize:!d.has(e.symbol),symbolConfig:{isTall:m,isSquareFill:p},effectList:d.has(e.symbol)?null:this.effectList})));return e=null,await Promise.allSettled(g),n}_checkDefinitionExpressionForUVR(e,t){if(!this._layerDefinitionExpressionClause)return!0;const i=Qe(e,t);return(i&&this._layerDefinitionExpressionClause.testFeature(i))??!0}_getServerSideLegend(){setTimeout((()=>this.buildLegendElementsForTools()),0)}_getAllInfos(e){const t=e?.infos;return t?t.reduce(((e,t)=>e.concat(this._getAllInfos(t))),[]):[e]}async _constructTileImageryStretchRendererElements(e){const t=this.layer,i=t.symbolizer.rasterInfo??t.raster.rasterInfo;let s,l;const r=e?.customStatistics?.length?e.customStatistics:i?.statistics;if(r)({min:s,max:l}=r[0]);else{const e=C(i.pixelType);s=e[0],l=e[1]}if(t.hasStandardTime()&&(s=t.getStandardTimeValue(s),l=t.getStandardTimeValue(l)),1===i.bandCount||1===t.bandIds?.length)return this._getStretchLegendElements(e,{min:s,max:l});const n=(t?.bandIds?.length?t.bandIds:Array.from(Array(Math.min(i.bandCount,3)).keys())).map((e=>i.bandInfos[e].name));return n.length<3?n.push(n[1]):n.length>3&&n.splice(3),this._createSymbolTableElementMultiBand(n)}async _getStretchLegendElements(e,t){const i=e.colorRamp,s=H(i,t);return{type:"stretch-ramp",title:"",infos:s,preview:P(s.map((e=>e.color)),{ariaLabel:await Je("previewColorRampAriaLabel")})}}_getClusterSymbol(){const e=this.layer,t="featureReduction"in e&&e.featureReduction,i=t&&"symbol"in t&&t.renderer;return i&&!0!==i?.authoringInfo?.isAutoGenerated?null:t&&"symbol"in t?t.symbol:null}async _getSizeLegendElement(e,t,i,s){return{type:"size-ramp",title:this._hasClusterSizeVariable?this._getClusterTitle(t):e,infos:await Q(i,t,await ie(i),this.scale,this.view,s,this._hasClusterSizeVariable?this._getClusterSymbol():null)}}_createSymbolTableElementMultiBand(e){const t=[],i=["red","green","blue"];return e.forEach(((e,s)=>{t.push({label:{colorName:i[s],bandName:e},src:se[s],opacity:this.opacity??1})})),t}_updateInfosForClassedSizeRenderer(e,t){const i=e.authoringInfo&&"class-breaks-size"===e.authoringInfo.type,s=e.classBreakInfos.some((e=>k(e.symbol)));if(i&&s){const i=Z,s=K,l=e.classBreakInfos.length,r=(i-s)/(l>1?l-1:l);t.forEach(((e,t)=>{e.size=i-r*t}))}}_isTallSymbol(e){let t=!1,i=!1;if(e)for(let s=0;s<e.length&&(!t||!i);s++){const l=e[s];"size"===l.type&&("height"===l.axis&&(t=!0),"width-and-depth"===l.axis&&(i=!0))}return t&&i}async _getSymbolPreview(e,t,i){let s=!i?.isDefault&&null==e.size&&this._hasSizeRamp?m(j.size):e.size;if(this._scaleDrivenSizeVariable&&i?.applyScaleDrivenSize){const{getSize:t}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");s=t(this._scaleDrivenSizeVariable,null,{view:this.view.type,scale:this.scale,shape:"simple-marker"===e.symbol.type?e.symbol.style:null})}const l=!i?.isDefault&&this._hasSizeRamp||!(!this._scaleDrivenSizeVariable||!i?.applyScaleDrivenSize);return U(e.symbol,{size:s,opacity:t,scale:!1,symbolConfig:i?.symbolConfig,effectView:i?.effectList,style:"legend",cimOptions:{allowScalingUp:l,viewParams:this.isScaleDriven?{viewingMode:"2d"===this.view?.type?"map":this.view?.viewingMode,scale:this.view?.scale}:null},ariaLabel:e.label&&"string"!=typeof e.label?null:await Je("previewTemplateAriaLabel",e.label)}).then((t=>(e.preview=t,e))).catch((()=>(e.preview=null,e)))}_getClusterRenderer(e){this._hasClusterSizeVariable=!1;const t="renderer"in this.layer?this.layer.renderer:null,i=e.renderer?.clone()||t?.clone(),s=B(e,this.layerView,this.view);if(s&&null!=i&&"visualVariables"in i){const t=i.visualVariables?.some((e=>"size"===e.type&&"outline"!==e.target&&!he.test(e.valueExpression)));if(!t){if("clusterMinSize"in e&&"clusterMaxSize"in e){const{clusterMinSize:t,clusterMaxSize:i}=e;s.legendOptions=new V({showLegend:t!==i})}const t=i.visualVariables||[];i.visualVariables=t.concat([s]),this._hasClusterSizeVariable=!0}}return i}async _loadRenderer(e){const t=[],i=e.clone(),s=await ie(i);if(Le(i)||Ee(i)){const e=(i.classBreakInfos||i.uniqueValueInfos).map((e=>this._fetchSymbol(e.symbol,s).then((t=>{e.symbol=t})).catch((()=>{e.symbol=null}))));Array.prototype.push.apply(t,e)}return t.push(this._fetchSymbol(i.symbol||i.defaultSymbol,i.defaultSymbol?null:s).then((e=>{this._applySymbolToRenderer(i,e,ve(i))})).catch((()=>{this._applySymbolToRenderer(i,null,ve(i))}))),await Promise.allSettled(t),i}_applySymbolToRenderer(e,t,i){i?e.symbol=t:e.defaultSymbol=t}async _fetchSymbol(e,t){if(!e)throw new Error;if("web-style"===e.type){const i=this._webStyleSymbolCache;try{const s=await("2d"===this.view.type?e.fetchCIMSymbol({cache:i}):e.fetchSymbol({cache:i}));return this._getAppliedCloneSymbol(s,t)}catch{throw o.getLogger(this).warn("Fetching web-style failed!"),new Error}}return this._getAppliedCloneSymbol(e,t)}_getAppliedCloneSymbol(e,i){if(!e||!i)return e;const s=e.clone(),l=i&&i.toRgba();return s.type.includes("3d")?this._applyColorTo3dSymbol(s,l):"cim"===s.type?T(s,i):s.color&&(s.color=new t(l||s.color)),s}_applyColorTo3dSymbol(e,i){i&&e.symbolLayers.forEach((e=>{e&&(e.material||(e.material={}),e.material.color=new t(i))}))}async _getVisualVariableLegendElements(e,t){if(!("visualVariables"in e)||"vector-field"===e.type)return null;const i=e.visualVariables??[],s=[],l=[],n=[],a=ee(e);if(2===a?.sizeStops?.length&&(Le(e)||Ee(e))){const[e,t]=a.sizeStops;l.push(new F({field:a.field??void 0,normalizationField:a.normalizationField,minSize:e.size,maxSize:t.size,minDataValue:e.value,maxDataValue:t.value}))}for(const r of i)"color"===r.type?s.push(r):"size"===r.type?l.push(r):"opacity"===r.type&&n.push(r);const o=[...s,...l,...n];let u,c;if(0===s.length&&Le(e)&&e.classBreakInfos&&1===e.classBreakInfos.length){const t=e.classBreakInfos[0];u=t&&t.symbol}if(0===s.length&&ve(e)&&(u=e.symbol),u)if(u.type.includes("3d")){const e=u.symbolLayers.at(0);"water"===e.type?null!=e.color&&(c=e.color):null!=e.material?.color&&(c=e.material.color)}else u.url||(c=u.color);const d=this.effectList;return(await Promise.all(o.map((async i=>{if(!i.legendOptions||!1!==i.legendOptions.showLegend){const s=ge(e)?i.field:this._getRampTitle(i,t);let l=null;const r=le(t,i,this.view.timeZone);if("color"===i.type){const e=await $(i,null,r)??[];l={type:"color-ramp",title:s,infos:e,preview:P(e.map((e=>e.color)),{effectList:d,ariaLabel:await Je("previewColorRampAriaLabel")})},this._hasColorRamp||(this._hasColorRamp=e.length>0)}else if("size"===i.type&&"outline"!==i.target)he.test(i.valueExpression)?this._hasClusterSizeVariable||(this._scaleDrivenSizeVariable=i):(l=await this._getSizeLegendElement(s,i,e,r),this._hasSizeRamp||(this._hasSizeRamp=!(null==l.infos||!l.infos.length)));else if("opacity"===i.type){const e=await $(i,c,r)??[];l={type:"opacity-ramp",title:s,infos:e,preview:P(e.map((e=>e.color)),{effectList:d,ariaLabel:await Je("previewColorRampAriaLabel")})},this._hasOpacityRamp||(this._hasOpacityRamp=e.length>0)}return l?.infos?l:null}})))).filter(r)}_getDomainName(e,t,i){if(e&&"function"!=typeof e){const s="getField"in i&&i.getField?.(e),l=s&&"getFieldDomain"in i&&i.getFieldDomain?i.getFieldDomain(s.name,{excludeImpliedDomains:has("esri-widget-legacy-field-domain-calculation")}):null;return"coded-value"===l?.type?l.getName(t):null}return null}_getClusterTitle(e){const t=this.layer,i=e.field;if("featureReduction"in t&&t.featureReduction&&"cluster"===t.featureReduction.type){const e=t.featureReduction,s="popupTemplate"in e&&e.popupTemplate,l=s&&s.fieldInfos;if(l)for(const t of l)if(t.fieldName===i)return"cluster_count"===i?t.label||{showCount:!0}:t.label}return{showCount:!0}}_getRampTitle(e,t){let i=e.field,s=e.normalizationField,l=!1,r=!1,n=!1,a=null;i="function"==typeof i?null:i,s="function"==typeof s?null:s;const o=e.legendOptions?.title;if(null!=o)a=o;else if(e.valueExpressionTitle)a=e.valueExpressionTitle;else{if("renderer"in t&&t.renderer&&"authoringInfo"in t.renderer&&t.renderer.authoringInfo?.visualVariables){const e=t.renderer.authoringInfo.visualVariables;for(let t=0;t<e.length;t++){const i=e[t];if("color"===i.type){if("ratio"===i.style){l=!0;break}if("percent"===i.style){r=!0;break}if("percent-of-total"===i.style){n=!0;break}}}}a={field:i&&this._getFieldAlias(i,t),normField:s&&this._getFieldAlias(s,t),ratio:l,ratioPercent:r,ratioPercentTotal:n}}return a}_getRendererTitle(e,t){const i=e;if(i.legendOptions?.title)return i.legendOptions.title;if(i.valueExpressionTitle)return i.valueExpressionTitle;let s=i.field,l=null,r=null;if(Le(i)&&(l=i.normalizationField,r="percent-of-total"===i.normalizationType),s="function"==typeof s?null:s,l="function"==typeof l?null:l,Ee(i)){const{field2:e,field3:l,fieldDelimiter:r}=i;let n=s&&this._getFieldAlias(s,t);return e&&(n=`<${n}>${r}<${this._getFieldAlias(e,t)}>`,l&&(n=`${n}${r}<${this._getFieldAlias(l,t)}>`)),n}let n=null;return(s||l)&&(n={field:s&&this._getFieldAlias(s,t),normField:l&&this._getFieldAlias(l,t),normByPct:r}),n}_getFieldAlias(e,t){const i="popupTemplate"in t?t.popupTemplate:null,s=i?.fieldInfos;let l=s?.find((t=>e===t.fieldName)),r=null;"getField"in t&&t.getField?r=t.getField(e):"fieldsIndex"in t&&t.fieldsIndex&&(r=t.fieldsIndex.get(e));let n=null;const a="featureReduction"in t&&t.featureReduction;a&&(l??="popupTemplate"in a?a.popupTemplate?.fieldInfos?.find((t=>e?.toLowerCase()===t.fieldName?.toLowerCase())):void 0,"fields"in a&&a.fields&&(n=a.fields.find((t=>t.name?.toLowerCase()===e?.toLowerCase()))));const o=l||r||n;let u=null;return o&&(u=l?.label||r?.alias||n?.alias||"name"in o&&o.name||"fieldName"in o&&o.fieldName||null),u}_isUnclassedRenderer(e){const t=e.visualVariables;let i=!1;return Le(e)&&e.classBreakInfos&&1===e.classBreakInfos.length&&t&&(i=e.field?t.some((t=>!(!t||e.field!==t.field||(e.normalizationField||t.normalizationField)&&e.normalizationField!==t.normalizationField))):!!t.length),i}};e([g()],Xe.prototype,"children",void 0),e([g({readOnly:!0})],Xe.prototype,"effectList",null),e([g()],Xe.prototype,"layerView",void 0),e([g()],Xe.prototype,"layer",void 0),e([g()],Xe.prototype,"legendElements",void 0),e([g({readOnly:!0})],Xe.prototype,"opacity",null),e([g()],Xe.prototype,"parent",void 0),e([g({readOnly:!0,dependsOn:[]})],Xe.prototype,"ready",null),e([g()],Xe.prototype,"hideLayersNotInCurrentView",void 0),e([g()],Xe.prototype,"keepCacheOnDestroy",void 0),e([g()],Xe.prototype,"respectLayerDefinitionExpression",void 0),e([g()],Xe.prototype,"respectLayerVisibility",void 0),e([g({readOnly:!0})],Xe.prototype,"scale",null),e([g()],Xe.prototype,"sublayerIds",void 0),e([g({readOnly:!0})],Xe.prototype,"isScaleDriven",null),e([g()],Xe.prototype,"title",void 0),e([g({readOnly:!0,dependsOn:["ready"],value:0})],Xe.prototype,"version",null),e([g()],Xe.prototype,"view",void 0),Xe=e([b("esri.widgets.Legend.support.ActiveLayerInfo")],Xe);const Ye=Xe;export{Ye as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import e from"../../../Color.js";import{
|
|
5
|
+
import e from"../../../Color.js";import{round as l,numDigits as t,percentChange as n}from"../../../renderers/support/numberUtils.js";import{updateReferenceSizeSymbol as o}from"../../../smartMapping/renderers/support/referenceSizeUtils.js";import s from"../../../symbols/SimpleLineSymbol.js";import i from"../../../symbols/SimpleMarkerSymbol.js";import{applyCIMSymbolColor as r}from"../../../symbols/support/cimSymbolUtils.js";import{isSymbol3D as a}from"../../../symbols/support/typeUtils.js";import{isVolumetricSymbol as u,getSymbolOutlineSize as c}from"../../../symbols/support/utils.js";import{getReferenceSizeAuthoringInfoVisualVariable as m,getSymbolForFlowRenderer as p,createStopLabel as f}from"./utils.js";import"../../support/widgetUtils.js";import{isDarkTheme as y}from"../../../support/themeUtils.js";const b=30,h=12,d=24,w=[255,255,255],S=[200,200,200],g=[128,128,128],v=20,z=5;function j(e){return"esri.symbols.SimpleMarkerSymbol"===e.declaredClass}function k(e){return"esri.symbols.PictureMarkerSymbol"===e.declaredClass}function V(e){return"esri.symbols.SimpleLineSymbol"===e.declaredClass}function x(e){return"esri.symbols.TextSymbol"===e.declaredClass}function U(e,l){const t=e.length-1;return e.map(((e,n)=>f(e,n,t,l)))}async function I(e,t,n,o,s,i,r){const a=t.legendOptions,p=a?.customValues,f=r||await D(e,n),y=t.stops,b=!!f,h=!!p,w=null!=t.minSize&&null!=t.maxSize,S=y&&y.length>1,g=!!t.target;if(!b||!h&&!(w||S&&!g))return;const v=u(f);let z=!1,j=null,k=null;j=v&&!S?l([t.minDataValue,t.maxDataValue]):p??await T(t,f,o,s?.type);const V=e?.authoringInfo,x="univariate-color-size"===V?.type,I=x&&"above-and-below"===V?.univariateTheme,q=!!m(e);if(!j&&S&&(j=y.map((e=>e.value)),z=y.some((e=>!!e.label)),"flow"===e.type&&(j=l(j)),z&&(k=y.map((e=>e.label)))),v&&null!=j&&j?.length>2&&!I&&(j=[j[0],j[j.length-1]]),!j)return null;x&&5!==j?.length&&(j=P({minSize:j[0],maxSize:j[j.length-1]}));const B=v?L(e,j):null,E=c(f),R=z?null:U(j,i);return(await Promise.all(j.map((async(l,i)=>{const r=v?B[i]:await H(t,f,l,o,s?.type);return{value:l,symbol:!q||"class-breaks"!==e.type&&"unique-value"!==e.type?O(I&&"class-breaks"===e.type?C(e,i):f,r):M(e,r,t.maxSize,n)??f,label:z?k[i]:R[i],size:q?d:r,outlineSize:E}})))).reverse()}function L(e,l){const t=e?.authoringInfo,n="univariate-color-size"===t?.type;let o=[h,b];if(n){const e=l[0],t=l[l.length-1],n=h,s=b;o=l.map((l=>n+(l-e)/(t-e)*(s-n)))}return n&&"below"===t?.univariateTheme&&o.reverse(),o}function M(l,t,n,s){const i="class-breaks"===l.type,r=i?l.classBreakInfos?.[0]?.symbol?.clone():l.uniqueValueInfos?.[0]?.symbol?.clone();return r&&"type"in r&&"cim"===r.type?(o(r,{color:s??(i?null:new e(S)),innerDotSize:t*(d/n)||1,outerRingSize:d}),r):null}function C(e,l){const t=e.classBreakInfos,n=t.length,o=n<2||!(l>=2)?t[0].symbol.clone():t[n-1].symbol.clone(),s=e.visualVariables?.some((e=>"color"===e.type));return s&&(o.type.includes("3d")?B(o):E(o)),o}async function D(e,l){if("flow"===e.type)return p(e,l);if("pie-chart"===e.type)return new i({color:null,outline:e.outline?.width?e.outline:new s});let t=null,n=null;if("simple"===e.type)t=e.symbol;else if("class-breaks"===e.type){const l=e.classBreakInfos;t=l&&l[0]&&l[0].symbol,n=l.length>1}else if("unique-value"===e.type){const l=e.uniqueValueInfos;t=l?.[0]?.symbol,n=null!=l&&l.length>1}return!t||q(t)?null:(t=t.clone(),(l||n)&&(t.type.includes("3d")?B(t):E(t)),t)}function q(e){return a(e)?e.symbolLayers?.some((e=>"fill"===e?.type))??!1:e?.type.includes("fill")??!1}function B(e){"line-3d"===e.type?e.symbolLayers.forEach((e=>{e.material={color:g}})):e.symbolLayers.forEach((e=>{"icon"!==e.type||e.resource?.href?e.material={color:S}:(e.material={color:w},e.outline={color:g,size:1.5})}))}function E(l){const t=y();if("cim"===l.type)r(l,new e(S));else if(l.type.includes("line"))l.color=g;else if(l.color=t?g:w,"simple-marker"===l.type)if(l.outline){const e=l.outline?.color?.toHex();"#ffffff"===e&&(l.outline.color=g)}else l.outline={color:g,width:1.5}}async function T(e,t,n,o){const s=(await import("../../../renderers/visualVariables/support/visualVariableUtils.js")).getSizeRangeAtScale(e,n,o),i=s&&P(s);if(!s||!i)return;let r=i.map((l=>R(l,e,s)));r=l(r);for(let l=1;l<r.length-1;l++){const s=await A(e,t,r[l],r[l-1],n,o);s&&(r[l]=s[0],i[l]=s[1])}return r}function P(e){const l=e.minSize,t=e.maxSize,n=z,o=(t-l)/(n-1),s=[];for(let i=0;i<n;i++)s.push(l+o*i);return s}function R(e,l,t){const n=t.minSize,o=t.maxSize,s=l.minDataValue,i=l.maxDataValue;let r;if(e<=n)r=s;else if(e>=o)r=i;else{r=(e-n)/(o-n)*(i-s)+s}return r}async function A(e,o,s,i,r,a){const u=await H(e,o,s,r,a),c=await H(e,o,i,r,a),m=t(s),p=m.fractional,f=v;let y=m.integer,b=null,h=null;s>0&&s<1&&(b=10**p,y=t(s*=b).integer);for(let t=y-1;t>=0;t--){const i=10**t;let m=Math.floor(s/i)*i,p=Math.ceil(s/i)*i;null!=b&&(m/=b,p/=b);let y=(m+p)/2;[,y]=l([m,y,p],{indexes:[1]});const d=await H(e,o,m,r,a),w=await H(e,o,p,r,a),S=await H(e,o,y,r,a),g=n(u,d,c,null),v=n(u,w,c,null),z=n(u,S,c,null);let j=g.previous<=f,k=v.previous<=f;if(j&&k&&(g.previous<=v.previous?(j=!0,k=!1):(k=!0,j=!1)),j?h=[m,d]:k?h=[p,w]:z.previous<=f&&(h=[y,S]),h)break}return h}async function H(e,l,t,n,o){const{getSize:s}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return s(e,t,{scale:n,view:o,shape:"simple-marker"===l.type?l.style:null})}function O(e,l){const t=e.clone();if(a(t))u(t)||t.symbolLayers.forEach((e=>{"fill"!==e.type&&(e.size=l)}));else if(j(t))t.size=l;else if(k(t)){const e=t.width,n=t.height;t.height=l,t.width=l*(e/n)}else V(t)?t.width=l:x(t)&&t.font&&(t.font.size=l);return t}export{I as getRampStops,M as getReferenceSizeSymbol,b as realWorldMaxSize,h as realWorldMinSize};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import{millisecondsPerTimeUnit as e}from"../../../core/timeUtils.js";import{isTimeOnlyField as A}from"../../../layers/support/fieldUtils.js";import{format as t}from"../../../renderers/support/numberUtils.js";import{formatAnyDate as n,isAnyDateField as i}from"../../../smartMapping/support/utils.js";import a from"../../../symbols/SimpleLineSymbol.js";const o="<",l=">";function r(e,A,i,a){let r="";0===A?r=`${o} `:A===i&&(r=`${l} `);return r+(a?n(e,a):t(e))}const s=["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwcdIkqhiWn5fHwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6JrzFUAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwaeIkqhiWl5/HwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu6sKxboAAAAASUVORK5CYII=","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAAAAAAAAAHqZRakAAAANUlEQVQ4jWPMy8v7z0BFwMLAwMAwadJEqhiWl5fPwEQVk5DAqIGjBo4aOGrgqIEQwEjtKgAATl0Hu75+IUcAAAAASUVORK5CYII="];async function u(e){if(!("visualVariables"in e)||!e.visualVariables)return null;const A=e.visualVariables.find((e=>"color"===e.type));if(!A)return null;let t=null,n=null;if(A.stops){if(1===A.stops.length)return A.stops[0].color;t=A.stops[0].value,n=A.stops[A.stops.length-1].value}const i=null!=t&&null!=n?t+(n-t)/2:0,{getColor:a}=await import("../../../renderers/visualVariables/support/visualVariableUtils.js");return a(A,i)??null}async function p(e,A){const t=e.trailCap,n=e.trailWidth||1,i=A||await u(e)||e.color;return new a({cap:t,color:i,width:n})}function f(e,A){if(!A.field)return null;if("featureReduction"in e)switch(e.featureReduction?.type){case"cluster":case"binning":{const t=e.featureReduction.fields.find((({name:e})=>e.toLowerCase()===A.field.toLowerCase()));return t&&"getField"in e?e.getField(t.onStatisticField):null}}return"getField"in e?e.getField?.(A.field):null}function m(e,A){const t="popupTemplate"in e?e.popupTemplate?.fieldInfos:null;if(t?.length&&A)return t.find((e=>e.fieldName?.toLowerCase()===A.toLowerCase()))?.format?.dateFormat}function d(t,n,a){const o=f(t,n);if(!o||!i(o)&&!A(o))return null;let l=m(t,o.name);if(!l&&"date"===o.type){let A=0,t=0;n.stops?(A=n.stops?.at(0)?.value??A,t=n.stops?.at(-1)?.value??t):"minDataValue"in n&&"maxDataValue"in n&&(A=n.minDataValue??A,t=n.maxDataValue??t),l=t-A>2*e.days?"short-date":"short-date-short-time"}return{fieldType:o.type,format:l,timeZoneOptions:{layerTimeZone:"preferredTimeZone"in t?t.preferredTimeZone:null,viewTimeZone:a,datesInUnknownTimezone:"datesInUnknownTimezone"in t&&t.datesInUnknownTimezone}}}function c(e){if("authoringInfo"in e)return e.authoringInfo?.visualVariables?.find((({theme:e})=>"reference-size"===e))}export{r as createStopLabel,d as getDateFormatOptions,u as getMedianColor,c as getReferenceSizeAuthoringInfoVisualVariable,p as getSymbolForFlowRenderer,s as rgbImgSource,l as specialCharsGreaterThan,o as specialCharsLessThan};
|
package/widgets/Locate.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{subclass as t}from"../core/accessorSupport/decorators/subclass.js";import i from"./Widget.js";import s from"./Locate/LocateViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import"./support/widgetUtils.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{vmEvent as a}from"./support/decorators/vmEvent.js";import{tsx as c}from"./support/jsxFactory.js";const p={base:"esri-locate"};let d=class extends i{constructor(e,o){super(e,o),this.messages=null,this.messagesCommon=null,this.viewModel=new s,this._locate=()=>{const{viewModel:e}=this;"locating"===e.state?e.cancelLocate():e.locate().catch((()=>{}))}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get icon(){return"gps-off"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{viewModel:e,icon:o}=this,{state:t}=e,i="locating"===t,s=i?this.messagesCommon.cancel:this.messages.title,r="feature-unsupported"===t,n=this._localizeError(this.viewModel?.error);return c("div",{class:this.classes(p.base,l.widget)},!r&&c("calcite-button",{class:l.widgetButton,disabled:"disabled"===t,iconStart:i?void 0:o,kind:"neutral",label:s,onclick:this._locate,title:s},i?c("calcite-loader",{inline:!0,label:""}):null),n?c("calcite-tooltip",{open:!0,overlayPositioning:"fixed",referenceElement:this.container},n):null)}_localizeError(e){return e instanceof GeolocationPositionError?e.code===GeolocationPositionError.PERMISSION_DENIED?this.messages?.permissionError:e.code===GeolocationPositionError.TIMEOUT?this.messages?.timeoutError:this.messages?.positionUnavailable:e instanceof Error?e.message:void 0}};e([o()],d.prototype,"geolocationOptions",null),e([o()],d.prototype,"goToLocationEnabled",null),e([o()],d.prototype,"goToOverride",null),e([o()],d.prototype,"graphic",null),e([o()],d.prototype,"icon",null),e([o()],d.prototype,"label",null),e([o(),n("esri/widgets/Locate/t9n/Locate")],d.prototype,"messages",void 0),e([o(),n("esri/t9n/common")],d.prototype,"messagesCommon",void 0),e([o()],d.prototype,"popupEnabled",null),e([o()],d.prototype,"scale",null),e([o()],d.prototype,"view",null),e([o({type:s}),a(["locate","locate-error"])],d.prototype,"viewModel",void 0),d=e([t("esri.widgets.Locate")],d);const m=d;export{m as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/has.js";import"../core/Logger.js";import"../core/RandomLCG.js";import{subclass as t}from"../core/accessorSupport/decorators/subclass.js";import i from"./Widget.js";import s from"./Locate/LocateViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import"./support/widgetUtils.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{vmEvent as a}from"./support/decorators/vmEvent.js";import{tsx as c}from"./support/jsxFactory.js";const p={base:"esri-locate"};let d=class extends i{constructor(e,o){super(e,o),this.messages=null,this.messagesCommon=null,this.viewModel=new s,this._locate=()=>{const{viewModel:e}=this;"locating"===e.state?e.cancelLocate():e.locate().catch((()=>{}))}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get icon(){return"gps-off"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{viewModel:e,icon:o}=this,{state:t}=e,i="locating"===t,s=i?this.messagesCommon.cancel:this.messages.title,r="feature-unsupported"===t,n=this._localizeError(this.viewModel?.error);return c("div",{class:this.classes(p.base,l.widget)},!r&&c("calcite-button",{class:l.widgetButton,disabled:"disabled"===t,iconStart:i?void 0:o,kind:"neutral",label:s,onclick:this._locate,title:s},i?c("calcite-loader",{inline:!0,label:""}):null),n?c("calcite-tooltip",{open:!0,overlayPositioning:"fixed",placement:this._getPlacement(),referenceElement:this.container},n):null)}_getPlacement(){const{container:e,view:o}=this,t=e&&o?o.ui.getPosition(e):null;if(!t||"manual"===t)return"auto";const[i,s]=t.split("-");return`${"right"===s?"left":"right"}-${"bottom"===i?"end":"start"}`}_localizeError(e){return e instanceof GeolocationPositionError?e.code===GeolocationPositionError.PERMISSION_DENIED?this.messages?.permissionError:e.code===GeolocationPositionError.TIMEOUT?this.messages?.timeoutError:this.messages?.positionUnavailable:e instanceof Error?e.message:void 0}};e([o()],d.prototype,"geolocationOptions",null),e([o()],d.prototype,"goToLocationEnabled",null),e([o()],d.prototype,"goToOverride",null),e([o()],d.prototype,"graphic",null),e([o()],d.prototype,"icon",null),e([o()],d.prototype,"label",null),e([o(),n("esri/widgets/Locate/t9n/Locate")],d.prototype,"messages",void 0),e([o(),n("esri/t9n/common")],d.prototype,"messagesCommon",void 0),e([o()],d.prototype,"popupEnabled",null),e([o()],d.prototype,"scale",null),e([o()],d.prototype,"view",null),e([o({type:s}),a(["locate","locate-error"])],d.prototype,"viewModel",void 0),d=e([t("esri.widgets.Locate")],d);const m=d;export{m as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import"../../symbols.js";import{isSome as i,equals as r}from"../../core/arrayUtils.js";import{createTask as a}from"../../core/asyncUtils.js";import s from"../../core/Collection.js";import{deprecatedProperty as o}from"../../core/deprecate.js";import n from"../../core/Error.js";import l from"../../core/Evented.js";import c from"../../core/JSONSupport.js";import{equalsShallow as h}from"../../core/lang.js";import p from"../../core/Logger.js";import{clamp as u}from"../../core/mathUtils.js";import{abortMaybe as d,destroyMaybe as m}from"../../core/maybe.js";import g from"../../core/Promise.js";import{isAbortError as y,throwIfAborted as f,waitTick as v}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{on as b,watch as F,syncAndInitial as _,initial as P}from"../../core/reactiveUtils.js";import{sqlAnd as I}from"../../core/sql.js";import{getMetersPerUnitForSR as S}from"../../core/unitUtils.js";import{property as C}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import{subclass as k}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as V}from"../../core/support/UpdatingHandles.js";import{union as A}from"../../geometry/geometryEngineAsync.js";import{projectWithZConversion as M}from"../../geometry/projection.js";import{isClockwise as R}from"../../geometry/support/coordsUtils.js";import{geographicToWebMercator as O}from"../../geometry/support/webMercatorUtils.js";import j from"../../layers/GraphicsLayer.js";import{searchImages as L}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as z}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as B,computePolygonForInspection as G,resizePolygon as x,checkIfPolygonContainsSelectedPoint as E}from"../../layers/orientedImagery/core/coverageUtils.js";import{isConstantElevation as H,isElevationSource as T}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{imageToWorld as D,imageToWorldPanoramic as U}from"../../layers/orientedImagery/transformations/imageToWorld.js";import N from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as W}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{getInitialAngle as q,convertPixelToHeadingPitch as $,getImageToWorldProperties as J,getUpdateElevationProps as Z,isElevationSampler as K,pointToArray as Q,getImageToWorldPanoramicProperties as X,getWorldToImageProperties as Y,convertHeadingPitchToSphereVertex as ee,or as te}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as ie,worldToImage as re}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getFloorFilterClause as ae}from"../../layers/support/floorFilterUtils.js";import se from"../../rest/support/AttachmentQuery.js";import{scale as oe}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as ne}from"../../views/input/InputManager.js";import le from"../PanoramicViewer.js";import{invalidCameraHeading as ce,sectorsInOrder as he,sectorsRadii as pe}from"./constants.js";import{crossSymbol as ue,crossSymbol3D as de,measurementPolygonSymbol as me,measurementPolylineSymbol as ge,sourcePointSymbol as ye,diamondSymbol as fe,diamondSymbol3D as ve,activeSourcePointSymbol as we}from"./symbols.js";import{isNoAttachmentError as be,getContentType as Fe,isTifOrMrf as _e,filterOILLayerView as Pe,isSceneView as Ie,isGraphic as Se,calculateSegment as Ce,calculateDirection as ke}from"./utils.js";import Ve from"./components/ImageViewer.js";import Ae from"../../geometry/Point.js";import Me from"../../geometry/SpatialReference.js";import Re from"../../symbols/SimpleLineSymbol.js";import Oe from"../../geometry/Multipoint.js";import je from"../../geometry/Polyline.js";import Le from"../../geometry/Polygon.js";const ze={click:"view-click",imageClick:"image-click",interactionHandles:"interaction-handles",footprintHandles:"footprint-handles",sketchHandles:"sketch-handles"},Be=new Set(["JPG","JPEG"]),Ge=/\.(\w+)$/,xe=e=>"FA"===e,Ee=()=>new n("orientedimageryviewer:sketch-not-initialized","Sketch property is not initialized, call loadSketch first");let He=class extends(l.EventedMixin(g)){constructor(e){super(e),this.additionalFeatures=new s,this.additionalCameraLocations=new s,this.additionalFootprints=new s,this.areaMeasurementResult=0,this.bestFeatureAngle=0,this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null,this.conversionProps=null,this.coverageFrustums=new s,this.coveragePolygons=new s,this.currentBestFeature=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.determineWorkflowForFeature=async(e,t,i)=>{const{currentBestFeature:r,selectedPoint:a,view:s}=this;if(s?.closePopup(),r&&a){this._initialCurrentCoverageUpdate=!0;try{await this._updatePointsAndPolygons(i),await this._loadImage(i)}catch(o){y(o)||(this.loadImageError(o),p.getLogger(this).error("#loadIImage()","error occured while loading image",o))}}},this.disabled=!1,this.displayMessage={key:"onLoadMessage",type:"info"},this.displayNewMeasurementButton=!0,this.displayNewAreaMeasurementButton=!0,this.distanceMeasurementResult=0,this.digitizationLayer=null,this.features=new s,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.mapImageConversionToolState=!1,this.navigatorCurrentBestFeature=null,this.overlayedCameraLocations=new s,this.overlayedMapFeatures=new w,this.pointSources=new s,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.sketch=null,this.sketchAdapter=null,this.updateFootprint=async(e,t)=>{"image-loaded"===this.state&&await(this._adapter?.updateFootprint(e,t))},this.updateFootprintPanorama=async(e,t)=>{await(this._adapter?.updateFootprintPanorama(e,t))},this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new Ve,this._initialCurrentCoverageUpdate=!0,this._overlays=new j({listMode:"hide",internal:!0,elevationInfo:{mode:"absolute-height"}}),this._panoramicViewer=new le,this._referencePointOnGround=null,this._referencePointOnImage=null,this._sectorData=null,this._updatingHandles=new V,this._clickTask=null,this._crossSymbol=null,this.footprintExtent=null,this._featureChangedTask=null,this._openPopupTask=null,this._suitabilities=null,this._transformController=new AbortController,this._updateFootprintTask=null,this.hideImageGeometry=e=>{},this.highlight=e=>{if(!this._overlaysView)return;this.removeHighlight();const t=this.additionalFootprints.find((({attributes:{imageID:t}})=>t===Number(e)));this._highlightedFeatureHandle=t?this._overlaysView?.highlight(t):null},this.loadDigitizationAdapter=async e=>{const{sketchAdapter:t}=this;if(await this.loadSketch(e),"digitization"===t?.type)return t;const i=import("./adapters/sketch/DigitizationAdapter.js");this._updatingHandles.addPromise(i);const{default:r}=await i;return f(e),this.sketchAdapter=new r({viewModel:this}),this.sketchAdapter},this.loadImageFromSource=async(e,t)=>this._updatingHandles.addPromise(this._loadImageFromSourceInternal(e,t)),this.loadImageViewer=e=>{this._imageViewer.container=e},this.loadPanoramicViewer=e=>{this._panoramicViewer.container=e},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.startDigitization=e=>{},this.stopDigitization=e=>{},this.toggleImageAttributes=()=>{d(this._openPopupTask),this._openPopupTask=a((async e=>{const{currentBestFeature:i,popupEnabled:r,layer:a,view:s}=this;if(s?.closePopup(),!(s&&i&&r&&a))return;const{attributes:o,geometry:n}=i,l=new t({geometry:n,attributes:o.toJSON(),layer:a});f(e),await s.openPopup({features:[l],location:o.location.clone()})}))},this._createViewClickHandle=()=>{if(this.removeHandles(ze.click),"disabled"===this.state||null==this.view)return;const e=this.mapImageConversionToolState&&"image-loaded"===this.state?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on("click",e,ne.WIDGET),ze.click)},this._createImageClickHandle=()=>{this.removeHandles(ze.imageClick);const{mapImageConversionToolState:e,mode:t,activeViewer:i,currentBestFeature:r,footprintExtent:s}=this,o=i?.imageSize;if(!(e&&"none"!==t&&o&&s&&r))return;i.clickAction="pixel-location";let n=null;const l=b((()=>i),"pixel-location",(e=>{this.plotReferencePointOnImage(e),n?.abort(),n=a((async i=>{if(!e)return;const a=await this.getMapPoint(e,{feature:r,imageSize:o,mode:t}).then((e=>{const t=this.view?.spatialReference;return te(!t,e.spatialReference.equals(t))?e:M(e,t)}));f(i),this.plotReferencePointOnGround(a)}))}));this.addHandles(l,ze.imageClick)},this._getImageSourceFromAttachment=async(e,t,i)=>{const r=new se({objectIds:[t]}),a=await e.queryAttachments(r,i),s=a[`${t}`]?.[0],o=s?.url;if(!o)throw new n("NoAttachmentError","no attachments found",{[e.objectIdField]:t,layer:e});return{datasetFormat:s.contentType.split("/")[1].toUpperCase(),url:o}},this._loadImage=async e=>{const{currentBestFeature:t,layer:i,mode:r}=this;if(this.clearGraphics(),!i||!t||"none"===r)return;const{attributes:a}=t,{imagePath:s,imageRotation:o,cameraHeading:n,cameraRoll:l,cameraPitch:c,objectId:h,cameraOrientation:u,location:d}=a,m=(l??0)+(o??0),g=d.spatialReference.isWGS84&&4!==u?.type?O(d):new Ae(d);let v=s;if(xe(s))try{v=await this._getImageSourceFromAttachment(i,h,e)}catch(w){if(y(w))return;return be(w)?(p.getLogger(this).error(w),void this.setMessage("noAttachment","error",`${i.objectIdField}: ${h}`)):(p.getLogger(this).error(w,{[i.objectIdField]:h,layer:i}),void this.setMessage("imageLoadError","error",`query-attachments-failed:${i.objectIdField} ${h}`))}try{await this.loadImageFromSource(v,{imageRotation:m,options:e,pitch:c,yaw:n,mode:r,cameraLocation:g}),f(e),await this.transformAndPlotSelectedLocation(e)}catch(w){y(w)||this.loadImageError(w)}},this._loadImageFromSourceInternal=async(e,t)=>{const{mode:i,imageRotation:r,options:a}=t,s="string"==typeof e,o=s?e:e.url,{pathname:n,searchParams:l}=new URL(o);let c=s?n.match(Ge)?.[1]:e.datasetFormat;if(!c){const e=await Fe(o,{...t.options});c=e?.split("/")[1]??"UNKNOWN FORMAT"}switch(i){case"default":this._imageViewer.imageSource={datasetFormat:c.toUpperCase(),url:o.split("?")[0]},this._imageViewer.customParameters=Object.fromEntries(l),this._imageViewer.imageRotation=r??0,await this._imageViewer.loadImage(a);break;case"panoramic":if(Be.has(c.toUpperCase())){const{selectedPoint:e}=this,{pitch:i,yaw:r,cameraLocation:s,viewAngle:n}=t;this._panoramicViewer.imageSource=o;let l=r??0;"number"==typeof n?l=n-l:s&&e&&(l=await q(s,e)-l),this._panoramicViewer.pitch=i??0,this._panoramicViewer.yaw=l,await this._panoramicViewer.loadImage(a)}else this.setMessage("unsupportedPanoramicImageryError","error",void 0,{datasetFormat:c});break}},this._loadViewAdapter=async e=>{const{view:t}=this;if(t)switch(t.type){case"2d":{const{default:t}=await import("./adapters/view/MapViewAdapter.js");f(e),this._adapter=new t(this);break}case"3d":{const{default:t}=await import("./adapters/view/SceneViewAdapter.js");f(e),this._adapter=new t(this);break}}else this._adapter=null},this._mapImageConversionToolViewClickHandler=e=>{e.stopPropagation(),e.preventDefault(),e.mapPoint&&this.plotMapPoint(e.mapPoint)},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=a((async t=>{const{pointerType:i,button:r,mapPoint:a}=e;if(("mouse"!==i||0===r)&&a)return e.stopPropagation(),e.preventDefault(),this._updatingHandles.addPromise(this.loadBestImage(a,{signal:t}))}))},this.plotSelectedPointOnImage=async(e,i)=>{if(await v(i),!e)return;const r=new Ae({...c.isSerializable(e)?e.toJSON():e});if("default"===this.mode)r.x-=.5,r.y=.5-r.y,r.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:r,symbol:ue}),this._imageViewer.addGraphic(this._crossSymbol,0);else if("panoramic"===this.mode){const{imageSize:i}=this._panoramicViewer;if(!i)return;const[r,a]=i,{heading:s,pitch:o}=$(e,r,a),n=ee(s,o);this._crossSymbol=new t({geometry:new Ae(n,Me.WebMercator),symbol:de}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this),this.updateSuitabilities=this.updateSuitabilities.bind(this),this.selectBestFeature=this.selectBestFeature.bind(this)}initialize(){this.addHandles([F((()=>this.view),(()=>{this.load()}),_),F((()=>this.view?.map),((e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)}),P),F((()=>this.view?.map?.allLayers?.length),(e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)}),P),F((()=>[this.state,this.mapImageConversionToolState,this.view]),(()=>{this._createViewClickHandle(),this._createImageClickHandle()}),_),F((()=>this.bestFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),_),F((()=>this.currentBestFeature),(async(e,t)=>{d(this._featureChangedTask),this._featureChangedTask=a((async i=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:i}]))),await this._featureChangedTask.promise}),{sync:!0}),F((()=>this.mode),(e=>{switch(this.removeHandles(ze.interactionHandles),e){case"default":this.addHandles(F((()=>this._imageViewer.imagePointsInView),(e=>{e&&(d(this._updateFootprintTask),this._updateFootprintTask=a((async t=>{await this.updateFootprint(e,{signal:t})})))}),{..._,equals:(e,t)=>r(e,t,h)}),ze.interactionHandles);break;case"panoramic":this.addHandles(F((()=>{const{currentBestFeature:e,state:t}=this,{imageSize:i,vfov:r,hfov:a,pitch:s,yaw:o}=this._panoramicViewer;return e&&i&&"image-loading"!==t?[r,a,o,s]:null}),(e=>{if(!e||"image-loading"===this.state)return;const[t,i,r,s]=e;d(this._updateFootprintTask),this._updateFootprintTask=a((async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:r,pitch:s},{signal:e})}))}),{..._,equals:(e,t)=>r(e,t,h)}),ze.interactionHandles)}}),_),F((()=>[this.brightness,this.contrast,this.sharpness]),(()=>{const{_imageViewer:e,brightness:t,contrast:i,mode:r,sharpness:a}=this;"default"===r&&(e.brightness=t,e.contrast=i,e.sharpness=a)}),_),F((()=>this.activeViewer?.imageRenderer),(()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}))]),this.when().finally((()=>{this.notifyChange("state")}))}destroy(){this._updateFootprintTask=d(this._updateFootprintTask),this._clickTask=d(this._clickTask),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this.additionalFootprints.destroy(),this.additionalCameraLocations.destroy(),this.bestFeatureFootprint=m(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this._crossSymbol=m(this._crossSymbol),this._referencePointOnGround=m(this._referencePointOnGround),this._referencePointOnImage=m(this._referencePointOnImage),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this._panoramicViewer.destroy()}get activeLayer(){return o(p.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){o(p.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer=e}get activeViewer(){const{_imageViewer:e,_panoramicViewer:t,mode:i}=this;switch(i){case"default":return e;case"panoramic":return t;default:return null}}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",u(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",u(e,-10,10))}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){return _e(this.currentBestFeature?.attributes.imagePath.trim())}get imageLoaded(){return o(p.getLogger(this),"imageLoaded",{replacement:'Use OrientedImageryViewer.state === "image-loaded"',version:"4.29",warnOnce:!0}),"image-loaded"===this.state}get invalidCameraHeading(){return this.currentBestFeature?.attributes?.cameraHeading===ce}get imagePointsInView(){const{mode:e,_imageViewer:t}=this;return"default"===e?t.imagePointsInView:null}get layerView(){const{layer:e,view:t}=this;if(e&&t)return t.allLayerViews.find(Pe(e))}get layerFloorFilterClause(){const{layerView:e}=this;return e?ae(e):null}get mode(){const e=this.currentBestFeature?.attributes;if(!e)return"none";const{horizontalFieldOfView:t,isSpherical:i}=e;return 360===t||i?"panoramic":"default"}get popupEnabled(){return!0===this.layer?.popupEnabled}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){const{_sectorData:e}=this;return e?he.map((t=>e[t])):null}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",u(e,0,1))}get sketchGraphicsLayer(){return this.sketch?.layer}get state(){const{mode:e,disabled:t}=this;if(t)return"disabled";if(!this.isFulfilled())return"loading";if(this.isRejected())return"error";if(this._updatingHandles.updating)return"image-loading";if("error"===this.displayMessage?.type)return"image-load-error";switch(e){case"default":return this._imageViewer.state;case"panoramic":return this._panoramicViewer.state}return"ready"}get thumbnails(){const{features:e}=this;return e?new s(e.map((({attributes:{imagePath:e,objectId:t,cameraRoll:i,imageRotation:r}})=>{const a=e.trim();return _e(a)?{url:a,objectId:t,rotation:(i??0)+(r??0)}:null})).filter(i)):null}set view(e){this._set("view",e)}get _overlaysView(){return this.view?.layerViews.find((({layer:e})=>e===this._overlays))}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}digitizeCreate(e,t){const{sketch:i}=this;return i?i.create(e,t):Promise.reject(Ee())}async digitizeDelete(){if(!this.sketch)throw Ee();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw Ee();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw Ee();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw Ee();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw Ee();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw Ee();return this.sketch.update(e,t)}filterByFootprints(e,t){const i=[],r=[],a=[];return e.forEach((e=>{const{layer:{coveragePercent:s},attributes:o}=e;let n;const l=S(e.geometry.spatialReference);o.cameraHeight/=l,o.farDistance/=l,o.nearDistance/=l,H(o.elevationSource)&&(o.elevationSource.constantElevation/=l);const{polygon:c,frustum:h}=B(o);if(n=c.clone(),o.isInspection&&(n=G(o)),s&&(n=x(n,s)),E(n,t)){a.push(e);const{geometry:t,objectId:s,cameraHeight:n,cameraHeading:l}=o,p=t.clone();p.z=n,p.imageID=s,this.pointSources.push(p),l!==ce&&(i.push(c),h&&r.push(h))}})),{features:a,polygons:i,frustums:r}}getMeasurementProperties(){const{currentBestFeature:e,activeViewer:t}=this;if(!e||!t?.imageSize)return;const{elevationSample:i,attributes:r}=e,{elevationSource:a,cameraHeight:s}=r,o=J(r,t.imageSize[0],t.imageSize[1]);let n=o.cameraLocation;return(n.spatialReference.isGeographic?M(n,Me.WebMercator):Promise.resolve(n)).then((e=>(n=e,Z((n.z??0)-s,{elevationSample:i,elevationSource:a,extent:this.footprintExtent})))).then((t=>("elevationSample"in t&&K(t.elevationSample)&&(e.elevationSample=t.elevationSample),{...o,cameraLocation:n,updateElevationProps:t})))}async deleteDigitizedFeatures(e){const{digitizationLayer:t}=this;if(!t)throw new n("Digitization layer is not available");return t.queryFeatures({objectIds:e}).then((({features:e})=>t.applyEdits({deleteFeatures:e})))}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[he[e]];t?.length&&this._updateCurrentBestFeature(t.at(0))}handleFeatureClick(e){const{sector:t,featureIndexInSector:i}=e;if(isNaN(i))return;const r=this._sectorData?.[t];r?.length&&this._updateCurrentBestFeature(r.at(i))}async load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch((e=>{if(!y(e))throw e}))),this}async loadBestImage(e,t){return this.view?.closePopup(),this.displayMessage=null,this.selectedPoint=e.spatialReference.isGeographic?O(e):e.clone(),this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),this._overlays?.removeAll(),this._fetchFeaturesWithController(e,t)}loadImageError(e){p.getLogger(this).error("oriented-imagery-viewer:load-image",e),this.setMessage("imageLoadError","error",e.message)}async loadSketch(e){if(!this.sketch){const t=import("../Sketch/SketchViewModel.js");this._updatingHandles.addPromise(t);const{default:i}=await t;f(e),this.sketch=new i({layer:new j,view:this.activeViewer?.imageRenderer,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{edgeOperation:"none",shapeOperation:"none",vertexOperation:void 0},enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:"transform"}})}return this.sketch}async loadSketchAdapter(e){if(!this.sketchAdapter){const t=import("./adapters/sketch/MeasurementAdapter.js");this._updatingHandles.addPromise(t);const{default:i}=await t;if(f(e),this.sketchAdapter=new i({viewModel:this}),!this.sketchAdapter.viewModel.isResolved())return}if(this.sketch&&this.sketchAdapter){const e=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;e&&this.sketch&&(this.sketch.polygonSymbol=me(e),this.sketch.polylineSymbol=ge(e))}return this.sketchAdapter}async overlayCameraLocations(e){const{activeViewer:i,currentBestFeature:r,overlayedCameraLocations:a,layer:s,mode:o,state:n}=this,l=i?.imageSize;if(!l||!r||!s||"none"===o||n.includes("loading"))return;const{polygon:c}=B(r.attributes);if(i.removeManyGraphics(a.toArray()),a.removeAll(),e){const{features:e}=await s.queryFeatures({where:`${s.objectIdField} <> ${r.attributes.objectId}`,geometry:c,returnGeometry:!0,outFields:[s.objectIdField]}),n=await Promise.all(e.map((async e=>{const{attributes:i,geometry:a}=e,s=await this.getPixels(a,{feature:r,imageSize:l,mode:o}),n=ye.clone();return n.outline=new Re({color:[0,0,0],width:1}),new t({attributes:i,symbol:n,geometry:s})})));a.addMany(n),i.addManyGraphics(a.toArray())}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,r=!1){const{activeViewer:a,currentBestFeature:o,mode:n,state:l}=this,c=a?.imageSize;if(!c||!o||"none"===n||l.includes("loading"))return;const{polygon:h}=B(o.attributes),{features:p}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:[e.objectIdField]}),u=new s((await Promise.all(p.map((async i=>{const{attributes:a,geometry:s}=i,l=i.symbol?.clone()??e.renderer?.getSymbol(i)?.clone();switch(s?.type){case"point":{const i=await this.getPixels(s,{feature:o,imageSize:c,mode:n});return new t({attributes:a,layer:e,symbol:l,geometry:i,visible:e.visible&&r})}case"polygon":{const{rings:i,spatialReference:h}=s,p=i.map((e=>e.map((([e,t,i])=>new Ae({x:e,y:t,z:i,spatialReference:h}))))),u=await Promise.all(p.map((async e=>this.getPixels(e,{feature:o,imageSize:c,mode:n}).then((e=>e.map(Q))))));return new t({attributes:a,layer:e,symbol:l,geometry:new Le({rings:u,spatialReference:Me.WebMercator}),visible:e.visible&&r})}case"polyline":{const{paths:i,spatialReference:h}=s,p=i.map((e=>e.map((([e,t,i])=>new Ae({x:e,y:t,z:i,spatialReference:h}))))),u=await Promise.all(p.map((async e=>this.getPixels(e,{feature:o,imageSize:c,mode:n}).then((e=>e.map(Q))))));return new t({attributes:a,layer:e,symbol:l,geometry:new je({paths:u,spatialReference:Me.WebMercator}),visible:e.visible&&r})}case"multipoint":{const{points:i,spatialReference:h}=s,p=i.map((([e,t,i])=>new Ae({x:e,y:t,z:i,spatialReference:h}))),u=await this.getPixels(p,{feature:o,imageSize:c,mode:n}).then((e=>e.map(Q)));return new t({attributes:a,layer:e,symbol:l,geometry:new Oe({points:u,spatialReference:Me.WebMercator}),visible:e.visible&&r})}}return null})))).filter(i));this.overlayGraphicsOnImage(`${e.id}`,u)}async getPixels(e,t){const{imageSize:i,mode:r}=t,a=(await this.worldToImage(Array.isArray(e)?e:[e])).map((e=>{if("default"===r)return new Ae({x:e.x-.5,y:.5-e.y,spatialReference:Me.WebMercator});const[t,a]=i,{heading:s,pitch:o}=$(e,t,a),n=ee(s,o);return new Ae(n,Me.WebMercator)}));return Array.isArray(e)?a:a[0]}async getMapPoint(e,t){const{feature:i,mode:r,imageSize:a}=t,{elevationSample:s,attributes:o}=i,{elevationSource:n,location:l,elevation:c,cameraHeight:h}=o;let p=l.clone();p.spatialReference.isGeographic&&(p=await M(p,Me.WebMercator));const u=await Z(c??(l.z??0)-h,{elevationSample:s,elevationSource:n,extent:this.footprintExtent});let d;if("elevationSample"in u&&K(u.elevationSample)&&(i.elevationSample=u.elevationSample),"default"===r){const t=J(o,a[0],a[1]);d=await D(Array.isArray(e)?e:[e],{...t,cameraLocation:p},u)}else{const t=X(o,a[0],a[1]);d=await U(Array.isArray(e)?e:[e],{...t,cameraLocation:p},u)}return Array.isArray(e)?d:d[0]}async plotMapPoint(e){return this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.currentBestFeature,selectedLocation:e,options:{signal:this._transformController?.signal}})}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),null!=e&&(this._referencePointOnGround=new t({geometry:new Ae({...e.toJSON()}),symbol:fe}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){if("image-loaded"===this.state)switch(this.clearReferencePointOnImage(),this.mode){case"default":{const i=c.isSerializable(e)?e.toJSON():e;i.x-=.5,i.y=.5-i.y,this._referencePointOnImage=new t({geometry:new Ae({spatialReference:this._imageViewer.imageRenderer.spatialReference.clone(),...i}),symbol:fe}),this._imageViewer.addGraphic(this._referencePointOnImage,0);break}case"panoramic":{const{imageSize:i}=this._panoramicViewer;if(!i)return;const[r,a]=i,{heading:s,pitch:o}=$(e,r,a),n=ee(s,o);this._referencePointOnImage=new t({geometry:new Ae(n,Me.WebMercator),symbol:ve}),this._panoramicViewer.addGraphic(this._referencePointOnImage,0);break}}}removeAllOverlayMapFeatures(){this.overlayedMapFeatures.forEach((e=>{this._imageViewer.removeManyGraphics(e.toArray())})),this.overlayedMapFeatures.clear()}removeOverlayedGraphicsOnImage(e){const t=this.overlayedMapFeatures.get(e);t?.length&&(this.activeViewer?.removeManyGraphics(t.toArray()),this.overlayedMapFeatures.delete(e))}resetImage(){switch(this.setMessage("onLoadMessage","info"),this.mode){case"default":this._imageViewer.clearImage(),this._imageViewer.clearGraphics();break;case"panoramic":this._panoramicViewer.clearGraphics()}this._clickTask=d(this._clickTask)}async saveDigitizedFeatures(e){const{activeViewer:t,currentBestFeature:r,digitizationLayer:a,mode:s}=this,o=t?.imageSize;if(!o||!r||!s)throw new n("Image size, current best feature and mode are required to save digitized features");if(!a)throw new n("Digitization layer is not available");const l=await Promise.all(e.map((async e=>{const t=e.clone(),{geometry:i}=t;if(i)if(i.type===a.geometryType)switch(i.type){case"point":return t.geometry=await this.getMapPoint({x:i.x+.5,y:.5-i.y},{feature:r,imageSize:o,mode:s}),t;case"polygon":{const e=await Promise.all(i.rings.map((async e=>this.getMapPoint(e.map((([e,t])=>({x:e+.5,y:.5-t}))),{feature:r,imageSize:o,mode:s}))));return t.geometry=new Le({spatialReference:e[0][0].spatialReference,hasZ:!0,rings:e.map((e=>e.map(Q)))}),t}case"polyline":{const e=await Promise.all(i.paths.map((async e=>this.getMapPoint(e.map((([e,t])=>({x:e+.5,y:.5-t}))),{feature:r,imageSize:o,mode:s}))));return t.geometry=new je({spatialReference:e[0][0].spatialReference,hasZ:!0,paths:e.map((e=>e.map(Q)))}),t}case"mesh":case"multipoint":return void p.getLogger(this).warn("saveDigitizedFeatures:unsupported geometry type",{message:"only point, polygon, polyline are supported for digitization",geometryType:i.type,graphic:t})}else p.getLogger(this).warn("saveDigitizedFeatures:geometry type mismatch",{expected:a.geometryType,actual:i.type,graphic:t})}))),c=l.filter(i);return a.applyEdits({addFeatures:c}).then((e=>{const{addFeatureResults:t}=e;let i=0;const r=l.map((e=>{const r=t[i++];return e?r:{error:new n("Error in saving digitized features"),objectId:null,globalId:null}}));return{...e,addFeatureResults:r}}))}async searchBestImage(e,t){try{const i=await L(e,t);i&&await this._processFeatureResponse(i,e.point,{signal:t?.signal})}catch(i){y(i)||(this.setMessage("imageLoadError","error",i.message),p.getLogger(this).error("error occurred while finding best image",i))}}selectBestFeature(e){this.currentBestFeature=this.features?.find((({attributes:t})=>t.objectId===Number(e)))}setAdditionalCameraLocationsVisibility(e){this.additionalCameraLocations.forEach((t=>{t.visible=e}))}setAdditionalCoverageVisibility(e){this.additionalFootprints.forEach((t=>{t.visible=e}))}setCurrentCoverageVisibility(e){this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.visible=e),this.currentBestFeatureLocation&&(this.currentBestFeatureLocation.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}toggleAllOverlayMapFeatures(e){this.overlayedMapFeatures.forEach((t=>{this._toggleVisiblity(t,e)}))}toggleOverlayMapFeatures(e,t){const i=this.overlayedMapFeatures.get(e);i&&this._toggleVisiblity(i,t)}async transformAndPlotReferencePointOnImage(e){const{selectedLocation:t,options:i}=e;let r=!1,a=!1;const s=this.bestFeatureFootprint?.geometry;switch(s?.type){case"polygon":{const e=t.spatialReference.equals(s.spatialReference)?t:await M(t,s.spatialReference);r=s.contains(e);break}case"mesh":{const e=t.spatialReference.equals(s.spatialReference)?t:await M(t,s.spatialReference);a=s.extent.contains(e);break}}if(!r&&!a)return void this.clearReferencePointOnImage();const o=await this.worldToImage(t,i);if(o)return f(i),this.plotReferencePointOnImage(o),{x:o.x,y:o.y};this.clearReferencePointOnImage()}updateSuitabilities(e){e.sort(((e,t)=>e.suitability-t.suitability)),this._suitabilities=e;const t=this._suitabilities.map((({feature:e})=>e));this._initialCurrentCoverageUpdate=!0,this._updateFeatures(t),this._groupFeaturesBySectors()}async _fetchFeatures(e,t){if(!this.view)return;const i=this.layer;if(i){const r={include:i},a=this.view.toScreen(e);if(!a)return;const s=await this.view.hitTest(a,r);return this._processHitTestResults(i,s,t)}}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(i){if(y(i))return;this.setMessage("imageLoadError","error"),p.getLogger(this).error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,additionalFeatures:t,currentBestFeature:i,features:r,invalidCameraHeading:a}=this;if(!e||!t||!i||!r||a)return void(this._sectorData=null);this._sectorData={};for(const c of he)this._sectorData[c]=new s;const o=e.map(((e,t)=>({...e,featureIndex:t})));o.sort(((e,t)=>e.trueSuitability-t.trueSuitability));const n=o.map((({distance:e})=>e)),l=Math.max(...n);o.forEach((e=>{const{distance:t,angle:i,featureIndex:a}=e,s=t/l*pe[2],o=Ce(t,l),n=ke(i);if(!this._sectorData)return;const c=pe[3]+s*Math.sin(i*Math.PI/180),h=pe[3]+s*Math.cos(i*Math.PI/180);let p;const u=r.at(a),d=u===this.currentBestFeature,m=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;if(d&&m)p=-90;else{const e=c-pe[3],t=h-pe[3],i=t/Math.sqrt(e**2+t**2);let r=180*Math.acos(i)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(r*=-1),p=r}const g=""===o?n:`${o}_${n}`;d&&(p===this.bestFeatureAngle?this.previousFeatureAngle=p:this.bestFeatureAngle=p,this.navigatorCurrentBestFeature=m?null:{x:c,y:h,direction:n});const y=this._sectorData[g];y.add({angle:i,featureIndex:a,x:c,y:h,objectID:u.attributes.objectId,sector:g,featureIndexInSector:y.length})}))}async _processFeatureResponse(e,t,i){const{features:r}=e;if(!r?.length)return this.setMessage("noImageError","error"),void(this.currentBestFeature=null);this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll();const{features:a,polygons:s,frustums:o}=this.filterByFootprints(r,t);if(!a.length)return this.setMessage("noImageError","error"),void(this.currentBestFeature=null);let n;if(this.coveragePolygons.addMany(s),this.coverageFrustums.addMany(o),s[0]){let e=new Le({spatialReference:s[0].spatialReference});for(const i of s)e=await A(e,i);const t=[];for(const{geometry:i}of a)e.contains(i)||t.push([i.x,i.y]);if(t.sort(((e,t)=>+R([e,t]))),e.addRing(t),this.footprintExtent=oe(e.extent,2,2),this.view?.supportsGround)try{n=await this.view.map.ground.createElevationSampler(this.footprintExtent,i)}catch(l){y(l)||p.getLogger(this).error(l)}}if((n||a[0].attributes.elevationSource)&&this.footprintExtent){const e=a[0].attributes.elevationSource;T(e)&&!n&&(n=await W({extent:this.footprintExtent,lod:e.lod,url:e.url,rasterFunction:e.rasterFunction}));const i=await Z((a[0].attributes.location.z??0)-a[0].attributes.cameraHeight,{elevationSample:n,elevationSource:e,extent:this.footprintExtent}),[r,...s]=await N([t,...a.map((e=>e.attributes.geometry.clone()))],i);a[0].elevationSample=n??i.elevationSample,t.elevation=r.z,a.forEach(((e,t)=>{e.attributes.elevation=s[t].z}))}a[0].elevationSample&&a.forEach((e=>{e.elevationSample=a[0].elevationSample})),this._suitabilities=z({features:a,selectedPoint:t,camera:Ie(this.view)?this.view.camera:null,currentImage:this.currentBestFeature}),this.updateSuitabilities(this._suitabilities)}async _processHitTestResults(e,t,i){const{screenPoint:r,results:[a]}=t,s="graphic"===a?.type&&this.shouldShowSelectedImage,o=a?.mapPoint??this.view?.toMap(r);if(!o)return;const{layerFloorFilterClause:n}=this,l=e.spatialReference.equals(o.spatialReference)?o:await M(o,e.spatialReference),c=I("1=1",I(e.definitionExpression,n)),h=l.spatialReference.isGeographic?1:S(l.spatialReference),p={layerInstanceOrURL:e,point:l,queryParams:{where:c,maximumDistance:e.maximumDistance?e.maximumDistance/h:void 0,objectIds:s?[a.graphic.getAttribute(e.objectIdField)]:void 0}};await this.searchBestImage(p,i)}_toggleVisiblity(e,t){e.forEach((e=>{e.visible=t}))}_updateFeatures(e){if(!e.length)return this.currentBestFeature=null,void this.additionalFeatures.removeAll();this.features.removeAll(),this.features.addMany(e),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),this.currentBestFeature=e[0]}async _updatePointsAndPolygons(e){const{pointSources:i,currentBestFeature:r,currentCoverageVisible:a,isAdditionalPointSourcesVisible:s}=this;if(r&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await(this._adapter?.createFootprints(e)),f(e);for(const e of i)e.imageID===r.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:e.imageID},geometry:e,symbol:we,visible:a}):this.additionalCameraLocations.push(new t({attributes:{imageID:e.imageID},geometry:e,symbol:ye,visible:s}))}}_updateCurrentBestFeature(e){if(!e)return;this.currentBestFeature=this.features?.at(e.featureIndex);const t=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;let i;if(t)i=-90;else{const t=e.x-pe[3],r=e.y-pe[3],a=r/Math.sqrt(t**2+r**2);let s=180*Math.acos(a)/Math.PI;(t<0&&r<0||t<0&&r>0)&&(s*=-1),i=s}i===this.bestFeatureAngle?this.previousFeatureAngle=i:this.bestFeatureAngle=i,this.navigatorCurrentBestFeature=t?null:{x:e.x,y:e.y,direction:e.sector.includes("_")?e.sector.split("_")[1]:e.sector}}clearGraphics(){this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._referencePointOnImage=m(this._referencePointOnImage))}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}setMessage(e,t,i,r){this.displayMessage={key:e,type:t,data:i,map:r}}async transformAndPlotSelectedLocation(e){const{currentBestFeature:t,invalidCameraHeading:i,selectedPoint:r,state:a}=this;if(this._crossSymbol&&(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this._crossSymbol=m(this._crossSymbol)),!r||!t||"image-loaded"!==a||i)return;let s;try{s=await this.worldToImage(r,e),f(e),await this.plotSelectedPointOnImage(s,e)}catch(o){y(o)||p.getLogger(this).error("failed to transform map point to pixel, cross symbol will not be plotted on image",{error:o,selectedPoint:r,feature:t})}}async worldToImage(e,t){const{footprintExtent:i}=this,{imageSize:r}=this.activeViewer;if("none"===this.mode||!this.currentBestFeature||!r||!i)return;const{attributes:{location:a,elevationSource:s,cameraHeading:o,elevation:n,cameraHeight:l},elevationSample:c}=this.currentBestFeature;let h=a.clone();const p=await Z(n??(a.z??0)-l,{elevationSample:c,elevationSource:s});this.currentBestFeature.elevationSample=p.elevationSample;const u=Array.isArray(e)?e:[e];let d,m=await Promise.all(u.map((e=>new Promise((t=>{if(!e.hasZ)return t(N(e,p));t(e)})))));if(a.spatialReference.isGeographic&&(h=await M(h,Me.WebMercator,t)),m=await Promise.all(m.map((async e=>h.spatialReference.equals(e.spatialReference)?e:await M(e,h.spatialReference,t)))),f(t),"panoramic"===this.mode)d=ie(m,{imageHeight:r[1],imageWidth:r[0],cameraHeading:o,cameraLocation:h});else{const e=Y(this.currentBestFeature.attributes,r[0],r[1]);d=re(m,{...e,cameraLocation:h})}return Array.isArray(e)?d:d[0]}updateCurrentCoveragePolygon(e){const{additionalFootprints:i,additionalCameraLocations:r,currentBestFeature:a,currentBestFeatureLocation:s,currentCoverageVisible:o,selectedPoint:n,view:l,_adapter:c}=this,{attributes:{objectId:h},elevationSample:p}=a;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),l){const e=[...i,...r,this.bestFeatureCurrentFootprint,s].filter(Se);l.supportsGround&&p&&c?.updateGroundElevation&&c.updateGroundElevation(e,p),n&&e.push(new t({geometry:n.clone(),symbol:ue.clone(),attributes:{imageID:h}})),this._overlays.graphics.addMany(e)}}else if(l){if(this.invalidCameraHeading)return;this.bestFeatureCurrentFootprint&&(this._overlays?.remove(this.bestFeatureCurrentFootprint),this.bestFeatureCurrentFootprint=m(this.bestFeatureCurrentFootprint));const t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,l?.supportsGround&&p&&c?.updateGroundElevation&&c.updateGroundElevation([e],p),e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}};e([C()],He.prototype,"activeLayer",null),e([C({readOnly:!0})],He.prototype,"activeViewer",null),e([C()],He.prototype,"additionalFeatures",void 0),e([C({type:s.ofType(t)})],He.prototype,"additionalCameraLocations",void 0),e([C({type:s.ofType(t)})],He.prototype,"additionalFootprints",void 0),e([C()],He.prototype,"areaMeasurementResult",void 0),e([C()],He.prototype,"bestFeatureAngle",void 0),e([C()],He.prototype,"bestFeatureCurrentFootprint",void 0),e([C({type:t})],He.prototype,"bestFeatureFootprint",void 0),e([C({type:Number})],He.prototype,"brightness",null),e([C({type:Number})],He.prototype,"contrast",null),e([C()],He.prototype,"conversionProps",void 0),e([C()],He.prototype,"coverageFrustums",void 0),e([C()],He.prototype,"coveragePolygons",void 0),e([C()],He.prototype,"currentBestFeature",void 0),e([C()],He.prototype,"currentBestFeatureLocation",void 0),e([C()],He.prototype,"currentCoverageVisible",void 0),e([C({json:{write:!1}})],He.prototype,"determineWorkflowForFeature",void 0),e([C()],He.prototype,"disabled",void 0),e([C()],He.prototype,"displayMessage",void 0),e([C()],He.prototype,"displayNewMeasurementButton",void 0),e([C()],He.prototype,"displayNewAreaMeasurementButton",void 0),e([C()],He.prototype,"distanceMeasurementResult",void 0),e([C()],He.prototype,"digitizationLayer",void 0),e([C({readOnly:!0})],He.prototype,"featureCount",null),e([C()],He.prototype,"features",void 0),e([C({readOnly:!0})],He.prototype,"imageGalleryEnabled",null),e([C({readOnly:!0})],He.prototype,"imageLoaded",null),e([C({readOnly:!0})],He.prototype,"invalidCameraHeading",null),e([C()],He.prototype,"imagePointsInView",null),e([C()],He.prototype,"isAdditionalCoverageVisible",void 0),e([C()],He.prototype,"isAdditionalPointSourcesVisible",void 0),e([C()],He.prototype,"layer",void 0),e([C()],He.prototype,"layerView",null),e([C({readOnly:!0})],He.prototype,"layerFloorFilterClause",null),e([C({type:Number})],He.prototype,"localPort",void 0),e([C()],He.prototype,"mapImageConversionToolState",void 0),e([C({readOnly:!0,value:"none"})],He.prototype,"mode",null),e([C()],He.prototype,"navigatorCurrentBestFeature",void 0),e([C({type:s.ofType(t)})],He.prototype,"overlayedCameraLocations",void 0),e([C()],He.prototype,"overlayedMapFeatures",void 0),e([C()],He.prototype,"pointSources",void 0),e([C({readOnly:!0})],He.prototype,"popupEnabled",null),e([C()],He.prototype,"previousFeatureAngle",void 0),e([C()],He.prototype,"referencePoint",null),e([C({readOnly:!0})],He.prototype,"sectorData",null),e([C()],He.prototype,"selectedPoint",void 0),e([C({type:Number})],He.prototype,"sharpness",null),e([C()],He.prototype,"shouldShowSelectedImage",void 0),e([C()],He.prototype,"sketch",void 0),e([C()],He.prototype,"sketchAdapter",void 0),e([C({readOnly:!0})],He.prototype,"sketchGraphicsLayer",null),e([C({readOnly:!0})],He.prototype,"state",null),e([C({readOnly:!0})],He.prototype,"thumbnails",null),e([C()],He.prototype,"updateFootprint",void 0),e([C()],He.prototype,"updateFootprintPanorama",void 0),e([C({value:null})],He.prototype,"view",null),e([C()],He.prototype,"_adapter",void 0),e([C()],He.prototype,"_highlightedFeatureHandle",void 0),e([C()],He.prototype,"_imageViewer",void 0),e([C()],He.prototype,"_initialCurrentCoverageUpdate",void 0),e([C()],He.prototype,"_overlays",void 0),e([C({readOnly:!0})],He.prototype,"_overlaysView",null),e([C()],He.prototype,"_panoramicViewer",void 0),e([C()],He.prototype,"_referencePointOnGround",void 0),e([C()],He.prototype,"_referencePointOnImage",void 0),e([C()],He.prototype,"_sectorData",void 0),e([C({readOnly:!0})],He.prototype,"_updatingHandles",void 0),e([C()],He.prototype,"footprintExtent",void 0),He=e([k("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],He);const Te=He;export{Te as default};
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import t from"../../Graphic.js";import{isSome as i,equals as r}from"../../core/arrayUtils.js";import{createTask as a}from"../../core/asyncUtils.js";import s from"../../core/Collection.js";import{deprecatedProperty as o}from"../../core/deprecate.js";import n from"../../core/Error.js";import l from"../../core/Evented.js";import c from"../../core/JSONSupport.js";import{equalsShallow as h}from"../../core/lang.js";import u from"../../core/Logger.js";import{clamp as p}from"../../core/mathUtils.js";import{abortMaybe as m,destroyMaybe as d}from"../../core/maybe.js";import g from"../../core/Promise.js";import{isAbortError as y,throwIfAborted as f,waitTick as v}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{on as b,watch as F,syncAndInitial as _,initial as P}from"../../core/reactiveUtils.js";import{sqlAnd as S}from"../../core/sql.js";import{getMetersPerUnitForSR as I}from"../../core/unitUtils.js";import{property as k}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import{subclass as C}from"../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as M}from"../../core/support/UpdatingHandles.js";import{union as A}from"../../geometry/geometryEngineAsync.js";import V from"../../geometry/Multipoint.js";import R from"../../geometry/Point.js";import O from"../../geometry/Polygon.js";import j from"../../geometry/Polyline.js";import{projectWithZConversion as z}from"../../geometry/projection.js";import G from"../../geometry/SpatialReference.js";import{isClockwise as L}from"../../geometry/support/coordsUtils.js";import{geographicToWebMercator as B}from"../../geometry/support/webMercatorUtils.js";import x from"../../layers/GraphicsLayer.js";import{searchImages as E}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as H}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as T,computePolygonForInspection as D,resizePolygon as U,checkIfPolygonContainsSelectedPoint as N}from"../../layers/orientedImagery/core/coverageUtils.js";import{isConstantElevation as W,isElevationSource as q}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{imageToWorld as $,imageToWorldPanoramic as J}from"../../layers/orientedImagery/transformations/imageToWorld.js";import Z from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as K}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{getInitialAngle as Q,convertPixelToHeadingPitch as X,getImageToWorldProperties as Y,getUpdateElevationProps as ee,isElevationSampler as te,pointToArray as ie,getImageToWorldPanoramicProperties as re,getWorldToImageProperties as ae,convertHeadingPitchToSphereVertex as se,or as oe}from"../../layers/orientedImagery/transformations/utils.js";import{worldToImagePanoramic as ne,worldToImage as le}from"../../layers/orientedImagery/transformations/worldToImage.js";import{getFloorFilterClause as ce}from"../../layers/support/floorFilterUtils.js";import he from"../../rest/support/AttachmentQuery.js";import ue from"../../symbols/SimpleLineSymbol.js";import{scale as pe}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as me}from"../../views/input/InputManager.js";import de from"../PanoramicViewer.js";import{invalidCameraHeading as ge,sectorsInOrder as ye,sectorsRadii as fe}from"./constants.js";import{pixelAreaMeasurement2D as ve,pixelDistanceMeasurement2D as we}from"./imageMeasurementUtils.js";import{crossSymbol as be,crossSymbol3D as Fe,measurementPolygonSymbol as _e,measurementPolylineSymbol as Pe,sourcePointSymbol as Se,diamondSymbol as Ie,diamondSymbol3D as ke,activeSourcePointSymbol as Ce}from"./symbols.js";import{isNoAttachmentError as Me,getContentType as Ae,isTifOrMrf as Ve,filterOILLayerView as Re,isSceneView as Oe,isGraphic as je,calculateSegment as ze,calculateDirection as Ge}from"./utils.js";import Le from"./components/ImageViewer.js";const Be={click:"view-click",imageClick:"image-click",interactionHandles:"interaction-handles",footprintHandles:"footprint-handles",sketchHandles:"sketch-handles"},xe=new Set(["JPG","JPEG"]),Ee=/\.(\w+)$/,He=e=>"FA"===e,Te=()=>new n("orientedimageryviewer:sketch-not-initialized","Sketch property is not initialized, call loadSketch first");let De=class extends(l.EventedMixin(g)){constructor(e){super(e),this.additionalFeatures=new s,this.additionalCameraLocations=new s,this.additionalFootprints=new s,this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.bestFeatureAngle=0,this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null,this.conversionProps=null,this.coverageFrustums=new s,this.coveragePolygons=new s,this.currentBestFeature=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.determineWorkflowForFeature=async(e,t,i)=>{const{currentBestFeature:r,selectedPoint:a,view:s}=this;if(s?.closePopup(),r&&a){this._initialCurrentCoverageUpdate=!0;try{await this._updatePointsAndPolygons(i),await this._loadImage(i)}catch(o){y(o)||(this.loadImageError(o),u.getLogger(this).error("#loadIImage()","error occured while loading image",o))}}},this.disabled=!1,this.displayMessage={key:"onLoadMessage",type:"info"},this.displayNewMeasurementButton=!0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.digitizationLayer=null,this.features=new s,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.mapImageConversionToolState=!1,this.measureType=null,this.measurementGraphic=null,this.navigatorCurrentBestFeature=null,this.overlayedCameraLocations=new s,this.overlayedMapFeatures=new w,this.pointSources=new s,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.sketch=null,this.sketchAdapter=null,this.updateFootprint=async(e,t)=>{"image-loaded"===this.state&&await(this._adapter?.updateFootprint(e,t))},this.updateFootprintPanorama=async(e,t)=>{await(this._adapter?.updateFootprintPanorama(e,t))},this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new Le,this._initialCurrentCoverageUpdate=!0,this._overlays=new x({listMode:"hide",internal:!0,elevationInfo:{mode:"absolute-height"}}),this._panoramicViewer=new de,this._referencePointOnGround=null,this._referencePointOnImage=null,this._sectorData=null,this._updatingHandles=new M,this._clickTask=null,this._crossSymbol=null,this.footprintExtent=null,this._featureChangedTask=null,this._openPopupTask=null,this._suitabilities=null,this._transformController=new AbortController,this._updateFootprintTask=null,this.hideImageGeometry=e=>{},this.highlight=e=>{if(!this._overlaysView)return;this.removeHighlight();const t=this.additionalFootprints.find((({attributes:{imageID:t}})=>t===Number(e)));this._highlightedFeatureHandle=t?this._overlaysView?.highlight(t):null},this.loadDigitizationAdapter=async e=>{const{sketchAdapter:t}=this;if(await this.loadSketch(e),"digitization"===t?.type)return t;const i=import("./adapters/sketch/DigitizationAdapter.js");this._updatingHandles.addPromise(i);const{default:r}=await i;return f(e),this.sketchAdapter=new r({viewModel:this}),this.sketchAdapter},this.loadImageFromSource=async(e,t)=>this._updatingHandles.addPromise(this._loadImageFromSourceInternal(e,t)),this.loadImageViewer=e=>{this._imageViewer.container=e},this.loadPanoramicViewer=e=>{this._panoramicViewer.container=e},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.startDigitization=e=>{},this.stopDigitization=e=>{},this.toggleImageAttributes=()=>{m(this._openPopupTask),this._openPopupTask=a((async e=>{const{currentBestFeature:i,popupEnabled:r,layer:a,view:s}=this;if(s?.closePopup(),!(s&&i&&r&&a))return;const{attributes:o,geometry:n}=i,l=new t({geometry:n,attributes:o.toJSON(),layer:a});f(e),await s.openPopup({features:[l],location:o.location.clone()})}))},this._createViewClickHandle=()=>{if(this.removeHandles(Be.click),"disabled"===this.state||null==this.view)return;const e=this.mapImageConversionToolState&&"image-loaded"===this.state?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on("click",e,me.WIDGET),Be.click)},this._createImageClickHandle=()=>{this.removeHandles(Be.imageClick);const{mapImageConversionToolState:e,mode:t,activeViewer:i,currentBestFeature:r,footprintExtent:s}=this,o=i?.imageSize;if(!(e&&"none"!==t&&o&&s&&r))return;i.clickAction="pixel-location";let n=null;const l=b((()=>i),"pixel-location",(e=>{this.plotReferencePointOnImage(e),n?.abort(),n=a((async i=>{if(!e)return;const a=await this.getMapPoint(e,{feature:r,imageSize:o,mode:t}).then((e=>{const t=this.view?.spatialReference;return oe(!t,e.spatialReference.equals(t))?e:z(e,t)}));f(i),this.plotReferencePointOnGround(a)}))}));this.addHandles(l,Be.imageClick)},this._getImageSourceFromAttachment=async(e,t,i)=>{const r=new he({objectIds:[t]}),a=await e.queryAttachments(r,i),s=a[`${t}`]?.[0],o=s?.url;if(!o)throw new n("NoAttachmentError","no attachments found",{[e.objectIdField]:t,layer:e});return{datasetFormat:s.contentType.split("/")[1].toUpperCase(),url:o}},this._loadImage=async e=>{const{currentBestFeature:t,layer:i,mode:r}=this;if(this.clearGraphics(),!i||!t||"none"===r)return;const{attributes:a}=t,{imagePath:s,imageRotation:o,cameraHeading:n,cameraRoll:l,cameraPitch:c,objectId:h,cameraOrientation:p,location:m}=a,d=(l??0)+(o??0),g=m.spatialReference.isWGS84&&4!==p?.type?B(m):new R(m);let v=s;if(He(s))try{v=await this._getImageSourceFromAttachment(i,h,e)}catch(w){if(y(w))return;return Me(w)?(u.getLogger(this).error(w),void this.setMessage("noAttachment","error",`${i.objectIdField}: ${h}`)):(u.getLogger(this).error(w,{[i.objectIdField]:h,layer:i}),void this.setMessage("imageLoadError","error",`query-attachments-failed:${i.objectIdField} ${h}`))}try{await this.loadImageFromSource(v,{imageRotation:d,options:e,pitch:c,yaw:n,mode:r,cameraLocation:g}),f(e),await this.transformAndPlotSelectedLocation(e)}catch(w){y(w)||this.loadImageError(w)}},this._loadImageFromSourceInternal=async(e,t)=>{const{mode:i,imageRotation:r,options:a}=t,s="string"==typeof e,o=s?e:e.url,{pathname:n,searchParams:l}=new URL(o);let c=s?n.match(Ee)?.[1]:e.datasetFormat;if(!c){const e=await Ae(o,{...t.options});c=e?.split("/")[1]??"UNKNOWN FORMAT"}switch(i){case"default":this._imageViewer.imageSource={datasetFormat:c.toUpperCase(),url:o.split("?")[0]},this._imageViewer.customParameters=Object.fromEntries(l),this._imageViewer.imageRotation=r??0,await this._imageViewer.loadImage(a);break;case"panoramic":if(xe.has(c.toUpperCase())){const{selectedPoint:e}=this,{pitch:i,yaw:r,cameraLocation:s,viewAngle:n}=t;this._panoramicViewer.imageSource=o;let l=r??0;"number"==typeof n?l=n-l:s&&e&&(l=await Q(s,e)-l),this._panoramicViewer.pitch=i??0,this._panoramicViewer.yaw=l,await this._panoramicViewer.loadImage(a)}else this.setMessage("unsupportedPanoramicImageryError","error",void 0,{datasetFormat:c});break}},this._loadViewAdapter=async e=>{const{view:t}=this;if(t)switch(t.type){case"2d":{const{default:t}=await import("./adapters/view/MapViewAdapter.js");f(e),this._adapter=new t(this);break}case"3d":{const{default:t}=await import("./adapters/view/SceneViewAdapter.js");f(e),this._adapter=new t(this);break}}else this._adapter=null},this._mapImageConversionToolViewClickHandler=e=>{e.stopPropagation(),e.preventDefault(),e.mapPoint&&this.plotMapPoint(e.mapPoint)},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=a((async t=>{const{pointerType:i,button:r,mapPoint:a}=e;if(("mouse"!==i||0===r)&&a)return e.stopPropagation(),e.preventDefault(),this._updatingHandles.addPromise(this.loadBestImage(a,{signal:t}))}))},this.plotSelectedPointOnImage=async(e,i)=>{if(await v(i),!e)return;const r=new R({...c.isSerializable(e)?e.toJSON():e});if("default"===this.mode)r.x-=.5,r.y=.5-r.y,r.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:r,symbol:be}),this._imageViewer.addGraphic(this._crossSymbol,0);else if("panoramic"===this.mode){const{imageSize:i}=this._panoramicViewer;if(!i)return;const[r,a]=i,{heading:s,pitch:o}=X(e,r,a),n=se(s,o);this._crossSymbol=new t({geometry:new R(n,G.WebMercator),symbol:Fe}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this),this.updateSuitabilities=this.updateSuitabilities.bind(this),this.selectBestFeature=this.selectBestFeature.bind(this)}initialize(){this.addHandles([F((()=>this.view),(()=>{this.load()}),_),F((()=>this.view?.map),((e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)}),P),F((()=>this.view?.map?.allLayers?.length),(e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)}),P),F((()=>[this.state,this.mapImageConversionToolState,this.view]),(()=>{this._createViewClickHandle(),this._createImageClickHandle()}),_),F((()=>[this.measureType]),((e,t)=>{(!e[0]&&t?.[0]||e[0]!==t?.[0])&&("area"===t?.[0]?this.clearPreviousMeasurements("area",!1):"distance"===t?.[0]&&this.clearPreviousMeasurements("distance",!1))}),P),F((()=>this.bestFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),_),F((()=>this.currentBestFeature),(async(e,t)=>{m(this._featureChangedTask),this._featureChangedTask=a((async i=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:i}]))),await this._featureChangedTask.promise}),{sync:!0}),F((()=>this.mode),(e=>{switch(this.removeHandles(Be.interactionHandles),e){case"default":this.addHandles(F((()=>this._imageViewer.imagePointsInView),(e=>{e&&(m(this._updateFootprintTask),this._updateFootprintTask=a((async t=>{await this.updateFootprint(e,{signal:t})})))}),{..._,equals:(e,t)=>r(e,t,h)}),Be.interactionHandles);break;case"panoramic":this.addHandles(F((()=>{const{currentBestFeature:e,state:t}=this,{imageSize:i,vfov:r,hfov:a,pitch:s,yaw:o}=this._panoramicViewer;return e&&i&&"image-loading"!==t?[r,a,o,s]:null}),(e=>{if(!e||"image-loading"===this.state)return;const[t,i,r,s]=e;m(this._updateFootprintTask),this._updateFootprintTask=a((async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:r,pitch:s},{signal:e})}))}),{..._,equals:(e,t)=>r(e,t,h)}),Be.interactionHandles)}}),_),F((()=>[this.brightness,this.contrast,this.sharpness]),(()=>{const{_imageViewer:e,brightness:t,contrast:i,mode:r,sharpness:a}=this;"default"===r&&(e.brightness=t,e.contrast=i,e.sharpness=a)}),_),F((()=>this.activeViewer?.imageRenderer),(()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}))]),this.when().finally((()=>{this.notifyChange("state")}))}destroy(){this._updateFootprintTask=m(this._updateFootprintTask),this._clickTask=m(this._clickTask),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this.additionalFootprints.destroy(),this.additionalCameraLocations.destroy(),this.bestFeatureFootprint=d(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=d(this.bestFeatureCurrentFootprint),this._crossSymbol=d(this._crossSymbol),this._referencePointOnGround=d(this._referencePointOnGround),this._referencePointOnImage=d(this._referencePointOnImage),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this._panoramicViewer.destroy()}get activeLayer(){return o(u.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){o(u.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer=e}get activeViewer(){const{_imageViewer:e,_panoramicViewer:t,mode:i}=this;switch(i){case"default":return e;case"panoramic":return t;default:return null}}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",p(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",p(e,-10,10))}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){return Ve(this.currentBestFeature?.attributes.imagePath.trim())}get imageLoaded(){return o(u.getLogger(this),"imageLoaded",{replacement:'Use OrientedImageryViewer.state === "image-loaded"',version:"4.29",warnOnce:!0}),"image-loaded"===this.state}get invalidCameraHeading(){return this.currentBestFeature?.attributes?.cameraHeading===ge}get imagePointsInView(){const{mode:e,_imageViewer:t}=this;return"default"===e?t.imagePointsInView:null}get layerView(){const{layer:e,view:t}=this;if(e&&t)return t.allLayerViews.find(Re(e))}get layerFloorFilterClause(){const{layerView:e}=this;return e?ce(e):null}get mode(){const e=this.currentBestFeature?.attributes;if(!e)return"none";const{horizontalFieldOfView:t,isSpherical:i}=e;return 360===t||i?"panoramic":"default"}get popupEnabled(){return!0===this.layer?.popupEnabled}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){const{_sectorData:e}=this;return e?ye.map((t=>e[t])):null}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",p(e,0,1))}get sketchGraphicsLayer(){return this.sketch?.layer}get state(){const{mode:e,disabled:t}=this;if(t)return"disabled";if(!this.isFulfilled())return"loading";if(this.isRejected())return"error";if(this._updatingHandles.updating)return"image-loading";if("error"===this.displayMessage?.type)return"image-load-error";switch(e){case"default":return this._imageViewer.state;case"panoramic":return this._panoramicViewer.state}return"ready"}get thumbnails(){const{features:e}=this;return e?new s(e.map((({attributes:{imagePath:e,objectId:t,cameraRoll:i,imageRotation:r}})=>{const a=e.trim();return Ve(a)?{url:a,objectId:t,rotation:(i??0)+(r??0)}:null})).filter(i)):null}set view(e){this._set("view",e)}get _overlaysView(){return this.view?.layerViews.find((({layer:e})=>e===this._overlays))}async calculateAreaMeasurement(e,t){if(e.length<3||!this.currentBestFeature||!this.activeViewer?.imageSize)return null;const i=await this.getMeasurementProperties();return f(t),i?await ve(e,i,!0):null}async calculateAreaAccuracy(e,t){if(e.length<3||!this.currentBestFeature||!this.activeViewer?.imageSize)return null;const i=await this.getMeasurementProperties();if(f(t),!i)return null;const r=await ve(e,i,!0);f(t);const a=r?.area;if(!r||!a)return null;const s=this.generateCombinations(i);if(!s)return null;const o=s.map((t=>ve(e,t,!0))),n=await Promise.all(o);let l=0;for(const c of n){if(!c)return null;const e=Math.abs(c.area-a);e>l&&(l=e)}return l}async calculateDistanceMeasurement(e,t){if(e.length<2||!this.currentBestFeature||!this.activeViewer?.imageSize)return null;const i=await this.getMeasurementProperties();return f(t),i?await we([e.at(0),e.at(-1)],i,!0):null}async calculateDistanceAccuracy(e,t){if(e.length<2||!this.currentBestFeature||!this.activeViewer?.imageSize)return null;const i=await this.getMeasurementProperties();if(f(t),!i)return null;const r=await we([e.at(0),e.at(-1)],i,!0);f(t);const a=this.generateCombinations(i);if(!a)return null;const s=a.map((async t=>{const i=await we([e.at(0),e.at(-1)],t,!0);return i?Math.abs(i-r):null})),o=(await Promise.all(s)).filter((e=>null!==e));if(0===o.length)return null;return Math.max(...o)}async calculateAccuracy(e,t,i){if("area"===t&&e.length<3||"distance"===t&&e.length<2||!this.currentBestFeature||!this.activeViewer?.imageSize)return null;const r=await this.getMeasurementProperties();if(f(i),!r)return null;const a="area"===t?await ve(e,r,!0):await we([e.at(0),e.at(-1)],r,!0);f(i);const s=this.generateCombinations(r);if(!s)return null;const o=s.map((async r=>{const s="area"===t?await ve(e,r,!0):await we([e.at(0),e.at(-1)],r,!0);if(f(i),s&&a){if("area"===t){const e="number"!=typeof s?s.area:null;return e?Math.abs(e-a.area):null}return Math.abs(s-a)}return null})),n=await Promise.all(o);f(i);const l=n.filter((e=>null!==e));if(0===l.length)return null;return Math.max(...l.map((e=>e)))}clearPreviousMeasurements(e,t=!0){t&&(this.measureType=null),"area"===e?this.resetMeasurementData("area"):"distance"===e&&this.resetMeasurementData("distance"),this.clearMeasurementGraphics(),this.stopMeasurement()}clearMeasurementGraphics(){this.measurementGraphic&&(this.activeViewer?.removeGraphic(this.measurementGraphic),this.measurementGraphic=null)}copyToClipboard(e){navigator.clipboard.writeText(e).catch((e=>{u.getLogger(this).error("copy-to-clipboard:measurement-result",e)}))}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}digitizeCreate(e,t){const{sketch:i}=this;return i?i.create(e,t):Promise.reject(Te())}async digitizeDelete(){if(!this.sketch)throw Te();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw Te();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw Te();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw Te();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw Te();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw Te();return this.sketch.update(e,t)}filterByFootprints(e,t){const i=[],r=[],a=[];return e.forEach((e=>{const{layer:{coveragePercent:s},attributes:o}=e;let n;const l=I(e.geometry.spatialReference);o.cameraHeight/=l,o.farDistance/=l,o.nearDistance/=l,W(o.elevationSource)&&(o.elevationSource.constantElevation/=l);const{polygon:c,frustum:h}=T(o);if(n=c.clone(),o.isInspection&&(n=D(o)),s&&(n=U(n,s)),N(n,t)){a.push(e);const{geometry:t,objectId:s,cameraHeight:n,cameraHeading:l}=o,u=t.clone();u.z=n,u.imageID=s,this.pointSources.push(u),l!==ge&&(i.push(c),h&&r.push(h))}})),{features:a,polygons:i,frustums:r}}generateCombinations(e){const{cameraPitch:t,cameraRoll:i,cameraLocation:r}=e,{x:a,y:s,z:o,spatialReference:n}=r;if(this.layer?.orientationAccuracy.every((e=>0===e))||!this.layer?.orientationAccuracy)return null;const[l,c,,h,u]=this.layer.orientationAccuracy,p=[-h,0,h],m=[-u,0,u],d=[-l,0,l],g=[-c,0,c],y=[];for(const f of p)for(const r of m)for(const l of d)for(const c of d)for(const h of g){const u={...e};u.cameraPitch=t+f,u.cameraRoll=i+r,u.cameraLocation=new R({x:a+l,y:s+c,z:o?o+h:0,spatialReference:{wkid:n.wkid}}),y.push(u)}return y}getMeasurementProperties(){const{currentBestFeature:e,activeViewer:t}=this;if(!e||!t?.imageSize)return;const{elevationSample:i,attributes:r}=e,{elevationSource:a,cameraHeight:s}=r,o=Y(r,t.imageSize[0],t.imageSize[1]);let n=o.cameraLocation;return(n.spatialReference.isGeographic?z(n,G.WebMercator):Promise.resolve(n)).then((e=>(n=e,ee((n.z??0)-s,{elevationSample:i,elevationSource:a,extent:this.footprintExtent})))).then((t=>("elevationSample"in t&&te(t.elevationSample)&&(e.elevationSample=t.elevationSample),{...o,cameraLocation:n,updateElevationProps:t})))}async deleteDigitizedFeatures(e){const{digitizationLayer:t}=this;if(!t)throw new n("Digitization layer is not available");return t.queryFeatures({objectIds:e}).then((({features:e})=>t.applyEdits({deleteFeatures:e})))}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[ye[e]];t?.length&&this._updateCurrentBestFeature(t.at(0))}handleFeatureClick(e){const{sector:t,featureIndexInSector:i}=e;if(isNaN(i))return;const r=this._sectorData?.[t];r?.length&&this._updateCurrentBestFeature(r.at(i))}async load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch((e=>{if(!y(e))throw e}))),this}async loadBestImage(e,t){return this.view?.closePopup(),this.displayMessage=null,this.selectedPoint=e.spatialReference.isGeographic?B(e):e.clone(),this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=d(this.bestFeatureCurrentFootprint),this._overlays?.removeAll(),this._fetchFeaturesWithController(e,t)}loadImageError(e){u.getLogger(this).error("oriented-imagery-viewer:load-image",e),this.setMessage("imageLoadError","error",e.message)}async loadSketch(e){if(!this.sketch){const t=import("../Sketch/SketchViewModel.js");this._updatingHandles.addPromise(t);const{default:i}=await t;f(e),this.sketch=new i({layer:new x,view:this.activeViewer?.imageRenderer,updateOnGraphicClick:!1,defaultUpdateOptions:{reshapeOptions:{edgeOperation:"none",shapeOperation:"none",vertexOperation:void 0},enableMoveAllGraphics:!1,enableRotation:!1,enableScaling:!1,multipleSelectionEnabled:!1,toggleToolOnClick:!1,tool:"transform"}})}return this.sketch}async loadSketchAdapter(e){if("panoramic"!==this.mode){if(!this.sketchAdapter){const t=import("./adapters/sketch/MeasurementAdapter.js");this._updatingHandles.addPromise(t);const{default:i}=await t;if(f(e),this.sketchAdapter=new i({viewModel:this}),!this.sketchAdapter.viewModel.isResolved())return}return this.sketchAdapter}}newMeasurement(e){switch(this.clearMeasurementGraphics(),this.resetMeasurementData(e),e){case"distance":this.startMeasurement("polyline");break;case"area":this.startMeasurement("polygon")}}async startMeasurement(e,t){if("panoramic"===this.mode)return;if(await this.loadSketch(),await this.loadSketchAdapter(t),!this.sketch||!this.sketchAdapter)return;this.displayNewMeasurementButton=!1,this.sketch.create(e);const i=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;i&&this.sketch&&(this.sketch.polygonSymbol=_e(i),this.sketch.polylineSymbol=Pe(i))}stopMeasurement(){this.sketch&&this.sketchAdapter&&this.sketch.cancel()}async overlayCameraLocations(e){const{activeViewer:i,currentBestFeature:r,overlayedCameraLocations:a,layer:s,mode:o,state:n}=this,l=i?.imageSize;if(!l||!r||!s||"none"===o||n.includes("loading"))return;const{polygon:c}=T(r.attributes);if(i.removeManyGraphics(a.toArray()),a.removeAll(),e){const{features:e}=await s.queryFeatures({where:`${s.objectIdField} <> ${r.attributes.objectId}`,geometry:c,returnGeometry:!0,outFields:[s.objectIdField]}),n=await Promise.all(e.map((async e=>{const{attributes:i,geometry:a}=e,s=await this.getPixels(a,{feature:r,imageSize:l,mode:o}),n=Se.clone();return n.outline=new ue({color:[0,0,0],width:1}),new t({attributes:i,symbol:n,geometry:s})})));a.addMany(n),i.addManyGraphics(a.toArray())}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,r=!1){const{activeViewer:a,currentBestFeature:o,mode:n,state:l}=this,c=a?.imageSize;if(!c||!o||"none"===n||l.includes("loading"))return;const{polygon:h}=T(o.attributes),{features:u}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:[e.objectIdField]}),p=new s((await Promise.all(u.map((async i=>{const{attributes:a,geometry:s}=i,l=i.symbol?.clone()??e.renderer?.getSymbol(i)?.clone();switch(s?.type){case"point":{const i=await this.getPixels(s,{feature:o,imageSize:c,mode:n});return new t({attributes:a,layer:e,symbol:l,geometry:i,visible:e.visible&&r})}case"polygon":{const{rings:i,spatialReference:h}=s,u=i.map((e=>e.map((([e,t,i])=>new R({x:e,y:t,z:i,spatialReference:h}))))),p=await Promise.all(u.map((async e=>this.getPixels(e,{feature:o,imageSize:c,mode:n}).then((e=>e.map(ie))))));return new t({attributes:a,layer:e,symbol:l,geometry:new O({rings:p,spatialReference:G.WebMercator}),visible:e.visible&&r})}case"polyline":{const{paths:i,spatialReference:h}=s,u=i.map((e=>e.map((([e,t,i])=>new R({x:e,y:t,z:i,spatialReference:h}))))),p=await Promise.all(u.map((async e=>this.getPixels(e,{feature:o,imageSize:c,mode:n}).then((e=>e.map(ie))))));return new t({attributes:a,layer:e,symbol:l,geometry:new j({paths:p,spatialReference:G.WebMercator}),visible:e.visible&&r})}case"multipoint":{const{points:i,spatialReference:h}=s,u=i.map((([e,t,i])=>new R({x:e,y:t,z:i,spatialReference:h}))),p=await this.getPixels(u,{feature:o,imageSize:c,mode:n}).then((e=>e.map(ie)));return new t({attributes:a,layer:e,symbol:l,geometry:new V({points:p,spatialReference:G.WebMercator}),visible:e.visible&&r})}}return null})))).filter(i));this.overlayGraphicsOnImage(`${e.id}`,p)}async getPixels(e,t){const{imageSize:i,mode:r}=t,a=(await this.worldToImage(Array.isArray(e)?e:[e])).map((e=>{if("default"===r)return new R({x:e.x-.5,y:.5-e.y,spatialReference:G.WebMercator});const[t,a]=i,{heading:s,pitch:o}=X(e,t,a),n=se(s,o);return new R(n,G.WebMercator)}));return Array.isArray(e)?a:a[0]}async getMapPoint(e,t){const{feature:i,mode:r,imageSize:a}=t,{elevationSample:s,attributes:o}=i,{elevationSource:n,location:l,elevation:c,cameraHeight:h}=o;let u=l.clone();u.spatialReference.isGeographic&&(u=await z(u,G.WebMercator));const p=await ee(c??(l.z??0)-h,{elevationSample:s,elevationSource:n,extent:this.footprintExtent});let m;if("elevationSample"in p&&te(p.elevationSample)&&(i.elevationSample=p.elevationSample),"default"===r){const t=Y(o,a[0],a[1]);m=await $(Array.isArray(e)?e:[e],{...t,cameraLocation:u},p)}else{const t=re(o,a[0],a[1]);m=await J(Array.isArray(e)?e:[e],{...t,cameraLocation:u},p)}return Array.isArray(e)?m:m[0]}async plotMapPoint(e){return this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.currentBestFeature,selectedLocation:e,options:{signal:this._transformController?.signal}})}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),null!=e&&(this._referencePointOnGround=new t({geometry:new R({...e.toJSON()}),symbol:Ie}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){if("image-loaded"===this.state)switch(this.clearReferencePointOnImage(),this.mode){case"default":{const i=c.isSerializable(e)?e.toJSON():e;i.x-=.5,i.y=.5-i.y,this._referencePointOnImage=new t({geometry:new R({spatialReference:this._imageViewer.imageRenderer.spatialReference.clone(),...i}),symbol:Ie}),this._imageViewer.addGraphic(this._referencePointOnImage,0);break}case"panoramic":{const{imageSize:i}=this._panoramicViewer;if(!i)return;const[r,a]=i,{heading:s,pitch:o}=X(e,r,a),n=se(s,o);this._referencePointOnImage=new t({geometry:new R(n,G.WebMercator),symbol:ke}),this._panoramicViewer.addGraphic(this._referencePointOnImage,0);break}}}removeAllOverlayMapFeatures(){this.overlayedMapFeatures.forEach((e=>{this._imageViewer.removeManyGraphics(e.toArray())})),this.overlayedMapFeatures.clear()}removeOverlayedGraphicsOnImage(e){const t=this.overlayedMapFeatures.get(e);t?.length&&(this.activeViewer?.removeManyGraphics(t.toArray()),this.overlayedMapFeatures.delete(e))}resetImage(){switch(this.setMessage("onLoadMessage","info"),this.mode){case"default":this._imageViewer.clearImage(),this._imageViewer.clearGraphics();break;case"panoramic":this._panoramicViewer.clearGraphics()}this._clickTask=m(this._clickTask)}resetMeasurementData(e){switch(e){case"area":this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0;break;case"distance":this.distanceMeasurementResult=0,this.distanceAccuracyArray=[]}}async saveDigitizedFeatures(e){const{activeViewer:t,currentBestFeature:r,digitizationLayer:a,mode:s}=this,o=t?.imageSize;if(!o||!r||!s)throw new n("Image size, current best feature and mode are required to save digitized features");if(!a)throw new n("Digitization layer is not available");const l=await Promise.all(e.map((async e=>{const t=e.clone(),{geometry:i}=t;if(i)if(i.type===a.geometryType)switch(i.type){case"point":return t.geometry=await this.getMapPoint({x:i.x+.5,y:.5-i.y},{feature:r,imageSize:o,mode:s}),t;case"polygon":{const e=await Promise.all(i.rings.map((async e=>this.getMapPoint(e.map((([e,t])=>({x:e+.5,y:.5-t}))),{feature:r,imageSize:o,mode:s}))));return t.geometry=new O({spatialReference:e[0][0].spatialReference,hasZ:!0,rings:e.map((e=>e.map(ie)))}),t}case"polyline":{const e=await Promise.all(i.paths.map((async e=>this.getMapPoint(e.map((([e,t])=>({x:e+.5,y:.5-t}))),{feature:r,imageSize:o,mode:s}))));return t.geometry=new j({spatialReference:e[0][0].spatialReference,hasZ:!0,paths:e.map((e=>e.map(ie)))}),t}case"mesh":case"multipoint":return void u.getLogger(this).warn("saveDigitizedFeatures:unsupported geometry type",{message:"only point, polygon, polyline are supported for digitization",geometryType:i.type,graphic:t})}else u.getLogger(this).warn("saveDigitizedFeatures:geometry type mismatch",{expected:a.geometryType,actual:i.type,graphic:t})}))),c=l.filter(i);return a.applyEdits({addFeatures:c}).then((e=>{const{addFeatureResults:t}=e;let i=0;const r=l.map((e=>{const r=t[i++];return e?r:{error:new n("Error in saving digitized features"),objectId:null,globalId:null}}));return{...e,addFeatureResults:r}}))}async searchBestImage(e,t){try{const i=await E(e,t);i&&await this._processFeatureResponse(i,e.point,{signal:t?.signal})}catch(i){y(i)||(this.setMessage("imageLoadError","error",i.message),u.getLogger(this).error("error occurred while finding best image",i))}}selectBestFeature(e){this.currentBestFeature=this.features?.find((({attributes:t})=>t.objectId===Number(e)))}setAdditionalCameraLocationsVisibility(e){this.additionalCameraLocations.forEach((t=>{t.visible=e}))}setAdditionalCoverageVisibility(e){this.additionalFootprints.forEach((t=>{t.visible=e}))}setCurrentCoverageVisibility(e){this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.visible=e),this.currentBestFeatureLocation&&(this.currentBestFeatureLocation.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}toggleAllOverlayMapFeatures(e){this.overlayedMapFeatures.forEach((t=>{this._toggleVisiblity(t,e)}))}toggleOverlayMapFeatures(e,t){const i=this.overlayedMapFeatures.get(e);i&&this._toggleVisiblity(i,t)}async transformAndPlotReferencePointOnImage(e){const{selectedLocation:t,options:i}=e;let r=!1,a=!1;const s=this.bestFeatureFootprint?.geometry;switch(s?.type){case"polygon":{const e=t.spatialReference.equals(s.spatialReference)?t:await z(t,s.spatialReference);r=s.contains(e);break}case"mesh":{const e=t.spatialReference.equals(s.spatialReference)?t:await z(t,s.spatialReference);a=s.extent.contains(e);break}}if(!r&&!a)return void this.clearReferencePointOnImage();const o=await this.worldToImage(t,i);if(o)return f(i),this.plotReferencePointOnImage(o),{x:o.x,y:o.y};this.clearReferencePointOnImage()}updateSuitabilities(e){e.sort(((e,t)=>e.suitability-t.suitability)),this._suitabilities=e;const t=this._suitabilities.map((({feature:e})=>e));this._initialCurrentCoverageUpdate=!0,this._updateFeatures(t),this._groupFeaturesBySectors()}async _fetchFeatures(e,t){if(!this.view)return;const i=this.layer;if(i){const r={include:i},a=this.view.toScreen(e);if(!a)return;const s=await this.view.hitTest(a,r);return this._processHitTestResults(i,s,t)}}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(i){if(y(i))return;this.setMessage("imageLoadError","error"),u.getLogger(this).error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,additionalFeatures:t,currentBestFeature:i,features:r,invalidCameraHeading:a}=this;if(!e||!t||!i||!r||a)return void(this._sectorData=null);this._sectorData={};for(const c of ye)this._sectorData[c]=new s;const o=e.map(((e,t)=>({...e,featureIndex:t})));o.sort(((e,t)=>e.trueSuitability-t.trueSuitability));const n=o.map((({distance:e})=>e)),l=Math.max(...n);o.forEach((e=>{const{distance:t,angle:i,featureIndex:a}=e,s=t/l*fe[2],o=ze(t,l),n=Ge(i);if(!this._sectorData)return;const c=fe[3]+s*Math.sin(i*Math.PI/180),h=fe[3]+s*Math.cos(i*Math.PI/180);let u;const p=r.at(a),m=p===this.currentBestFeature,d=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;if(m&&d)u=-90;else{const e=c-fe[3],t=h-fe[3],i=t/Math.sqrt(e**2+t**2);let r=180*Math.acos(i)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(r*=-1),u=r}const g=""===o?n:`${o}_${n}`;m&&(u===this.bestFeatureAngle?this.previousFeatureAngle=u:this.bestFeatureAngle=u,this.navigatorCurrentBestFeature=d?null:{x:c,y:h,direction:n});const y=this._sectorData[g];y.add({angle:i,featureIndex:a,x:c,y:h,objectID:p.attributes.objectId,sector:g,featureIndexInSector:y.length})}))}async _processFeatureResponse(e,t,i){const{features:r}=e;if(!r?.length)return this.setMessage("noImageError","error"),void(this.currentBestFeature=null);this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll();const{features:a,polygons:s,frustums:o}=this.filterByFootprints(r,t);if(!a.length)return this.setMessage("noImageError","error"),void(this.currentBestFeature=null);let n;if(this.coveragePolygons.addMany(s),this.coverageFrustums.addMany(o),s[0]){let e=new O({spatialReference:s[0].spatialReference});for(const i of s)e=await A(e,i);const t=[];for(const{geometry:i}of a)e.contains(i)||t.push([i.x,i.y]);if(t.sort(((e,t)=>+L([e,t]))),e.addRing(t),this.footprintExtent=pe(e.extent,2,2),this.view?.supportsGround)try{n=await this.view.map.ground.createElevationSampler(this.footprintExtent,i)}catch(l){y(l)||u.getLogger(this).error(l)}}if((n||a[0].attributes.elevationSource)&&this.footprintExtent){const e=a[0].attributes.elevationSource;q(e)&&!n&&(n=await K({extent:this.footprintExtent,lod:e.lod,url:e.url,rasterFunction:e.rasterFunction}));const i=await ee((a[0].attributes.location.z??0)-a[0].attributes.cameraHeight,{elevationSample:n,elevationSource:e,extent:this.footprintExtent}),[r,...s]=await Z([t,...a.map((e=>e.attributes.geometry.clone()))],i);a[0].elevationSample=n??i.elevationSample,t.elevation=r.z,a.forEach(((e,t)=>{e.attributes.elevation=s[t].z}))}a[0].elevationSample&&a.forEach((e=>{e.elevationSample=a[0].elevationSample})),this._suitabilities=H({features:a,selectedPoint:t,camera:Oe(this.view)?this.view.camera:null,currentImage:this.currentBestFeature}),this.updateSuitabilities(this._suitabilities)}async _processHitTestResults(e,t,i){const{screenPoint:r,results:[a]}=t,s="graphic"===a?.type&&this.shouldShowSelectedImage,o=a?.mapPoint??this.view?.toMap(r);if(!o)return;const{layerFloorFilterClause:n}=this,l=e.spatialReference.equals(o.spatialReference)?o:await z(o,e.spatialReference),c=S("1=1",S(e.definitionExpression,n)),h=l.spatialReference.isGeographic?1:I(l.spatialReference),u={layerInstanceOrURL:e,point:l,queryParams:{where:c,maximumDistance:e.maximumDistance?e.maximumDistance/h:void 0,objectIds:s?[a.graphic.getAttribute(e.objectIdField)]:void 0}};await this.searchBestImage(u,i)}_toggleVisiblity(e,t){e.forEach((e=>{e.visible=t}))}_updateFeatures(e){if(!e.length)return this.currentBestFeature=null,void this.additionalFeatures.removeAll();this.features.removeAll(),this.features.addMany(e),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),this.currentBestFeature=e[0]}async _updatePointsAndPolygons(e){const{pointSources:i,currentBestFeature:r,currentCoverageVisible:a,isAdditionalPointSourcesVisible:s}=this;if(r&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await(this._adapter?.createFootprints(e)),f(e);for(const e of i)e.imageID===r.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:e.imageID},geometry:e,symbol:Ce,visible:a}):this.additionalCameraLocations.push(new t({attributes:{imageID:e.imageID},geometry:e,symbol:Se,visible:s}))}}_updateCurrentBestFeature(e){if(!e)return;this.currentBestFeature=this.features?.at(e.featureIndex);const t=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;let i;if(t)i=-90;else{const t=e.x-fe[3],r=e.y-fe[3],a=r/Math.sqrt(t**2+r**2);let s=180*Math.acos(a)/Math.PI;(t<0&&r<0||t<0&&r>0)&&(s*=-1),i=s}i===this.bestFeatureAngle?this.previousFeatureAngle=i:this.bestFeatureAngle=i,this.navigatorCurrentBestFeature=t?null:{x:e.x,y:e.y,direction:e.sector.includes("_")?e.sector.split("_")[1]:e.sector}}clearGraphics(){this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._referencePointOnImage=d(this._referencePointOnImage))}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}setMessage(e,t,i,r){this.displayMessage={key:e,type:t,data:i,map:r}}async transformAndPlotSelectedLocation(e){const{currentBestFeature:t,invalidCameraHeading:i,selectedPoint:r,state:a}=this;if(this._crossSymbol&&(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this._crossSymbol=d(this._crossSymbol)),!r||!t||"image-loaded"!==a||i)return;let s;try{s=await this.worldToImage(r,e),f(e),await this.plotSelectedPointOnImage(s,e)}catch(o){y(o)||u.getLogger(this).error("failed to transform map point to pixel, cross symbol will not be plotted on image",{error:o,selectedPoint:r,feature:t})}}async worldToImage(e,t){const{footprintExtent:i}=this,{imageSize:r}=this.activeViewer;if("none"===this.mode||!this.currentBestFeature||!r||!i)return;const{attributes:{location:a,elevationSource:s,cameraHeading:o,elevation:n,cameraHeight:l},elevationSample:c}=this.currentBestFeature;let h=a.clone();const u=await ee(n??(a.z??0)-l,{elevationSample:c,elevationSource:s});this.currentBestFeature.elevationSample=u.elevationSample;const p=Array.isArray(e)?e:[e];let m,d=await Promise.all(p.map((e=>new Promise((t=>{if(!e.hasZ)return t(Z(e,u));t(e)})))));if(a.spatialReference.isGeographic&&(h=await z(h,G.WebMercator,t)),d=await Promise.all(d.map((async e=>h.spatialReference.equals(e.spatialReference)?e:await z(e,h.spatialReference,t)))),f(t),"panoramic"===this.mode)m=ne(d,{imageHeight:r[1],imageWidth:r[0],cameraHeading:o,cameraLocation:h});else{const e=ae(this.currentBestFeature.attributes,r[0],r[1]);m=le(d,{...e,cameraLocation:h})}return Array.isArray(e)?m:m[0]}updateCurrentCoveragePolygon(e){const{additionalFootprints:i,additionalCameraLocations:r,currentBestFeature:a,currentBestFeatureLocation:s,currentCoverageVisible:o,selectedPoint:n,view:l,_adapter:c}=this,{attributes:{objectId:h},elevationSample:u}=a;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=d(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),l){const e=[...i,...r,this.bestFeatureCurrentFootprint,s].filter(je);l.supportsGround&&u&&c?.updateGroundElevation&&c.updateGroundElevation(e,u),n&&e.push(new t({geometry:n.clone(),symbol:be.clone(),attributes:{imageID:h}})),this._overlays.graphics.addMany(e)}}else if(l){if(this.invalidCameraHeading)return;this.bestFeatureCurrentFootprint&&(this._overlays?.remove(this.bestFeatureCurrentFootprint),this.bestFeatureCurrentFootprint=d(this.bestFeatureCurrentFootprint));const t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,l?.supportsGround&&u&&c?.updateGroundElevation&&c.updateGroundElevation([e],u),e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}};e([k()],De.prototype,"activeLayer",null),e([k({readOnly:!0})],De.prototype,"activeViewer",null),e([k()],De.prototype,"additionalFeatures",void 0),e([k({type:s.ofType(t)})],De.prototype,"additionalCameraLocations",void 0),e([k({type:s.ofType(t)})],De.prototype,"additionalFootprints",void 0),e([k()],De.prototype,"areaMeasurementResult",void 0),e([k()],De.prototype,"areaMeasurementAccuracy",void 0),e([k()],De.prototype,"bestFeatureAngle",void 0),e([k()],De.prototype,"bestFeatureCurrentFootprint",void 0),e([k({type:t})],De.prototype,"bestFeatureFootprint",void 0),e([k({type:Number})],De.prototype,"brightness",null),e([k({type:Number})],De.prototype,"contrast",null),e([k()],De.prototype,"conversionProps",void 0),e([k()],De.prototype,"coverageFrustums",void 0),e([k()],De.prototype,"coveragePolygons",void 0),e([k()],De.prototype,"currentBestFeature",void 0),e([k()],De.prototype,"currentBestFeatureLocation",void 0),e([k()],De.prototype,"currentCoverageVisible",void 0),e([k({json:{write:!1}})],De.prototype,"determineWorkflowForFeature",void 0),e([k()],De.prototype,"disabled",void 0),e([k()],De.prototype,"displayMessage",void 0),e([k()],De.prototype,"displayNewMeasurementButton",void 0),e([k()],De.prototype,"distanceMeasurementResult",void 0),e([k()],De.prototype,"distanceAccuracyArray",void 0),e([k()],De.prototype,"digitizationLayer",void 0),e([k({readOnly:!0})],De.prototype,"featureCount",null),e([k()],De.prototype,"features",void 0),e([k({readOnly:!0})],De.prototype,"imageGalleryEnabled",null),e([k({readOnly:!0})],De.prototype,"imageLoaded",null),e([k({readOnly:!0})],De.prototype,"invalidCameraHeading",null),e([k()],De.prototype,"imagePointsInView",null),e([k()],De.prototype,"isAdditionalCoverageVisible",void 0),e([k()],De.prototype,"isAdditionalPointSourcesVisible",void 0),e([k()],De.prototype,"layer",void 0),e([k()],De.prototype,"layerView",null),e([k({readOnly:!0})],De.prototype,"layerFloorFilterClause",null),e([k({type:Number})],De.prototype,"localPort",void 0),e([k()],De.prototype,"mapImageConversionToolState",void 0),e([k()],De.prototype,"measureType",void 0),e([k()],De.prototype,"measurementGraphic",void 0),e([k({readOnly:!0,value:"none"})],De.prototype,"mode",null),e([k()],De.prototype,"navigatorCurrentBestFeature",void 0),e([k({type:s.ofType(t)})],De.prototype,"overlayedCameraLocations",void 0),e([k()],De.prototype,"overlayedMapFeatures",void 0),e([k()],De.prototype,"pointSources",void 0),e([k({readOnly:!0})],De.prototype,"popupEnabled",null),e([k()],De.prototype,"previousFeatureAngle",void 0),e([k()],De.prototype,"referencePoint",null),e([k({readOnly:!0})],De.prototype,"sectorData",null),e([k()],De.prototype,"selectedPoint",void 0),e([k({type:Number})],De.prototype,"sharpness",null),e([k()],De.prototype,"shouldShowSelectedImage",void 0),e([k()],De.prototype,"sketch",void 0),e([k()],De.prototype,"sketchAdapter",void 0),e([k({readOnly:!0})],De.prototype,"sketchGraphicsLayer",null),e([k({readOnly:!0})],De.prototype,"state",null),e([k({readOnly:!0})],De.prototype,"thumbnails",null),e([k()],De.prototype,"updateFootprint",void 0),e([k()],De.prototype,"updateFootprintPanorama",void 0),e([k({value:null})],De.prototype,"view",null),e([k()],De.prototype,"_adapter",void 0),e([k()],De.prototype,"_highlightedFeatureHandle",void 0),e([k()],De.prototype,"_imageViewer",void 0),e([k()],De.prototype,"_initialCurrentCoverageUpdate",void 0),e([k()],De.prototype,"_overlays",void 0),e([k({readOnly:!0})],De.prototype,"_overlaysView",null),e([k()],De.prototype,"_panoramicViewer",void 0),e([k()],De.prototype,"_referencePointOnGround",void 0),e([k()],De.prototype,"_referencePointOnImage",void 0),e([k()],De.prototype,"_sectorData",void 0),e([k({readOnly:!0})],De.prototype,"_updatingHandles",void 0),e([k()],De.prototype,"footprintExtent",void 0),De=e([C("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],De);const Ue=De;export{Ue as default};
|