@arcgis/core 5.1.0-next.25 → 5.1.0-next.27
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/PopupTemplate.d.ts +12 -8
- package/README.md +4 -5
- package/applications/Components/testUtils.js +1 -1
- package/applications/Components/viewUtils.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{7a2e9626d0853a6d1547.js → 01e4cc34be6265843258.js} +1 -1
- package/assets/esri/core/workers/chunks/0389ebb63510dd7024de.js +2 -0
- package/assets/esri/core/workers/chunks/03e20ac54d6f141b5001.js +1 -0
- package/assets/esri/core/workers/chunks/049ec6dcb5d9519029fe.js +1 -0
- package/assets/esri/core/workers/chunks/{54794b18edc584fd7515.js → 07528211e59740c47aaa.js} +1 -1
- package/assets/esri/core/workers/chunks/{6e32e7b2ea2ea1a1fc04.js → 1069b92c2c5fe5f0398b.js} +1 -1
- package/assets/esri/core/workers/chunks/17078f4ab1b3e33c80b4.js +1 -0
- package/assets/esri/core/workers/chunks/23079a2e584fca0bdb66.js +1 -0
- package/assets/esri/core/workers/chunks/{6fde745f3a62e7f5a97d.js → 36fd18a05ba503e6f3b5.js} +1 -1
- package/assets/esri/core/workers/chunks/{a78ac951c00f090d9024.js → 3a018c78859b5edec4fd.js} +1 -1
- package/assets/esri/core/workers/chunks/{abc2471cfa9430ca5645.js → 3a8f2f6ac3c3e7e71c00.js} +1 -1
- package/assets/esri/core/workers/chunks/{7189e03cc24f5c10865a.js → 4490f8eeeb2ee04daa9d.js} +2 -2
- package/assets/esri/core/workers/chunks/{593e9c8ac3b3b02deeb9.js → 4b4cf6efde26dd80f4ad.js} +1 -1
- package/assets/esri/core/workers/chunks/4e9b3b4b3dcce94c99a5.js +1 -0
- package/assets/esri/core/workers/chunks/{14792047c5519dd89828.js → 541619f434b643f0526d.js} +1 -1
- package/assets/esri/core/workers/chunks/{4fc6dd1423075e145b29.js → 5fff383615ba93adbf36.js} +1 -1
- package/assets/esri/core/workers/chunks/{25bc7c7bc2793d209640.js → 776c0c38b9179dda00b3.js} +1 -1
- package/assets/esri/core/workers/chunks/{e6f51f66b71e0d6525ec.js → 8dcc8df5925f66e45b8c.js} +1 -1
- package/assets/esri/core/workers/chunks/8eae33c4d8932b7a6bc1.js +1 -0
- package/assets/esri/core/workers/chunks/{f5c5a9e771074f780fc8.js → 94563b007647a9c4ad76.js} +1 -1
- package/assets/esri/core/workers/chunks/{0140dc583e20b031eac9.js → 952ff668d202e80b43b0.js} +1 -1
- package/assets/esri/core/workers/chunks/a061a17b62686f945e81.js +1 -0
- package/assets/esri/core/workers/chunks/{835d6dd8c5a00682d879.js → a1eb8c6fd9a885cbaec9.js} +1 -1
- package/assets/esri/core/workers/chunks/{9e7eea56e96f012f9ff4.js → a7d06c1553dfb6e83fe6.js} +1 -1
- package/assets/esri/core/workers/chunks/b1ddc837a6805a09d0da.js +1 -0
- package/assets/esri/core/workers/chunks/b9d68a5dcb50999d3a90.js +1 -0
- package/assets/esri/core/workers/chunks/{f12f96770a45ce6d1ed7.js → c3a0b38abf0a12a466fa.js} +1 -1
- package/assets/esri/core/workers/chunks/{e2661d39c48376163adf.js → c55c70dde682084867a2.js} +1 -1
- package/assets/esri/core/workers/chunks/{2de299ff3a902d380be6.js → c814abf3e67d9eadbc6b.js} +1 -1
- package/assets/esri/core/workers/chunks/c9bfe3d8416856c4a657.js +1 -0
- package/assets/esri/core/workers/chunks/e4faccd48060349b8da1.js +1 -0
- package/assets/esri/core/workers/chunks/{f1c1f7583fa13dff9b5c.js → e611f37bc22f75ce8a06.js} +44 -38
- package/assets/esri/core/workers/chunks/{deee88e3f1641c6ef5db.js → ee6f7c5d3c2f187645ff.js} +1 -1
- package/assets/esri/core/workers/chunks/ef29e9e575091ef3adbb.js +1 -0
- package/assets/esri/core/workers/chunks/{ef267b938327c41727c1.js → f89b7b0ccfbd1e5f9a0f.js} +1 -1
- package/assets/esri/core/workers/chunks/{c794f7be868e53ca4a8c.js → fb05f27710fb50691d7a.js} +1 -1
- package/assets/esri/themes/base/widgets/_OrientedImageryViewerNavigationUI.scss +4 -1
- 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/chunks/ImageMaterial.glsl.js +7 -7
- package/chunks/MeasurementArrow.glsl.js +5 -8
- package/chunks/ShadowCastAccumulate.glsl.js +5 -10
- package/chunks/ShadowHighlight.glsl.js +1 -1
- package/chunks/vec3.js +1 -1
- package/chunks/vec4.js +1 -1
- package/config.d.ts +2 -2
- package/config.js +1 -1
- package/editing/templateUtils.js +1 -1
- package/geometry/support/buffer/math/common.js +1 -1
- package/geometry/support/buffer/math/vec3.js +1 -1
- package/kernel.js +1 -1
- package/layers/Lyr3DWasmPerSceneView.js +1 -1
- package/layers/support/FeatureReductionBinning.d.ts +3 -4
- package/layers/support/FeatureReductionBinning.js +1 -1
- package/layers/support/FeatureReductionCluster.d.ts +3 -4
- package/layers/support/FeatureReductionCluster.js +1 -1
- package/layers/support/featureReductionProperties.js +1 -1
- package/package.json +3 -3
- package/renderers/FlowRenderer.d.ts +6 -2
- package/support/actions/ActionBase.d.ts +5 -3
- package/support/actions/ActionBase.js +1 -1
- package/support/basemapDefinitions.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/Font.d.ts +1 -1
- package/symbols/TextSymbol.d.ts +1 -1
- package/symbols/cim/CIMSymbolRasterizer.js +1 -1
- package/symbols/support/densifyForPreview.js +2 -0
- package/symbols/support/previewSymbol2D.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
- package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
- package/views/2d/engine/vectorTiles/VectorTileContainer.js +1 -1
- package/views/2d/engine/vectorTiles/expression/expression.js +1 -1
- package/views/2d/engine/vectorTiles/shaders/VTLMaterial.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderFill.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/vector-tiles/VTLShaderLine.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/imagery/VectorFieldView2D.js +1 -1
- package/views/3d/GroundView3D.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/environment/CloudsComposition.js +1 -1
- package/views/3d/environment/CloudsRenderer.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/environment/LocalAtmosphere.js +1 -1
- package/views/3d/environment/MarsAtmosphere.js +1 -1
- package/views/3d/environment/NoiseTextureAtlas.js +1 -1
- package/views/3d/environment/Precipitation.js +1 -1
- package/views/3d/environment/PrecipitationTechnique.js +1 -1
- package/views/3d/layers/MediaLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +12 -6
- package/views/3d/webgl-engine/core/shaderTechnique/ShaderTechniqueRepository.js +1 -1
- package/views/3d/webgl-engine/effects/RenderNodes.js +1 -1
- package/views/3d/webgl-engine/effects/blit/Blit.js +1 -1
- package/views/3d/webgl-engine/effects/focusArea/FocusAreaColorNode.js +1 -1
- package/views/3d/webgl-engine/effects/focusArea/FocusAreaColorTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/focusArea/FocusAreaMaskNode.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowBlurTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowCompositionTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/glow/GlowRenderNode.js +1 -1
- package/views/3d/webgl-engine/effects/haze/Haze.js +1 -1
- package/views/3d/webgl-engine/effects/haze/HazeCompositingTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/Highlight.js +1 -1
- package/views/3d/webgl-engine/effects/highlight/ShadowHighlight.js +1 -1
- package/views/3d/webgl-engine/effects/laserlines/LaserLineRenderer.js +1 -1
- package/views/3d/webgl-engine/effects/magnifier/Magnifier.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAA.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAABlendWeightsTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAABlurTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/smaa/SMAAEdgeDetectTechnique.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/effects/stars/Stars.js +1 -1
- package/views/3d/webgl-engine/lib/BasisUtil.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillColor.js +1 -1
- package/views/3d/webgl-engine/lib/CutFillDepth.js +1 -1
- package/views/3d/webgl-engine/lib/GaussianSplatRenderNode.js +1 -1
- package/views/3d/webgl-engine/lib/Program.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/Viewshed.js +1 -1
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/shaders/ImageMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrowTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrowTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowCastAccumulate.glsl.js +1 -1
- package/views/layers/MediaLayerView.d.ts +90 -4
- package/views/layers/MediaLayerView.js +1 -1
- package/views/support/waitForResources.js +1 -1
- package/widgets/Features/FeaturesViewModel.d.ts +14 -19
- package/widgets/Features.d.ts +1 -1
- package/widgets/Measurement.d.ts +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/Arrow.js +1 -1
- package/widgets/Popup.d.ts +1 -1
- package/widgets/ValuePicker.d.ts +1 -1
- package/widgets/support/legacyIcon.js +1 -1
- package/assets/esri/core/workers/chunks/1be4e308280149eae4fb.js +0 -1
- package/assets/esri/core/workers/chunks/1dcd057695f8db79eca2.js +0 -1
- package/assets/esri/core/workers/chunks/1df8330823841b5bb6a5.js +0 -1
- package/assets/esri/core/workers/chunks/2063b49607a03f7718ee.js +0 -1
- package/assets/esri/core/workers/chunks/2b76a8897ad7ba284d33.js +0 -1
- package/assets/esri/core/workers/chunks/36da644678e6acf3bdb5.js +0 -1
- package/assets/esri/core/workers/chunks/4754610760f3f634adf9.js +0 -2
- package/assets/esri/core/workers/chunks/551fee27bf3abf0c41fd.js +0 -1
- package/assets/esri/core/workers/chunks/57b620d7e029747adca3.js +0 -1
- package/assets/esri/core/workers/chunks/74e3c224e879edb37812.js +0 -1
- package/assets/esri/core/workers/chunks/868c8a152cb1452b9a94.js +0 -1
- package/assets/esri/core/workers/chunks/e839c5f3a0213091a399.js +0 -1
- package/assets/esri/core/workers/chunks/feececf6809231f72c5a.js +0 -1
- package/views/layers/MediaLayerViewMixin.d.ts +0 -109
- package/views/layers/MediaLayerViewMixin.js +0 -2
- /package/assets/esri/core/workers/chunks/{4754610760f3f634adf9.js.LICENSE.txt → 0389ebb63510dd7024de.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{7189e03cc24f5c10865a.js.LICENSE.txt → 4490f8eeeb2ee04daa9d.js.LICENSE.txt} +0 -0
|
@@ -39,15 +39,14 @@ export interface FeaturesViewModelProperties extends GoToProperties, Partial<Pic
|
|
|
39
39
|
* @see [Sample - Popup actions](https://developers.arcgis.com/javascript/latest/sample-code/popup-actions/)
|
|
40
40
|
* @example
|
|
41
41
|
* // Defines an action button to zoom out from the selected feature
|
|
42
|
-
* const zoomOutAction = {
|
|
43
|
-
* type: "button",
|
|
42
|
+
* const zoomOutAction = new ActionButton({
|
|
44
43
|
* // This text is displayed as a tooltip
|
|
45
44
|
* title: "Zoom out",
|
|
46
45
|
* // The ID by which to reference the action in the event handler
|
|
47
46
|
* id: "zoom-out",
|
|
48
47
|
* // Sets the icon used to style the action button
|
|
49
48
|
* icon: "magnifying-glass-minus"
|
|
50
|
-
* };
|
|
49
|
+
* });
|
|
51
50
|
* // Adds the custom action to the popup.
|
|
52
51
|
* view.popup.viewModel.actions.push(zoomOutAction);
|
|
53
52
|
*
|
|
@@ -117,19 +116,19 @@ export interface FeaturesViewModelEvents {
|
|
|
117
116
|
* location: event.mapPoint,
|
|
118
117
|
* fetchFeatures: true,
|
|
119
118
|
* featureMenuOpen: true,
|
|
120
|
-
* actions: [{
|
|
119
|
+
* actions: [new ActionButton({
|
|
121
120
|
* // This text is displayed as a tooltip
|
|
122
121
|
* title: "Zoom out",
|
|
123
122
|
* // The ID used to reference this action in the event handler
|
|
124
123
|
* id: "zoom-out",
|
|
125
|
-
* // Sets the icon
|
|
126
|
-
*
|
|
127
|
-
* },
|
|
128
|
-
* {
|
|
124
|
+
* // Sets the icon for the action button
|
|
125
|
+
* icon: "magnifying-glass"
|
|
126
|
+
* }),
|
|
127
|
+
* new ActionButton({
|
|
129
128
|
* title: "Delete Feature",
|
|
130
129
|
* id: "delete-feature-action",
|
|
131
130
|
* icon: "trash"
|
|
132
|
-
* }]
|
|
131
|
+
* })]
|
|
133
132
|
* });
|
|
134
133
|
*
|
|
135
134
|
* // Fires each time an action is clicked
|
|
@@ -145,15 +144,14 @@ export interface FeaturesViewModelEvents {
|
|
|
145
144
|
* });
|
|
146
145
|
* @example
|
|
147
146
|
* // Defines an action button to zoom out from the selected feature
|
|
148
|
-
* const zoomOutAction = {
|
|
149
|
-
* type: "button",
|
|
147
|
+
* const zoomOutAction = new ActionButton({
|
|
150
148
|
* // This text is displayed as a tooltip
|
|
151
149
|
* title: "Zoom out",
|
|
152
150
|
* // The ID by which to reference the action in the event handler
|
|
153
151
|
* id: "zoom-out",
|
|
154
152
|
* // Sets the icon used to style the action button
|
|
155
153
|
* icon: "magnifying-glass-minus"
|
|
156
|
-
* };
|
|
154
|
+
* });
|
|
157
155
|
* // Adds the custom action to the popup.
|
|
158
156
|
* view.popup.actions.push(zoomOutAction);
|
|
159
157
|
*
|
|
@@ -170,15 +168,14 @@ export interface FeaturesViewModelEvents {
|
|
|
170
168
|
* });
|
|
171
169
|
* @example
|
|
172
170
|
* // Defines an action button to zoom out from the selected feature
|
|
173
|
-
* const zoomOutAction = {
|
|
174
|
-
* type: "button",
|
|
171
|
+
* const zoomOutAction = new ActionButton({
|
|
175
172
|
* // This text is displayed as a tooltip
|
|
176
173
|
* title: "Zoom out",
|
|
177
174
|
* // The ID by which to reference the action in the event handler
|
|
178
175
|
* id: "zoom-out",
|
|
179
176
|
* // Sets the icon used to style the action button
|
|
180
177
|
* icon: "magnifying-glass-minus"
|
|
181
|
-
* };
|
|
178
|
+
* });
|
|
182
179
|
* // Adds the custom action to the popup.
|
|
183
180
|
* view.popup.actions.push(zoomOutAction);
|
|
184
181
|
*
|
|
@@ -204,7 +201,6 @@ export interface FeaturesViewModelEvents {
|
|
|
204
201
|
* @see [Features](https://developers.arcgis.com/javascript/latest/references/core/widgets/Features/) widget - _Deprecated since 4.34. Use the [Features component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-features) instead._
|
|
205
202
|
* @see [Features component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-features/)
|
|
206
203
|
* @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/)
|
|
207
|
-
* @see [Guide - Esri Icon Font](https://developers.arcgis.com/javascript/latest/esri-icon-font/)
|
|
208
204
|
*/
|
|
209
205
|
export default class FeaturesViewModel extends FeaturesViewModelSuperclass {
|
|
210
206
|
/**
|
|
@@ -232,15 +228,14 @@ export default class FeaturesViewModel extends FeaturesViewModelSuperclass {
|
|
|
232
228
|
* @see [Sample - Popup actions](https://developers.arcgis.com/javascript/latest/sample-code/popup-actions/)
|
|
233
229
|
* @example
|
|
234
230
|
* // Defines an action button to zoom out from the selected feature
|
|
235
|
-
* const zoomOutAction = {
|
|
236
|
-
* type: "button",
|
|
231
|
+
* const zoomOutAction = new ActionButton({
|
|
237
232
|
* // This text is displayed as a tooltip
|
|
238
233
|
* title: "Zoom out",
|
|
239
234
|
* // The ID by which to reference the action in the event handler
|
|
240
235
|
* id: "zoom-out",
|
|
241
236
|
* // Sets the icon used to style the action button
|
|
242
237
|
* icon: "magnifying-glass-minus"
|
|
243
|
-
* };
|
|
238
|
+
* });
|
|
244
239
|
* // Adds the custom action to the popup.
|
|
245
240
|
* view.popup.viewModel.actions.push(zoomOutAction);
|
|
246
241
|
*
|
package/widgets/Features.d.ts
CHANGED
|
@@ -100,7 +100,7 @@ export interface FeaturesEvents extends FeaturesViewModelEvents {}
|
|
|
100
100
|
* @deprecated since version 4.34. Use the [Features component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-features/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
|
|
101
101
|
* @since 4.27
|
|
102
102
|
* @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/)
|
|
103
|
-
* @see [Guide - Esri Icon Font](https://developers.arcgis.com/javascript/latest/esri-icon-font/)
|
|
103
|
+
* @see [Deprecated since 5.1 - Guide - Esri Icon Font](https://developers.arcgis.com/javascript/latest/esri-icon-font/)
|
|
104
104
|
* @see [FeaturesViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Features/FeaturesViewModel/)
|
|
105
105
|
* @example
|
|
106
106
|
* // Create a new instance of Features and set this on the View's
|
package/widgets/Measurement.d.ts
CHANGED
|
@@ -86,7 +86,7 @@ export type MeasurementWidget = AreaMeasurement | DistanceMeasurement;
|
|
|
86
86
|
* - all three distances (direct, horizontal, and vertical), areas, and perimeters are computed in
|
|
87
87
|
* a Euclidean manner (in their respective PCS).
|
|
88
88
|
*
|
|
89
|
-
* @deprecated since version 5.0. Use the [Area Measurement 2D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-2d/), [Area Measurement 3D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/), [Direct Line Measurement 3D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-direct-line-measurement-3d/), or [Distance Measurement 2D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-distance-measurement/) components instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
|
|
89
|
+
* @deprecated since version 5.0. Use the [Area Measurement 2D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-2d/), [Area Measurement 3D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-area-measurement-3d/), [Direct Line Measurement 3D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-direct-line-measurement-3d/), or [Distance Measurement 2D](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-distance-measurement-2d/) components instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
|
|
90
90
|
* @since 4.13
|
|
91
91
|
* @see [MeasurementViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Measurement/MeasurementViewModel/)
|
|
92
92
|
* @see [Sample - Measurement widget](https://developers.arcgis.com/javascript/latest/sample-code/widgets-measurement/)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{equals as i,isSome as a}from"../../core/arrayUtils.js";import{createTask as r}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{EventedMixin as l}from"../../core/Evented.js";import{makeHandle as c}from"../../core/handleUtils.js";import{equalsShallow as h}from"../../core/lang.js";import d from"../../core/Logger.js";import{clamp as u}from"../../core/mathUtils.js";import{destroyMaybe as p,abortMaybe as m}from"../../core/maybe.js";import{EsriPromise as g}from"../../core/Promise.js";import{isAbortError as y,throwIfAborted as v,waitTick as f}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{whenOnce as F,on as _,watch as M,syncAndInitial as b,initial as I,when as V}from"../../core/reactiveUtils.js";import{sqlAnd as P}from"../../core/sql.js";import{getMetersPerUnitForSR as S}from"../../core/units.js";import{property as A,subclass as C}from"../../core/accessorSupport/decorators.js";import{isSerializable as k}from"../../core/support/jsonUtils.js";import{UpdatingHandles as T}from"../../core/support/UpdatingHandles.js";import L from"../../geometry/Extent.js";import j from"../../geometry/Point.js";import{projectAsync as G}from"../../geometry/projectionUtils.js";import O from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as E}from"../../geometry/support/centroid.js";import{isClockwise as x}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as B}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as R}from"../../geometry/support/webMercatorUtils.js";import H from"../../layers/GraphicsLayer.js";import D from"../../layers/MediaLayer.js";import{searchImages as z,getSortedLayerFeatures as N}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as U}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as q,computePolygonForInspection as $,resizePolygon as W,checkIfPolygonContainsSelectedPoint as J}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as Z}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{getMetersPerUnitOfSR as K,convertGeographicToWebMercator as Q}from"../../layers/orientedImagery/core/utils.js";import X from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as Y}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as ee,getInitialAngle as te,convertPixelLocationToSphereVertex as ie,getUpdateElevationProps as ae,getImageToWorldProperties as re,getImageToWorldPanoramicProperties as se}from"../../layers/orientedImagery/transformations/utils.js";import oe from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as ne}from"../../layers/support/floorFilterUtils.js";import le from"../../layers/support/VideoElement.js";import ce from"../../views/MapView.js";import he from"../../views/draw/Draw.js";import{scale as de}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as ue}from"../../views/input/InputManager.js";import pe from"../PanoramicVideoViewer.js";import me from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as ge,videoMapViewConstraint as ye,clockwiseDirections as ve,sampleExtent as fe,videoExtent as we,invalidCameraHeading as Fe,sectorsInOrder as _e,sectorsRadii as Me,fixedImageSize as be}from"./constants.js";import{isFeatureAttachment as Ie}from"./galleryUtils.js";import{crossSymbol as Ve,crossSymbol3D as Pe,measurementPolygonSymbol as Se,polylineSymbolPanoramic as Ae,measurementPolylineSymbol as Ce,cameraOverlaySymbol3D as ke,cameraOverlaySymbol as Te,diamondSymbol as Le,diamondSymbol3D as je,activeSourcePointSymbol as Ge,sourcePointSymbol as Oe}from"./symbols.js";import{registryKeys as Ee}from"./types.js";import{isNoAttachmentError as xe,extractHorizonAnglesFromMedia as Be,isTifOrMrf as Re,filterOILLayerView as He,assignElevationSampleToFeatures as De,filterByZ as ze,createPanoramicMedia as Ne,createNonPanoramicMedia as Ue,isSceneView as qe,isGraphic as $e,calculateSegment as We,calculateDirection as Je}from"./utils.js";import{disableVideoZoomAndPan as Ze,getUpdatedConstraints as Ke,getUpdatedExtentPoints as Qe}from"./videoViewerUtils.js";import Xe from"./components/ImageViewer.js";import Ye from"./components/NavigationNode.js";import et from"./components/OrientedImageryVideoViewModel.js";import{NoFeatureFoundWithObjectIdError as tt}from"./navigation/errors.js";import{queryFeatureByObjectIds as it}from"./navigation/queries.js";import{ImageMeasurementService as at}from"./services/ImageMeasurementService.js";import{configureSketchTool as rt,extractFieldsFromDataCaptureLayer as st,constructGraphicFromImageGeometry as ot}from"./support/dataCaptureUtils.js";import{imageSpaceToPoint as nt,removeZFromGeometry as lt}from"./support/geometryUtils.js";import ct from"./support/resolveMediaProps.js";import{isValidDataCaptureLayer as ht}from"./support/typeUtils.js";const dt=()=>new n("orientedimageryviewer:sketch-not-initialized","Sketch property is not initialized, call loadSketch first");let ut=class extends(l(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.cameraHeadingThreshold=ge,this.cameraPitchThreshold=ge,this.clickAction="hittest",this.correctedLocationPointOnImage=null,this.videoViewModel=null,this.collectionId=null,this.coverageFrustums=new s,this.coveragePolygons=new s,this.currentBestFeature=null,this.currentBestFeatureMeasurementImage=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.depthImage=null,this.featureCache=[],this.navigationNodes=new s,this.determineWorkflowForFeature=async(e,t,i)=>{const{currentBestFeature:a,selectedPoint:r}=this;if(this.emit("popup-close"),a&&r){this._initialCurrentCoverageUpdate=!0,this._updateGroundElevation=!0;try{await this._updatePointsAndPolygons(i),await this._loadDepthImage(i),await this._loadImage(i)}catch(s){y(s)||(this.loadImageError(s),d.getLogger(this).error("#loadIImage()","error occured while loading image",s))}}},this.determineWorkflowForTriangularMeasurement=async(e,t,i)=>{if(this.emit("popup-close"),this.currentBestFeatureMeasurementImage&&this.selectedPoint)try{await this._loadMeasurementViewerImage(i)}catch(a){y(a)||(this.loadImageError(a),d.getLogger(this).error("#loadIImage()","error occured while loading image",a))}},this.disabled=!1,this.displayMessage={key:"onLoadMessage",type:"info"},this.displayNewMeasurementButton=!0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.dataCaptureLayer=null,this.features=new s,this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.heightGraphic=null,this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.imageGeometryField=null,this.imageLocationToolState=!1,this.initialVideoMapViewExtent=null,this.imageMeasurementViewer=new Xe,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.locationPointOnImage=null,this.mapImageConversionToolState=!1,this.measureType=null,this.measurementGraphic=null,this.navigatorCurrentBestFeature=null,this.oiObjectIdField=null,this.overlayedCameraLocations=new s,this.overlayedMapFeatures=new w,this.pixelCoordinates=null,this.preserveAngle="none",this.pointSources=new s,this.preloadMedia=!1,this.preloadMediaSize=5,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.sketch=null,this.sketchTriangular=null,this.sketchTriangularGraphicsLayer=null,this.draw=null,this.drawAdapter=null,this.polylineDrawAction=null,this.scheduledFrameId=null,this.sketchAdapter=null,this.triangularMeasurementActive=!1,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedAreaAccuracy=0,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.triangulatedMeasurementAdapter=null,this.updateFootprint=async(e,t,i)=>{"default"===this.mode&&"image-loaded"!==this.state||await(this._adapter?.updateFootprint(e,t,i))},this.updateVideoFootprint=async e=>{this.mode.includes("video")&&this.videoElement?.content&&await(this._adapter?.updateVideoFootprint(e))},this.updateFootprintPanorama=async(e,t)=>{await(this._adapter?.updateFootprintPanorama(e,t))},this.updatingTriangularMeasurementState=!1,this.videoElement=null,this.videoLayer=null,this.videoMapView=new ce({map:new Map,constraints:ye}),this.verticalFilterEnabled=!1,this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new Xe,this._initialCurrentCoverageUpdate=!0,this._locationViewModel=null,this._measurementService=null,this._mediaPrefetcher=null,this._navigationManager=null,this._overlays=new H({listMode:"hide",internal:!0,elevationInfo:{mode:"absolute-height"},title:"OrentedImageryViewerViewModel overlays layer"}),this._panoramicVideoViewer=new pe,this._panoramicViewer=new me,this._panoramicMeasurementViewer=new me,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new T,this._clickTask=null,this._crossSymbol=null,this.footprintExtent=null,this._featureChangedTask=null,this._mediaPrefetchTask=null,this._suitabilities=null,this._transformController=new AbortController,this._updateFootprintTask=null,this._updateGroundElevation=!1,this.addUpdatingPromise=e=>this._updatingHandles.addPromise(e),this.filterCapturedFeatures=e=>{const t=this.currentBestFeature?.attributes.objectId,i=this.layer?.imageReferenceField;if(!t||!e||!i)return;const a=this.overlayedMapFeatures.get(e);a?.forEach(e=>{const a=e.attributes??{},r=Object.keys(a).find(e=>e.toLowerCase()===i.toLowerCase());(r?a[r]:null)!==t&&(e.visible=!e.visible)})},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.loadDataCaptureAdapter=async e=>{await this.loadSketch(e);const t=import("./adapters/sketch/DataCaptureAdapter.js"),{default:i}=await t;return v(e),this.sketchAdapter=new i({viewModel:this}),this.sketchAdapter},this.loadImageFromFeature=(e,t,i)=>this._updatingHandles.addPromise(this._loadImageFromFeature(e,t,i)),this.storeImageMeasurementViewer=e=>{this.imageMeasurementViewer=e},this.storePanoramicMeasurementViewer=e=>{this._panoramicMeasurementViewer=e},this.loadImageViewer=e=>{this._imageViewer?.destroy(),this._imageViewer=e},this.loadPanoramicViewer=e=>{this._panoramicViewer?.destroy(),this._panoramicViewer=e},this.loadPanoramicVideoViewer=e=>{this._panoramicVideoViewer?.destroy(),this._panoramicVideoViewer=e},this.loadVideoViewer=e=>{this.videoMapView.container=e},this.showImageByObjectId=async(e,t)=>{const i=this.additionalFeatures.find(({attributes:t})=>t.objectId===e);if(i)this.currentBestFeature=i;else{const{layer:i,layerFloorFilterClause:r,layerTimeExtent:s}=this;if(!i)return void this.setMessage("noLayerSelected","info");this.beforeLoad();const o=this._updatingHandles.addPromise(this._queryAndLoadByObjectId(i,e,r,s,t));try{await o,await this.selectBestFeature(e,t)}catch(a){y(a)||(d.getLogger(this).error("oriented-imagery-viewer:show-image",a),"NoFeatureFoundWithObjectIdError"===a.name?this.setMessage("noFeatureFoundWithObjectId","error","",{objectId:e}):this.setMessage("imageLoadError","error",a.message))}}},this.getSectorFeatureById=e=>this._suitabilities?.find(({feature:{attributes:{objectId:t}}})=>t===e),this.getFeatureSectorById=e=>this._featureToSector?.[`${e}`],this.navigate=async(e,t)=>{const{mode:i}=this;if("default"!==i&&"panoramic"!==i)throw new n("NavigationError","Navigation is only supported in 'default' and 'panoramic' modes.");const a=e=>"default"===i&&e.declaredClass.endsWith("NavigationManager")||"panoramic"===i&&e.declaredClass.endsWith("NavigationManagerPanoramic");if(null==this._navigationManager||!a(this._navigationManager)){p(this._navigationManager);const e="default"===i?import("./navigation/NavigationManager.js"):import("./navigation/NavigationManagerPanoramic.js");this._navigationManager=new(await e).default({viewModel:this})}return this._navigationManager.navigate(e,t)},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.selectBestFeature=async(e,t)=>(v(t),this.currentBestFeature=this.features?.find(({attributes:t})=>`${t.objectId}`==`${e}`),F(()=>"image-loaded"===this.state,t)),this.toggleImageAttributes=()=>{const{currentBestFeature:e,popupEnabled:i,layer:a,view:r}=this;if(this.emit("popup-close"),!(r&&e&&i&&a))return;const{attributes:s,geometry:o}=e,n=new t({geometry:o,attributes:s.toJSON(),origin:a.graphicOrigin});this.emit("popup-open",{features:[n],location:s.location.clone()})},this.updateSuitabilities=(e,t=!0)=>{e.sort((e,t)=>e.suitability-t.suitability),this._suitabilities=e;const i=this._suitabilities.map(({feature:e})=>e);this._initialCurrentCoverageUpdate=!0,this._updateFeatures(i,t),this._groupFeaturesBySectors()},this._createViewClickHandle=()=>{if(this.removeHandles(Ee.click),this.disabled||null==this.view)return;const e=this.mapImageConversionToolState&&"image-loaded"===this.state?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on("click",e,ue.DEFAULT),Ee.click)},this._createImageClickHandle=()=>{this.removeHandles(Ee.imageClick);const{mapImageConversionToolState:e,mode:t,activeViewer:i,currentBestFeature:a,footprintExtent:s}=this,o=i?.imageSize;if(!(e&&"none"!==t&&o&&s&&a))return;const n=i.clickAction;this.clickAction="pixel-location";const l=c(()=>{this.clickAction=n});let h=null;const d=_(()=>i,"pixel-location",e=>{this.plotReferencePointOnImage(e),h?.abort(),h=r(async t=>{if(!e)return;const i=await this._transformationService.pixelToMapPoint(e).then(e=>{const t=this.view?.spatialReference;return ee(!t,e.spatialReference.equals(t))?e:G(e,t)});v(t),this.plotReferencePointOnGround(i)})});this.addHandles([d,l],Ee.imageClick)},this._createTriangularImageClickHandle=()=>{this.removeHandles(Ee.triangularImageClick),this.triangularMeasurementActive&&"none"!==this.mode&&this.currentBestFeature&&this.currentBestFeatureMeasurementImage&&this.activeTriangulatedViewer&&this.addHandles(this.activeTriangulatedViewer.imageRenderer.on("double-click",this._measurementImageClickHandler),Ee.triangularImageClick)},this._enablePan=()=>{this.removeHandles(Ee.videoPanHandles)},this._disablePan=()=>{this.removeHandles(Ee.videoPanHandles),this.addHandles(Ze(this.videoMapView),Ee.videoPanHandles)},this._handleImageHitTestResponse=async e=>{const{layer:t,overlayedCameraLocations:i}=this;if(!t)return;const a=e.results.find(({graphic:e,graphic:{attributes:a}})=>i.includes(e)&&a&&!a[t.imageReferenceField]&&!a[t.imageGeometryField]);if(!a)return;const r=a.graphic.attributes[t.objectIdField];await this.showImageByObjectId(r)},this._loadDepthImage=async e=>{const{currentBestFeature:t,layer:i,depthImageNotSupported:a}=this;if(this.depthImage?.destroy(),this.depthImage=null,!i||!t||a)return;const{depthImage:r}=t.attributes;if(!r)return;const s=(await import("./services/DepthImageService.js")).default;v(e),this.depthImage=new s({url:r});try{await this.depthImage.load(e)}catch(o){y(o)||(d.getLogger(this).error("error occurred while loading depth image",o),this.depthImage?.destroy(),this.depthImage=null)}},this._loadImage=async e=>{const{currentBestFeature:t,layer:i,mode:a}=this;if(this.clearGraphics(),i&&t&&"none"!==a&&"video"!==a&&"panoramic-video"!==a)try{await this.loadImageFromFeature(i,t,e),v(e),await this.transformAndPlotSelectedLocation(e)}catch(r){y(r)||this.loadImageError(r)}},this._loadVideo=async e=>{const{currentBestFeature:t,mode:i,selectedPoint:a}=this,r=t?.attributes.imagePath;if(!t||"panoramic-video"!==i||!r)return;const{attributes:s}=t,{cameraPitch:o,cameraOrientation:n,location:l}=s,c=l.spatialReference.isWGS84&&4!==n?.type?R(l):new j(l);try{this._panoramicVideoViewer.viewModel.video&&(this._panoramicVideoViewer.viewModel.video.pause(),this._panoramicVideoViewer.viewModel.videoPaused=!0),this._panoramicVideoViewer.videoSource=r;let t=0;c&&a&&(t=await te(c,a)-t),this._panoramicVideoViewer.pitch=o??0,this._panoramicVideoViewer.yaw=t,await this._panoramicVideoViewer.loadVideo(e),v(e)}catch(h){y(h)||this.loadImageError(h)}},this._loadImageFromFeature=async(e,t,i)=>{const{mode:a}=this;if("default"!==a&&"panoramic"!==a)return;let r;try{r=await ct(t.attributes,e,i),v(i)}catch(f){if(y(f))return;return xe(f)?(d.getLogger(this).error(f),void this.setMessage("noAttachment","error",`${e.objectIdField}: ${t.attributes.objectId}`)):(d.getLogger(this).error(f,{[e.objectIdField]:t.attributes.objectId,layer:e}),void this.setMessage("imageLoadError","error",`query-attachments-failed:${e.objectIdField} ${t.attributes.objectId}`))}if(!r)return;const{mediaUrl:s,datasetFormat:o,rotation:n,searchParams:l,location:c,cameraHeading:h,matrix:u,cameraPitch:p,getDataSetFormatError:m}=r,g=`${t.attributes.objectId}`;try{let r=this._mediaPrefetcher?.getCachedMedia(g);if(!r){const i=this.navigationNodes.find(e=>e.id===t.attributes.objectId);if(i){try{await(this._mediaPrefetcher?.startPrefetchForNode(i,e))}catch(w){}r=this._mediaPrefetcher?.getCachedMedia(g)}}if(r){if("panoramic"===a){const e=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;let a=0;return c&&this.selectedPoint&&(a=await te(c,this.selectedPoint)-a),await e.loadMedia(r,i),this.selectedPoint?e.set({yaw:a,pitch:p}):"viewAngle"in t.attributes&&Number.isFinite(t.attributes.viewAngle)&&e.set({yaw:t.attributes.viewAngle,pitch:p}),void(this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i))}return await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,r,i),void(this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i))}}catch(w){}m&&d.getLogger(this).warn("error occurred while getting dataset format",m),"panoramic"===a?await this.loadPanoramicMediaSource({lookAt:{yaw:this.selectedPoint?await te(c,this.selectedPoint):"viewAngle"in t.attributes&&Number.isFinite(t.attributes.viewAngle)?t.attributes.viewAngle:0,pitch:p},extension:o?.toUpperCase(),url:s,cameraHeading:h,matrix:u},i):await this.loadMediaSource({datasetFormat:o?.toUpperCase(),url:s,customParameters:l,rotation:n},i),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i)},this._loadMeasurementViewerImage=async e=>{const{currentBestFeatureMeasurementImage:t,layer:i,mode:a}=this;if(this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics(),i&&t&&"none"!==a&&"video"!==a&&"panoramic-video"!==a)try{await this.loadImageFromFeature(i,t,e),v(e)}catch(r){y(r)||this.loadImageError(r)}},this._loadMediaPrefetcher=async e=>{if(!this._mediaPrefetcher){const{default:t}=await import("./support/MediaPrefetcher.js");v(e),this._mediaPrefetcher=new t({maxEntries:this.preloadMediaSize*ve.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{const{view:t}=this;if(t)switch(t.type){case"2d":{const{default:t}=await import("./adapters/view/MapViewAdapter.js");v(e),this._adapter=new t(this);break}case"3d":{const{default:t}=await import("./adapters/view/SceneViewAdapter.js");v(e),this._adapter=new t(this);break}}else this._adapter=null},this._mapImageConversionToolViewClickHandler=e=>{if(e.stopPropagation(),e.preventDefault(),e.mapPoint){const t=e.mapPoint;t.x=B(t.x,t.spatialReference),this.plotMapPoint(e.mapPoint)}},this._measurementImageClickHandler=e=>{e.stopPropagation(),e.preventDefault();const{sketchTriangular:t,triangularMeasurementActive:i,currentBestFeatureMeasurementImage:a,triangulatedMeasurementGraphic:r}=this;t&&i&&a&&r&&"active"!==t.state&&(t.update([r],{tool:"reshape"}),this.updatingTriangularMeasurementState=!0)},this._updateInteraction=()=>{const e=this.videoMapView.extent;if(!e)return;if(e.width<fe.xmax-fe.xmin&&e.height<fe.ymax-fe.ymin){this._enablePan();const t=Ke(e);t&&(this.videoMapView.constraints.geometry=t)}else this.initialVideoMapViewExtent&&!this.videoMapView.extent.equals(this.initialVideoMapViewExtent)&&(this.videoMapView.extent=this.initialVideoMapViewExtent),this._disablePan(),this.videoMapView.constraints.geometry=null},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=r(async t=>{const{pointerType:i,button:a,mapPoint:r}=e;if("mouse"===i&&0!==a||!r)return;e.stopPropagation(),e.preventDefault();const{view:s,layer:o}=this;if(s&&o){if(this.shouldShowSelectedImage){const i=s.hitTest(e,{include:[o]});this._updatingHandles.addPromise(i);const a=await i;return v(t),await this._processHitTestResults(o,a,{signal:t})}return this._updatingHandles.addPromise(this.loadBestImage(r,{signal:t}))}})},this.plotSelectedPointOnImage=async(e,i)=>{if(await f(i),!e)return;const a=new j({...k(e)?e.toJSON():e});if("default"===this.mode)a.x-=.5,a.y=.5-a.y,a.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:a,symbol:Ve}),this._imageViewer.addGraphic(this._crossSymbol,0);else if("panoramic"===this.mode){const{imageSize:i,media:a}=this._panoramicViewer;if(!i||!a)return;const r=Be(a),s=ie(e,...i,r);this._crossSymbol=new t({geometry:new j(s,O.WebMercator),symbol:Pe}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){this.addHandles([M(()=>this.view,()=>this.load(),b),M(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},I),M(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},I),M(()=>[this.state,this.mapImageConversionToolState,this.view,this.disabled],()=>{this._createViewClickHandle(),this._createImageClickHandle()},b),M(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},b),M(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},b),M(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},b),M(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},b),M(()=>this.currentBestFeature,async(e,t)=>{m(this._featureChangedTask),this._featureChangedTask=r(async i=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:i}])),await this._featureChangedTask.promise},{sync:!0}),M(()=>[this.currentNode,this.preloadMedia,this.navigationMode],()=>{this._mediaPrefetchTask?.abort(),this._mediaPrefetchTask=r(async e=>{this.preloadMedia&&null!=this.navigationMode?(this._mediaPrefetcher??=await this._loadMediaPrefetcher({signal:e}),v(e),"directional"===this.navigationMode?this._mediaPrefetcher.enqueueDirectionalPrefetch(this.layer,this.currentNode,this.preloadMediaSize):this._mediaPrefetcher.enqueueSequentialPrefetch(this.layer,this.currentNode,this.preloadMediaSize)):this._mediaPrefetcher?.clear()})},b),M(()=>this.currentBestFeatureMeasurementImage,(e,t)=>{m(this._featureChangedTask),t&&e!==t&&(this.triangulatedPoint=null,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this._measurementService?.resetMeasurementVectors()),this._featureChangedTask=r(async i=>{await this.determineWorkflowForTriangularMeasurement(e,t,{signal:i}),v(i),this._reorderTriangularSketchLayer()})},b),M(()=>this.triangularMeasurementActive,(e,t)=>{t&&!e&&(this._measurementService?.resetMeasurementVectors(),this.currentBestFeatureMeasurementImage=null,this.triangulatedDistanceMeasurement=null,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaAccuracy=0,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this.clearReferencePointOnImage(),this.imageMeasurementViewer.clearImage(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearImage(),this._panoramicMeasurementViewer.clearGraphics())}),M(()=>this.mode,e=>{switch(this.removeHandles(Ee.interactionHandles),e){case"default":this.addHandles(M(()=>{const{state:e}=this;return"image-loaded"===e?this._imageViewer.imagePointsInView:null},e=>{e&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{await this.updateFootprint(e,void 0,{signal:t})}))},{...b,equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles);break;case"video":this.addHandles(M(()=>{const{footprintExtent:e,videoElement:t,bestFeatureFootprint:i}=this;if(e&&t?.loaded&&i)return{videoExtent:we,bestFeatureFootprint:i}},e=>{e?.videoExtent&&e?.bestFeatureFootprint&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{const i={points:e.videoExtent,feature:void 0,scale:void 0,options:{signal:t}};await this.updateVideoFootprint(i)}))},{...b,equals:(e,t)=>i(e?.videoExtent,t?.videoExtent,h)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),Ee.interactionHandles);break;case"panoramic":this.addHandles(M(()=>{const{currentBestFeature:e,state:t,_panoramicViewer:i}=this,{imageSize:a,vfov:r,hfov:s,pitch:o,yaw:n}=i;return e&&a&&!t.includes("loading")&&null!=r&&null!=s&&null!=o&&null!=n?[r,s,n,o]:null},e=>{if(!e||this.state.includes("loading"))return;const[t,i,a,s]=e;this.currentNode&&(this.currentNode.currentHeading=a,this.currentNode.currentPitch=s),m(this._updateFootprintTask),this._updateFootprintTask=r(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:a,pitch:s},{signal:e}),this._updateFootprintTask=null})},{equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles);break;case"panoramic-video":this.addHandles(M(()=>{const{currentBestFeature:e,state:t,_panoramicVideoViewer:i}=this,{imageSize:a,vfov:r,hfov:s,pitch:o,yaw:n,viewModel:l}=i,c=l.closestFeature??e;return c&&a&&!t.includes("loading")&&null!=r&&null!=s&&null!=o&&null!=n?[r,s,n,o,c]:null},e=>{if(!e)return;const[t,i,a,s,o]=e;m(this._updateFootprintTask),this._updateFootprintTask=r(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:a,pitch:s,feature:o,horizonAngles:this._panoramicVideoViewer.horizonAngles},{signal:e}),v(e),this._updateFootprintTask=null})},{equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles)}},b),M(()=>[this.brightness,this.contrast,this.sharpness],()=>{const{_imageViewer:e,brightness:t,contrast:i,mode:a,sharpness:r}=this;"default"===a&&(e.brightness=t,e.contrast=i,e.sharpness=r)},b),M(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),M(()=>this.activeViewer,e=>{this.removeHandles(Ee.hittestHandles),e&&this.addHandles(_(()=>e,"hittest-response",this._handleImageHitTestResponse),Ee.hittestHandles)}),M(()=>this.videoMapView.extent,async()=>{const e=this.videoViewModel?.closestFeature;e&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{const i={points:this.videoExtentPoints,feature:e,options:{signal:t}};await this.updateVideoFootprint(i)}))}),M(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this.scheduledFrameId||(this.scheduledFrameId=requestAnimationFrame(()=>{this.scheduledFrameId=null,this._updateInteraction()}))},{initial:!0}),V(()=>null!=this.videoMapView.extent,()=>{this.initialVideoMapViewExtent=this.videoMapView.extent},{once:!0})]),this.when().finally(()=>{this.notifyChange("state")})}destroy(){this.currentBestFeature=null,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=p(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),this.videoViewModel=p(this.videoViewModel),this._locationViewModel=p(this._locationViewModel),this._crossSymbol=p(this._crossSymbol),this._referencePointOnGround=p(this._referencePointOnGround),this._referencePointOnImage=p(this._referencePointOnImage),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this.imageMeasurementViewer.destroy(),this._panoramicViewer.destroy(),this._panoramicMeasurementViewer.destroy(),this._mediaPrefetcher?.destroy()}get activeLayer(){return o(d.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){o(d.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 activeTriangulatedViewer(){switch(this.mode){case"default":return this.imageMeasurementViewer;case"panoramic":return this._panoramicMeasurementViewer;default:return null}}get accuracyParametersMissing(){return this.layer?.orientationAccuracy?.every(e=>0===e)??!0}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 currentNode(){const{currentBestFeature:e,navigationNodes:t}=this;return t.find(t=>t.id===e?.attributes.objectId)}get depthImageNotSupported(){if(this.currentBestFeature?.attributes.depthImage)return!Re(this.currentBestFeature.attributes.depthImage)}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){const{currentBestFeature:e}=this;if(!e)return!1;const t=e.attributes.imagePath?.trim();return Re(t)||Ie(t)}get imageLoaded(){return o(d.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===Fe}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(He(e))}get layerFloorFilterClause(){const{layerView:e}=this;return e?ne(e):null}get layerTimeExtent(){return this.layerView?.timeExtent??null}get mode(){const e=this.currentBestFeature?.attributes;if(!e)return"none";const t=e.orientedImageryType;if(t?.includes("video"))return t.includes("360")?"panoramic-video":"video";const{horizontalFieldOfView:i,isSpherical:a}=e;return 360===i||a?"panoramic":"default"}get panoramicVideoLoaded(){const{mode:e,_panoramicVideoViewer:t}=this,{videoLoaded:i}=t.viewModel;return("panoramic-video"===e&&!0===i)??!1}get popupEnabled(){return!0===this.layer?.popupEnabled}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){const{_sectorData:e}=this;return e?_e.map(t=>e[t]):null}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",u(e,0,1))}get sketchGraphicsLayer(){const{sketch:e}=this;return"graphics"===e?.layer?.type?e.layer:void 0}get state(){const{mode:e,_updatingHandles:{updating:t},_featureChangedTask:i}=this;if(!this.isFulfilled()||t||!1===i?.finished)return"loading";if(this.isRejected())return"error";if("error"===this.displayMessage?.type)return"image-load-error";switch(e){case"default":return this._imageViewer.state;case"panoramic":return this._panoramicViewer.state;case"video":return this.videoElement?.loaded?"video-loaded":"video-not-loaded"}return"ready"}get thumbnails(){const{features:e}=this;return e?new s(e.map(({attributes:{imagePath:e,objectId:t,cameraRoll:i,imageRotation:a}})=>{const r=e?.trim();return Re(r)||Ie(r)?{url:r,objectId:t,rotation:(i??0)+(a??0)}:null}).filter(a)):null}get videoExtentPoints(){const e=Qe(this.videoMapView.extent);return e.length?e:we}set view(e){this._set("view",e)}get _defaultGraphicsLayer(){const e={blendMode:"source-atop"};switch(this.mode){case"panoramic":return new H({...e,elevationInfo:{mode:"absolute-height"}});case"default":return new H({...e});default:return}}get _overlaysView(){return this.view?.layerViews.find(({layer:e})=>e===this._overlays)}beforeLoad(e=!0){this.emit("popup-close"),e&&(this.displayMessage=null),this.clearPreviousGroundLocation(),this.triangularMeasurementActive=!1,this.currentBestFeatureMeasurementImage=null,this.measureType=null,this.imageLocationToolState=!1,this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),this._overlays?.removeAll()}async calculateLocationAccuracy(e){return this._measurementService?.calculateLocationAccuracy(e)}clearLocationPointOnImage(e=!1){this.locationPointOnImage&&!e&&(this._imageViewer.removeGraphic(this.locationPointOnImage),this._panoramicViewer.removeGraphic(this.locationPointOnImage),this.locationPointOnImage=p(this.locationPointOnImage)),this.correctedLocationPointOnImage&&(this.imageMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this._panoramicMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this.correctedLocationPointOnImage=p(this.correctedLocationPointOnImage))}clearPreviousMeasurements(){this.clearMeasurementGraphics(),this.resetMeasurementData(),this.stopMeasurement()}clearPreviousGroundLocation(){this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.pixelCoordinates=null,this.clearLocationPointOnImage()}clearMeasurementGraphics(){this.measurementGraphic&&(this.activeViewer?.removeGraphic(this.measurementGraphic),this.measurementGraphic=null),this.heightGraphic&&(this.activeViewer?.removeGraphic(this.heightGraphic),this.heightGraphic=null),this.triangularMeasurementActive&&this.sketchTriangularGraphicsLayer?.graphics.destroyAll()}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}async digitizeCreate(e,t){const{sketch:i,dataCaptureLayer:a}=this;if(!i)throw dt();rt(a,e,i),await i.create(e,{...t,defaultZ:0})}digitizeDelete(){if(!this.sketch)throw dt();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw dt();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw dt();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw dt();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw dt();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw dt();return this.sketch.update(e,t)}filterByFootprints(e,t,i=!1){const a=[],r=[],s=[];return e.forEach(e=>{const{layer:{coveragePercent:o},attributes:n}=e;let l;const{polygon:c,frustum:h}=q(n);if(l=c.clone(),n.isInspection&&(l=$(n)),o&&(l=W(l,o)),i||!t||J(l,t)){s.push(e);const{geometry:t,objectId:i,cameraHeight:o,cameraHeading:l}=n,d=t.clone();d.z=o/K(t.spatialReference),d.imageID=i,this.pointSources.push(d),l!==Fe&&(a.push(c),h&&r.push(h))}}),{features:s,polygons:a,frustums:r}}async deleteDataCaptureFeatures(e){const{dataCaptureLayer:t}=this;if(!t)throw new n("orientedimageryviewer:missing-featurelayer","Data capture 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?.[_e[e]],i=t?.at(0);i&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(i):this._updateCurrentBestFeature(i))}handleFeatureClick(e){const{sector:t,featureIndexInSector:i}=e;if(isNaN(i))return;const a=this._sectorData?.[t],r=a?.at(i);r&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(r):this._updateCurrentBestFeature(r))}load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch(e=>{if(!y(e))throw e})),this}async loadBestImage(e,t){return this.selectedPoint=Q(e),this.beforeLoad(),this._fetchFeaturesWithController(e,t)}async loadHeightMeasurementAdapter(e){if(!this.drawAdapter){const t=import("./adapters/draw/HeightMeasurementAdapter.js"),{default:i}=await t;if(v(e),this.drawAdapter=new i({viewModel:this,measurementService:this._measurementService}),!this.drawAdapter.viewModel.isResolved())return}return this.drawAdapter}loadImageError(e){d.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"),{default:i}=await t;v(e),this.sketch=new i({layer:this._defaultGraphicsLayer,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 loadMeasurementAdapter(e){if(!this.sketchAdapter){const t=import("./adapters/sketch/MeasurementAdapter.js"),{default:i}=await t;if(v(e),this.sketchAdapter=new i({viewModel:this,measurementService:this._measurementService}),!this.sketchAdapter.viewModel.isResolved())return}return this.sketchAdapter}async processFeatureResponse(e,t,i){const{features:a}=e;if(this._clearFeatureGeometries(),!this._checkFeatures(a))return;const{features:r,polygons:s,frustums:o}=this.filterByFootprints(a,t,i?.skipFilter);if(!this._checkFeatures(r))return;this.coveragePolygons.addMany(s),this.coverageFrustums.addMany(o);const n=await this.processElevationSample(s,r,i);v(i),await this._updateElevationOfSelectedPointAndLocations(r,t,n),v(i),De(r,n);let l=r;if(this.layer?.verticalSearchRange&&this.layer.hasZ&&this.verticalFilterEnabled&&(l=ze(r,t,this.layer.verticalSearchRange),!l.length))return void this.setMessage("noImageAtElevation","info");const c=this._processSuitableFeatures(l,t);this.updateSuitabilities(c,i?.loadBestImage)}async processFeatureElevation(e,t,i){if(!t)return;const{features:a,polygons:r}=this.filterByFootprints(e,t,!0);if(!a?.length)return;const s=await this.processElevationSample(r,a,i);return v(i),s}async startMeasurement(e,t){this.sketch||await this.loadSketch(t),await this.loadMeasurementAdapter(t);const{sketch:i,sketchAdapter:a,activeViewer:r,mode:s}=this;if(!i||!a||!r||"none"===s)return;if(this.displayNewMeasurementButton=!1,"panoramic"===s&&(i.defaultCreateOptions.defaultZ=0),await i.create(e),"panoramic"===s){const{drawOperation:e}=i.view.activeTool;e.constraintsEnabled=!1,e._set("elevationDrawSurface",null)}const o=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;o&&this.sketch&&(this.sketch.polygonSymbol=Se(o),this.sketch.polylineSymbol="panoramic"===s?Ae:Ce(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new he({view:this.activeViewer?.imageRenderer}),this.polylineDrawAction=this.draw.create("polyline"),await this.loadHeightMeasurementAdapter()}initializeMeasurement(e){switch(this.clearMeasurementGraphics(),this.resetMeasurementData(),e){case"distance":this.startMeasurement("polyline");break;case"area":this.startMeasurement("polygon");break;case"height":this.startHeightMeasurement()}}async overlayCameraLocations(e){const{activeViewer:i,currentBestFeature:a,overlayedCameraLocations:r,layer:s,mode:o,state:n,layerFloorFilterClause:l,layerTimeExtent:c}=this,h=i?.imageSize;if(!h||!a||!s||"default"!==o&&"panoramic"!==o||n.includes("loading"))return;const{polygon:d}=q(a.attributes);if(i.removeManyGraphics(r.toArray()),r.removeAll(),e){const{features:e}=await s.queryFeatures({where:P(`${s.objectIdField} <> ${a.attributes.objectId}`,P(s.definitionExpression,l)),geometry:d,returnGeometry:!0,outFields:[s.objectIdField],timeExtent:c}),n=await Promise.all(e.map(async e=>{const{attributes:i,geometry:a}=e,r=await this._transformationService.pointToImageGeometry(a),s="panoramic"===o?ke():Te();return new t({attributes:i,symbol:s,geometry:r})}));r.addMany(n),i.addManyGraphics(r.toArray())}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,i=!1){const{activeViewer:a,currentBestFeature:r,mode:o,state:n,layer:l}=this,c=a?.imageSize;if(!c||!r||"none"===o||"video"===o||"panoramic-video"===o||n.includes("loading")||!l)return;const{polygon:h}=q(r.attributes);try{const{imageGeometryField:t,oiObjectIdField:i}=st(e,l.imageGeometryField,l.imageReferenceField);this.imageGeometryField=t.name,this.oiObjectIdField=i.name}catch(m){d.getLogger(this).warn("oriented-imagery-viewer:overlay-map-features",m)}const{features:u}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:["*"]}),p=new s(await Promise.all(u.map(async s=>{const n=s.symbol?.clone()??e.renderer?.getSymbol(s)?.clone(),{attributes:l,geometry:h}=s,{imageGeometryField:u,oiObjectIdField:p}=this;if(u&&p&&ht(e,u,p)&&`${l[p]}`==`${r.attributes.objectId}`)try{const t=Be(a?.media);return ot(l,u,e,i,c,o,n,t)}catch(m){d.getLogger(this).warn("oriented-imagery-viewer:overlay-map-features","couldn't create graphic from attributes, geometry will be used",{error:m,feature:s,layer:e,imageGeometryField:this.imageGeometryField,imageReferenceField:this.oiObjectIdField})}const g=await this._transformationService.geometryToImageGeometry(h);return new t({attributes:l,layer:e,symbol:n,geometry:g,visible:e.visible&&i})})));this.overlayGraphicsOnImage(`${e.id}`,p)}getDepthAt(e){const{activeViewer:t,currentBestFeature:i,mode:a,state:r,depthImage:s}=this,o=t?.imageSize;if(!o||!i||"none"===a||r.includes("loading"))return d.getLogger(this).warnOnce("oriented-imagery-viewer:get-depth-at","Load an image to use depth"),null;if(!s?.loaded)return d.getLogger(this).error("oriented-imagery-viewer:get-depth-at","Depth image is not loaded"),this.emit("depth-image-service:not-loaded"),null;const n=(Array.isArray(e)?e:[e]).map(e=>s.depthAt(e,{width:o[0],height:o[1]})??null);return Array.isArray(e)?n:n[0]}getActiveSectors(){return _e.filter(e=>this._sectorData?.[e]?.length)}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 j({...e.toJSON()}),symbol:Le}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){const{state:i,mode:a,activeViewer:r}=this;if("image-loaded"!==i||!r?.imageSize||"default"!==a&&"panoramic"!==a)return;this.clearReferencePointOnImage();const s=Be(r.media),o=nt(e,a,r.imageSize,s);this._referencePointOnImage=new t({geometry:o,symbol:"panoramic"===a?je.clone():Le.clone()}),r.addGraphic(this._referencePointOnImage,0)}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))}reset(){const{mode:e}=this;"default"===e||"panoramic"===e?this.resetImage():"video"===e?this.resetVideo():"panoramic-video"===e&&this.resetVideoPanoramic(),this.beforeLoad(!1)}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)}resetVideo(){this.setMessage("onLoadMessage","info"),this.videoViewModel?.resetVideoHandler(),this._overlays?.removeAll(),this.videoViewModel=null,this.featureCache=[],this.currentBestFeature=null}resetVideoPanoramic(){this.setMessage("onLoadMessage","info"),this._overlays?.removeAll(),this.currentBestFeature=null}resetMeasurementData(){this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.heightGraphic=null,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedMeasurementGraphic=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaAccuracy=0,this._measurementService?.resetMeasurementVectors()}async saveDrawing(){const{dataCaptureLayer:e,sketchAdapter:t}=this;if(!e||"data-capture"!==t?.type)return;const{pendingGraphics:i,savedGraphics:a}=t,r=i.get(e.id),s=r?.toArray();if(!r||!s?.length)return;const{addFeatureResults:o}=await this.saveDataCaptureFeatures(s),n=o.reduce((t,{objectId:i,globalId:a,error:r},o)=>{const n=s[o],{attributes:l}=n;return r?t.error.push(n):(i&&(l[e.objectIdField]=i),a&&e.globalIdField&&(l[e.globalIdField]=a),t.success.push(n)),t},{success:[],error:[]});a.addMany(n.success),r.removeAll(),r.addMany(n.error)}async saveDataCaptureFeatures(e,t){const{activeViewer:i,currentBestFeature:r,dataCaptureLayer:s,mode:o}=this,l=i?.imageSize;if(!l||!r||"none"===o||"video"===o||"panoramic-video"===o)throw new n("orientedimageryviewer:missing-input","Image size, current best feature and mode are required to save data capture features");if(!s)throw new n("orientedimageryviewer:missing-featurelayer","Data capture layer is not available");const c=await Promise.all(e.map(async e=>{const i=e.clone(),{geometry:a}=i;if(!a)return;const r=a.type,o=s.hasZ,n=s.geometryType,l=r!==n,c=l?await import("./transformers.js"):null,h=c?.default[n],d=l?h?.(a):a;return d&&(i.geometry=await this._transformationService.imageGeometryToMapGeometry(d,t),i.geometry)?(o||lt(i.geometry),i):void 0})),h=c.filter(a);return s.applyEdits({addFeatures:h}).then(e=>{const{addFeatureResults:t}=e;let i=0;const a=c.map(e=>{const a=t[i++];return e?a:{error:new n("orientedimageryviewer:save-unsucccessful","Error in saving data capture features"),objectId:null,globalId:null}});return{...e,addFeatureResults:a}})}async searchBestImage(e,t){try{const i=await z(e,t);i&&await this.processFeatureResponse(i,e.point,t)}catch(i){y(i)||(this.setMessage("imageLoadError","error",i.message),d.getLogger(this).error("error occurred while finding best image",i))}}selectTriangularMeasurementFeature(e){this.currentBestFeatureMeasurementImage=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}setCurrentPanoramaView(e,t){this._panoramicViewer?.set({yaw:e,pitch:t})}async startDataCapture(e,t){const i=this.activeViewer?.imageRenderer,{oiObjectIdField:a,currentBestFeature:r}=this;if(!i||!r||!a)return;const{attributes:{objectId:o}}=r,n=this.overlayedMapFeatures.get(e.id)?.toArray()??[],l=[],c=[];for(const s of n)`${s.getAttribute(a)}`==`${o}`?l.push(s):c.push(s);this.overlayGraphicsOnImage(e.id,new s(c)),this.collectionId=e.id;const h=await this.loadSketch(t),d=await this.loadDataCaptureAdapter(t);v(t),h.addGraphics(l),d.savedGraphics.addMany(l);i.ui.find("zoom").visible=!1,i.map.layers.add(this.sketchGraphicsLayer)}async stopDataCapture(e=!1){this.sketch?.cancel(),this.sketchGraphicsLayer?.removeAll(),this.sketchAdapter=p(this.sketchAdapter),this.sketch=p(this.sketch),this.collectionId=null;const{dataCaptureLayer:t}=this,i=this.activeViewer?.imageRenderer;if(!i||i.destroyed)return;i.map.layers.remove(this.sketchGraphicsLayer),e&&t&&await this.overlayMapFeatures(t,!0);const a=i.ui.find("zoom");a&&(a.visible=!0)}stopMeasurement(){this.draw?.reset(),this.sketch?.cancel()}async toggleAllOverlayMapFeatures(e){!e&&this.dataCaptureLayer&&(await this.stopDataCapture(!0),this.dataCaptureLayer=null),this.overlayedMapFeatures.forEach(t=>{this._toggleVisiblity(t,e)})}toggleOverlayMapFeatures(e,t,i){const a=this.overlayedMapFeatures.get(e);a&&i&&this._toggleVisiblity(a,t)}toggleSelection(e){const{sketch:t}=this;t&&(t.updateOnGraphicClick=e,t.cancel())}async transformAndPlotReferencePointOnImage(e){const{selectedLocation:t,options:i}=e;let a=!1,r=!1;const s=this.bestFeatureFootprint?.geometry;switch(s?.type){case"polygon":{const e=t.spatialReference.equals(s.spatialReference)?t:await G(t,s.spatialReference);a=s.contains(e);break}case"mesh":{const e=t.spatialReference.equals(s.spatialReference)?t:await G(t,s.spatialReference);r=s.extent.contains(e);break}}if(!a&&!r)return void this.clearReferencePointOnImage();const o=await this._transformationService.pointToPixel(t,i);if(o)return v(i),this.plotReferencePointOnImage(o),{x:o.x,y:o.y};this.clearReferencePointOnImage()}async updateFeatureCache(e,t){const i=await N(e,t);i.features?.length&&(this.featureCache=i.features)}async _fetchFeatures(e,t){const{layer:i,layerFloorFilterClause:a,layerTimeExtent:r,view:s}=this;if(!s||!i)return;e.x=B(e.x,e.spatialReference);const o=i.spatialReference.equals(e.spatialReference)?e:await G(e,i.spatialReference),n=o.spatialReference.isGeographic?R(o):o,l=P("1=1",P(i.definitionExpression,a)),c=n.spatialReference.isGeographic?1:S(n.spatialReference),h={layerInstanceOrURL:i,point:n,queryParams:{where:l,maximumDistance:i.maximumDistance?i.maximumDistance/c:void 0,timeExtent:r}};return await this.searchBestImage(h,t)}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(i){if(y(i))return;this.setMessage("imageLoadError","error"),d.getLogger(this).error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,additionalFeatures:t,features:i,invalidCameraHeading:a}=this,r=i.at(0);if(!e||!t||!r||!i||a)return void(this._sectorData=null);this._sectorData={};const o={};this._featureToSector=o;for(const h of _e)this._sectorData[h]=new s;const n=e.map((e,t)=>({...e,featureIndex:t}));n.sort((e,t)=>e.trueSuitability-t.trueSuitability);const l=n.map(({distance:e})=>e),c=Math.max(...l);n.forEach(e=>{const{distance:t,angle:a,featureIndex:s}=e,n=t/c*Me[2],l=We(t,c),h=Je(a);if(!this._sectorData)return;const d=Me[3]+n*Math.sin(a*Math.PI/180),u=Me[3]+n*Math.cos(a*Math.PI/180);let p;const m=i.at(s),g=m===r,{cameraPitch:y}=m.attributes,v=y<5;if(g&&v)p=-90;else{const e=d-Me[3],t=u-Me[3],i=t/Math.sqrt(e**2+t**2);let a=180*Math.acos(i)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(a*=-1),p=a}const f=""===l?h:`${l}_${h}`;g&&(p===this.bestFeatureAngle?this.previousFeatureAngle=p:this.bestFeatureAngle=p,this.navigatorCurrentBestFeature=v?null:{x:d,y:u,direction:h}),o[`${m.attributes.objectId}`]=f;const w=this._sectorData[f];w.add({angle:a,featureIndex:s,x:d,y:u,objectID:m.attributes.objectId,sector:f,featureIndexInSector:w.length})})}async _initializeLocationViewModel(e){if(!this._locationViewModel){const t=import("./components/ImageLocationViewModel.js"),{default:i}=await t;v(e),this._locationViewModel=new i({oiViewModel:this,referenceTransformationService:this._referenceTransformationService})}}_initializeMeasurementService(){this._measurementService||(this._measurementService=new at({transformationService:this._transformationService,referenceTransformationService:this._referenceTransformationService}))}_initializeVideo(){if(this.videoElement||!this.currentBestFeature)return;this.removeHandles(Ee.videoPlayerHandles),this.videoElement=new le({video:this.currentBestFeature.attributes.imagePath,georeference:new oe({extent:new L(fe)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);const e=new D({source:this.videoElement,title:this.layer?.title,copyright:this.layer?.copyright});this.videoLayer=e,e&&this.videoMapView.map.layers.add(e),this.videoViewModel=new et({oiViewModel:this})}async getMapPoint(e,t){const i=await this._transformationService.pixelToMapPoint(Array.isArray(e)?e:[e],t);return Array.isArray(e)?i:i[0]}async getMapPointForFeature(e,t,i){const a=await this._transformationService.pixelToMapPointForFeature(Array.isArray(e)?e:[e],t,i);return Array.isArray(e)?a:a[0]}async loadPanoramicMediaSource(e,t){const{lookAt:i,...a}=e,r=Ne(a);try{await r.load(t)}catch(o){if(y(o))return;if("unsupported-format"===o.name)return void this.setMessage("unsupportedPanoramicImageryError","error",void 0,{datasetFormat:r?.extension??"UNKNOWN FORMAT"})}const s=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;await s.loadMedia(r,t),i&&s.set(i)}async loadMediaSource(e,t){const i=Ue(e);await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,i,t)}_clearFeatureGeometries(){this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll()}_checkFeatures(e){return!!e?.length||(this.setMessage("noImageError","error"),this.videoElement?.content?.pause(),this.currentBestFeature=null,!1)}async _getElevationSampleFromGround(e,t,i){if(!e[0])return;const a=(await import("../../geometry/operators/unionOperator.js")).executeMany(e);if(this._updateFootprintWithFeatures(t,a),"3d"===this.view?.type)try{return await this.view.map.ground.createElevationSampler(this.footprintExtent,i)}catch(r){y(r)||d.getLogger(this).error(r)}}async processElevationSample(e,t,i){const{elevationSource:a}=t[0].attributes,r=await this._getElevationSampleFromGround(e,t,i);return r||(a&&this.footprintExtent&&Z(a)?await Y({extent:this.footprintExtent,lod:a.lod,url:a.url,rasterFunction:a.rasterFunction}):void 0)}_processSuitableFeatures(e,t){return U({features:e,selectedPoint:t,camera:qe(this.view)?this.view.camera:null,currentImage:this.currentBestFeature})}async _processHitTestResults(e,t,i){const{results:[a]}=t;if("graphic"!==a?.type)return void this.setMessage("noImageError","error");const r=a.graphic.getAttribute(e.objectIdField);return await this.showImageByObjectId(r,i)}async _queryAndLoadByObjectId(e,t,i,a,r){this.displayMessage=null;const{response:s}=await it(e,t,i,a,r);if(v(r),!s?.features?.length)throw new tt(t);const o=q(s.features[0].attributes).polygon,n=j.fromJSON(E(o)),l=Q(n),c=S(l.spatialReference);this.selectedPoint=l;const h={layerInstanceOrURL:e,point:l,queryParams:{where:P(P("1=1",P(e.definitionExpression,i)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:a}},d=await z(h,r);v(r);const{features:u}=d;return u.push(s.features[0]),await this.processFeatureResponse(d,l,{...r,loadBestImage:!1})}_reorderTriangularSketchLayer(){const e=this.imageMeasurementViewer.imageRenderer.map.layers?.length;this.sketchTriangularGraphicsLayer&&e&&this.imageMeasurementViewer.imageRenderer.map.layers.reorder(this.sketchTriangularGraphicsLayer,e-1)}async _setImageSource(e,t,i){e.media=t,await e.loadMedia(t,i)}_toggleVisiblity(e,t){e.forEach(e=>{e.visible=t})}async _updateElevationOfSelectedPointAndLocations(e,t,i,a){const{location:r,cameraHeight:s}=e[0].attributes,o=await ae(r.spatialReference,r.z,s,{elevationSample:i,elevationSource:i?void 0:e[0].attributes.elevationSource,extent:this.footprintExtent},a);v(a);const[n,...l]=await X([t,...e.map(e=>e.attributes.geometry.clone())],o);v(a),t.elevation=n.z,e.forEach((e,t)=>{e.attributes.elevation=l[t].z})}_updateFeatures(e,t=!0){if(!e.length)return this.currentBestFeature=null,void this.additionalFeatures.removeAll();this.features.removeAll(),this.features.addMany(e),this.navigationNodes.removeAll(),this.navigationNodes.addMany(e.map(e=>{const{geometry:t,attributes:i}=e,{isSpherical:a,cameraHeading:r,cameraPitch:s}=i;return new Ye({geometry:t,attributes:i,currentHeading:a?0:r,currentPitch:a?0:s})})),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),this._updateGroundElevation=!0,t&&(this.currentBestFeature=e[0]),"video"===this.mode&&(this._initializeVideo(),this.videoElement?.loaded&&this.videoViewModel?.playVideoFromSelectedLocation(e[0])),"panoramic-video"===this.mode&&this._loadVideo()}_updateFootprintWithFeatures(e,t){const i=[];for(const{attributes:{geometry:a}}of e)t.contains(a)||i.push([a.x,a.y]);i.sort((e,t)=>+x([e,t])),t.addRing(i),this.footprintExtent=de(t.extent,2,2)}async _updatePointsAndPolygons(e){const{pointSources:i,currentBestFeature:a,currentCoverageVisible:r,isAdditionalPointSourcesVisible:s,mode:o,layer:n}=this;if(a&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await(this._adapter?.createFootprints(e)),v(e);for(const o of i){const i=this.view&&!this.view.spatialReference?.equals(o.spatialReference)?await G(o.clone(),this.view?.spatialReference,e):o.clone();o.imageID===a.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:o.imageID},geometry:i,symbol:Ge,visible:r}):this.additionalCameraLocations.push(new t({attributes:{imageID:o.imageID},geometry:i,symbol:Oe,visible:s}))}"video"!==o&&"panoramic-video"!==o||(await this.initializeTransformationService(e),n&&!this.featureCache.length&&await this.updateFeatureCache(n,a.geometry.spatialReference))}}_updateCurrentBestFeature(e){if(!e)return;if(this.currentBestFeature=this.features?.at(e.featureIndex),"video"===this.mode)return void(this.currentBestFeature&&this.videoViewModel?.playVideoFromSelectedLocation(this.currentBestFeature));if("panoramic-video"===this.mode)return void(this.currentBestFeature&&this._panoramicVideoViewer.viewModel.playPanoramicVideoFromSelectedLocation(this.currentBestFeature));const t=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;let i;if(t)i=-90;else{const t=e.x-Me[3],a=e.y-Me[3],r=a/Math.sqrt(t**2+a**2);let s=180*Math.acos(r)/Math.PI;(t<0&&a<0||t<0&&a>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}}_updateImageMeasurementBestFeature(e){e&&(this.currentBestFeatureMeasurementImage=this.features?.at(e.featureIndex))}clearGraphics(){this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._referencePointOnImage=p(this._referencePointOnImage))}async initializeReferenceTransformationService(e){const{currentBestFeatureMeasurementImage:t,activeTriangulatedViewer:i,mode:a}=this;if(!t||!i||!i.imageSize||"panoramic"!==a&&"default"!==a)return;const{imageSize:r}=i,{attributes:s,elevationSample:o}=t,{location:{spatialReference:n,z:l},cameraHeight:c,elevationSource:h}=s;let d=s.location;d.spatialReference.isGeographic&&(d=Q(d));const u="default"===a?re(s,r[0],r[1]):se(s,r[0],r[1]),p=await ae(n,l??0,c,{elevationSample:o,elevationSource:h,extent:this.footprintExtent},e),m=(await import("./services/TransformationService.js")).default,g={imageToWorldProperties:u,updateElevationProps:p,mode:a,imageSize:r,depthImageService:this.depthImage};this._referenceTransformationService=new m(g),this._locationViewModel&&(this._locationViewModel.referenceTransformationService=this._referenceTransformationService),this._measurementService&&(this._measurementService.referenceTransformationService=this._referenceTransformationService)}async initializeTransformationService(e){const{currentBestFeature:t,activeViewer:i,mode:a}=this,r="video"===a||"panoramic-video"===a?be:i?.imageSize;if(!t||!r||"none"===a)return;const{attributes:s,elevationSample:o}=t,{location:{spatialReference:n,z:l},cameraHeight:c,elevationSource:h}=s;let d=s.location;d.spatialReference.isGeographic&&(d=Q(d));const u="default"===a||"video"===a?"default":"panoramic",p={..."default"===u?re(s,r[0],r[1]):se(s,r[0],r[1]),cameraLocation:d},m=await ae(n,l??0,c,{elevationSample:o,elevationSource:h,extent:this.footprintExtent},e),g=(await import("./services/TransformationService.js")).default,y={imageToWorldProperties:p,updateElevationProps:m,mode:u,imageSize:r,depthImageService:this.depthImage};this._transformationService=new g(y),this._measurementService&&(this._measurementService.transformationService=this._transformationService)}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}setMessage(e,t,i,a){this.displayMessage={key:e,type:t,data:i,map:a}}async transformAndPlotSelectedLocation(e){const{currentBestFeature:t,invalidCameraHeading:i,selectedPoint:a,activeViewer:r}=this;if(this._crossSymbol&&(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this._crossSymbol=p(this._crossSymbol)),!a||!t||"image-loaded"!==r?.state||i)return;let s;try{s=await this._transformationService.pointToPixel(a,{signal:e?.signal}),v(e),await this.plotSelectedPointOnImage(s,e)}catch(o){y(o)||d.getLogger(this).error("failed to transform map point to pixel, cross symbol will not be plotted on image",{error:o,selectedPoint:a,feature:t})}}updateCurrentCoveragePolygon(e){const{additionalFootprints:i,additionalCameraLocations:a,currentBestFeature:r,currentBestFeatureLocation:s,currentCoverageVisible:o,selectedPoint:n,view:l,_adapter:c,mode:h}=this;if(!r)return;const{attributes:{objectId:d},elevationSample:u}=r;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),l){const e=[...i,...a,s].filter($e);"3d"===l?.type&&u&&c?.updateGroundElevation&&(this._updateGroundElevation&&c.updateGroundElevation(e),"panoramic"===h&&c.updateGroundElevation([this.bestFeatureCurrentFootprint])),this._updateGroundElevation=!1,n&&(e.splice(-2,0,this.bestFeatureCurrentFootprint),e.push(new t({geometry:n.clone(),symbol:Ve.clone(),attributes:{imageID:d}}))),this._overlays.graphics.addMany(e)}}else if(l){if(this.invalidCameraHeading)return;this.bestFeatureCurrentFootprint&&(this._overlays?.remove(this.bestFeatureCurrentFootprint),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint));const t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,"3d"===l?.type&&u&&c?.updateGroundElevation&&"panoramic"===h&&c.updateGroundElevation([e]),e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}};e([A()],ut.prototype,"activeLayer",null),e([A({readOnly:!0})],ut.prototype,"activeViewer",null),e([A()],ut.prototype,"activeTriangulatedViewer",null),e([A()],ut.prototype,"accuracyParametersMissing",null),e([A()],ut.prototype,"additionalFeatures",void 0),e([A({type:s.ofType(t)})],ut.prototype,"additionalCameraLocations",void 0),e([A({type:s.ofType(t)})],ut.prototype,"additionalFootprints",void 0),e([A()],ut.prototype,"areaMeasurementResult",void 0),e([A()],ut.prototype,"areaMeasurementAccuracy",void 0),e([A()],ut.prototype,"bestFeatureAngle",void 0),e([A()],ut.prototype,"bestFeatureCurrentFootprint",void 0),e([A({type:t})],ut.prototype,"bestFeatureFootprint",void 0),e([A({type:Number})],ut.prototype,"brightness",null),e([A()],ut.prototype,"cameraHeadingThreshold",void 0),e([A()],ut.prototype,"cameraPitchThreshold",void 0),e([A()],ut.prototype,"clickAction",void 0),e([A()],ut.prototype,"correctedLocationPointOnImage",void 0),e([A()],ut.prototype,"videoViewModel",void 0),e([A()],ut.prototype,"collectionId",void 0),e([A({type:Number})],ut.prototype,"contrast",null),e([A()],ut.prototype,"coverageFrustums",void 0),e([A()],ut.prototype,"coveragePolygons",void 0),e([A()],ut.prototype,"currentBestFeature",void 0),e([A()],ut.prototype,"currentBestFeatureMeasurementImage",void 0),e([A()],ut.prototype,"currentBestFeatureLocation",void 0),e([A()],ut.prototype,"currentCoverageVisible",void 0),e([A()],ut.prototype,"currentNode",null),e([A()],ut.prototype,"depthImage",void 0),e([A()],ut.prototype,"depthImageNotSupported",null),e([A()],ut.prototype,"featureCache",void 0),e([A()],ut.prototype,"navigationNodes",void 0),e([A({json:{write:!1}})],ut.prototype,"determineWorkflowForFeature",void 0),e([A({json:{write:!1}})],ut.prototype,"determineWorkflowForTriangularMeasurement",void 0),e([A()],ut.prototype,"disabled",void 0),e([A()],ut.prototype,"displayMessage",void 0),e([A()],ut.prototype,"displayNewMeasurementButton",void 0),e([A()],ut.prototype,"distanceMeasurementResult",void 0),e([A()],ut.prototype,"distanceAccuracyArray",void 0),e([A()],ut.prototype,"dataCaptureLayer",void 0),e([A({readOnly:!0})],ut.prototype,"featureCount",null),e([A()],ut.prototype,"features",void 0),e([A()],ut.prototype,"groundCoordinates",void 0),e([A()],ut.prototype,"groundCoordinatesAccuracy",void 0),e([A()],ut.prototype,"heightGraphic",void 0),e([A()],ut.prototype,"heightMeasurementResult",void 0),e([A()],ut.prototype,"heightMeasurementAccuracy",void 0),e([A({readOnly:!0})],ut.prototype,"imageGalleryEnabled",null),e([A()],ut.prototype,"imageGeometryField",void 0),e([A({readOnly:!0})],ut.prototype,"imageLoaded",null),e([A()],ut.prototype,"imageLocationToolState",void 0),e([A()],ut.prototype,"initialVideoMapViewExtent",void 0),e([A({readOnly:!0})],ut.prototype,"invalidCameraHeading",null),e([A()],ut.prototype,"imagePointsInView",null),e([A()],ut.prototype,"imageMeasurementViewer",void 0),e([A()],ut.prototype,"isAdditionalCoverageVisible",void 0),e([A()],ut.prototype,"isAdditionalPointSourcesVisible",void 0),e([A()],ut.prototype,"layer",void 0),e([A()],ut.prototype,"layerView",null),e([A({readOnly:!0})],ut.prototype,"layerFloorFilterClause",null),e([A({readOnly:!0})],ut.prototype,"layerTimeExtent",null),e([A({type:Number})],ut.prototype,"localPort",void 0),e([A()],ut.prototype,"locationPointOnImage",void 0),e([A()],ut.prototype,"mapImageConversionToolState",void 0),e([A()],ut.prototype,"measureType",void 0),e([A()],ut.prototype,"measurementGraphic",void 0),e([A({readOnly:!0,value:"none"})],ut.prototype,"mode",null),e([A()],ut.prototype,"navigationMode",void 0),e([A()],ut.prototype,"navigatorCurrentBestFeature",void 0),e([A()],ut.prototype,"oiObjectIdField",void 0),e([A({type:s.ofType(t)})],ut.prototype,"overlayedCameraLocations",void 0),e([A()],ut.prototype,"overlayedMapFeatures",void 0),e([A()],ut.prototype,"panoramicVideoLoaded",null),e([A()],ut.prototype,"pixelCoordinates",void 0),e([A()],ut.prototype,"preserveAngle",void 0),e([A()],ut.prototype,"pointSources",void 0),e([A({readOnly:!0})],ut.prototype,"popupEnabled",null),e([A()],ut.prototype,"preloadMedia",void 0),e([A()],ut.prototype,"preloadMediaSize",void 0),e([A()],ut.prototype,"previousFeatureAngle",void 0),e([A()],ut.prototype,"referencePoint",null),e([A({readOnly:!0})],ut.prototype,"sectorData",null),e([A()],ut.prototype,"selectedPoint",void 0),e([A({type:Number})],ut.prototype,"sharpness",null),e([A()],ut.prototype,"shouldShowSelectedImage",void 0),e([A()],ut.prototype,"sketch",void 0),e([A()],ut.prototype,"sketchTriangular",void 0),e([A()],ut.prototype,"sketchTriangularGraphicsLayer",void 0),e([A()],ut.prototype,"draw",void 0),e([A()],ut.prototype,"drawAdapter",void 0),e([A()],ut.prototype,"polylineDrawAction",void 0),e([A()],ut.prototype,"scheduledFrameId",void 0),e([A()],ut.prototype,"sketchAdapter",void 0),e([A({readOnly:!0})],ut.prototype,"sketchGraphicsLayer",null),e([A({readOnly:!0})],ut.prototype,"state",null),e([A({readOnly:!0})],ut.prototype,"thumbnails",null),e([A()],ut.prototype,"videoExtentPoints",null),e([A()],ut.prototype,"triangularMeasurementActive",void 0),e([A()],ut.prototype,"triangulatedDistanceMeasurement",void 0),e([A()],ut.prototype,"triangulatedDistanceAccuracy",void 0),e([A()],ut.prototype,"triangulatedAreaMeasurement",void 0),e([A()],ut.prototype,"triangulatedAreaAccuracy",void 0),e([A()],ut.prototype,"triangulatedMeasurementGraphic",void 0),e([A()],ut.prototype,"triangulatedPoint",void 0),e([A()],ut.prototype,"triangulatedMeasurementAdapter",void 0),e([A()],ut.prototype,"updateFootprint",void 0),e([A()],ut.prototype,"updateVideoFootprint",void 0),e([A()],ut.prototype,"updateFootprintPanorama",void 0),e([A()],ut.prototype,"updatingTriangularMeasurementState",void 0),e([A({value:null})],ut.prototype,"view",null),e([A()],ut.prototype,"videoElement",void 0),e([A()],ut.prototype,"videoLayer",void 0),e([A()],ut.prototype,"videoMapView",void 0),e([A()],ut.prototype,"verticalFilterEnabled",void 0),e([A()],ut.prototype,"_adapter",void 0),e([A()],ut.prototype,"_defaultGraphicsLayer",null),e([A()],ut.prototype,"_highlightedFeatureHandle",void 0),e([A()],ut.prototype,"_imageViewer",void 0),e([A()],ut.prototype,"_initialCurrentCoverageUpdate",void 0),e([A()],ut.prototype,"_locationViewModel",void 0),e([A()],ut.prototype,"_measurementService",void 0),e([A()],ut.prototype,"_mediaPrefetcher",void 0),e([A()],ut.prototype,"_navigationManager",void 0),e([A()],ut.prototype,"_overlays",void 0),e([A({readOnly:!0})],ut.prototype,"_overlaysView",null),e([A()],ut.prototype,"_panoramicVideoViewer",void 0),e([A()],ut.prototype,"_panoramicViewer",void 0),e([A()],ut.prototype,"_panoramicMeasurementViewer",void 0),e([A()],ut.prototype,"_referencePointOnGround",void 0),e([A()],ut.prototype,"_referencePointOnImage",void 0),e([A()],ut.prototype,"_referenceTransformationService",void 0),e([A()],ut.prototype,"_sectorData",void 0),e([A()],ut.prototype,"_transformationService",void 0),e([A()],ut.prototype,"_featureToSector",void 0),e([A({readOnly:!0})],ut.prototype,"_updatingHandles",void 0),e([A()],ut.prototype,"footprintExtent",void 0),e([A()],ut.prototype,"_featureChangedTask",void 0),ut=e([C("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ut);const pt=ut;export{pt as default};
|
|
2
|
+
import{__decorate as e}from"tslib";import t from"../../Graphic.js";import{equals as i,isSome as a}from"../../core/arrayUtils.js";import{createTask as r}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{EventedMixin as l}from"../../core/Evented.js";import{makeHandle as c}from"../../core/handleUtils.js";import{equalsShallow as h}from"../../core/lang.js";import d from"../../core/Logger.js";import{clamp as u}from"../../core/mathUtils.js";import{destroyMaybe as p,abortMaybe as m}from"../../core/maybe.js";import{EsriPromise as g}from"../../core/Promise.js";import{isAbortError as y,throwIfAborted as v,waitTick as f}from"../../core/promiseUtils.js";import w from"../../core/ReactiveMap.js";import{whenOnce as F,on as _,watch as M,syncAndInitial as b,initial as I,when as V}from"../../core/reactiveUtils.js";import{sqlAnd as P}from"../../core/sql.js";import{getMetersPerUnitForSR as S}from"../../core/units.js";import{property as A,subclass as C}from"../../core/accessorSupport/decorators.js";import{isSerializable as k}from"../../core/support/jsonUtils.js";import{UpdatingHandles as T}from"../../core/support/UpdatingHandles.js";import L from"../../geometry/Extent.js";import j from"../../geometry/Point.js";import{projectAsync as G}from"../../geometry/projectionUtils.js";import O from"../../geometry/SpatialReference.js";import{polygonCentroidPoint as E}from"../../geometry/support/centroid.js";import{isClockwise as x}from"../../geometry/support/coordsUtils.js";import{normalizeMapX as B}from"../../geometry/support/normalizeUtils.js";import{geographicToWebMercator as R}from"../../geometry/support/webMercatorUtils.js";import H from"../../layers/GraphicsLayer.js";import D from"../../layers/MediaLayer.js";import{searchImages as z,getSortedLayerFeatures as N}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as U}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as q,computePolygonForInspection as $,resizePolygon as W,checkIfPolygonContainsSelectedPoint as J}from"../../layers/orientedImagery/core/coverageUtils.js";import{isElevationSource as Z}from"../../layers/orientedImagery/core/ElevationSourceDefinitions.js";import{getMetersPerUnitOfSR as K,convertGeographicToWebMercator as Q}from"../../layers/orientedImagery/core/utils.js";import X from"../../layers/orientedImagery/transformations/updateElevation.js";import{getElevationSampler as Y}from"../../layers/orientedImagery/transformations/updateElevationUtils.js";import{or as ee,getInitialAngle as te,convertPixelLocationToSphereVertex as ie,getUpdateElevationProps as ae,getImageToWorldProperties as re,getImageToWorldPanoramicProperties as se}from"../../layers/orientedImagery/transformations/utils.js";import oe from"../../layers/support/ExtentAndRotationGeoreference.js";import{getFloorFilterClause as ne}from"../../layers/support/floorFilterUtils.js";import le from"../../layers/support/VideoElement.js";import ce from"../../views/MapView.js";import he from"../../views/draw/Draw.js";import{scale as de}from"../../views/draw/support/drawUtils.js";import{ViewEventPriorities as ue}from"../../views/input/InputManager.js";import pe from"../PanoramicVideoViewer.js";import me from"../PanoramicViewer.js";import{defaultAngleThresholdInDegrees as ge,videoMapViewConstraint as ye,clockwiseDirections as ve,sampleExtent as fe,videoExtent as we,invalidCameraHeading as Fe,sectorsInOrder as _e,sectorsRadii as Me,fixedImageSize as be}from"./constants.js";import{isFeatureAttachment as Ie}from"./galleryUtils.js";import{crossSymbol as Ve,crossSymbol3D as Pe,measurementPolygonSymbol as Se,polylineSymbolPanoramic as Ae,measurementPolylineSymbol as Ce,cameraOverlaySymbol3D as ke,cameraOverlaySymbol as Te,diamondSymbol as Le,diamondSymbol3D as je,activeSourcePointSymbol as Ge,sourcePointSymbol as Oe}from"./symbols.js";import{registryKeys as Ee}from"./types.js";import{isNoAttachmentError as xe,extractHorizonAnglesFromMedia as Be,isTifOrMrf as Re,filterOILLayerView as He,assignElevationSampleToFeatures as De,filterByZ as ze,createPanoramicMedia as Ne,createNonPanoramicMedia as Ue,isSceneView as qe,isGraphic as $e,calculateSegment as We,calculateDirection as Je}from"./utils.js";import{disableVideoZoomAndPan as Ze,getUpdatedConstraints as Ke,getUpdatedExtentPoints as Qe}from"./videoViewerUtils.js";import Xe from"./components/ImageViewer.js";import Ye from"./components/NavigationNode.js";import et from"./components/OrientedImageryVideoViewModel.js";import{NoFeatureFoundWithObjectIdError as tt}from"./navigation/errors.js";import{queryFeatureByObjectIds as it}from"./navigation/queries.js";import{ImageMeasurementService as at}from"./services/ImageMeasurementService.js";import{configureSketchTool as rt,extractFieldsFromDataCaptureLayer as st,constructGraphicFromImageGeometry as ot}from"./support/dataCaptureUtils.js";import{imageSpaceToPoint as nt,removeZFromGeometry as lt}from"./support/geometryUtils.js";import ct from"./support/resolveMediaProps.js";import{isValidDataCaptureLayer as ht}from"./support/typeUtils.js";const dt=()=>new n("orientedimageryviewer:sketch-not-initialized","Sketch property is not initialized, call loadSketch first");let ut=class extends(l(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.cameraHeadingThreshold=ge,this.cameraPitchThreshold=ge,this.clickAction="hittest",this.correctedLocationPointOnImage=null,this.videoViewModel=null,this.collectionId=null,this.coverageFrustums=new s,this.coveragePolygons=new s,this.currentBestFeature=null,this.currentBestFeatureMeasurementImage=null,this.currentBestFeatureLocation=null,this.currentCoverageVisible=!0,this.depthImage=null,this.featureCache=[],this.navigationNodes=new s,this.determineWorkflowForFeature=async(e,t,i)=>{const{currentBestFeature:a,selectedPoint:r}=this;if(this.emit("popup-close"),a&&r){this._initialCurrentCoverageUpdate=!0,this._updateGroundElevation=!0;try{await this._updatePointsAndPolygons(i),await this._loadDepthImage(i),await this._loadImage(i)}catch(s){y(s)||(this.loadImageError(s),d.getLogger(this).error("#loadIImage()","error occured while loading image",s))}}},this.determineWorkflowForTriangularMeasurement=async(e,t,i)=>{if(this.emit("popup-close"),this.currentBestFeatureMeasurementImage&&this.selectedPoint)try{await this._loadMeasurementViewerImage(i)}catch(a){y(a)||(this.loadImageError(a),d.getLogger(this).error("#loadIImage()","error occured while loading image",a))}},this.disabled=!1,this.displayMessage={key:"onLoadMessage",type:"info"},this.displayNewMeasurementButton=!0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.dataCaptureLayer=null,this.features=new s,this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.heightGraphic=null,this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.imageGeometryField=null,this.imageLocationToolState=!1,this.initialVideoMapViewExtent=null,this.imageMeasurementViewer=new Xe,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.layer=null,this.localPort=null,this.locationPointOnImage=null,this.mapImageConversionToolState=!1,this.measureType=null,this.measurementGraphic=null,this.navigatorCurrentBestFeature=null,this.oiObjectIdField=null,this.overlayedCameraLocations=new s,this.overlayedMapFeatures=new w,this.pixelCoordinates=null,this.preserveAngle="none",this.pointSources=new s,this.preloadMedia=!1,this.preloadMediaSize=5,this.previousFeatureAngle=0,this.selectedPoint=null,this.shouldShowSelectedImage=!1,this.sketch=null,this.sketchTriangular=null,this.sketchTriangularGraphicsLayer=null,this.draw=null,this.drawAdapter=null,this.polylineDrawAction=null,this.scheduledFrameId=null,this.sketchAdapter=null,this.triangularMeasurementActive=!1,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedAreaAccuracy=0,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.triangulatedMeasurementAdapter=null,this.updateFootprint=async(e,t,i)=>{"default"===this.mode&&"image-loaded"!==this.state||await(this._adapter?.updateFootprint(e,t,i))},this.updateVideoFootprint=async e=>{this.mode.includes("video")&&this.videoElement?.content&&await(this._adapter?.updateVideoFootprint(e))},this.updateFootprintPanorama=async(e,t)=>{await(this._adapter?.updateFootprintPanorama(e,t))},this.updatingTriangularMeasurementState=!1,this.videoElement=null,this.videoLayer=null,this.videoMapView=new ce({map:new Map,constraints:ye}),this.verticalFilterEnabled=!1,this._adapter=null,this._highlightedFeatureHandle=null,this._imageViewer=new Xe,this._initialCurrentCoverageUpdate=!0,this._locationViewModel=null,this._measurementService=null,this._mediaPrefetcher=null,this._navigationManager=null,this._overlays=new H({listMode:"hide",internal:!0,elevationInfo:{mode:"absolute-height"},title:"OrentedImageryViewerViewModel overlays layer"}),this._panoramicVideoViewer=new pe,this._panoramicViewer=new me,this._panoramicMeasurementViewer=new me,this._referencePointOnGround=null,this._referencePointOnImage=null,this._referenceTransformationService=null,this._sectorData=null,this._transformationService=null,this._featureToSector=null,this._updatingHandles=new T,this._clickTask=null,this._crossSymbol=null,this.footprintExtent=null,this._featureChangedTask=null,this._mediaPrefetchTask=null,this._suitabilities=null,this._transformController=new AbortController,this._updateFootprintTask=null,this._updateGroundElevation=!1,this.addUpdatingPromise=e=>this._updatingHandles.addPromise(e),this.filterCapturedFeatures=e=>{const t=this.currentBestFeature?.attributes.objectId,i=this.layer?.imageReferenceField;if(!t||!e||!i)return;const a=this.overlayedMapFeatures.get(e);a?.forEach(e=>{const a=e.attributes??{},r=Object.keys(a).find(e=>e.toLowerCase()===i.toLowerCase());(r?a[r]:null)!==t&&(e.visible=!e.visible)})},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.loadDataCaptureAdapter=async e=>{await this.loadSketch(e);const t=import("./adapters/sketch/DataCaptureAdapter.js"),{default:i}=await t;return v(e),this.sketchAdapter=new i({viewModel:this}),this.sketchAdapter},this.loadImageFromFeature=(e,t,i)=>this._updatingHandles.addPromise(this._loadImageFromFeature(e,t,i)),this.storeImageMeasurementViewer=e=>{this.imageMeasurementViewer=e},this.storePanoramicMeasurementViewer=e=>{this._panoramicMeasurementViewer=e},this.loadImageViewer=e=>{this._imageViewer?.destroy(),this._imageViewer=e},this.loadPanoramicViewer=e=>{this._panoramicViewer?.destroy(),this._panoramicViewer=e},this.loadPanoramicVideoViewer=e=>{this._panoramicVideoViewer?.destroy(),this._panoramicVideoViewer=e},this.loadVideoViewer=e=>{this.videoMapView.container=e},this.showImageByObjectId=async(e,t)=>{const i=this.additionalFeatures.find(({attributes:t})=>t.objectId===e);if(i)this.currentBestFeature=i;else{const{layer:i,layerFloorFilterClause:r,layerTimeExtent:s}=this;if(!i)return void this.setMessage("noLayerSelected","info");this.beforeLoad();const o=this._updatingHandles.addPromise(this._queryAndLoadByObjectId(i,e,r,s,t));try{await o,await this.selectBestFeature(e,t)}catch(a){y(a)||(d.getLogger(this).error("oriented-imagery-viewer:show-image",a),"NoFeatureFoundWithObjectIdError"===a.name?this.setMessage("noFeatureFoundWithObjectId","error","",{objectId:e}):this.setMessage("imageLoadError","error",a.message))}}},this.getSectorFeatureById=e=>this._suitabilities?.find(({feature:{attributes:{objectId:t}}})=>t===e),this.getFeatureSectorById=e=>this._featureToSector?.[`${e}`],this.navigate=async(e,t)=>{const{mode:i}=this;if("default"!==i&&"panoramic"!==i)throw new n("NavigationError","Navigation is only supported in 'default' and 'panoramic' modes.");const a=e=>"default"===i&&e.declaredClass.endsWith("NavigationManager")||"panoramic"===i&&e.declaredClass.endsWith("NavigationManagerPanoramic");if(null==this._navigationManager||!a(this._navigationManager)){p(this._navigationManager);const e="default"===i?import("./navigation/NavigationManager.js"):import("./navigation/NavigationManagerPanoramic.js");this._navigationManager=new(await e).default({viewModel:this})}return this._navigationManager.navigate(e,t)},this.removeHighlight=()=>this._highlightedFeatureHandle?.remove(),this.revealImageGeometry=e=>{},this.selectBestFeature=async(e,t)=>(v(t),this.currentBestFeature=this.features?.find(({attributes:t})=>`${t.objectId}`==`${e}`),F(()=>"image-loaded"===this.state,t)),this.toggleImageAttributes=()=>{const{currentBestFeature:e,popupEnabled:i,layer:a,view:r}=this;if(this.emit("popup-close"),!(r&&e&&i&&a))return;const{attributes:s,geometry:o}=e,n=new t({geometry:o,attributes:s.toJSON(),origin:a.graphicOrigin,sourceLayer:a});this.emit("popup-open",{features:[n],location:s.location.clone()})},this.updateSuitabilities=(e,t=!0)=>{e.sort((e,t)=>e.suitability-t.suitability),this._suitabilities=e;const i=this._suitabilities.map(({feature:e})=>e);this._initialCurrentCoverageUpdate=!0,this._updateFeatures(i,t),this._groupFeaturesBySectors()},this._createViewClickHandle=()=>{if(this.removeHandles(Ee.click),this.disabled||null==this.view)return;const e=this.mapImageConversionToolState&&"image-loaded"===this.state?this._mapImageConversionToolViewClickHandler:this._viewClickHandler;this.addHandles(this.view.on("click",e,ue.DEFAULT),Ee.click)},this._createImageClickHandle=()=>{this.removeHandles(Ee.imageClick);const{mapImageConversionToolState:e,mode:t,activeViewer:i,currentBestFeature:a,footprintExtent:s}=this,o=i?.imageSize;if(!(e&&"none"!==t&&o&&s&&a))return;const n=i.clickAction;this.clickAction="pixel-location";const l=c(()=>{this.clickAction=n});let h=null;const d=_(()=>i,"pixel-location",e=>{this.plotReferencePointOnImage(e),h?.abort(),h=r(async t=>{if(!e)return;const i=await this._transformationService.pixelToMapPoint(e).then(e=>{const t=this.view?.spatialReference;return ee(!t,e.spatialReference.equals(t))?e:G(e,t)});v(t),this.plotReferencePointOnGround(i)})});this.addHandles([d,l],Ee.imageClick)},this._createTriangularImageClickHandle=()=>{this.removeHandles(Ee.triangularImageClick),this.triangularMeasurementActive&&"none"!==this.mode&&this.currentBestFeature&&this.currentBestFeatureMeasurementImage&&this.activeTriangulatedViewer&&this.addHandles(this.activeTriangulatedViewer.imageRenderer.on("double-click",this._measurementImageClickHandler),Ee.triangularImageClick)},this._enablePan=()=>{this.removeHandles(Ee.videoPanHandles)},this._disablePan=()=>{this.removeHandles(Ee.videoPanHandles),this.addHandles(Ze(this.videoMapView),Ee.videoPanHandles)},this._handleImageHitTestResponse=async e=>{const{layer:t,overlayedCameraLocations:i}=this;if(!t)return;const a=e.results.find(({graphic:e,graphic:{attributes:a}})=>i.includes(e)&&a&&!a[t.imageReferenceField]&&!a[t.imageGeometryField]);if(!a)return;const r=a.graphic.attributes[t.objectIdField];await this.showImageByObjectId(r)},this._loadDepthImage=async e=>{const{currentBestFeature:t,layer:i,depthImageNotSupported:a}=this;if(this.depthImage?.destroy(),this.depthImage=null,!i||!t||a)return;const{depthImage:r}=t.attributes;if(!r)return;const s=(await import("./services/DepthImageService.js")).default;v(e),this.depthImage=new s({url:r});try{await this.depthImage.load(e)}catch(o){y(o)||(d.getLogger(this).error("error occurred while loading depth image",o),this.depthImage?.destroy(),this.depthImage=null)}},this._loadImage=async e=>{const{currentBestFeature:t,layer:i,mode:a}=this;if(this.clearGraphics(),i&&t&&"none"!==a&&"video"!==a&&"panoramic-video"!==a)try{await this.loadImageFromFeature(i,t,e),v(e),await this.transformAndPlotSelectedLocation(e)}catch(r){y(r)||this.loadImageError(r)}},this._loadVideo=async e=>{const{currentBestFeature:t,mode:i,selectedPoint:a}=this,r=t?.attributes.imagePath;if(!t||"panoramic-video"!==i||!r)return;const{attributes:s}=t,{cameraPitch:o,cameraOrientation:n,location:l}=s,c=l.spatialReference.isWGS84&&4!==n?.type?R(l):new j(l);try{this._panoramicVideoViewer.viewModel.video&&(this._panoramicVideoViewer.viewModel.video.pause(),this._panoramicVideoViewer.viewModel.videoPaused=!0),this._panoramicVideoViewer.videoSource=r;let t=0;c&&a&&(t=await te(c,a)-t),this._panoramicVideoViewer.pitch=o??0,this._panoramicVideoViewer.yaw=t,await this._panoramicVideoViewer.loadVideo(e),v(e)}catch(h){y(h)||this.loadImageError(h)}},this._loadImageFromFeature=async(e,t,i)=>{const{mode:a}=this;if("default"!==a&&"panoramic"!==a)return;let r;try{r=await ct(t.attributes,e,i),v(i)}catch(f){if(y(f))return;return xe(f)?(d.getLogger(this).error(f),void this.setMessage("noAttachment","error",`${e.objectIdField}: ${t.attributes.objectId}`)):(d.getLogger(this).error(f,{[e.objectIdField]:t.attributes.objectId,layer:e}),void this.setMessage("imageLoadError","error",`query-attachments-failed:${e.objectIdField} ${t.attributes.objectId}`))}if(!r)return;const{mediaUrl:s,datasetFormat:o,rotation:n,searchParams:l,location:c,cameraHeading:h,matrix:u,cameraPitch:p,getDataSetFormatError:m}=r,g=`${t.attributes.objectId}`;try{let r=this._mediaPrefetcher?.getCachedMedia(g);if(!r){const i=this.navigationNodes.find(e=>e.id===t.attributes.objectId);if(i){try{await(this._mediaPrefetcher?.startPrefetchForNode(i,e))}catch(w){}r=this._mediaPrefetcher?.getCachedMedia(g)}}if(r){if("panoramic"===a){const e=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;let a=0;return c&&this.selectedPoint&&(a=await te(c,this.selectedPoint)-a),await e.loadMedia(r,i),this.selectedPoint?e.set({yaw:a,pitch:p}):"viewAngle"in t.attributes&&Number.isFinite(t.attributes.viewAngle)&&e.set({yaw:t.attributes.viewAngle,pitch:p}),void(this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i))}return await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,r,i),void(this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i))}}catch(w){}m&&d.getLogger(this).warn("error occurred while getting dataset format",m),"panoramic"===a?await this.loadPanoramicMediaSource({lookAt:{yaw:this.selectedPoint?await te(c,this.selectedPoint):"viewAngle"in t.attributes&&Number.isFinite(t.attributes.viewAngle)?t.attributes.viewAngle:0,pitch:p},extension:o?.toUpperCase(),url:s,cameraHeading:h,matrix:u},i):await this.loadMediaSource({datasetFormat:o?.toUpperCase(),url:s,customParameters:l,rotation:n},i),this.triangularMeasurementActive?await this.initializeReferenceTransformationService(i):await this.initializeTransformationService(i)},this._loadMeasurementViewerImage=async e=>{const{currentBestFeatureMeasurementImage:t,layer:i,mode:a}=this;if(this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics(),i&&t&&"none"!==a&&"video"!==a&&"panoramic-video"!==a)try{await this.loadImageFromFeature(i,t,e),v(e)}catch(r){y(r)||this.loadImageError(r)}},this._loadMediaPrefetcher=async e=>{if(!this._mediaPrefetcher){const{default:t}=await import("./support/MediaPrefetcher.js");v(e),this._mediaPrefetcher=new t({maxEntries:this.preloadMediaSize*ve.length})}return this._mediaPrefetcher},this._loadViewAdapter=async e=>{const{view:t}=this;if(t)switch(t.type){case"2d":{const{default:t}=await import("./adapters/view/MapViewAdapter.js");v(e),this._adapter=new t(this);break}case"3d":{const{default:t}=await import("./adapters/view/SceneViewAdapter.js");v(e),this._adapter=new t(this);break}}else this._adapter=null},this._mapImageConversionToolViewClickHandler=e=>{if(e.stopPropagation(),e.preventDefault(),e.mapPoint){const t=e.mapPoint;t.x=B(t.x,t.spatialReference),this.plotMapPoint(e.mapPoint)}},this._measurementImageClickHandler=e=>{e.stopPropagation(),e.preventDefault();const{sketchTriangular:t,triangularMeasurementActive:i,currentBestFeatureMeasurementImage:a,triangulatedMeasurementGraphic:r}=this;t&&i&&a&&r&&"active"!==t.state&&(t.update([r],{tool:"reshape"}),this.updatingTriangularMeasurementState=!0)},this._updateInteraction=()=>{const e=this.videoMapView.extent;if(!e)return;if(e.width<fe.xmax-fe.xmin&&e.height<fe.ymax-fe.ymin){this._enablePan();const t=Ke(e);t&&(this.videoMapView.constraints.geometry=t)}else this.initialVideoMapViewExtent&&!this.videoMapView.extent.equals(this.initialVideoMapViewExtent)&&(this.videoMapView.extent=this.initialVideoMapViewExtent),this._disablePan(),this.videoMapView.constraints.geometry=null},this._viewClickHandler=e=>{this._clickTask?.abort(),this._clickTask=r(async t=>{const{pointerType:i,button:a,mapPoint:r}=e;if("mouse"===i&&0!==a||!r)return;e.stopPropagation(),e.preventDefault();const{view:s,layer:o}=this;if(s&&o){if(this.shouldShowSelectedImage){const i=s.hitTest(e,{include:[o]});this._updatingHandles.addPromise(i);const a=await i;return v(t),await this._processHitTestResults(o,a,{signal:t})}return this._updatingHandles.addPromise(this.loadBestImage(r,{signal:t}))}})},this.plotSelectedPointOnImage=async(e,i)=>{if(await f(i),!e)return;const a=new j({...k(e)?e.toJSON():e});if("default"===this.mode)a.x-=.5,a.y=.5-a.y,a.spatialReference=this._imageViewer.imageRenderer.spatialReference.clone(),this._crossSymbol=new t({geometry:a,symbol:Ve}),this._imageViewer.addGraphic(this._crossSymbol,0);else if("panoramic"===this.mode){const{imageSize:i,media:a}=this._panoramicViewer;if(!i||!a)return;const r=Be(a),s=ie(e,...i,r);this._crossSymbol=new t({geometry:new j(s,O.WebMercator),symbol:Pe}),this._panoramicViewer.addGraphic(this._crossSymbol,0)}},this.handleSectorClick=this.handleSectorClick.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){this.addHandles([M(()=>this.view,()=>this.load(),b),M(()=>this.view?.map,(e,t)=>{t?.layers.remove(this._overlays),e?.layers.add(this._overlays)},I),M(()=>this.view?.map?.allLayers?.length,e=>{e&&this.view?.map?.layers.reorder(this._overlays,e-1)},I),M(()=>[this.state,this.mapImageConversionToolState,this.view,this.disabled],()=>{this._createViewClickHandle(),this._createImageClickHandle()},b),M(()=>[this.triangularMeasurementActive,this.currentBestFeatureMeasurementImage],()=>{this._createTriangularImageClickHandle()},b),M(()=>[this.state,this.imageLocationToolState,this.view],()=>{this._initializeMeasurementService(),this._initializeLocationViewModel()},b),M(()=>this.measureType,()=>{this.clearPreviousMeasurements(),this._initializeMeasurementService()},b),M(()=>this.bestFeatureAngle,(e,t)=>{this.previousFeatureAngle=t??0},b),M(()=>this.currentBestFeature,async(e,t)=>{m(this._featureChangedTask),this._featureChangedTask=r(async i=>this.determineWorkflowForFeature.apply(this,[e,t,{signal:i}])),await this._featureChangedTask.promise},{sync:!0}),M(()=>[this.currentNode,this.preloadMedia,this.navigationMode],()=>{this._mediaPrefetchTask?.abort(),this._mediaPrefetchTask=r(async e=>{this.preloadMedia&&null!=this.navigationMode?(this._mediaPrefetcher??=await this._loadMediaPrefetcher({signal:e}),v(e),"directional"===this.navigationMode?this._mediaPrefetcher.enqueueDirectionalPrefetch(this.layer,this.currentNode,this.preloadMediaSize):this._mediaPrefetcher.enqueueSequentialPrefetch(this.layer,this.currentNode,this.preloadMediaSize)):this._mediaPrefetcher?.clear()})},b),M(()=>this.currentBestFeatureMeasurementImage,(e,t)=>{m(this._featureChangedTask),t&&e!==t&&(this.triangulatedPoint=null,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this._measurementService?.resetMeasurementVectors()),this._featureChangedTask=r(async i=>{await this.determineWorkflowForTriangularMeasurement(e,t,{signal:i}),v(i),this._reorderTriangularSketchLayer()})},b),M(()=>this.triangularMeasurementActive,(e,t)=>{t&&!e&&(this._measurementService?.resetMeasurementVectors(),this.currentBestFeatureMeasurementImage=null,this.triangulatedDistanceMeasurement=null,this.triangulatedMeasurementGraphic=null,this.triangulatedPoint=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaAccuracy=0,this.sketchTriangularGraphicsLayer?.graphics.destroyAll(),this.clearReferencePointOnImage(),this.imageMeasurementViewer.clearImage(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearImage(),this._panoramicMeasurementViewer.clearGraphics())}),M(()=>this.mode,e=>{switch(this.removeHandles(Ee.interactionHandles),e){case"default":this.addHandles(M(()=>{const{state:e}=this;return"image-loaded"===e?this._imageViewer.imagePointsInView:null},e=>{e&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{await this.updateFootprint(e,void 0,{signal:t})}))},{...b,equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles);break;case"video":this.addHandles(M(()=>{const{footprintExtent:e,videoElement:t,bestFeatureFootprint:i}=this;if(e&&t?.loaded&&i)return{videoExtent:we,bestFeatureFootprint:i}},e=>{e?.videoExtent&&e?.bestFeatureFootprint&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{const i={points:e.videoExtent,feature:void 0,scale:void 0,options:{signal:t}};await this.updateVideoFootprint(i)}))},{...b,equals:(e,t)=>i(e?.videoExtent,t?.videoExtent,h)&&e?.bestFeatureFootprint===t?.bestFeatureFootprint}),Ee.interactionHandles);break;case"panoramic":this.addHandles(M(()=>{const{currentBestFeature:e,state:t,_panoramicViewer:i}=this,{imageSize:a,vfov:r,hfov:s,pitch:o,yaw:n}=i;return e&&a&&!t.includes("loading")&&null!=r&&null!=s&&null!=o&&null!=n?[r,s,n,o]:null},e=>{if(!e||this.state.includes("loading"))return;const[t,i,a,s]=e;this.currentNode&&(this.currentNode.currentHeading=a,this.currentNode.currentPitch=s),m(this._updateFootprintTask),this._updateFootprintTask=r(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:a,pitch:s},{signal:e}),this._updateFootprintTask=null})},{equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles);break;case"panoramic-video":this.addHandles(M(()=>{const{currentBestFeature:e,state:t,_panoramicVideoViewer:i}=this,{imageSize:a,vfov:r,hfov:s,pitch:o,yaw:n,viewModel:l}=i,c=l.closestFeature??e;return c&&a&&!t.includes("loading")&&null!=r&&null!=s&&null!=o&&null!=n?[r,s,n,o,c]:null},e=>{if(!e)return;const[t,i,a,s,o]=e;m(this._updateFootprintTask),this._updateFootprintTask=r(async e=>{await this.updateFootprintPanorama({verticalFieldOfView:t,horizontalFieldOfView:i,yaw:a,pitch:s,feature:o,horizonAngles:this._panoramicVideoViewer.horizonAngles},{signal:e}),v(e),this._updateFootprintTask=null})},{equals:(e,t)=>i(e,t,h)}),Ee.interactionHandles)}},b),M(()=>[this.brightness,this.contrast,this.sharpness],()=>{const{_imageViewer:e,brightness:t,contrast:i,mode:a,sharpness:r}=this;"default"===a&&(e.brightness=t,e.contrast=i,e.sharpness=r)},b),M(()=>this.activeViewer?.imageRenderer,()=>{this.sketch&&(this.sketch.view=this.activeViewer?.imageRenderer)}),M(()=>this.activeViewer,e=>{this.removeHandles(Ee.hittestHandles),e&&this.addHandles(_(()=>e,"hittest-response",this._handleImageHitTestResponse),Ee.hittestHandles)}),M(()=>this.videoMapView.extent,async()=>{const e=this.videoViewModel?.closestFeature;e&&(m(this._updateFootprintTask),this._updateFootprintTask=r(async t=>{const i={points:this.videoExtentPoints,feature:e,options:{signal:t}};await this.updateVideoFootprint(i)}))}),M(()=>[this.videoMapView.interacting,this.videoMapView.navigating,this.videoMapView.scale],()=>{this.scheduledFrameId||(this.scheduledFrameId=requestAnimationFrame(()=>{this.scheduledFrameId=null,this._updateInteraction()}))},{initial:!0}),V(()=>null!=this.videoMapView.extent,()=>{this.initialVideoMapViewExtent=this.videoMapView.extent},{once:!0})]),this.when().finally(()=>{this.notifyChange("state")})}destroy(){this.currentBestFeature=null,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=p(this.bestFeatureFootprint),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),this.videoViewModel=p(this.videoViewModel),this._locationViewModel=p(this._locationViewModel),this._crossSymbol=p(this._crossSymbol),this._referencePointOnGround=p(this._referencePointOnGround),this._referencePointOnImage=p(this._referencePointOnImage),this._overlays&&this.view?.map?.remove(this._overlays),this._overlays.destroy(),this._imageViewer.destroy(),this.imageMeasurementViewer.destroy(),this._panoramicViewer.destroy(),this._panoramicMeasurementViewer.destroy(),this._mediaPrefetcher?.destroy()}get activeLayer(){return o(d.getLogger(this),"activeLayer",{replacement:"layer"}),this.layer}set activeLayer(e){o(d.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 activeTriangulatedViewer(){switch(this.mode){case"default":return this.imageMeasurementViewer;case"panoramic":return this._panoramicMeasurementViewer;default:return null}}get accuracyParametersMissing(){return this.layer?.orientationAccuracy?.every(e=>0===e)??!0}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 currentNode(){const{currentBestFeature:e,navigationNodes:t}=this;return t.find(t=>t.id===e?.attributes.objectId)}get depthImageNotSupported(){if(this.currentBestFeature?.attributes.depthImage)return!Re(this.currentBestFeature.attributes.depthImage)}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){const{currentBestFeature:e}=this;if(!e)return!1;const t=e.attributes.imagePath?.trim();return Re(t)||Ie(t)}get imageLoaded(){return o(d.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===Fe}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(He(e))}get layerFloorFilterClause(){const{layerView:e}=this;return e?ne(e):null}get layerTimeExtent(){return this.layerView?.timeExtent??null}get mode(){const e=this.currentBestFeature?.attributes;if(!e)return"none";const t=e.orientedImageryType;if(t?.includes("video"))return t.includes("360")?"panoramic-video":"video";const{horizontalFieldOfView:i,isSpherical:a}=e;return 360===i||a?"panoramic":"default"}get panoramicVideoLoaded(){const{mode:e,_panoramicVideoViewer:t}=this,{videoLoaded:i}=t.viewModel;return("panoramic-video"===e&&!0===i)??!1}get popupEnabled(){return!0===this.layer?.popupEnabled}get referencePoint(){return this._referencePointOnGround?.geometry}get sectorData(){const{_sectorData:e}=this;return e?_e.map(t=>e[t]):null}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",u(e,0,1))}get sketchGraphicsLayer(){const{sketch:e}=this;return"graphics"===e?.layer?.type?e.layer:void 0}get state(){const{mode:e,_updatingHandles:{updating:t},_featureChangedTask:i}=this;if(!this.isFulfilled()||t||!1===i?.finished)return"loading";if(this.isRejected())return"error";if("error"===this.displayMessage?.type)return"image-load-error";switch(e){case"default":return this._imageViewer.state;case"panoramic":return this._panoramicViewer.state;case"video":return this.videoElement?.loaded?"video-loaded":"video-not-loaded"}return"ready"}get thumbnails(){const{features:e}=this;return e?new s(e.map(({attributes:{imagePath:e,objectId:t,cameraRoll:i,imageRotation:a}})=>{const r=e?.trim();return Re(r)||Ie(r)?{url:r,objectId:t,rotation:(i??0)+(a??0)}:null}).filter(a)):null}get videoExtentPoints(){const e=Qe(this.videoMapView.extent);return e.length?e:we}set view(e){this._set("view",e)}get _defaultGraphicsLayer(){const e={blendMode:"source-atop"};switch(this.mode){case"panoramic":return new H({...e,elevationInfo:{mode:"absolute-height"}});case"default":return new H({...e});default:return}}get _overlaysView(){return this.view?.layerViews.find(({layer:e})=>e===this._overlays)}beforeLoad(e=!0){this.emit("popup-close"),e&&(this.displayMessage=null),this.clearPreviousGroundLocation(),this.triangularMeasurementActive=!1,this.currentBestFeatureMeasurementImage=null,this.measureType=null,this.imageLocationToolState=!1,this.features.removeAll(),this.currentBestFeature=null,this.additionalFeatures.removeAll(),this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),this._overlays?.removeAll()}async calculateLocationAccuracy(e){return this._measurementService?.calculateLocationAccuracy(e)}clearLocationPointOnImage(e=!1){this.locationPointOnImage&&!e&&(this._imageViewer.removeGraphic(this.locationPointOnImage),this._panoramicViewer.removeGraphic(this.locationPointOnImage),this.locationPointOnImage=p(this.locationPointOnImage)),this.correctedLocationPointOnImage&&(this.imageMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this._panoramicMeasurementViewer.removeGraphic(this.correctedLocationPointOnImage),this.correctedLocationPointOnImage=p(this.correctedLocationPointOnImage))}clearPreviousMeasurements(){this.clearMeasurementGraphics(),this.resetMeasurementData(),this.stopMeasurement()}clearPreviousGroundLocation(){this.groundCoordinates=null,this.groundCoordinatesAccuracy=null,this.pixelCoordinates=null,this.clearLocationPointOnImage()}clearMeasurementGraphics(){this.measurementGraphic&&(this.activeViewer?.removeGraphic(this.measurementGraphic),this.measurementGraphic=null),this.heightGraphic&&(this.activeViewer?.removeGraphic(this.heightGraphic),this.heightGraphic=null),this.triangularMeasurementActive&&this.sketchTriangularGraphicsLayer?.graphics.destroyAll()}digitizeCancel(){return this.sketch?.cancel()}digitizeCanRedo(){return this.sketch?.canRedo()??!1}digitizeCanUndo(){return this.sketch?.canUndo()??!1}digitizeComplete(){return this.sketch?.complete()}async digitizeCreate(e,t){const{sketch:i,dataCaptureLayer:a}=this;if(!i)throw dt();rt(a,e,i),await i.create(e,{...t,defaultZ:0})}digitizeDelete(){if(!this.sketch)throw dt();return this.sketch.delete()}digitizeDuplicate(){if(!this.sketch)throw dt();return this.sketch.duplicate()}digitizePlace(e,t){if(!this.sketch)throw dt();return this.sketch.place(e,t)}digitizeRedo(){if(!this.sketch)throw dt();return this.sketch.redo()}digitizeUndo(){if(!this.sketch)throw dt();return this.sketch.undo()}digitizeUpdate(e,t){if(!this.sketch)throw dt();return this.sketch.update(e,t)}filterByFootprints(e,t,i=!1){const a=[],r=[],s=[];return e.forEach(e=>{const{layer:{coveragePercent:o},attributes:n}=e;let l;const{polygon:c,frustum:h}=q(n);if(l=c.clone(),n.isInspection&&(l=$(n)),o&&(l=W(l,o)),i||!t||J(l,t)){s.push(e);const{geometry:t,objectId:i,cameraHeight:o,cameraHeading:l}=n,d=t.clone();d.z=o/K(t.spatialReference),d.imageID=i,this.pointSources.push(d),l!==Fe&&(a.push(c),h&&r.push(h))}}),{features:s,polygons:a,frustums:r}}async deleteDataCaptureFeatures(e){const{dataCaptureLayer:t}=this;if(!t)throw new n("orientedimageryviewer:missing-featurelayer","Data capture 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?.[_e[e]],i=t?.at(0);i&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(i):this._updateCurrentBestFeature(i))}handleFeatureClick(e){const{sector:t,featureIndexInSector:i}=e;if(isNaN(i))return;const a=this._sectorData?.[t],r=a?.at(i);r&&(this.triangularMeasurementActive&&this.currentBestFeature?this._updateImageMeasurementBestFeature(r):this._updateCurrentBestFeature(r))}load(e){return this.addResolvingPromise(this._loadViewAdapter(e).catch(e=>{if(!y(e))throw e})),this}async loadBestImage(e,t){return this.selectedPoint=Q(e),this.beforeLoad(),this._fetchFeaturesWithController(e,t)}async loadHeightMeasurementAdapter(e){if(!this.drawAdapter){const t=import("./adapters/draw/HeightMeasurementAdapter.js"),{default:i}=await t;if(v(e),this.drawAdapter=new i({viewModel:this,measurementService:this._measurementService}),!this.drawAdapter.viewModel.isResolved())return}return this.drawAdapter}loadImageError(e){d.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"),{default:i}=await t;v(e),this.sketch=new i({layer:this._defaultGraphicsLayer,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 loadMeasurementAdapter(e){if(!this.sketchAdapter){const t=import("./adapters/sketch/MeasurementAdapter.js"),{default:i}=await t;if(v(e),this.sketchAdapter=new i({viewModel:this,measurementService:this._measurementService}),!this.sketchAdapter.viewModel.isResolved())return}return this.sketchAdapter}async processFeatureResponse(e,t,i){const{features:a}=e;if(this._clearFeatureGeometries(),!this._checkFeatures(a))return;const{features:r,polygons:s,frustums:o}=this.filterByFootprints(a,t,i?.skipFilter);if(!this._checkFeatures(r))return;this.coveragePolygons.addMany(s),this.coverageFrustums.addMany(o);const n=await this.processElevationSample(s,r,i);v(i),await this._updateElevationOfSelectedPointAndLocations(r,t,n),v(i),De(r,n);let l=r;if(this.layer?.verticalSearchRange&&this.layer.hasZ&&this.verticalFilterEnabled&&(l=ze(r,t,this.layer.verticalSearchRange),!l.length))return void this.setMessage("noImageAtElevation","info");const c=this._processSuitableFeatures(l,t);this.updateSuitabilities(c,i?.loadBestImage)}async processFeatureElevation(e,t,i){if(!t)return;const{features:a,polygons:r}=this.filterByFootprints(e,t,!0);if(!a?.length)return;const s=await this.processElevationSample(r,a,i);return v(i),s}async startMeasurement(e,t){this.sketch||await this.loadSketch(t),await this.loadMeasurementAdapter(t);const{sketch:i,sketchAdapter:a,activeViewer:r,mode:s}=this;if(!i||!a||!r||"none"===s)return;if(this.displayNewMeasurementButton=!1,"panoramic"===s&&(i.defaultCreateOptions.defaultZ=0),await i.create(e),"panoramic"===s){const{drawOperation:e}=i.view.activeTool;e.constraintsEnabled=!1,e._set("elevationDrawSurface",null)}const o=this.activeViewer?.imageRenderer.effectiveTheme.accentColor;o&&this.sketch&&(this.sketch.polygonSymbol=Se(o),this.sketch.polylineSymbol="panoramic"===s?Ae:Ce(o,2.5))}async startHeightMeasurement(){this.displayNewMeasurementButton=!1,this.draw??=new he({view:this.activeViewer?.imageRenderer}),this.polylineDrawAction=this.draw.create("polyline"),await this.loadHeightMeasurementAdapter()}initializeMeasurement(e){switch(this.clearMeasurementGraphics(),this.resetMeasurementData(),e){case"distance":this.startMeasurement("polyline");break;case"area":this.startMeasurement("polygon");break;case"height":this.startHeightMeasurement()}}async overlayCameraLocations(e){const{activeViewer:i,currentBestFeature:a,overlayedCameraLocations:r,layer:s,mode:o,state:n,layerFloorFilterClause:l,layerTimeExtent:c}=this,h=i?.imageSize;if(!h||!a||!s||"default"!==o&&"panoramic"!==o||n.includes("loading"))return;const{polygon:d}=q(a.attributes);if(i.removeManyGraphics(r.toArray()),r.removeAll(),e){const{features:e}=await s.queryFeatures({where:P(`${s.objectIdField} <> ${a.attributes.objectId}`,P(s.definitionExpression,l)),geometry:d,returnGeometry:!0,outFields:[s.objectIdField],timeExtent:c}),n=await Promise.all(e.map(async e=>{const{attributes:i,geometry:a}=e,r=await this._transformationService.pointToImageGeometry(a),s="panoramic"===o?ke():Te();return new t({attributes:i,symbol:s,geometry:r})}));r.addMany(n),i.addManyGraphics(r.toArray())}}overlayGraphicsOnImage(e,t){this.removeOverlayedGraphicsOnImage(e),this.overlayedMapFeatures.set(e,t),this.activeViewer?.addManyGraphics(t.toArray())}async overlayMapFeatures(e,i=!1){const{activeViewer:a,currentBestFeature:r,mode:o,state:n,layer:l}=this,c=a?.imageSize;if(!c||!r||"none"===o||"video"===o||"panoramic-video"===o||n.includes("loading")||!l)return;const{polygon:h}=q(r.attributes);try{const{imageGeometryField:t,oiObjectIdField:i}=st(e,l.imageGeometryField,l.imageReferenceField);this.imageGeometryField=t.name,this.oiObjectIdField=i.name}catch(m){d.getLogger(this).warn("oriented-imagery-viewer:overlay-map-features",m)}const{features:u}=await e.queryFeatures({geometry:h,returnGeometry:!0,outFields:["*"]}),p=new s(await Promise.all(u.map(async s=>{const n=s.symbol?.clone()??e.renderer?.getSymbol(s)?.clone(),{attributes:l,geometry:h}=s,{imageGeometryField:u,oiObjectIdField:p}=this;if(u&&p&&ht(e,u,p)&&`${l[p]}`==`${r.attributes.objectId}`)try{const t=Be(a?.media);return ot(l,u,e,i,c,o,n,t)}catch(m){d.getLogger(this).warn("oriented-imagery-viewer:overlay-map-features","couldn't create graphic from attributes, geometry will be used",{error:m,feature:s,layer:e,imageGeometryField:this.imageGeometryField,imageReferenceField:this.oiObjectIdField})}const g=await this._transformationService.geometryToImageGeometry(h);return new t({attributes:l,layer:e,symbol:n,geometry:g,visible:e.visible&&i})})));this.overlayGraphicsOnImage(`${e.id}`,p)}getDepthAt(e){const{activeViewer:t,currentBestFeature:i,mode:a,state:r,depthImage:s}=this,o=t?.imageSize;if(!o||!i||"none"===a||r.includes("loading"))return d.getLogger(this).warnOnce("oriented-imagery-viewer:get-depth-at","Load an image to use depth"),null;if(!s?.loaded)return d.getLogger(this).error("oriented-imagery-viewer:get-depth-at","Depth image is not loaded"),this.emit("depth-image-service:not-loaded"),null;const n=(Array.isArray(e)?e:[e]).map(e=>s.depthAt(e,{width:o[0],height:o[1]})??null);return Array.isArray(e)?n:n[0]}getActiveSectors(){return _e.filter(e=>this._sectorData?.[e]?.length)}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 j({...e.toJSON()}),symbol:Le}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}}))}plotReferencePointOnImage(e){const{state:i,mode:a,activeViewer:r}=this;if("image-loaded"!==i||!r?.imageSize||"default"!==a&&"panoramic"!==a)return;this.clearReferencePointOnImage();const s=Be(r.media),o=nt(e,a,r.imageSize,s);this._referencePointOnImage=new t({geometry:o,symbol:"panoramic"===a?je.clone():Le.clone()}),r.addGraphic(this._referencePointOnImage,0)}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))}reset(){const{mode:e}=this;"default"===e||"panoramic"===e?this.resetImage():"video"===e?this.resetVideo():"panoramic-video"===e&&this.resetVideoPanoramic(),this.beforeLoad(!1)}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)}resetVideo(){this.setMessage("onLoadMessage","info"),this.videoViewModel?.resetVideoHandler(),this._overlays?.removeAll(),this.videoViewModel=null,this.featureCache=[],this.currentBestFeature=null}resetVideoPanoramic(){this.setMessage("onLoadMessage","info"),this._overlays?.removeAll(),this.currentBestFeature=null}resetMeasurementData(){this.areaMeasurementResult=0,this.areaMeasurementAccuracy=0,this.distanceMeasurementResult=0,this.distanceAccuracyArray=[],this.heightMeasurementResult=0,this.heightMeasurementAccuracy=0,this.heightGraphic=null,this.triangulatedDistanceMeasurement=null,this.triangulatedDistanceAccuracy=null,this.triangulatedAreaMeasurement=null,this.triangulatedMeasurementGraphic=null,this.updatingTriangularMeasurementState=!1,this.triangulatedAreaAccuracy=0,this._measurementService?.resetMeasurementVectors()}async saveDrawing(){const{dataCaptureLayer:e,sketchAdapter:t}=this;if(!e||"data-capture"!==t?.type)return;const{pendingGraphics:i,savedGraphics:a}=t,r=i.get(e.id),s=r?.toArray();if(!r||!s?.length)return;const{addFeatureResults:o}=await this.saveDataCaptureFeatures(s),n=o.reduce((t,{objectId:i,globalId:a,error:r},o)=>{const n=s[o],{attributes:l}=n;return r?t.error.push(n):(i&&(l[e.objectIdField]=i),a&&e.globalIdField&&(l[e.globalIdField]=a),t.success.push(n)),t},{success:[],error:[]});a.addMany(n.success),r.removeAll(),r.addMany(n.error)}async saveDataCaptureFeatures(e,t){const{activeViewer:i,currentBestFeature:r,dataCaptureLayer:s,mode:o}=this,l=i?.imageSize;if(!l||!r||"none"===o||"video"===o||"panoramic-video"===o)throw new n("orientedimageryviewer:missing-input","Image size, current best feature and mode are required to save data capture features");if(!s)throw new n("orientedimageryviewer:missing-featurelayer","Data capture layer is not available");const c=await Promise.all(e.map(async e=>{const i=e.clone(),{geometry:a}=i;if(!a)return;const r=a.type,o=s.hasZ,n=s.geometryType,l=r!==n,c=l?await import("./transformers.js"):null,h=c?.default[n],d=l?h?.(a):a;return d&&(i.geometry=await this._transformationService.imageGeometryToMapGeometry(d,t),i.geometry)?(o||lt(i.geometry),i):void 0})),h=c.filter(a);return s.applyEdits({addFeatures:h}).then(e=>{const{addFeatureResults:t}=e;let i=0;const a=c.map(e=>{const a=t[i++];return e?a:{error:new n("orientedimageryviewer:save-unsucccessful","Error in saving data capture features"),objectId:null,globalId:null}});return{...e,addFeatureResults:a}})}async searchBestImage(e,t){try{const i=await z(e,t);i&&await this.processFeatureResponse(i,e.point,t)}catch(i){y(i)||(this.setMessage("imageLoadError","error",i.message),d.getLogger(this).error("error occurred while finding best image",i))}}selectTriangularMeasurementFeature(e){this.currentBestFeatureMeasurementImage=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}setCurrentPanoramaView(e,t){this._panoramicViewer?.set({yaw:e,pitch:t})}async startDataCapture(e,t){const i=this.activeViewer?.imageRenderer,{oiObjectIdField:a,currentBestFeature:r}=this;if(!i||!r||!a)return;const{attributes:{objectId:o}}=r,n=this.overlayedMapFeatures.get(e.id)?.toArray()??[],l=[],c=[];for(const s of n)`${s.getAttribute(a)}`==`${o}`?l.push(s):c.push(s);this.overlayGraphicsOnImage(e.id,new s(c)),this.collectionId=e.id;const h=await this.loadSketch(t),d=await this.loadDataCaptureAdapter(t);v(t),h.addGraphics(l),d.savedGraphics.addMany(l);i.ui.find("zoom").visible=!1,i.map.layers.add(this.sketchGraphicsLayer)}async stopDataCapture(e=!1){this.sketch?.cancel(),this.sketchGraphicsLayer?.removeAll(),this.sketchAdapter=p(this.sketchAdapter),this.sketch=p(this.sketch),this.collectionId=null;const{dataCaptureLayer:t}=this,i=this.activeViewer?.imageRenderer;if(!i||i.destroyed)return;i.map.layers.remove(this.sketchGraphicsLayer),e&&t&&await this.overlayMapFeatures(t,!0);const a=i.ui.find("zoom");a&&(a.visible=!0)}stopMeasurement(){this.draw?.reset(),this.sketch?.cancel()}async toggleAllOverlayMapFeatures(e){!e&&this.dataCaptureLayer&&(await this.stopDataCapture(!0),this.dataCaptureLayer=null),this.overlayedMapFeatures.forEach(t=>{this._toggleVisiblity(t,e)})}toggleOverlayMapFeatures(e,t,i){const a=this.overlayedMapFeatures.get(e);a&&i&&this._toggleVisiblity(a,t)}toggleSelection(e){const{sketch:t}=this;t&&(t.updateOnGraphicClick=e,t.cancel())}async transformAndPlotReferencePointOnImage(e){const{selectedLocation:t,options:i}=e;let a=!1,r=!1;const s=this.bestFeatureFootprint?.geometry;switch(s?.type){case"polygon":{const e=t.spatialReference.equals(s.spatialReference)?t:await G(t,s.spatialReference);a=s.contains(e);break}case"mesh":{const e=t.spatialReference.equals(s.spatialReference)?t:await G(t,s.spatialReference);r=s.extent.contains(e);break}}if(!a&&!r)return void this.clearReferencePointOnImage();const o=await this._transformationService.pointToPixel(t,i);if(o)return v(i),this.plotReferencePointOnImage(o),{x:o.x,y:o.y};this.clearReferencePointOnImage()}async updateFeatureCache(e,t){const i=await N(e,t);i.features?.length&&(this.featureCache=i.features)}async _fetchFeatures(e,t){const{layer:i,layerFloorFilterClause:a,layerTimeExtent:r,view:s}=this;if(!s||!i)return;e.x=B(e.x,e.spatialReference);const o=i.spatialReference.equals(e.spatialReference)?e:await G(e,i.spatialReference),n=o.spatialReference.isGeographic?R(o):o,l=P("1=1",P(i.definitionExpression,a)),c=n.spatialReference.isGeographic?1:S(n.spatialReference),h={layerInstanceOrURL:i,point:n,queryParams:{where:l,maximumDistance:i.maximumDistance?i.maximumDistance/c:void 0,timeExtent:r}};return await this.searchBestImage(h,t)}async _fetchFeaturesWithController(e,t){try{await this._fetchFeatures(e,t)}catch(i){if(y(i))return;this.setMessage("imageLoadError","error"),d.getLogger(this).error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,additionalFeatures:t,features:i,invalidCameraHeading:a}=this,r=i.at(0);if(!e||!t||!r||!i||a)return void(this._sectorData=null);this._sectorData={};const o={};this._featureToSector=o;for(const h of _e)this._sectorData[h]=new s;const n=e.map((e,t)=>({...e,featureIndex:t}));n.sort((e,t)=>e.trueSuitability-t.trueSuitability);const l=n.map(({distance:e})=>e),c=Math.max(...l);n.forEach(e=>{const{distance:t,angle:a,featureIndex:s}=e,n=t/c*Me[2],l=We(t,c),h=Je(a);if(!this._sectorData)return;const d=Me[3]+n*Math.sin(a*Math.PI/180),u=Me[3]+n*Math.cos(a*Math.PI/180);let p;const m=i.at(s),g=m===r,{cameraPitch:y}=m.attributes,v=y<5;if(g&&v)p=-90;else{const e=d-Me[3],t=u-Me[3],i=t/Math.sqrt(e**2+t**2);let a=180*Math.acos(i)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(a*=-1),p=a}const f=""===l?h:`${l}_${h}`;g&&(p===this.bestFeatureAngle?this.previousFeatureAngle=p:this.bestFeatureAngle=p,this.navigatorCurrentBestFeature=v?null:{x:d,y:u,direction:h}),o[`${m.attributes.objectId}`]=f;const w=this._sectorData[f];w.add({angle:a,featureIndex:s,x:d,y:u,objectID:m.attributes.objectId,sector:f,featureIndexInSector:w.length})})}async _initializeLocationViewModel(e){if(!this._locationViewModel){const t=import("./components/ImageLocationViewModel.js"),{default:i}=await t;v(e),this._locationViewModel=new i({oiViewModel:this,referenceTransformationService:this._referenceTransformationService})}}_initializeMeasurementService(){this._measurementService||(this._measurementService=new at({transformationService:this._transformationService,referenceTransformationService:this._referenceTransformationService}))}_initializeVideo(){if(this.videoElement||!this.currentBestFeature)return;this.removeHandles(Ee.videoPlayerHandles),this.videoElement=new le({video:this.currentBestFeature.attributes.imagePath,georeference:new oe({extent:new L(fe)}),autoplay:!1}),this.videoElement.content?.loop&&(this.videoElement.content.loop=!1);const e=new D({source:this.videoElement,title:this.layer?.title,copyright:this.layer?.copyright});this.videoLayer=e,e&&this.videoMapView.map.layers.add(e),this.videoViewModel=new et({oiViewModel:this})}async getMapPoint(e,t){const i=await this._transformationService.pixelToMapPoint(Array.isArray(e)?e:[e],t);return Array.isArray(e)?i:i[0]}async getMapPointForFeature(e,t,i){const a=await this._transformationService.pixelToMapPointForFeature(Array.isArray(e)?e:[e],t,i);return Array.isArray(e)?a:a[0]}async loadPanoramicMediaSource(e,t){const{lookAt:i,...a}=e,r=Ne(a);try{await r.load(t)}catch(o){if(y(o))return;if("unsupported-format"===o.name)return void this.setMessage("unsupportedPanoramicImageryError","error",void 0,{datasetFormat:r?.extension??"UNKNOWN FORMAT"})}const s=this.triangularMeasurementActive?this._panoramicMeasurementViewer:this._panoramicViewer;await s.loadMedia(r,t),i&&s.set(i)}async loadMediaSource(e,t){const i=Ue(e);await this._setImageSource(this.triangularMeasurementActive?this.imageMeasurementViewer:this._imageViewer,i,t)}_clearFeatureGeometries(){this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll()}_checkFeatures(e){return!!e?.length||(this.setMessage("noImageError","error"),this.videoElement?.content?.pause(),this.currentBestFeature=null,!1)}async _getElevationSampleFromGround(e,t,i){if(!e[0])return;const a=(await import("../../geometry/operators/unionOperator.js")).executeMany(e);if(this._updateFootprintWithFeatures(t,a),"3d"===this.view?.type)try{return await this.view.map.ground.createElevationSampler(this.footprintExtent,i)}catch(r){y(r)||d.getLogger(this).error(r)}}async processElevationSample(e,t,i){const{elevationSource:a}=t[0].attributes,r=await this._getElevationSampleFromGround(e,t,i);return r||(a&&this.footprintExtent&&Z(a)?await Y({extent:this.footprintExtent,lod:a.lod,url:a.url,rasterFunction:a.rasterFunction}):void 0)}_processSuitableFeatures(e,t){return U({features:e,selectedPoint:t,camera:qe(this.view)?this.view.camera:null,currentImage:this.currentBestFeature})}async _processHitTestResults(e,t,i){const{results:[a]}=t;if("graphic"!==a?.type)return void this.setMessage("noImageError","error");const r=a.graphic.getAttribute(e.objectIdField);return await this.showImageByObjectId(r,i)}async _queryAndLoadByObjectId(e,t,i,a,r){this.displayMessage=null;const{response:s}=await it(e,t,i,a,r);if(v(r),!s?.features?.length)throw new tt(t);const o=q(s.features[0].attributes).polygon,n=j.fromJSON(E(o)),l=Q(n),c=S(l.spatialReference);this.selectedPoint=l;const h={layerInstanceOrURL:e,point:l,queryParams:{where:P(P("1=1",P(e.definitionExpression,i)),`${e.objectIdField} <> ${t}`),maximumDistance:e.maximumDistance?e.maximumDistance/c:void 0,timeExtent:a}},d=await z(h,r);v(r);const{features:u}=d;return u.push(s.features[0]),await this.processFeatureResponse(d,l,{...r,loadBestImage:!1})}_reorderTriangularSketchLayer(){const e=this.imageMeasurementViewer.imageRenderer.map.layers?.length;this.sketchTriangularGraphicsLayer&&e&&this.imageMeasurementViewer.imageRenderer.map.layers.reorder(this.sketchTriangularGraphicsLayer,e-1)}async _setImageSource(e,t,i){e.media=t,await e.loadMedia(t,i)}_toggleVisiblity(e,t){e.forEach(e=>{e.visible=t})}async _updateElevationOfSelectedPointAndLocations(e,t,i,a){const{location:r,cameraHeight:s}=e[0].attributes,o=await ae(r.spatialReference,r.z,s,{elevationSample:i,elevationSource:i?void 0:e[0].attributes.elevationSource,extent:this.footprintExtent},a);v(a);const[n,...l]=await X([t,...e.map(e=>e.attributes.geometry.clone())],o);v(a),t.elevation=n.z,e.forEach((e,t)=>{e.attributes.elevation=l[t].z})}_updateFeatures(e,t=!0){if(!e.length)return this.currentBestFeature=null,void this.additionalFeatures.removeAll();this.features.removeAll(),this.features.addMany(e),this.navigationNodes.removeAll(),this.navigationNodes.addMany(e.map(e=>{const{geometry:t,attributes:i}=e,{isSpherical:a,cameraHeading:r,cameraPitch:s}=i;return new Ye({geometry:t,attributes:i,currentHeading:a?0:r,currentPitch:a?0:s})})),e.length>1?this.additionalFeatures.addMany(e.slice(1)):this.additionalFeatures.removeAll(),this._updateGroundElevation=!0,t&&(this.currentBestFeature=e[0]),"video"===this.mode&&(this._initializeVideo(),this.videoElement?.loaded&&this.videoViewModel?.playVideoFromSelectedLocation(e[0])),"panoramic-video"===this.mode&&this._loadVideo()}_updateFootprintWithFeatures(e,t){const i=[];for(const{attributes:{geometry:a}}of e)t.contains(a)||i.push([a.x,a.y]);i.sort((e,t)=>+x([e,t])),t.addRing(i),this.footprintExtent=de(t.extent,2,2)}async _updatePointsAndPolygons(e){const{pointSources:i,currentBestFeature:a,currentCoverageVisible:r,isAdditionalPointSourcesVisible:s,mode:o,layer:n}=this;if(a&&(this.additionalFootprints.removeAll(),this.additionalCameraLocations.removeAll(),this.bestFeatureCurrentFootprint&&(this.bestFeatureCurrentFootprint.destroy(),this.bestFeatureCurrentFootprint=null,this.bestFeatureFootprint=null),!this.invalidCameraHeading)){await(this._adapter?.createFootprints(e)),v(e);for(const o of i){const i=this.view&&!this.view.spatialReference?.equals(o.spatialReference)?await G(o.clone(),this.view?.spatialReference,e):o.clone();o.imageID===a.attributes.objectId?this.currentBestFeatureLocation=new t({attributes:{imageID:o.imageID},geometry:i,symbol:Ge,visible:r}):this.additionalCameraLocations.push(new t({attributes:{imageID:o.imageID},geometry:i,symbol:Oe,visible:s}))}"video"!==o&&"panoramic-video"!==o||(await this.initializeTransformationService(e),n&&!this.featureCache.length&&await this.updateFeatureCache(n,a.geometry.spatialReference))}}_updateCurrentBestFeature(e){if(!e)return;if(this.currentBestFeature=this.features?.at(e.featureIndex),"video"===this.mode)return void(this.currentBestFeature&&this.videoViewModel?.playVideoFromSelectedLocation(this.currentBestFeature));if("panoramic-video"===this.mode)return void(this.currentBestFeature&&this._panoramicVideoViewer.viewModel.playPanoramicVideoFromSelectedLocation(this.currentBestFeature));const t=this.currentBestFeature?.attributes.cameraPitch&&this.currentBestFeature?.attributes.cameraPitch<5;let i;if(t)i=-90;else{const t=e.x-Me[3],a=e.y-Me[3],r=a/Math.sqrt(t**2+a**2);let s=180*Math.acos(r)/Math.PI;(t<0&&a<0||t<0&&a>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}}_updateImageMeasurementBestFeature(e){e&&(this.currentBestFeatureMeasurementImage=this.features?.at(e.featureIndex))}clearGraphics(){this._imageViewer.clearGraphics(),this._panoramicViewer.clearGraphics(),this.imageMeasurementViewer.clearGraphics(),this._panoramicMeasurementViewer.clearGraphics()}clearReferencePointOnImage(){this._referencePointOnImage&&(this._imageViewer.removeGraphic(this._referencePointOnImage),this._panoramicViewer.removeGraphic(this._referencePointOnImage),this._referencePointOnImage=p(this._referencePointOnImage))}async initializeReferenceTransformationService(e){const{currentBestFeatureMeasurementImage:t,activeTriangulatedViewer:i,mode:a}=this;if(!t||!i||!i.imageSize||"panoramic"!==a&&"default"!==a)return;const{imageSize:r}=i,{attributes:s,elevationSample:o}=t,{location:{spatialReference:n,z:l},cameraHeight:c,elevationSource:h}=s;let d=s.location;d.spatialReference.isGeographic&&(d=Q(d));const u="default"===a?re(s,r[0],r[1]):se(s,r[0],r[1]),p=await ae(n,l??0,c,{elevationSample:o,elevationSource:h,extent:this.footprintExtent},e),m=(await import("./services/TransformationService.js")).default,g={imageToWorldProperties:u,updateElevationProps:p,mode:a,imageSize:r,depthImageService:this.depthImage};this._referenceTransformationService=new m(g),this._locationViewModel&&(this._locationViewModel.referenceTransformationService=this._referenceTransformationService),this._measurementService&&(this._measurementService.referenceTransformationService=this._referenceTransformationService)}async initializeTransformationService(e){const{currentBestFeature:t,activeViewer:i,mode:a}=this,r="video"===a||"panoramic-video"===a?be:i?.imageSize;if(!t||!r||"none"===a)return;const{attributes:s,elevationSample:o}=t,{location:{spatialReference:n,z:l},cameraHeight:c,elevationSource:h}=s;let d=s.location;d.spatialReference.isGeographic&&(d=Q(d));const u="default"===a||"video"===a?"default":"panoramic",p={..."default"===u?re(s,r[0],r[1]):se(s,r[0],r[1]),cameraLocation:d},m=await ae(n,l??0,c,{elevationSample:o,elevationSource:h,extent:this.footprintExtent},e),g=(await import("./services/TransformationService.js")).default,y={imageToWorldProperties:p,updateElevationProps:m,mode:u,imageSize:r,depthImageService:this.depthImage};this._transformationService=new g(y),this._measurementService&&(this._measurementService.transformationService=this._transformationService)}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}setMessage(e,t,i,a){this.displayMessage={key:e,type:t,data:i,map:a}}async transformAndPlotSelectedLocation(e){const{currentBestFeature:t,invalidCameraHeading:i,selectedPoint:a,activeViewer:r}=this;if(this._crossSymbol&&(this._panoramicViewer.removeGraphic(this._crossSymbol),this._imageViewer.removeGraphic(this._crossSymbol),this._crossSymbol=p(this._crossSymbol)),!a||!t||"image-loaded"!==r?.state||i)return;let s;try{s=await this._transformationService.pointToPixel(a,{signal:e?.signal}),v(e),await this.plotSelectedPointOnImage(s,e)}catch(o){y(o)||d.getLogger(this).error("failed to transform map point to pixel, cross symbol will not be plotted on image",{error:o,selectedPoint:a,feature:t})}}updateCurrentCoveragePolygon(e){const{additionalFootprints:i,additionalCameraLocations:a,currentBestFeature:r,currentBestFeatureLocation:s,currentCoverageVisible:o,selectedPoint:n,view:l,_adapter:c,mode:h}=this;if(!r)return;const{attributes:{objectId:d},elevationSample:u}=r;if(this._initialCurrentCoverageUpdate){if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint),e&&!this.invalidCameraHeading&&(e.visible=o,this.bestFeatureCurrentFootprint=e),l){const e=[...i,...a,s].filter($e);"3d"===l?.type&&u&&c?.updateGroundElevation&&(this._updateGroundElevation&&c.updateGroundElevation(e),"panoramic"===h&&c.updateGroundElevation([this.bestFeatureCurrentFootprint])),this._updateGroundElevation=!1,n&&(e.splice(-2,0,this.bestFeatureCurrentFootprint),e.push(new t({geometry:n.clone(),symbol:Ve.clone(),attributes:{imageID:d}}))),this._overlays.graphics.addMany(e)}}else if(l){if(this.invalidCameraHeading)return;this.bestFeatureCurrentFootprint&&(this._overlays?.remove(this.bestFeatureCurrentFootprint),this.bestFeatureCurrentFootprint=p(this.bestFeatureCurrentFootprint));const t=this.bestFeatureCurrentFootprint&&this._overlays?this._overlays.graphics.indexOf(this.bestFeatureCurrentFootprint):-1;e&&(this.bestFeatureCurrentFootprint=e,"3d"===l?.type&&u&&c?.updateGroundElevation&&"panoramic"===h&&c.updateGroundElevation([e]),e.visible=this.currentCoverageVisible,this._overlays?.graphics.add(this.bestFeatureCurrentFootprint,t>=0?t:this._overlays.graphics.length-1))}}};e([A()],ut.prototype,"activeLayer",null),e([A({readOnly:!0})],ut.prototype,"activeViewer",null),e([A()],ut.prototype,"activeTriangulatedViewer",null),e([A()],ut.prototype,"accuracyParametersMissing",null),e([A()],ut.prototype,"additionalFeatures",void 0),e([A({type:s.ofType(t)})],ut.prototype,"additionalCameraLocations",void 0),e([A({type:s.ofType(t)})],ut.prototype,"additionalFootprints",void 0),e([A()],ut.prototype,"areaMeasurementResult",void 0),e([A()],ut.prototype,"areaMeasurementAccuracy",void 0),e([A()],ut.prototype,"bestFeatureAngle",void 0),e([A()],ut.prototype,"bestFeatureCurrentFootprint",void 0),e([A({type:t})],ut.prototype,"bestFeatureFootprint",void 0),e([A({type:Number})],ut.prototype,"brightness",null),e([A()],ut.prototype,"cameraHeadingThreshold",void 0),e([A()],ut.prototype,"cameraPitchThreshold",void 0),e([A()],ut.prototype,"clickAction",void 0),e([A()],ut.prototype,"correctedLocationPointOnImage",void 0),e([A()],ut.prototype,"videoViewModel",void 0),e([A()],ut.prototype,"collectionId",void 0),e([A({type:Number})],ut.prototype,"contrast",null),e([A()],ut.prototype,"coverageFrustums",void 0),e([A()],ut.prototype,"coveragePolygons",void 0),e([A()],ut.prototype,"currentBestFeature",void 0),e([A()],ut.prototype,"currentBestFeatureMeasurementImage",void 0),e([A()],ut.prototype,"currentBestFeatureLocation",void 0),e([A()],ut.prototype,"currentCoverageVisible",void 0),e([A()],ut.prototype,"currentNode",null),e([A()],ut.prototype,"depthImage",void 0),e([A()],ut.prototype,"depthImageNotSupported",null),e([A()],ut.prototype,"featureCache",void 0),e([A()],ut.prototype,"navigationNodes",void 0),e([A({json:{write:!1}})],ut.prototype,"determineWorkflowForFeature",void 0),e([A({json:{write:!1}})],ut.prototype,"determineWorkflowForTriangularMeasurement",void 0),e([A()],ut.prototype,"disabled",void 0),e([A()],ut.prototype,"displayMessage",void 0),e([A()],ut.prototype,"displayNewMeasurementButton",void 0),e([A()],ut.prototype,"distanceMeasurementResult",void 0),e([A()],ut.prototype,"distanceAccuracyArray",void 0),e([A()],ut.prototype,"dataCaptureLayer",void 0),e([A({readOnly:!0})],ut.prototype,"featureCount",null),e([A()],ut.prototype,"features",void 0),e([A()],ut.prototype,"groundCoordinates",void 0),e([A()],ut.prototype,"groundCoordinatesAccuracy",void 0),e([A()],ut.prototype,"heightGraphic",void 0),e([A()],ut.prototype,"heightMeasurementResult",void 0),e([A()],ut.prototype,"heightMeasurementAccuracy",void 0),e([A({readOnly:!0})],ut.prototype,"imageGalleryEnabled",null),e([A()],ut.prototype,"imageGeometryField",void 0),e([A({readOnly:!0})],ut.prototype,"imageLoaded",null),e([A()],ut.prototype,"imageLocationToolState",void 0),e([A()],ut.prototype,"initialVideoMapViewExtent",void 0),e([A({readOnly:!0})],ut.prototype,"invalidCameraHeading",null),e([A()],ut.prototype,"imagePointsInView",null),e([A()],ut.prototype,"imageMeasurementViewer",void 0),e([A()],ut.prototype,"isAdditionalCoverageVisible",void 0),e([A()],ut.prototype,"isAdditionalPointSourcesVisible",void 0),e([A()],ut.prototype,"layer",void 0),e([A()],ut.prototype,"layerView",null),e([A({readOnly:!0})],ut.prototype,"layerFloorFilterClause",null),e([A({readOnly:!0})],ut.prototype,"layerTimeExtent",null),e([A({type:Number})],ut.prototype,"localPort",void 0),e([A()],ut.prototype,"locationPointOnImage",void 0),e([A()],ut.prototype,"mapImageConversionToolState",void 0),e([A()],ut.prototype,"measureType",void 0),e([A()],ut.prototype,"measurementGraphic",void 0),e([A({readOnly:!0,value:"none"})],ut.prototype,"mode",null),e([A()],ut.prototype,"navigationMode",void 0),e([A()],ut.prototype,"navigatorCurrentBestFeature",void 0),e([A()],ut.prototype,"oiObjectIdField",void 0),e([A({type:s.ofType(t)})],ut.prototype,"overlayedCameraLocations",void 0),e([A()],ut.prototype,"overlayedMapFeatures",void 0),e([A()],ut.prototype,"panoramicVideoLoaded",null),e([A()],ut.prototype,"pixelCoordinates",void 0),e([A()],ut.prototype,"preserveAngle",void 0),e([A()],ut.prototype,"pointSources",void 0),e([A({readOnly:!0})],ut.prototype,"popupEnabled",null),e([A()],ut.prototype,"preloadMedia",void 0),e([A()],ut.prototype,"preloadMediaSize",void 0),e([A()],ut.prototype,"previousFeatureAngle",void 0),e([A()],ut.prototype,"referencePoint",null),e([A({readOnly:!0})],ut.prototype,"sectorData",null),e([A()],ut.prototype,"selectedPoint",void 0),e([A({type:Number})],ut.prototype,"sharpness",null),e([A()],ut.prototype,"shouldShowSelectedImage",void 0),e([A()],ut.prototype,"sketch",void 0),e([A()],ut.prototype,"sketchTriangular",void 0),e([A()],ut.prototype,"sketchTriangularGraphicsLayer",void 0),e([A()],ut.prototype,"draw",void 0),e([A()],ut.prototype,"drawAdapter",void 0),e([A()],ut.prototype,"polylineDrawAction",void 0),e([A()],ut.prototype,"scheduledFrameId",void 0),e([A()],ut.prototype,"sketchAdapter",void 0),e([A({readOnly:!0})],ut.prototype,"sketchGraphicsLayer",null),e([A({readOnly:!0})],ut.prototype,"state",null),e([A({readOnly:!0})],ut.prototype,"thumbnails",null),e([A()],ut.prototype,"videoExtentPoints",null),e([A()],ut.prototype,"triangularMeasurementActive",void 0),e([A()],ut.prototype,"triangulatedDistanceMeasurement",void 0),e([A()],ut.prototype,"triangulatedDistanceAccuracy",void 0),e([A()],ut.prototype,"triangulatedAreaMeasurement",void 0),e([A()],ut.prototype,"triangulatedAreaAccuracy",void 0),e([A()],ut.prototype,"triangulatedMeasurementGraphic",void 0),e([A()],ut.prototype,"triangulatedPoint",void 0),e([A()],ut.prototype,"triangulatedMeasurementAdapter",void 0),e([A()],ut.prototype,"updateFootprint",void 0),e([A()],ut.prototype,"updateVideoFootprint",void 0),e([A()],ut.prototype,"updateFootprintPanorama",void 0),e([A()],ut.prototype,"updatingTriangularMeasurementState",void 0),e([A({value:null})],ut.prototype,"view",null),e([A()],ut.prototype,"videoElement",void 0),e([A()],ut.prototype,"videoLayer",void 0),e([A()],ut.prototype,"videoMapView",void 0),e([A()],ut.prototype,"verticalFilterEnabled",void 0),e([A()],ut.prototype,"_adapter",void 0),e([A()],ut.prototype,"_defaultGraphicsLayer",null),e([A()],ut.prototype,"_highlightedFeatureHandle",void 0),e([A()],ut.prototype,"_imageViewer",void 0),e([A()],ut.prototype,"_initialCurrentCoverageUpdate",void 0),e([A()],ut.prototype,"_locationViewModel",void 0),e([A()],ut.prototype,"_measurementService",void 0),e([A()],ut.prototype,"_mediaPrefetcher",void 0),e([A()],ut.prototype,"_navigationManager",void 0),e([A()],ut.prototype,"_overlays",void 0),e([A({readOnly:!0})],ut.prototype,"_overlaysView",null),e([A()],ut.prototype,"_panoramicVideoViewer",void 0),e([A()],ut.prototype,"_panoramicViewer",void 0),e([A()],ut.prototype,"_panoramicMeasurementViewer",void 0),e([A()],ut.prototype,"_referencePointOnGround",void 0),e([A()],ut.prototype,"_referencePointOnImage",void 0),e([A()],ut.prototype,"_referenceTransformationService",void 0),e([A()],ut.prototype,"_sectorData",void 0),e([A()],ut.prototype,"_transformationService",void 0),e([A()],ut.prototype,"_featureToSector",void 0),e([A({readOnly:!0})],ut.prototype,"_updatingHandles",void 0),e([A()],ut.prototype,"footprintExtent",void 0),e([A()],ut.prototype,"_featureChangedTask",void 0),ut=e([C("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ut);const pt=ut;export{pt as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{loadCalciteComponents as t}from"../../support/componentsUtils.js";import{tsx as
|
|
2
|
+
import{loadCalciteComponents as t}from"../../support/componentsUtils.js";import{tsx as c}from"../../support/widget.js";function o(){return t({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon")})}function e({x:t,y:o,rotateZ:e,navigate:n,node:r,...i}){return c("calcite-icon",{onclick:()=>n?.(r),...i,scale:"s",styles:{left:`calc(50% + calc(50% * ${t}))`,top:`calc(50% + calc(50% * ${o}))`,transform:`translate(-50%) rotateZ(${e}deg)`}})}export{e as Arrow,o as loadArrowDependencies};
|
package/widgets/Popup.d.ts
CHANGED
|
@@ -253,7 +253,7 @@ export interface PopupEvents extends FeaturesViewModelEvents {}
|
|
|
253
253
|
* @see [Sample - Custom popup actions per feature](https://developers.arcgis.com/javascript/latest/sample-code/popup-custom-action/)
|
|
254
254
|
* @see [Sample - Popup with edit action](https://developers.arcgis.com/javascript/latest/sample-code/popup-editaction/)
|
|
255
255
|
* @see [Sample - Popup with DOM node](https://developers.arcgis.com/javascript/latest/sample-code/popup-domnode/)
|
|
256
|
-
* @see [Guide - Esri Icon Font](https://developers.arcgis.com/javascript/latest/guide/esri-icon-font/)
|
|
256
|
+
* @see [Deprecated since 5.1 - Guide - Esri Icon Font](https://developers.arcgis.com/javascript/latest/guide/esri-icon-font/)
|
|
257
257
|
* @see [PopupViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/Popup/PopupViewModel/)
|
|
258
258
|
*/
|
|
259
259
|
export default class Popup extends Widget {
|
package/widgets/ValuePicker.d.ts
CHANGED
|
@@ -291,7 +291,7 @@ export interface ValuePickerEvents extends ValuePickerViewModelEvents {}
|
|
|
291
291
|
* });
|
|
292
292
|
* ```
|
|
293
293
|
*
|
|
294
|
-
* @deprecated since version 5.0. Use the [Value Picker component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-value-picker/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
|
|
294
|
+
* @deprecated since version 5.0. Use the [Value Picker (Legacy) component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-value-picker-legacy/) instead. For information on widget deprecation, read about [Esri's move to web components](https://developers.arcgis.com/javascript/latest/components-transition-plan/).
|
|
295
295
|
* @since 4.27
|
|
296
296
|
* @see [ValuePickerCollection](https://developers.arcgis.com/javascript/latest/references/core/widgets/ValuePicker/ValuePickerCollection/)
|
|
297
297
|
* @see [ValuePickerCombobox](https://developers.arcgis.com/javascript/latest/references/core/widgets/ValuePicker/ValuePickerCombobox/)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
const i={
|
|
2
|
+
const i={dragHorizontal:"esri-icon-drag-horizontal",dragVertical:"esri-icon-drag-vertical",duplicate:"esri-icon-duplicate",left:"esri-icon-left",plus:"esri-icon-plus",right:"esri-icon-right",swap:"esri-icon-swap",table:"esri-icon-table",trash:"esri-icon-trash",zoomInMagnifyingGlass:"esri-icon-zoom-in-magnifying-glass"};export{i as legacyIcon};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[3354,4496],{73354(t,n,e){e.d(n,{a:()=>f,b:()=>u,c:()=>l,d:()=>o,e:()=>g,f:()=>c,l:()=>s,n:()=>p,t:()=>i});var r=e(40876);function o(t,n,e){i(t.typedBuffer,n.typedBuffer,e,t.typedBufferStride,n.typedBufferStride)}function i(t,n,e,r=3,o=r){if(t.length/r!==Math.ceil(n.length/o))return t;const i=t.length/r,l=e[0],u=e[1],a=e[2],s=e[4],c=e[5],f=e[6],g=e[8],p=e[9],y=e[10],d=e[12],m=e[13],h=e[14];let v=0,A=0;for(let e=0;e<i;e++){const e=n[v],i=n[v+1],w=n[v+2];t[A]=l*e+s*i+g*w+d,t[A+1]=u*e+c*i+p*w+m,t[A+2]=a*e+f*i+y*w+h,v+=o,A+=r}return t}function l(t,n,e){u(t.typedBuffer,n.typedBuffer,e,t.typedBufferStride,n.typedBufferStride)}function u(t,n,e,r=3,o=r){if(t.length/r!==Math.ceil(n.length/o))return;const i=t.length/r,l=e[0],u=e[1],a=e[2],s=e[3],c=e[4],f=e[5],g=e[6],p=e[7],y=e[8];let d=0,m=0;for(let e=0;e<i;e++){const e=n[d],i=n[d+1],h=n[d+2];t[m]=l*e+s*i+g*h,t[m+1]=u*e+c*i+p*h,t[m+2]=a*e+f*i+y*h,d+=o,m+=r}}function a(t,n,e,r=3,o=r){const i=Math.min(t.length/r,n.length/o);let l=0,u=0;for(let a=0;a<i;a++)t[u]=e*n[l],t[u+1]=e*n[l+1],t[u+2]=e*n[l+2],l+=o,u+=r;return t}function s(t,n,e,r){c(t.typedBuffer,n.typedBuffer,e,r,t.typedBufferStride,n.typedBufferStride)}function c(t,n,e,o,i=3,l=i){const u=Math.min(t.length/i,n.length/l);let a=0,s=0;const c=1/r.Tf;for(let r=0;r<u;r++)t[s]=o*(e*n[a])**c,t[s+1]=o*(e*n[a+1])**c,t[s+2]=o*(e*n[a+2])**c,a+=l,s+=i}function f(t,n,e,r=3,o=r){const i=t.length/r;if(i!==Math.ceil(n.length/o))return t;let l=0,u=0;for(let a=0;a<i;a++)t[u]=n[l]+e[0],t[u+1]=n[l+1]+e[1],t[u+2]=n[l+2]+e[2],l+=o,u+=r;return t}function g(t,n){p(t.typedBuffer,n.typedBuffer,t.typedBufferStride,n.typedBufferStride)}function p(t,n,e=3,r=e){const o=Math.min(t.length/e,n.length/r);let i=0,l=0;for(let u=0;u<o;u++){const o=n[i],u=n[i+1],a=n[i+2],s=o*o+u*u+a*a;if(s>0){const n=1/Math.sqrt(s);t[l]=n*o,t[l+1]=n*u,t[l+2]=n*a}i+=r,l+=e}}e(44208),e(53966),Object.freeze(Object.defineProperty({__proto__:null,linearToSRGB:c,linearToSRGBView:s,normalize:p,normalizeView:g,scale:a,scaleView:function(t,n,e){a(t.typedBuffer,n.typedBuffer,e,t.typedBufferStride,n.typedBufferStride)},shiftRight:function(t,n,e){const r=Math.min(t.count,n.count),o=t.typedBuffer,i=t.typedBufferStride,l=n.typedBuffer,u=n.typedBufferStride;let a=0,s=0;for(let t=0;t<r;t++)o[s]=l[a]>>e,o[s+1]=l[a+1]>>e,o[s+2]=l[a+2]>>e,a+=u,s+=i},transformMat3:u,transformMat3View:l,transformMat4:i,transformMat4View:o,translate:f},Symbol.toStringTag,{value:"Module"}))},48163(t,n,e){function r(){return[0,0]}function o(t){return[t[0],t[1]]}function i(t,n){return[t,n]}function l(t,n=[0,0]){const e=Math.min(2,t.length);for(let r=0;r<e;++r)n[r]=t[r];return n}function u(){return i(1,1)}function a(){return i(1,0)}function s(){return i(0,1)}e.d(n,{Un:()=>c,ci:()=>l,fA:()=>i,o8:()=>o,vt:()=>r});const c=u(),f=a(),g=s();Object.freeze(Object.defineProperty({__proto__:null,ONES:c,UNIT_X:f,UNIT_Y:g,ZEROS:[0,0],clone:o,create:r,freeze:function(t,n){return[t,n]},fromArray:l,fromValues:i,ones:u,unitX:a,unitY:s,zeros:function(){return[0,0]}},Symbol.toStringTag,{value:"Module"}))},48353(t,n,e){e.d(n,{l:()=>s});var r=e(34727),o=e(58083),i=e(51850);function l(t,n,e){const r=Math.sin(t),o=Math.cos(t),i=Math.sin(n),l=Math.cos(n),u=e;return u[0]=-r,u[4]=-i*o,u[8]=l*o,u[12]=0,u[1]=o,u[5]=-i*r,u[9]=l*r,u[13]=0,u[2]=0,u[6]=l,u[10]=i,u[14]=0,u[3]=0,u[7]=0,u[11]=0,u[15]=1,u}var u=e(49208),a=e(21325);function s(t,n,e,r){const i=(0,u.Tp)(t,r);if(null==i)return!1;const s=i.source.spatialReferenceId,y=i.dest.spatialReferenceId;if(s===y&&!c(y)&&(0!==s||(0,a.aI)(t,r)))return(0,o.kN)(e,n),!0;if(c(y)){const t=u.w5[s][10],r=u.w5[10][y];return null!=t&&null!=r&&(t(n,0,g,0),r(g,0,p,0),l(f*g[0],f*g[1],e),e[12]=p[0],e[13]=p[1],e[14]=p[2],!0)}const d=c(s);if((3===y||11===y||2===y||5===y)&&(2===s||d||3===s||5===s)){const t=u.w5[s][10],r=u.w5[10][y];return null!=t&&null!=r&&(t(n,0,g,0),r(g,0,p,0),d?function(t,n,e){l(t,n,e),(0,o.mg)(e,e)}(f*g[0],f*g[1],e):(0,o.D_)(e),e[12]=p[0],e[13]=p[1],e[14]=p[2],!0)}return!1}function c(t){return 1===t||6===t||8===t||4===t}const f=(0,r.kU)(1),g=(0,i.vt)(),p=(0,i.vt)()},65806(t,n,e){e.d(n,{g:()=>l});var r=e(51850),o=e(91218),i=e(9762);function l(t,n,e,r){if((0,o.canProjectWithoutEngine)(t.spatialReference,e))return u[0]=t.x,u[1]=t.y,u[2]=t.z??0,(0,i.projectBuffer)(u,t.spatialReference,0,n,e,0);const l=(0,o.tryProject)(t,e,r);return!!l&&(n[0]=l.x,n[1]=l.y,n[2]=l.z??0,!0)}const u=(0,r.vt)()},1193(t,n,e){e.r(n),e.d(n,{default:()=>f});var r,o=e(5482),i=e(69540),l=e(25482),u=e(4718),a=e(53966),s=e(91429),c=e(31199);let f=r=class extends((0,i.OU)(l.o)){constructor(t){super(t),this.color=null,this.position=new Float64Array(0),this.uv=null,this.normal=null,this.tangent=null}castColor(t){return(0,c.b)(t,Uint8Array,[Uint8ClampedArray],{loggerTag:".color=",stride:4},a.A.getLogger(this))}castPosition(t){return t&&t instanceof Float32Array&&a.A.getLogger(this).warn(".position=","Setting position attribute from a Float32Array may cause precision problems. Consider storing data in a Float64Array or a regular number array"),(0,c.b)(t,Float64Array,[Float32Array],{loggerTag:".position=",stride:3},a.A.getLogger(this))}castUv(t){return(0,c.b)(t,Float32Array,[Float64Array],{loggerTag:".uv=",stride:2},a.A.getLogger(this))}castNormal(t){return(0,c.b)(t,Float32Array,[Float64Array],{loggerTag:".normal=",stride:3},a.A.getLogger(this))}castTangent(t){return(0,c.b)(t,Float32Array,[Float64Array],{loggerTag:".tangent=",stride:4},a.A.getLogger(this))}clonePositional(){const t={position:(0,u.o8)(this.position),normal:(0,u.o8)(this.normal),tangent:(0,u.o8)(this.tangent),uv:this.uv,color:this.color};return new r(t)}get usedMemory(){return this.position.byteLength+(this.uv?.byteLength??0)+(this.normal?.byteLength??0)+(this.tangent?.byteLength??0)+(this.color?.byteLength??0)}};(0,o.Cg)([(0,s.MZ)({json:{write:c.B}})],f.prototype,"color",void 0),(0,o.Cg)([(0,s.wg)("color")],f.prototype,"castColor",null),(0,o.Cg)([(0,s.MZ)({nonNullable:!0,json:{write:c.B}})],f.prototype,"position",void 0),(0,o.Cg)([(0,s.wg)("position")],f.prototype,"castPosition",null),(0,o.Cg)([(0,s.MZ)({json:{write:c.B}})],f.prototype,"uv",void 0),(0,o.Cg)([(0,s.wg)("uv")],f.prototype,"castUv",null),(0,o.Cg)([(0,s.MZ)({json:{write:c.B}})],f.prototype,"normal",void 0),(0,o.Cg)([(0,s.wg)("normal")],f.prototype,"castNormal",null),(0,o.Cg)([(0,s.MZ)({json:{write:c.B}})],f.prototype,"tangent",void 0),(0,o.Cg)([(0,s.wg)("tangent")],f.prototype,"castTangent",null),f=r=(0,o.Cg)([(0,s.$K)("esri.geometry.support.MeshVertexAttributes")],f)},31199(t,n,e){function r(t,n,e,r){const{loggerTag:o,stride:i}=n;return t.length%i!==0?(r.error(o,`Invalid array length, expected a multiple of ${i}`),new e([])):t}function o(t,n,e,o,i){if(!t)return t;if(t instanceof n)return r(t,o,n,i);for(const l of e)if(t instanceof l)return r(new n(t),o,n,i);if(Array.isArray(t))return r(new n(t),o,n,i);{const r=e.map(t=>`'${t.name}'`);return i.error(`Failed to set property, expected one of ${r}, but got ${t.constructor.name}`),new n([])}}function i(t,n,e){n[e]=function(t){const n=new Array(t.length);for(let e=0;e<t.length;e++)n[e]=t[e];return n}(t)}e.d(n,{B:()=>i,b:()=>o})},28846(t,n,e){e.d(n,{convertMeshVertexSpace:()=>s});var r=e(49186),o=e(4718),i=e(74887),l=e(1193),u=e(66895),a=e(72258);async function s(t,n,e){await Promise.resolve(),(0,i.Te)(e);const s=(0,a.UR)(t,n,{useEllipsoid:e?.useEllipsoid});if(!s)throw new r.A("meshUtils:convertVertexSpace()","Failed to convert to provided vertex space due to projection errors");return t.clone((0,u.Lz)(void 0,{vertexAttributes:new l.default({...s,uv:(0,o.o8)(t.vertexAttributes.uv),color:(0,o.o8)(t.vertexAttributes.color)}),vertexSpace:n,transform:null}))}},66895(t,n,e){e.d(n,{$N:()=>c,Lz:()=>i,QN:()=>f,WO:()=>a,hz:()=>u,o2:()=>o});const r=Symbol("meshContext");function o(t){return t&&"object"==typeof t&&r in t?t[r]:void 0}function i(t,n){const e=o(t);return{...t,[r]:{...e,...n}}}const l=Symbol("meshMaterialContext");function u(t){return t&&"object"==typeof t&&l in t?t[l]:void 0}function a(t){const n=u(t);if(n?.materialMap)return t;const e={materialMap:new Map};return{...t,[l]:e}}const s=Symbol("meshTextureContext");function c(t){return t&&"object"==typeof t&&s in t?t[s]:void 0}function f(t){const n=c(t);if(n?.textureMap)return t;const e={textureMap:new Map};return{...t,[s]:e}}},22141(t,n,e){e.d(n,{$5:()=>b,CN:()=>A,JP:()=>v,KM:()=>S,Mv:()=>C,X4:()=>w,gr:()=>M,qs:()=>B,si:()=>x,xA:()=>T});var r=e(34727),o=e(77690),i=e(29242),l=e(58083),u=e(9093),a=e(35522),s=e(51850),c=e(73941),f=e(48353),g=e(9762),p=(e(79258),e(21325)),y=e(28735),d=e(13030),m=e(73354),h=e(65686);const v="Projection may be possible after calling projection.load().";function A(t,n,e,r){t.error(`Failed to project from (wkid:${n.wkid}) to (wkid:${e.wkid}).${r?" ":""}${r}`)}function w(t,n,e,r,o,i){return R(0,d.xs.fromTypedArray(t),0,d.Xm.fromTypedArray(n),e,d.Xm.fromTypedArray(r),o,d.xs.fromTypedArray(i))?i:null}function x(t,n,e,r,o,i){return R(1,d.xs.fromTypedArray(t),0,d.Xm.fromTypedArray(n),e,d.Xm.fromTypedArray(r),o,d.xs.fromTypedArray(i))?i:null}function M(t,n,e,r){return(0,g.projectBuffer)(t,n,0,e,r,0)?e:null}function b(t,n,e,r){return(0,g.projectBuffer)(t,n,0,e,r,0)?e:null}function B(t,n,e){return(0,o.Ge)(E,e),(0,m.b)(n,t,E),(0,r.or)(E)&&(0,m.n)(n,n),n}function S(t,n,e){return(0,o.z0)(E,e),(0,h.t)(n,t,E),(0,r.or)(E)&&(0,m.n)(n,n,4),n}function T(t,n,e,r,o,i){if(!R(0,d.xs.fromTypedArray(t,4*Float32Array.BYTES_PER_ELEMENT),1,d.Xm.fromTypedArray(n),e,d.Xm.fromTypedArray(r),o,d.xs.fromTypedArray(i,4*Float32Array.BYTES_PER_ELEMENT)))return null;for(let n=3;n<t.length;n+=4)i[n]=t[n];return i}function C(t,n,e,r,o,i){if(!R(1,d.xs.fromTypedArray(t,16),1,d.Xm.fromTypedArray(n),e,d.Xm.fromTypedArray(r),o,d.xs.fromTypedArray(i,16)))return null;for(let n=3;n<t.length;n+=4)i[n]=t[n];return i}function F(t,n,e,r,i){switch((0,f.l)(r,e,z,r),1===t&&(0,l.B8)(z,z),n){case 0:return(0,o.Ge)(i,z);case 1:return(0,o.z0)(i,z)}}function R(t,n,e,r,o,i,l,u){if(!n)return;const s=r.count;if(function(t){return t.isWGS84||(0,p.x1)(t)||(0,c.q8)(t)||(0,c.KQ)(t)}(o))for(let r=0;r<s;r++)i.getVec(r,j),n.getVec(r,N),(0,a.ei)(N,N,F(t,e,j,l,E)),u.setVec(r,N);else for(let o=0;o<s;o++){i.getVec(o,j),n.getVec(o,N);const s=(0,y.jg)(r.get(o,1));let c=Math.cos(s);1===e!=(0===t)&&(c=1/c),F(t,e,j,l,E),0===t?(E[0]*=c,E[1]*=c,E[2]*=c,E[3]*=c,E[4]*=c,E[5]*=c):(E[0]*=c,E[3]*=c,E[6]*=c,E[1]*=c,E[4]*=c,E[7]*=c),(0,a.ei)(N,N,E),(0,a.S8)(N,N),u.setVec(o,N)}return u}const j=(0,s.vt)(),N=(0,s.vt)(),z=(0,u.vt)(),E=(0,i.vt)()},72258(t,n,e){e.d(n,{UR:()=>x,p5:()=>w,xK:()=>C});var r=e(53966),o=e(34727),i=e(86211),l=e(77690),u=e(29242),a=e(58083),s=e(9093),c=e(35522),f=e(51850),g=e(73941),p=e(98764),y=e(48353),d=e(65806),m=e(27615),h=e(73354),v=e(22141);const A=()=>r.A.getLogger("esri.geometry.support.meshUtils.vertexSpaceConversion");function w(t,n,{vertexSpace:e,spatialReference:r}){if("georeferenced"===e.type){const o=t;if(!(0,d.g)(n,o,r))return!1;const{origin:i}=e;return(0,c.Re)(t,o,i),!0}const o=(0,p.lO)(r),i=t;if(!(0,d.g)(n,i,o))return!1;const{origin:l}=e,u=z;if(!(0,y.l)(r,l,u,o))return!1;const s=(0,a.B8)(z,u);return null!=s&&((0,c.Z0)(t,i,s),!0)}function x(t,n,e){const{vertexSpace:r,transform:o,vertexAttributes:i}=t,u=(0,m.Hq)(r)?o:null,f=S(t.spatialReference,e,3);if((0,m.yJ)(r,n)&&(!u||(0,a.t2)(u.localMatrix,s.zK))&&T(f)){const{position:t,normal:n,tangent:r}=i,o=e?.allowBufferReuse;return{position:o?t:t.slice(),normal:o?n:n?.slice(),tangent:o?r:r?.slice()}}switch(t.vertexSpace.type){case"local":return"local"===n.type?function({vertexAttributes:t,spatialReference:n,transform:e},{origin:r},o,i){const l=M(n,i);if(!(0,y.l)(n,r,F,l))return(0,v.CN)(A(),n,l),null;if(e&&(0,a.lw)(F,F,e.localMatrix),!(0,y.l)(n,o,R,l))return(0,v.CN)(A(),l,n),null;(0,a.B8)(R,R);const u=(0,a.lw)(F,R,F);return B(u,n,i,3),b(t,u)}(t,t.vertexSpace,n.origin,e):function({spatialReference:t,vertexAttributes:n,transform:e},{origin:r},o,i){const l=M(t,i);if(!(0,y.l)(t,r,F,l))return(0,v.CN)(A(),t,l),null;e&&(0,a.lw)(F,F,e.localMatrix),B(F,t,i,1);const u=new Float64Array(n.position.length),s=function(t,n,e,r,o){(0,h.t)(r,t,n);const i=new Float64Array(t.length);return(0,v.$5)(r,o,i,e)?i:((0,v.CN)(A(),o,e),null)}(n.position,F,t,u,l);if(!s)return null;const f=function(t,n,e,r,o,i){if(null==o)return null;const l=new Float32Array(o.length);return(0,v.qs)(o,l,i),(0,v.si)(l,t,n,e,r,l)?l:((0,v.CN)(A(),r,n),null)}(s,t,u,l,n.normal,F);if(n.normal&&!f)return null;const g=function(t,n,e,r,o,i){if(null==o)return null;const l=new Float32Array(o.length);return(0,v.KM)(o,l,i),(0,v.Mv)(l,t,n,e,r,l)?l:((0,v.CN)(A(),r,n),null)}(s,t,u,l,n.tangent,F);if(n.tangent&&!g)return null;if(o){const t=(0,c.ze)(N,o);(0,h.a)(s,s,t)}return{position:s,normal:f,tangent:g}}(t,t.vertexSpace,n.origin,e);case"georeferenced":return"local"===n.type?function({vertexAttributes:t,spatialReference:n,transform:e},{origin:r},o,i){const u=M(n,i);if(!(0,y.l)(n,o,F,u))return(0,v.CN)(A(),n,u),null;const s=1/S(n,i,2);(0,a.hs)(F,F,[s,s,s]);const c=(0,a.B8)(R,F),{position:f,normal:g,tangent:p}=function(t,n,e){if(!n)return t;if(!e){const{position:e,normal:r,tangent:o}=t;return{position:(0,h.a)(new Float64Array(e.length),e,n),tangent:o,normal:r}}const r=b(t,e.localMatrix);return(0,h.a)(r.position,r.position,n),r}(t,r,e),d=new Float64Array(f.length),m=function(t,n,e,r,o){const i=(0,v.gr)(t,n,r,o);if(!i)return(0,v.CN)(A(),n,o),null;const l=new Float64Array(i.length);return(0,h.t)(l,i,e),l}(f,n,c,d,u);if(!m)return null;const w=(0,l.Ge)(j,c),x=function(t,n,e,r,o,i,l){if(null==t)return null;const u=l??new Float32Array(t.length);return(0,v.X4)(t,n,e,r,o,u)?((0,h.b)(u,u,i),u):((0,v.CN)(A(),e,o),null)}(g,f,n,d,u,w,g!==t.normal?g:void 0);if(!x&&g)return null;const B=function(t,n,e,r,o,i,l){if(null==t)return null;const u=l??new Float32Array(t.length);return(0,v.xA)(t,n,e,r,o,u)?((0,h.b)(u,u,i,4),u):((0,v.CN)(A(),e,o),null)}(p,f,n,d,u,w,p!==t.tangent?p:void 0);return!B&&p?null:{position:m,normal:x,tangent:B}}(t,t.vertexSpace,n.origin,e):function({vertexAttributes:t,transform:n,spatialReference:e},{origin:r},o,i){const l=S(e,i,3),u=r||!T(l)?(0,a.C)(F,n?.localMatrix??s.zK):null;u&&B(u,e,i,3);const{position:f,normal:g,tangent:p}=u?b(t,u):t,y=i?.allowBufferReuse,d=y?f:new Float64Array(f.length);let m=f;if(r&&(m=(0,h.a)(d,m,r)),o){const t=(0,c.ze)(N,o);m=(0,h.a)(d,m,t)}return{position:m!==t.position||y?m:m.slice(),normal:g!==t.normal||y?g:g?.slice(),tangent:p!==t.tangent||y?p:p?.slice()}}(t,t.vertexSpace,n.origin,e)}}function M(t,n){return n?.useEllipsoid&&(0,g.B3)(t)?p.Y0:(0,p.lO)(t)}function b(t,n){const e=new Float64Array(t.position.length);(0,h.t)(e,t.position,n);const r=t.normal?new Float32Array(t.normal.length):null,o=t.tangent?new Float32Array(t.tangent.length):null;return r&&t.normal&&(0,v.qs)(t.normal,r,n),o&&t.tangent&&(0,v.KM)(t.tangent,o,n),{position:e,normal:r,tangent:o}}function B(t,n,e,r){const o=S(n,e,r);T(o)||(0,a.hs)(t,t,[o,o,o])}function S(t,n,e){const r=!!(1&e),o=!!(2&e),i=n?.sourceUnit,l=n?.targetUnit;if(!i&&!l)return 1;let u=C(i,t);r||!i||T(u)||(A().warn("source unit conversion not supported"),u=1);let a=1/C(l,t);return o||!l||T(a)||(A().warn("target unit conversion not supported"),a=1),u*a}function T(t){return(0,o.Io)(t,1)}function C(t,n){if(null==t)return 1;const e=(0,i.KX)(n);return 1/(0,i.oU)(e,"meters",t)}const F=(0,s.vt)(),R=(0,s.vt)(),j=(0,u.vt)(),N=(0,f.vt)(),z=(0,s.vt)()}}]);
|