@arcgis/core 4.28.0-next.20230921 → 4.28.0-next.20230922
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Graphic.js +1 -1
- package/arcade/ArcadeDate.js +1 -1
- package/arcade/Feature.js +1 -1
- package/arcade/featureSetUtils.js +1 -1
- package/arcade/featureset/actions/Adapted.js +1 -1
- package/arcade/featureset/actions/GroupBy.js +1 -1
- package/arcade/featureset/support/FeatureSet.js +1 -1
- package/arcade/featureset/support/FeatureSetIterator.js +1 -1
- package/arcade/featureset/support/StatsField.js +1 -1
- package/arcade/featureset/support/sqlUtils.js +1 -1
- package/arcade/functions/date.js +1 -1
- package/arcade/functions/featuresetbase.js +1 -1
- package/arcade/functions/featuresetstats.js +1 -1
- package/arcade.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{2cb36f9686693234991a.js → 07a2dab2f645dcd7d8d6.js} +1 -1
- package/assets/esri/core/workers/chunks/07f6175b52366b2c28bd.js +1 -0
- package/assets/esri/core/workers/chunks/098073c3b2849f56dad8.js +1 -0
- package/assets/esri/core/workers/chunks/{580039dd491854ca325c.js → 21fc02f0d5716c4a7acd.js} +1 -1
- package/assets/esri/core/workers/chunks/{072b4e041b8630c513a0.js → 243b1f9b2fba02946481.js} +1 -1
- package/assets/esri/core/workers/chunks/{dff1c3c38dda2bd1a9d6.js → 246a954347fe9318190e.js} +1 -1
- package/assets/esri/core/workers/chunks/{314c307e30f308a40a28.js → 25b09e9c0511c8e1cf8a.js} +1 -1
- package/assets/esri/core/workers/chunks/28a5ef2e2daa4207dd8b.js +1 -0
- package/assets/esri/core/workers/chunks/2b017e1aa1be71974c2e.js +1 -0
- package/assets/esri/core/workers/chunks/425b5733bb88e6efe242.js +1 -0
- package/assets/esri/core/workers/chunks/{c9dfb145f0c1d93e0fbd.js → 4bcca5fffb1fcc2d4353.js} +1 -1
- package/assets/esri/core/workers/chunks/4bf1a7e82a68ccee0ee1.js +1 -0
- package/assets/esri/core/workers/chunks/4c110c7f4f940ec58010.js +1 -0
- package/assets/esri/core/workers/chunks/{bde89b2684b6185992ef.js → 4ed77097e69fa3096ce4.js} +1 -1
- package/assets/esri/core/workers/chunks/{1cbaba30f55f00f7498b.js → 51324d042f469f3b8914.js} +1 -1
- package/assets/esri/core/workers/chunks/{3f4e9b1663ec521bfe00.js → 542ce10e1872399790b4.js} +1 -1
- package/assets/esri/core/workers/chunks/54d2b7e2ac4ba883bee8.js +1 -0
- package/assets/esri/core/workers/chunks/54ecb6cae310818d1aa2.js +1 -0
- package/assets/esri/core/workers/chunks/57c932e289d89d97da4b.js +1 -0
- package/assets/esri/core/workers/chunks/{6403de6fc067cf8f7436.js → 592c1fb531f2be928e8a.js} +1 -1
- package/assets/esri/core/workers/chunks/609a475ab395f2ce63e2.js +1 -0
- package/assets/esri/core/workers/chunks/{332689bf60d246485993.js → 65186e168dd112ac6221.js} +1 -1
- package/assets/esri/core/workers/chunks/6b9248fb2d6aadbce7bb.js +1 -0
- package/assets/esri/core/workers/chunks/709465832d306e02df52.js +1 -0
- package/assets/esri/core/workers/chunks/{bbc0dcd316c5598bc9ad.js → 74368a5213def6c200a2.js} +1 -1
- package/assets/esri/core/workers/chunks/78e7af899d9d50aa7e74.js +1 -0
- package/assets/esri/core/workers/chunks/7fe641cf1467496e670a.js +1 -0
- package/assets/esri/core/workers/chunks/{df8f62beb36fb9d2ac81.js → 810c8d6ff19976fd1366.js} +1 -1
- package/assets/esri/core/workers/chunks/83a15aa4b1c5252c651b.js +1 -0
- package/assets/esri/core/workers/chunks/85e436decdd693f240ee.js +1 -0
- package/assets/esri/core/workers/chunks/{243a4eed107d363dfad8.js → 887652bbdb3b71d0a089.js} +1 -1
- package/assets/esri/core/workers/chunks/896bfda379cf620b63ec.js +1 -0
- package/assets/esri/core/workers/chunks/{1f7e041140088f8ac489.js → 97073a60f0ea2a397165.js} +1 -1
- package/assets/esri/core/workers/chunks/{101f776316a85b708927.js → a99070ec4c06c435b744.js} +1 -1
- package/assets/esri/core/workers/chunks/{21a9c8aa2a9e9990df41.js → b499b4fa771e8c422b43.js} +1 -1
- package/assets/esri/core/workers/chunks/bffad8aec92f982cc75a.js +1 -0
- package/assets/esri/core/workers/chunks/d414dba3179bcf75bc6b.js +1 -0
- package/assets/esri/core/workers/chunks/{b449d6bd5851187d419f.js → d6e5408f9fa6b4bcd118.js} +1 -1
- package/assets/esri/core/workers/chunks/{3ca759f72d3bb29e9ea9.js → e14da83329f7771135bc.js} +2 -2
- package/assets/esri/core/workers/chunks/{f508ccfde6425dabe9ac.js → ee0bf611d191103a7046.js} +1 -1
- package/assets/esri/core/workers/chunks/{ed1fbc1bc8d50453e2f5.js → f793cd41fcd022baeea2.js} +1 -1
- package/assets/esri/core/workers/chunks/fb87fd64411b78afea23.js +1 -0
- package/assets/esri/themes/base/widgets/_OrientedImageryViewer.scss +2 -0
- 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/config.js +1 -1
- package/core/Accessor.js +1 -1
- package/core/has.js +1 -1
- package/core/sql/DateOnly.js +1 -1
- package/core/sql/WhereClause.js +1 -1
- package/core/sql.js +1 -1
- package/identity/IdentityForm.js +1 -1
- package/identity/IdentityModal.js +1 -1
- package/interfaces.d.ts +28 -199
- package/layers/OrientedImageryLayer.js +1 -1
- package/layers/graphics/applyEditsUtils.js +5 -0
- package/layers/graphics/editingSupport.js +1 -1
- package/layers/graphics/sources/FeatureLayerSource.js +1 -1
- package/layers/mixins/EditBusLayer.js +1 -1
- package/layers/orientedImagery/core/CameraOrientationLTP.js +1 -1
- package/layers/orientedImagery/core/ElevationSourceDefinitions.js +5 -0
- package/layers/orientedImagery/core/ExposurePoint.js +1 -1
- package/layers/orientedImagery/core/cameraOrientationFactory.js +1 -1
- package/layers/orientedImagery/core/utils.js +5 -0
- package/layers/orientedImagery/transformations/groundToImageUtils.js +1 -1
- package/layers/support/fieldProperties.js +1 -1
- package/networks/Network.js +1 -1
- package/package.json +1 -1
- package/rest/featureService/FeatureService.js +1 -1
- package/support/arcadeUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/support/svgUtils.js +1 -1
- package/versionManagement/VersionManagementService.js +1 -1
- package/versionManagement/support/EditMomentStack.js +5 -0
- package/versionManagement/support/versionManagementUtils.js +1 -1
- package/views/2d/engine/Container.js +1 -1
- package/views/2d/engine/DisplayObject.js +1 -1
- package/views/2d/engine/ManagedCanvas.js +5 -0
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/webgl/GroupContainer.js +1 -1
- package/views/2d/engine/webgl/Painter.js +1 -1
- package/views/2d/engine/webgl/WGLContainer.js +1 -1
- package/views/2d/engine/webgl/WorldExtentClipRenderer.js +1 -1
- package/views/2d/engine/webgl/effects/FeatureEffect.js +1 -1
- package/views/2d/engine/webgl/effects/HighlightEffect.js +1 -1
- package/views/2d/engine/webgl/effects/HittestEffectVTL.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/TileLayerView2D.js +1 -1
- package/views/2d/layers/features/tileRenderers/support/WGLFeatureView.js +1 -1
- package/views/2d/layers/graphics/BaseGraphicContainer.js +1 -1
- package/views/2d/layers/graphics/GraphicContainer.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/graphics/HighlightGraphicContainer.js +1 -1
- package/views/2d/layers/support/DisplayGL.js +1 -1
- package/views/2d/webglDeps.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
- package/views/3d/layers/SceneLayerGraphicsView3D.js +1 -1
- package/views/3d/layers/SceneLayerView3D.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Labeler.js +1 -1
- package/views/3d/layers/graphics/graphicUtils.js +1 -1
- package/views/3d/layers/i3s/featureEditing.js +1 -1
- package/views/3d/layers/support/StageLayerElevationProvider.js +1 -1
- package/views/3d/support/buffer/glUtil.js +1 -1
- package/views/3d/support/engineContent/line.js +1 -1
- package/views/3d/support/viewpointUtils.js +1 -1
- package/views/3d/webgl-engine/Stage.js +1 -1
- package/views/3d/webgl-engine/effects/RenderPluginInput.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/smaa/SMAA.js +1 -1
- package/views/3d/webgl-engine/effects/ssao/SSAO.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/ModelDirtySet.js +1 -1
- package/views/3d/webgl-engine/lib/Object3D.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureFactory.js +1 -1
- package/views/3d/webgl-engine/lib/VertexAttribute.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/bufferLayouts.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/edgeProcessing.js +1 -1
- package/views/View.js +1 -1
- package/views/interactive/tooltip/TooltipContentWithHelpMessage.js +1 -1
- package/views/interactive/tooltip/TooltipEditableField.js +1 -1
- package/views/interactive/tooltip/constraintUtils.js +1 -1
- package/views/interactive/tooltip/content/Fields.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawCircle.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawMesh.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPoint.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPolygon.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawPolyline.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentDrawRectangle.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentExtentRotate.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentExtentScale.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentReshapeEdgeOffset.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTransformAbsolute.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTransformRotate.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTransformScale.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateGraphic.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateGraphicXY.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateGraphicZ.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateVertex.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateVertexXY.js +1 -1
- package/views/interactive/tooltip/content/TooltipContentTranslateVertexZ.js +1 -1
- package/views/support/angularMeasurementUtils.js +1 -1
- package/views/webgl/Texture.js +1 -1
- package/views/webgl/contextUtils.js +1 -1
- package/widgets/AreaMeasurement2D.js +1 -1
- package/widgets/AreaMeasurement3D.js +1 -1
- package/widgets/Attachments.js +1 -1
- package/widgets/Attribution.js +1 -1
- package/widgets/BasemapGallery.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/BasemapToggle.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesNode.js +1 -1
- package/widgets/BuildingExplorer/BuildingDisciplinesTree/BuildingDisciplinesTree.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevelPicker/BuildingLevelPicker.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevelPicker/Label.js +1 -1
- package/widgets/BuildingExplorer/BuildingLevelPicker/LevelItem.js +1 -1
- package/widgets/BuildingExplorer/BuildingPhasePicker/BuildingPhasePicker.js +1 -1
- package/widgets/BuildingExplorer.js +1 -1
- package/widgets/Compass.js +1 -1
- package/widgets/CoordinateConversion.js +1 -1
- package/widgets/Daylight/support/SliderWithDropdown.js +1 -1
- package/widgets/Daylight.js +1 -1
- package/widgets/DirectLineMeasurement3D.js +1 -1
- package/widgets/DirectionalPad.js +1 -1
- package/widgets/Directions/components/SaveLayer.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/DistanceMeasurement2D.js +1 -1
- package/widgets/Editor/components/FooterActions.js +1 -1
- package/widgets/Editor/components/Notices.js +1 -1
- package/widgets/Editor/components/PanelContent.js +1 -1
- package/widgets/Editor/components/PanelToolbar.js +1 -1
- package/widgets/Editor/components/Prompt.js +1 -1
- package/widgets/Editor/components/Settings.js +1 -1
- package/widgets/Editor/components/UpdateFeaturePanelContent.js +1 -1
- package/widgets/Editor/components/UploadDetails.js +1 -1
- package/widgets/Editor.js +1 -1
- package/widgets/ElevationProfile/components/LegendItem.js +1 -1
- package/widgets/ElevationProfile/components/SettingsButton.js +1 -1
- package/widgets/ElevationProfile/components/Statistics.js +1 -1
- package/widgets/ElevationProfile.js +1 -1
- package/widgets/Expand.js +1 -1
- package/widgets/Feature/FeatureContent.js +1 -1
- package/widgets/Feature/FeatureExpression.js +1 -1
- package/widgets/Feature/FeatureFields.js +1 -1
- package/widgets/Feature/FeatureMedia.js +1 -1
- package/widgets/Feature/FeatureRelationship.js +1 -1
- package/widgets/Feature/support/FeatureContentMixin.js +1 -1
- package/widgets/Feature/support/FeatureElementInfo.js +1 -1
- package/widgets/Feature.js +1 -1
- package/widgets/FeatureForm.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/Grid/Grid.js +1 -1
- package/widgets/FeatureTable/Grid/support/ButtonMenu.js +1 -1
- package/widgets/FeatureTable.js +1 -1
- package/widgets/FeatureTemplates/ItemList.js +1 -1
- package/widgets/FeatureTemplates.js +1 -1
- package/widgets/Features/FeaturesRelatedRecords.js +1 -1
- package/widgets/Features.js +1 -1
- package/widgets/FloorFilter.js +1 -1
- package/widgets/Fullscreen.js +1 -1
- package/widgets/Histogram.js +1 -1
- package/widgets/HistogramRangeSlider.js +1 -1
- package/widgets/Home.js +1 -1
- package/widgets/LayerList/ListItemPanel.js +1 -1
- package/widgets/LayerList.js +1 -1
- package/widgets/Legend/styles/Card.js +1 -1
- package/widgets/Legend/styles/Classic.js +1 -1
- package/widgets/Legend/styles/support/relationshipUtils.js +1 -1
- package/widgets/Legend/styles/support/univariateUtils.js +1 -1
- package/widgets/LineOfSight.js +1 -1
- package/widgets/Locate.js +1 -1
- package/widgets/NavigationToggle.js +1 -1
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer.js +1 -1
- package/widgets/Popup.js +1 -1
- package/widgets/Print.js +1 -1
- package/widgets/ScaleRangeSlider.js +1 -1
- package/widgets/Search/SearchResultRenderer.js +1 -1
- package/widgets/Search.js +1 -1
- package/widgets/ShadowCast/components/DiscreteConfigurator.js +1 -1
- package/widgets/ShadowCast/components/DurationConfigurator.js +1 -1
- package/widgets/ShadowCast/components/ShadowTooltipContent.js +1 -1
- package/widgets/ShadowCast/components/ThresholdConfigurator.js +1 -1
- package/widgets/ShadowCast.js +1 -1
- package/widgets/Sketch.js +1 -1
- package/widgets/Slice.js +1 -1
- package/widgets/Slider.js +1 -1
- package/widgets/Swipe.js +1 -1
- package/widgets/TableList.js +1 -1
- package/widgets/TimeSlider.js +1 -1
- package/widgets/Track.js +1 -1
- package/widgets/UtilityNetworkAssociations/UtilityNetworkAssociationsLineSymbolPicker.js +1 -1
- package/widgets/UtilityNetworkAssociations.js +1 -1
- package/widgets/UtilityNetworkTrace.js +1 -1
- package/widgets/UtilityNetworkValidateTopology.js +1 -1
- package/widgets/ValuePicker.js +1 -1
- package/widgets/VideoPlayer/components/PlayerControlsGroup.js +1 -1
- package/widgets/VideoPlayer/components/SettingsButton.js +1 -1
- package/widgets/VideoPlayer.js +1 -1
- package/widgets/Weather/LabeledSlider.js +1 -1
- package/widgets/Weather.js +1 -1
- package/widgets/Zoom/IconButton.js +1 -1
- package/widgets/smartMapping/BinaryColorSizeSlider.js +1 -1
- package/widgets/smartMapping/ClassedColorSlider.js +1 -1
- package/widgets/smartMapping/ClassedSizeSlider.js +1 -1
- package/widgets/smartMapping/ColorSizeSlider.js +1 -1
- package/widgets/smartMapping/ColorSlider.js +1 -1
- package/widgets/smartMapping/HeatmapSlider.js +1 -1
- package/widgets/smartMapping/OpacitySlider.js +1 -1
- package/widgets/smartMapping/SizeSlider.js +1 -1
- package/widgets/smartMapping/SmartMappingSliderBase.js +1 -1
- package/widgets/support/ColorPicker.js +1 -1
- package/widgets/support/DatePicker.js +1 -1
- package/widgets/support/Heading.js +1 -1
- package/widgets/support/LabeledSwitch.js +1 -1
- package/widgets/support/MeasurementWidgetContent.js +1 -1
- package/widgets/support/Popover.js +1 -1
- package/widgets/support/SelectionToolbar.js +1 -1
- package/widgets/support/SketchTooltipControls.js +1 -1
- package/widgets/support/SnappingControls.js +1 -1
- package/widgets/support/TimePicker.js +1 -1
- package/widgets/support/TimezonePicker.js +1 -1
- package/widgets/support/UnitSelect.js +1 -1
- package/assets/esri/core/workers/chunks/092920c25cac89c038ee.js +0 -1
- package/assets/esri/core/workers/chunks/1b3655f5bf5d90fa8730.js +0 -1
- package/assets/esri/core/workers/chunks/1cf7bb514e7eefc3e9c6.js +0 -1
- package/assets/esri/core/workers/chunks/24629402c647ef6b5f6b.js +0 -1
- package/assets/esri/core/workers/chunks/2d0d03cbea83c868edba.js +0 -1
- package/assets/esri/core/workers/chunks/2e130cb2f1038055c07b.js +0 -1
- package/assets/esri/core/workers/chunks/4369a6c1e0a82ab4db6a.js +0 -1
- package/assets/esri/core/workers/chunks/4f4a424d1747d04501df.js +0 -1
- package/assets/esri/core/workers/chunks/59c00d6fba0fd1c03d01.js +0 -1
- package/assets/esri/core/workers/chunks/650a317b6dc245a7060f.js +0 -1
- package/assets/esri/core/workers/chunks/7a358b1fd0c0cce59e9b.js +0 -1
- package/assets/esri/core/workers/chunks/83d1a1b3d371c991cc4c.js +0 -1
- package/assets/esri/core/workers/chunks/c4bb67150ccd01ea6014.js +0 -1
- package/assets/esri/core/workers/chunks/c60cf62f374e71e562fc.js +0 -1
- package/assets/esri/core/workers/chunks/c8f239c25fe864f0e47a.js +0 -1
- package/assets/esri/core/workers/chunks/cad260881653567bc8f9.js +0 -1
- package/assets/esri/core/workers/chunks/e55f7fc7eff0074ce0fc.js +0 -1
- package/assets/esri/core/workers/chunks/eef27d305023034084a4.js +0 -1
- package/assets/esri/core/workers/chunks/f38c54ada9e7012a2960.js +0 -1
- package/core/watchUtils.d.ts +0 -4
- package/core/watchUtils.js +0 -5
package/widgets/LineOfSight.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{ignoreAbortErrors as t}from"../core/promiseUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import o from"./LineOfSight/LineOfSightViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as a}from"./support/legacyIcon.js";import"./support/widgetUtils.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as d}from"./support/jsxFactory.js";const p="esri-line-of-sight",c={base:p,actions:`${p}__actions`,container:`${p}__container`,error:`${p}__error`,hint:`${p}__hint`,hintText:`${p}__hint-text`,newAnalysisButton:`${p}__new-analysis-button`,widgetIcon:a.lineOfSight},h={newAnalysisButton:`${p}__new-button`,continueButton:`${p}__continue-button`,doneButton:`${p}__done-button`};let m=class extends n{constructor(e,s){super(e,s),this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new o,this._onNewAnalysis=()=>{t(this.viewModel.start())},this._onDone=()=>{this.viewModel.stop()},this._onContinue=()=>{this.viewModel.continue()}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button.js")})}get active(){return this.viewModel.active}get analysis(){return this.viewModel.analysis}set analysis(e){this.viewModel.analysis=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}render(){return d("div",{class:this.classes(c.base,l.widget,l.panel),role:"presentation"},this.renderContainerNode())}renderContainerNode(){if(!this.visible)return null;if(!this.viewModel.supported)return this._renderUnsupportedMessage();let e=null;const t=[this._renderNewAnalysisButton()];return"creating"===this.viewModel.state?(e=this._renderHint(),t.unshift(this._renderDoneButton())):"created"===this.viewModel.state&&this.viewModel.targets.length>0&&t.unshift(this._renderContinueButton()),d("div",{class:c.container},e,d("div",{class:c.actions},t))}_renderUnsupportedMessage(){return d("div",{class:c.error,key:"esri-line-of-sight__unsupported"},d("p",null,this.messages.unsupported))}_renderHint(){return d("div",{class:c.hint,key:"esri-line-of-sight__hint"},d("p",{class:c.hintText},this.messages.hint))}_renderNewAnalysisButton(){return this._renderButton({className:c.newAnalysisButton,id:h.newAnalysisButton,label:this.messages.newAnalysis,onClick:this._onNewAnalysis,primary:!0})}_renderDoneButton(){return this._renderButton({id:h.doneButton,label:this.messages.done,onClick:this._onDone,primary:!1})}_renderContinueButton(){return this._renderButton({id:h.newAnalysisButton,label:this.messages.continueAnalysis,onClick:this._onContinue,primary:!1})}_renderButton({className:e,id:t,label:s,onClick:i,primary:n}){const o="disabled"===this.viewModel.state;return d("calcite-button",{appearance:n?"solid":"outline-fill","data-id":t,disabled:o,key:t,onclick:i
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{ignoreAbortErrors as t}from"../core/promiseUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import o from"./LineOfSight/LineOfSightViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as a}from"./support/legacyIcon.js";import"./support/widgetUtils.js";import{messageBundle as u}from"./support/decorators/messageBundle.js";import{tsx as d}from"./support/jsxFactory.js";const p="esri-line-of-sight",c={base:p,actions:`${p}__actions`,container:`${p}__container`,error:`${p}__error`,hint:`${p}__hint`,hintText:`${p}__hint-text`,newAnalysisButton:`${p}__new-analysis-button`,widgetIcon:a.lineOfSight},h={newAnalysisButton:`${p}__new-button`,continueButton:`${p}__continue-button`,doneButton:`${p}__done-button`};let m=class extends n{constructor(e,s){super(e,s),this.iconClass=c.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new o,this._onNewAnalysis=()=>{t(this.viewModel.start())},this._onDone=()=>{this.viewModel.stop()},this._onContinue=()=>{this.viewModel.continue()}}loadDependencies(){return r({button:()=>import("@esri/calcite-components/dist/components/calcite-button.js")})}get active(){return this.viewModel.active}get analysis(){return this.viewModel.analysis}set analysis(e){this.viewModel.analysis=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}get visible(){return this.viewModel.visible}set visible(e){this.viewModel.visible=e}render(){return d("div",{class:this.classes(c.base,l.widget,l.panel),role:"presentation"},this.renderContainerNode())}renderContainerNode(){if(!this.visible)return null;if(!this.viewModel.supported)return this._renderUnsupportedMessage();let e=null;const t=[this._renderNewAnalysisButton()];return"creating"===this.viewModel.state?(e=this._renderHint(),t.unshift(this._renderDoneButton())):"created"===this.viewModel.state&&this.viewModel.targets.length>0&&t.unshift(this._renderContinueButton()),d("div",{class:c.container},e,d("div",{class:c.actions},t))}_renderUnsupportedMessage(){return d("div",{class:c.error,key:"esri-line-of-sight__unsupported"},d("p",null,this.messages.unsupported))}_renderHint(){return d("div",{class:c.hint,key:"esri-line-of-sight__hint"},d("p",{class:c.hintText},this.messages.hint))}_renderNewAnalysisButton(){return this._renderButton({className:c.newAnalysisButton,id:h.newAnalysisButton,label:this.messages.newAnalysis,onClick:this._onNewAnalysis,primary:!0})}_renderDoneButton(){return this._renderButton({id:h.doneButton,label:this.messages.done,onClick:this._onDone,primary:!1})}_renderContinueButton(){return this._renderButton({id:h.newAnalysisButton,label:this.messages.continueAnalysis,onClick:this._onContinue,primary:!1})}_renderButton({className:e,id:t,label:s,onClick:i,primary:n}){const o="disabled"===this.viewModel.state;return d("calcite-button",{appearance:n?"solid":"outline-fill",class:e,"data-id":t,disabled:o,key:t,onclick:i},s)}get test(){return{IDS:h}}};e([s()],m.prototype,"active",null),e([s({constructOnly:!0,nonNullable:!0})],m.prototype,"analysis",null),e([s()],m.prototype,"iconClass",void 0),e([s()],m.prototype,"icon",void 0),e([s()],m.prototype,"label",null),e([s(),u("esri/widgets/LineOfSight/t9n/LineOfSight")],m.prototype,"messages",void 0),e([s()],m.prototype,"view",null),e([s({type:o})],m.prototype,"viewModel",void 0),e([s()],m.prototype,"visible",null),m=e([i("esri.widgets.LineOfSight")],m);const _=m;export{_ as default};
|
package/widgets/Locate.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{deprecatedProperty as o}from"../core/deprecate.js";import t from"../core/Logger.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import r from"./Widget.js";import n from"./Locate/LocateViewModel.js";import{loadCalciteComponents as a}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as c}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as d}from"./support/decorators/messageBundle.js";import{vmEvent as g}from"./support/decorators/vmEvent.js";import{tsx as u}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const m={base:"esri-locate",widgetIcon:c.northNavigation},h="gps-off",v="esri.widgets.Locate",w=t.getLogger(v);let b=class extends r{constructor(e,o){super(e,o),this.iconClass=m.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new n}loadDependencies(){return a({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get rotationEnabled(){return this.viewModel.rotationEnabled}set rotationEnabled(e){this.viewModel.rotationEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get useHeadingEnabled(){return o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled}set useHeadingEnabled(e){o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{state:e}=this.viewModel,o="locating"===e?this.messagesCommon.cancel:this.messages.title;return u("div",{bind:this,class:this.classes(m.base,l.widget,l.widgetButton,{[l.disabled]:"disabled"===e,[l.hidden]:"feature-unsupported"===e}),hidden:"feature-unsupported"===e,onclick:this._locate,onkeydown:this._locate,role:"button",tabIndex:0,
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{deprecatedProperty as o}from"../core/deprecate.js";import t from"../core/Logger.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import r from"./Widget.js";import n from"./Locate/LocateViewModel.js";import{loadCalciteComponents as a}from"./support/componentsUtils.js";import{globalCss as l}from"./support/globalCss.js";import{legacyIcon as c}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as d}from"./support/decorators/messageBundle.js";import{vmEvent as g}from"./support/decorators/vmEvent.js";import{tsx as u}from"./support/jsxFactory.js";import"./support/widgetUtils.js";const m={base:"esri-locate",widgetIcon:c.northNavigation},h="gps-off",v="esri.widgets.Locate",w=t.getLogger(v);let b=class extends r{constructor(e,o){super(e,o),this.iconClass=m.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new n}loadDependencies(){return a({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader.js")})}get geolocationOptions(){return this.viewModel.geolocationOptions}set geolocationOptions(e){this.viewModel.geolocationOptions=e}get goToLocationEnabled(){return this.viewModel.goToLocationEnabled}set goToLocationEnabled(e){this.viewModel.goToLocationEnabled=e}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get graphic(){return this.viewModel.graphic}set graphic(e){this.viewModel.graphic=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get rotationEnabled(){return this.viewModel.rotationEnabled}set rotationEnabled(e){this.viewModel.rotationEnabled=e}get scale(){return this.viewModel.scale}set scale(e){this.viewModel.scale=e}get useHeadingEnabled(){return o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled}set useHeadingEnabled(e){o(w,"useHeadingEnabled",{replacement:"rotationEnabled",version:"4.27",warnOnce:!0}),this.viewModel.rotationEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}cancelLocate(){this.viewModel.cancelLocate()}locate(){return this.viewModel.locate()}render(){const{state:e}=this.viewModel,o="locating"===e?this.messagesCommon.cancel:this.messages.title;return u("div",{"aria-label":o,bind:this,class:this.classes(m.base,l.widget,l.widgetButton,{[l.disabled]:"disabled"===e,[l.hidden]:"feature-unsupported"===e}),hidden:"feature-unsupported"===e,onclick:this._locate,onkeydown:this._locate,role:"button",tabIndex:0,title:o},this._renderIcon(),u("span",{class:c.fontFallbackText},this.messages.title))}_renderIcon(){const{icon:e,iconClass:o,viewModel:t}=this;return"locating"===t?.state?u("calcite-loader",{inline:!0,key:"loader",label:"",scale:"s",type:"indeterminate"}):e?this._renderCalciteIcon(e):o&&o!==m.widgetIcon?this._renderLegacyIcon(o):this._renderCalciteIcon(h)}_renderCalciteIcon(e){return u("calcite-icon",{icon:e,key:"icon",scale:"s"})}_renderLegacyIcon(e){return u("span",{"aria-hidden":"true",class:e,key:"legacy-icon"})}_locate(){const{viewModel:e}=this;"locating"===e.state?e.cancelLocate():e.locate()}};e([s()],b.prototype,"geolocationOptions",null),e([s()],b.prototype,"goToLocationEnabled",null),e([s()],b.prototype,"goToOverride",null),e([s()],b.prototype,"graphic",null),e([s()],b.prototype,"iconClass",void 0),e([s()],b.prototype,"icon",void 0),e([s()],b.prototype,"label",null),e([s(),d("esri/widgets/Locate/t9n/Locate")],b.prototype,"messages",void 0),e([s(),d("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([s()],b.prototype,"popupEnabled",null),e([s()],b.prototype,"rotationEnabled",null),e([s()],b.prototype,"scale",null),e([s()],b.prototype,"useHeadingEnabled",null),e([s()],b.prototype,"view",null),e([s({type:n}),g(["locate","locate-error"])],b.prototype,"viewModel",void 0),e([p()],b.prototype,"_locate",null),b=e([i(v)],b);const y=b;export{y as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as e}from"../core/accessorSupport/decorators/subclass.js";import s from"./Widget.js";import{css as i}from"./NavigationToggle/css.js";import r from"./NavigationToggle/NavigationToggleViewModel.js";import{globalCss as a}from"./support/globalCss.js";import{legacyIcon as l}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{tsx as g}from"./support/jsxFactory.js";import"./support/widgetUtils.js";let c=class extends s{constructor(t,o){super(t,o),this.iconClass=i.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new r}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}set layout(t){"horizontal"!==t&&(t="vertical"),this._set("layout",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}toggle(){return this.viewModel.toggle()}render(){const t="disabled"===this.viewModel?.state,o="pan"===this.viewModel?.navigationMode,e={[a.disabled]:t,[i.isLayoutHorizontal]:"horizontal"===this.layout},s={[i.activeButton]:o},r={[i.activeButton]:!o},p=t?-1:0,n=this.messages.toggle;return g("div",{bind:this,class:this.classes(i.base,a.widget,e),onclick:this._toggle,onkeydown:this._toggle,tabIndex:p,
|
|
5
|
+
import{_ as t}from"../chunks/tslib.es6.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as e}from"../core/accessorSupport/decorators/subclass.js";import s from"./Widget.js";import{css as i}from"./NavigationToggle/css.js";import r from"./NavigationToggle/NavigationToggleViewModel.js";import{globalCss as a}from"./support/globalCss.js";import{legacyIcon as l}from"./support/legacyIcon.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{messageBundle as n}from"./support/decorators/messageBundle.js";import{tsx as g}from"./support/jsxFactory.js";import"./support/widgetUtils.js";let c=class extends s{constructor(t,o){super(t,o),this.iconClass=i.widgetIcon,this.icon=null,this.messages=null,this.viewModel=new r}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}set layout(t){"horizontal"!==t&&(t="vertical"),this._set("layout",t)}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}toggle(){return this.viewModel.toggle()}render(){const t="disabled"===this.viewModel?.state,o="pan"===this.viewModel?.navigationMode,e={[a.disabled]:t,[i.isLayoutHorizontal]:"horizontal"===this.layout},s={[i.activeButton]:o},r={[i.activeButton]:!o},p=t?-1:0,n=this.messages.toggle;return g("div",{"aria-label":n,bind:this,class:this.classes(i.base,a.widget,e),onclick:this._toggle,onkeydown:this._toggle,tabIndex:p,title:n},g("div",{class:this.classes(i.button,a.widgetButton,i.panButton,s)},g("span",{class:l.pan})),g("div",{class:this.classes(i.button,a.widgetButton,i.rotateButton,r)},g("span",{class:l.rotate})))}_toggle(){this.toggle()}};t([o()],c.prototype,"iconClass",void 0),t([o()],c.prototype,"icon",void 0),t([o()],c.prototype,"label",null),t([o({value:"vertical"})],c.prototype,"layout",null),t([o(),n("esri/widgets/NavigationToggle/t9n/NavigationToggle")],c.prototype,"messages",void 0),t([o()],c.prototype,"view",null),t([o({type:r})],c.prototype,"viewModel",void 0),t([p()],c.prototype,"_toggle",null),c=t([e("esri.widgets.NavigationToggle")],c);const d=c;export{d as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import{isSome as r}from"../../core/arrayUtils.js";import i from"../../core/Collection.js";import s from"../../core/Evented.js";import{isSerializable as o}from"../../core/JSONSupport.js";import a from"../../core/Logger.js";import{clamp as n}from"../../core/mathUtils.js";import{destroyMaybe as l}from"../../core/maybe.js";import{once as h,on as c,watch as g,initial as u}from"../../core/reactiveUtils.js";import{createScreenPoint as m}from"../../core/screenUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import{ensureType as p}from"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../geometry/Extent.js";import{geographicToWebMercator as v}from"../../geometry/support/webMercatorUtils.js";import f from"../../layers/GraphicsLayer.js";import P from"../../layers/ImageryTileLayer.js";import{searchImages as C}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as I}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as w,computePolygonForInspection as b,resizePolygon as F,checkIfPolygonContainsSelectedPoint as M}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as S,transformPoints as x}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as V}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import j from"../../layers/support/RasterFunction.js";import{convolutionKernel as A}from"../../layers/support/rasterFunctionConstants.js";import O from"../../layers/support/rasterDatasets/RasterFactory.js";import G from"../../rest/support/AttachmentQuery.js";import D from"../../views/MapView.js";import{getResolutionToScaleFactor as R}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as L}from"../../views/support/projectionUtils.js";import{sectorsInOrder as E,sectorsRadii as U}from"./constants.js";import{activePolygonSymbol as T,polygonSymbol as N,activeSourcePointSymbol as k,sourcePointSymbol as H,crossSymbol as J,diamondSymbol as z}from"./symbols.js";import{isTifOrMrf as $,isSceneView as q,isGraphic as B}from"./utils.js";import W from"../../geometry/Polygon.js";import Z from"../../geometry/SpatialReference.js";import Q from"../../geometry/Point.js";const K={click:"view-click",view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode",children:"children",registerLayerSelection:"register-layer-selection",plotPointOnGround:"plot-point-on-ground"},X=e=>/^https?:/i.test(e),Y=e=>"FA"===e;let ee=class extends s.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=new i,this.coveragePolygons=new i,this.currentCoverageVisible=!0,this.disabled=!1,this.displayMessage=null,this.pointSources=new i,this.previousFeatureAngle=0,this.selectedFeature=null,this.selectedFeatureAngle=0,this.selectedPoint=null,this.features=new i,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.localPort=null,this.mapImageConversionToolState=!1,this.navigatorSelectedFeature=null,this._additionalCoveragePolygons=new i,this._additionalFeatureGraphics=new i,this._currentCoveragePolygon=null,this._currentImage=null,this._fetchFeaturesController=null,this._imageViewer=null,this._initialCurrentCoveragePolygon=null,this._initialCurrentCoverageUpdate=!0,this._overlays=null,this._plotPolygons=!1,this._initialPreviousCoveragePolygon=null,this._referencePointOnGround=null,this._referencePointOnImage=null,this._sectorData=null,this._crossSymbol=null,this._panConstraint=null,this._scaleConstraint=null,this._suitabilities=null,this._transformController=new AbortController,this._updateCoverageController=null,this.handleSectorClick=this.handleSectorClick.bind(this),this.loadViewer=this.loadViewer.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){h((()=>this.view?.ready)).then((()=>{this._overlays=new f({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([c((()=>this.view),"click",(e=>{if(this.view.ready&&!this.disabled&&this.active&&(e.stopPropagation(),e.preventDefault(),"mouse"!==e.pointerType||0===e.button))if(this.mapImageConversionToolState)this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.selectedFeature,selectedLocation:e.mapPoint,options:{signal:this._transformController?.signal}});else{const{mapPoint:t}=e;this.displayMessage=null,this.selectedPoint=t.spatialReference.isGeographic?v(t):t.clone(),this.features.removeAll(),this.selectedFeature=null,this._fetchFeaturesWithController(e)}})),g((()=>this.view?.map?.allLayers?.length),(e=>{e&&this._overlays&&this.view.map.layers.reorder(this._overlays,e-1)}),{initial:!0})],K.view)}destroy(){this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures(),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this._additionalCoveragePolygons.destroy(),this._additionalFeatureGraphics.destroy(),this._currentImage=l(this._currentImage),this._imageViewer=l(this._imageViewer),this._initialCurrentCoveragePolygon=l(this._initialCurrentCoveragePolygon),this._currentCoveragePolygon=l(this._currentCoveragePolygon),this._crossSymbol=l(this._crossSymbol),this._referencePointOnGround=l(this._referencePointOnGround),this._referencePointOnImage=l(this._referencePointOnImage),this._overlays&&this.view?.map.remove(this._overlays),this._overlays=l(this._overlays)}get active(){return!0===this.view?.map?.allLayers.some((e=>"oriented-imagery"===e.type&&e.loaded))}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",n(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",n(e,-10,10))}get currentImageView(){return this._imageViewer?.allLayerViews.find((e=>e.layer===this._currentImage))}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){return $(this.selectedFeature?.attributes.image?.trim())}get imageLoaded(){return this._currentImage?.loaded??!1}get updating(){return"loading"===this._currentImage?.loadStatus||!!this._fetchFeaturesController}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",n(e,0,1))}get sectorData(){const{_sectorData:e}=this;if(e)return E.map((t=>e[t]))}get state(){const{active:e,activeLayer:t}=this;return e||t?this._currentImage?.loadStatus?`image-${this._currentImage.loadStatus}`:"ready":"disabled"}get thumbnails(){const{features:e}=this;return e?new i(e.map((({attributes:{image:e,objectId:t}})=>{const r=e?.trim();return $(r)?{url:r,objectId:t}:null})).filter(r)):null}set view(e){this._set("view",e)}getCurrentCoveragePolygon(){return this._currentCoveragePolygon}getSelectedFeature(){return this.selectedFeature}getSelectedFeaturePolygon(){return this._initialCurrentCoveragePolygon}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[E[e]];t?.length&&this._updateSelectedFeature(t.at(0))}handleFeatureClick(e){const{sector:t,featureIndexInSector:r}=e;if(isNaN(r))return;const i=this._sectorData?.[t];i?.length&&this._updateSelectedFeature(i.at(r))}loadViewer(e){const t=new Map,r={wkid:0};this._imageViewer=new D({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),h((()=>!0===this._imageViewer?.stationary)).then((()=>{this.setMessage("onLoadMessage","info")})),this._imageViewer.addHandles([this._imageViewer.on("click",(async e=>{if(0===e.button&&this._currentImage&&this.mapImageConversionToolState&&this._currentImage&&this._currentImage.fullExtent){const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{x:o,y:a}=e.mapPoint;if(t>o||r<o||s<a||i>a)return;this.plotReferencePointOnImage(e.mapPoint);const n=this.getSelectedFeature();if(n){const t=(await V([e.mapPoint.toJSON()],{feature:n,currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:this._transformController?.signal}}))[0];t&&this.plotReferencePointOnGround(t)}}})),g((()=>[this._imageViewer?.viewpoint,this._initialCurrentCoveragePolygon]),((e,t)=>{this._initialPreviousCoveragePolygon=t?.[1],this._imageViewer?.viewpoint&&this._initialCurrentCoveragePolygon&&(this._cancelCurrentCoverageUpdate(),this.updateCoverage())})),g((()=>this.selectedFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),u),g((()=>this.selectedFeature),(async()=>{const{selectedFeature:e,selectedPoint:t}=this;if(!e&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),e&&t){this._initialCurrentCoverageUpdate=!0,this._updatePointsAndPolygons(),this._fetchFeaturesController??=new AbortController;const{signal:t}=this._fetchFeaturesController;await this.loadImage(e,{signal:t}).finally((()=>{this._fetchFeaturesController=null}))}}))])}resetImage(){this._currentImage=l(this._currentImage),this.setMessage("onLoadMessage","info"),this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures()}async searchBestImage(e,t){try{const r=await C(e,t);r&&await this._processFeatureResponse(r,{signal:t?.signal})}catch(r){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while finding best image",r)}}setAdditionalCameraLocationsVisibility(e){this._additionalFeatureGraphics.forEach((t=>{t.visible=e}))}setAdditionalCoverageVisibility(e){this._additionalCoveragePolygons.forEach((t=>{t.visible=e}))}setCurrentCoverageVisibility(e){this._currentCoveragePolygon&&(this._currentCoveragePolygon.visible=e),this._selectedFeatureGraphic&&(this._selectedFeatureGraphic.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}_cancelFetchingFeatures(e){const t=this._fetchFeaturesController;t&&t.abort(e),this._fetchFeaturesController=null}_cancelCurrentCoverageUpdate(){const e=this._updateCoverageController;e&&e.abort("Multiple Coverage Updates: Aborting Current Coverage Update to sync image and coverage"),this._updateCoverageController=null}async _fetchFeatures(e,t){const{screenPoint:r}=e,i=this.activeLayer;if(i){const e={include:i},s=await this.view.hitTest(r,e);this._processHitTestResults(i,s,t)}}async _fetchFeaturesWithController(e){this._cancelFetchingFeatures();const t=new AbortController,{signal:r}=t;this._fetchFeaturesController=t;try{await this._fetchFeatures(e,{signal:r}).finally((()=>{this._fetchFeaturesController=null}))}catch(i){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,features:t}=this;if(!e||!t)return void(this._sectorData=null);this._sectorData={};for(const a of E)this._sectorData[a]=new i;const r=e.map(((e,t)=>({...e,featureIndex:t})));r.sort(((e,t)=>e.trueSuitability-t.trueSuitability));const s=r.map((({distance:e})=>e)),o=Math.max(...s);r.forEach((e=>{const{distance:r,angle:i,featureIndex:s}=e;let a="FAR";const n=r/o*U[2];n<=U[0]?a="NEAR":n<=U[1]&&(a="");let l="NORTH";if(Math.abs(i)>=135?l="WEST":i<-45&&i>-135?l="SOUTH":i<=45&&(l="EAST"),!this._sectorData)return;const h=U[3]+n*Math.sin(i*Math.PI/180),c=U[3]+n*Math.cos(i*Math.PI/180);let g;const u=t.at(s),m=u===this.selectedFeature,d=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;if(m&&d)g=-90;else{const e=h-U[3],t=c-U[3],r=t/Math.sqrt(e**2+t**2);let i=180*Math.acos(r)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(i*=-1),g=i}const p=""===a?l:`${a}_${l}`;m&&(g===this.selectedFeatureAngle?this.previousFeatureAngle=g:this.selectedFeatureAngle=g,this.navigatorSelectedFeature=d?null:{x:h,y:c,direction:l});const y=this._sectorData[p];y.add({angle:i,featureIndex:s,x:h,y:c,objectID:u.attributes.objectId,sector:p,featureIndexInSector:y.length})}))}async _processFeatureResponse(e,t){const{selectedPoint:r}=this;if(!r)return;if(!e)return;const i=e;if(!i)return;const{features:s}=i;if(!s.length)return this.setMessage("noImageError","error"),void(this.selectedFeature=null);const a=new Array;this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll(),s.forEach((e=>{let t;const{polygon:i,frustum:s}=w(e);if(t=i,e.attributes.isInspection&&(t=b(e.attributes)),e.layer.coveragePercent&&(t=F(t,e.layer.coveragePercent)),M(t,r)){a.push(e);const r=t.toJSON(),i=s?.toJSON(),{attributes:n}=e,{cameraHeight:l,cameraHeading:h,location:c,objectId:g}=n,u=o(c)?c.toJSON():c;r.imageID=u.imageID=g,i&&(i.imageID=g),u.z=l,this.pointSources?.push(u),this.coveragePolygons?.push(h>0?r:void 0),this.coverageFrustums?.push(h>0?i:void 0)}}));const n=this.coveragePolygons?.getItemAt(0);if(!a.length)return void this.setMessage("noImageError","error");if(a[0].attributes.elevationSource&&!r.z&&n){const e=await S([r],{feature:a[0],currentCoveragePolygon:new W(n),options:t});if(e[0]){const t=e[0];r.elevation=t.z}}this._suitabilities=I({features:a,selectedPoint:r,camera:q(this.view)?this.view.camera:null,currentImage:this.selectedFeature}),this._suitabilities?.sort(((e,t)=>e.suitability-t.suitability));const l=this._suitabilities?.map((e=>e.feature)),h=l[0];this._updateFeatures(l),this.selectedFeature=h,this._groupFeaturesBySectors(),this._initialCurrentCoverageUpdate=!0,this._plotPolygons=!0}async _processHitTestResults(e,t,r){const{screenPoint:i,results:s}=t,o=this.view.toMap(i),a=s[0],n={layerInstanceOrURL:e,point:o,queryParams:{maximumDistance:e.maximumDistance,objectIds:this.shouldShowSelectedImage?[a.graphic.attributes.id]:void 0},queryFeatures:null};await this.searchBestImage(n,r)}_updateFeatures(e){e.length&&(this.features.removeAll(),this.features.addMany(e))}_updatePointsAndPolygons(){const{coveragePolygons:e,pointSources:r,selectedFeature:i,currentCoverageVisible:s,isAdditionalCoverageVisible:o,isAdditionalPointSourcesVisible:a}=this;if(e&&r&&i){this._additionalCoveragePolygons.removeAll(),this._additionalFeatureGraphics.removeAll(),this._currentCoveragePolygon&&(this._currentCoveragePolygon.destroy(),this._currentCoveragePolygon=null,this._initialCurrentCoveragePolygon=null);for(const r of e)r?.imageID===i?.attributes.objectId?this._initialCurrentCoveragePolygon=new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:T,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:N,visible:o}));for(const e of r)e.imageID===i?.attributes.objectId?this._selectedFeatureGraphic=new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:k,visible:s}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:H,visible:a}))}}_updateSelectedFeature(e){if(!e)return;this.selectedFeature=this.features?.at(e.featureIndex);const t=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;let r;if(t)r=-90;else{const t=e.x-U[3],i=e.y-U[3],s=i/Math.sqrt(t**2+i**2);let o=180*Math.acos(s)/Math.PI;(t<0&&i<0||t<0&&i>0)&&(o*=-1),r=o}r===this.selectedFeatureAngle?this.previousFeatureAngle=r:this.selectedFeatureAngle=r,this.navigatorSelectedFeature=t?null:{x:e.x,y:e.y,direction:e.sector.includes("_")?e.sector.split("_")[1]:e.sector}}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}updateCurrentCoveragePolygon(e){if(this._initialCurrentCoverageUpdate)if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,e&&(this._currentCoveragePolygon&&this._currentCoveragePolygon.destroy(),e.visible=this.currentCoverageVisible,this._currentCoveragePolygon=e),this.view){const e=this.selectedPoint?new t({geometry:this.selectedPoint.clone(),symbol:J,attributes:{imageID:this.selectedFeature?.attributes.objectId}}):null;this._overlays?.graphics.addMany([...this._additionalCoveragePolygons,...this._additionalFeatureGraphics,this._currentCoveragePolygon,this._selectedFeatureGraphic,e].filter(B))}else if(this._plotPolygons){this._plotPolygons=!1;const e={points:this.pointSources?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),frustums:this.coverageFrustums?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),polygons:this._additionalCoveragePolygons?.map((e=>e.geometry?.toJSON())),currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),currentPolygon:this._currentCoveragePolygon,currentFrustum:this.coverageFrustums?.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId))};this.emit("plot-polygons",{data:e})}else{const e={currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),additionalPoint:this.pointSources.find((e=>e?.imageID===this._initialPreviousCoveragePolygon?.attributes.imageID)),currentPolygon:this._currentCoveragePolygon,additionalPolygon:this._initialPreviousCoveragePolygon};this.emit("update-selected-feature",{data:e})}else if(this.view){const t=this._currentCoveragePolygon&&this._overlays?this._overlays.graphics.indexOf(this._currentCoveragePolygon):-1;e&&(this._currentCoveragePolygon&&(this._overlays?.remove(this._currentCoveragePolygon),this._currentCoveragePolygon.destroy()),e.visible=this.currentCoverageVisible,this._currentCoveragePolygon=e,this._overlays?.graphics.add(this._currentCoveragePolygon,t>=0?t:void 0))}else e&&(this._currentCoveragePolygon=e,this.emit("update-current-coverage",{graphic:e.toJSON()}))}async loadImage(e,t){if(!this._imageViewer)return;if(this._imageViewer.graphics.removeAll(),this._currentImage&&this._imageViewer?.map.layers.includes(this._currentImage)&&(this._currentImage?.removeHandles("image-handles"),this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage?.destroy(),this._currentImage=null),!e)return void this.setMessage("noImageError","error");let r,i,s=e.attributes.image;if(!X(s)&&!Y(s)){if(!this.localPort)return this.setMessage("noLocalPort","error"),void a.getLogger(this).error("oriented-imagery-viewer:missing-local-port","A value for local port is not set. Local port is needed to load local images.");s=`http://127.0.0.1:${this.localPort}/${s}`}this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const o={skipExtensions:["aux.xml","jgw"]};if(Y(s)){const a=new G({objectIds:[e.attributes.objectId]}),n=(await e.layer.queryAttachments(a,t))[`${e.attributes.objectId}`];if(!n[0]?.url)return void this.setMessage("noAttachment","error");if(r=n[0].contentType.split("/")[1]?.toUpperCase(),s=n[0]?.url,i=await O.open({ioConfig:o,url:s,datasetFormat:r,...t}).catch((e=>(this.setMessage("imageLoadError","error",e.message),null))),!i)return}this._currentImage=new P({ioConfig:o,url:s,raster:i,options:t}),this._imageViewer.map.layers.add(this._currentImage);try{const r=await this._currentImage.when();this._imageViewer.extent=r.fullExtent,r.raster.rasterInfo.isPseudoSpatialReference&&(this._imageViewer.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0)),this._panConstraint&&this._imageViewer.constraints.customConstraints.remove(this._panConstraint),this._scaleConstraint&&this._imageViewer.constraints.customConstraints.remove(this._scaleConstraint),this._panConstraint={constrain:(e,t)=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:r,xmax:i,ymin:s,ymax:o}=this._currentImage.fullExtent,{extent:a,rotation:n}=this._imageViewer,l=n*Math.PI/180,h=Math.abs(Math.cos(l)*a.width+Math.sin(l)*a.height),c=Math.abs(Math.cos(l)*a.height+Math.sin(l)*a.width),{rasterInfo:g}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(r+Math.min(g.width,h)/2,e.targetGeometry.x),i-Math.min(g.width,h)/2),e.targetGeometry.y=Math.min(Math.max(s+Math.min(g.height,c)/2,e.targetGeometry.y),o-Math.min(g.height,c)/2),e},applyPanConstraint:e=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{extent:o,rotation:a}=this._imageViewer,n=a*Math.PI/180,l=Math.abs(Math.cos(n)*o.width+Math.sin(n)*o.height),h=Math.abs(Math.cos(n)*o.height+Math.sin(n)*o.width),{rasterInfo:c}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(t+Math.min(c.width,l)/2,e.targetGeometry.x),r-Math.min(c.width,l)/2),e.targetGeometry.y=Math.min(Math.max(i+Math.min(c.height,h)/2,e.targetGeometry.y),s-Math.min(c.height,h)/2),e}},this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:s,rotation:o,zoom:a}=this._imageViewer,n=o*Math.PI/180,l=Math.abs(Math.cos(n)*t+Math.sin(n)*r),h=Math.abs(Math.cos(n)*r+Math.sin(n)*t);a<1&&(e.scale=Math.max(e.scale,R(this._imageViewer.spatialReference)*Math.max(l/i,h/s)/2**a))}return e}},this._imageViewer.constraints.customConstraints.addMany([this._panConstraint,this._scaleConstraint]),r.addHandles(g((()=>[this.brightness,this.contrast,this.sharpness]),(([e,t,i])=>{r.loaded&&(r.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(r,i))}),u)),await this.transformAndPlotSelectedLocation(t)}catch(n){a.getLogger(this).error("oriented-imagery-viewer:load-image",n),this.setMessage("imageLoadError","error",n.message)}}sharpenImage(e,t){const r=[0,-1*t,0,-1*t,5,-1*t,0,-1*t,0],i=new j({functionName:"Convolution",functionArguments:{type:A.userDefined,cols:3,rows:3,kernel:r,convolutionType:A.userDefined}});e.renderer=null,e.rasterFunction=i}async transformAndPlotSelectedLocation(e){const{_currentImage:r,selectedFeature:i,selectedPoint:s}=this;if(!s||!i||!r?.loaded)return;const{pixelSize:o}=r.rasterInfo,a=await x([s],{feature:i,imageProperties:r.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:e});if(!a.length)return;const n=a[0];if(!n)return;const l=p(_,await L(r.fullExtent,p(Z,this._imageViewer?.spatialReference),null,e?.signal));n.x=n.x*o.x+l.xmin,n.y=l.ymax-n.y*o.y,n.spatialReference=l.spatialReference,this._crossSymbol&&(this._imageViewer?.graphics.remove(this._crossSymbol),this._crossSymbol.destroy()),this._crossSymbol=new t({geometry:Q.fromJSON(n),symbol:J}),this._imageViewer?.graphics.add(this._crossSymbol)}async transformAndPlotReferencePointOnImage(e){if(!this._imageViewer)return;const t=this._currentImage;if(!t)return;const{feature:r,selectedLocation:i,options:s}=e,{pixelSize:o,isPseudoSpatialReference:a,transform:n}=t.rasterInfo,l=await x([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:s});if(!l.length)return;let h=l[0];const c=await L(t.fullExtent,this._imageViewer.spatialReference,null,s?.signal);a?(h.x=h.x*o.x+c.xmin,h.y=c.ymax-h.y*o.y,h.spatialReference=c.spatialReference):h=n.forwardTransform(new Q(h)),this.plotReferencePointOnImage(h)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:z}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}})}plotReferencePointOnImage(e){this._imageViewer&&(this._referencePointOnImage&&(this._imageViewer.graphics.remove(this._referencePointOnImage),this._referencePointOnImage.destroy()),this._referencePointOnImage=new t({geometry:{type:"point",...o(e)?e.toJSON():e},symbol:z}),this._imageViewer.graphics.add(this._referencePointOnImage))}setMessage(e,t,r){this.displayMessage={key:e,type:t,data:r}}async updateCoverage(){const e=new AbortController,{signal:r}=e;this._updateCoverageController=e;const{_imageViewer:i}=this;if(this._currentImage?.loaded&&i){const{width:e,height:s}=this._currentImage.rasterInfo,{xmin:o,xmax:a,ymin:n,ymax:l}=this._currentImage.fullExtent,h=[[0,0],[Math.min(i.width,e),0],[Math.min(i.width,e),Math.min(i.height,s)],[0,Math.min(i.height,s)]].map((e=>i.toMap(m(e[0],e[1]))));h.forEach((e=>{e.x=o<=e.x&&e.x<=a?e.x:Math.abs(o-e.x)>Math.abs(a-e.x)?a:o,e.y=n<=e.y&&e.y<=l?e.y:Math.abs(n-e.y)>Math.abs(l-e.y)?l:n}));const c=await V(h,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(c&&!r.aborted){const e=[c.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new W({hasZ:!0,rings:e,spatialReference:c[0].spatialReference});this.updateCurrentCoveragePolygon(new t({attributes:{imageID:this.selectedFeature?.attributes.objectId},geometry:r,symbol:T,visible:this.currentCoverageVisible}))}}}};e([d()],ee.prototype,"active",null),e([d()],ee.prototype,"activeLayer",void 0),e([d()],ee.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],ee.prototype,"brightness",null),e([d({type:Number})],ee.prototype,"contrast",null),e([d()],ee.prototype,"coverageFrustums",void 0),e([d()],ee.prototype,"coveragePolygons",void 0),e([d()],ee.prototype,"currentCoverageVisible",void 0),e([d()],ee.prototype,"currentImageView",null),e([d()],ee.prototype,"disabled",void 0),e([d()],ee.prototype,"displayMessage",void 0),e([d()],ee.prototype,"pointSources",void 0),e([d()],ee.prototype,"previousFeatureAngle",void 0),e([d()],ee.prototype,"selectedFeature",void 0),e([d()],ee.prototype,"selectedFeatureAngle",void 0),e([d()],ee.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],ee.prototype,"featureCount",null),e([d()],ee.prototype,"features",void 0),e([d()],ee.prototype,"imageGalleryEnabled",null),e([d()],ee.prototype,"imageLoaded",null),e([d()],ee.prototype,"isAdditionalCoverageVisible",void 0),e([d()],ee.prototype,"isAdditionalPointSourcesVisible",void 0),e([d({type:Number})],ee.prototype,"localPort",void 0),e([d()],ee.prototype,"mapImageConversionToolState",void 0),e([d()],ee.prototype,"navigatorSelectedFeature",void 0),e([d()],ee.prototype,"updating",null),e([d({type:Number})],ee.prototype,"sharpness",null),e([d()],ee.prototype,"sectorData",null),e([d()],ee.prototype,"state",null),e([d()],ee.prototype,"thumbnails",null),e([d()],ee.prototype,"view",null),e([d()],ee.prototype,"_additionalCoveragePolygons",void 0),e([d()],ee.prototype,"_additionalFeatureGraphics",void 0),e([d()],ee.prototype,"_currentCoveragePolygon",void 0),e([d()],ee.prototype,"_currentImage",void 0),e([d()],ee.prototype,"_fetchFeaturesController",void 0),e([d()],ee.prototype,"_imageViewer",void 0),e([d()],ee.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],ee.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],ee.prototype,"_overlays",void 0),e([d()],ee.prototype,"_plotPolygons",void 0),e([d()],ee.prototype,"_initialPreviousCoveragePolygon",void 0),e([d()],ee.prototype,"_referencePointOnGround",void 0),e([d()],ee.prototype,"_referencePointOnImage",void 0),e([d()],ee.prototype,"_selectedFeatureGraphic",void 0),e([d()],ee.prototype,"_sectorData",void 0),ee=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ee);const te=ee;export{te as default};
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import"../../geometry.js";import t from"../../Graphic.js";import{isSome as r}from"../../core/arrayUtils.js";import i from"../../core/Collection.js";import s from"../../core/Evented.js";import{isSerializable as o}from"../../core/JSONSupport.js";import a from"../../core/Logger.js";import{clamp as n}from"../../core/mathUtils.js";import{destroyMaybe as l}from"../../core/maybe.js";import{once as h,on as c,watch as u,initial as g}from"../../core/reactiveUtils.js";import{createScreenPoint as m}from"../../core/screenUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import{ensureType as p}from"../../core/accessorSupport/ensureType.js";import"../../core/has.js";import{subclass as y}from"../../core/accessorSupport/decorators/subclass.js";import _ from"../../geometry/Extent.js";import{geographicToWebMercator as v}from"../../geometry/support/webMercatorUtils.js";import f from"../../layers/GraphicsLayer.js";import P from"../../layers/ImageryTileLayer.js";import{searchImages as C}from"../../layers/orientedImagery/queries.js";import{calculateSuitabilities as I}from"../../layers/orientedImagery/core/bestImageUtils.js";import{createCoveragePolygon as w,computePolygonForInspection as b,resizePolygon as F,checkIfPolygonContainsSelectedPoint as M}from"../../layers/orientedImagery/core/coverageUtils.js";import{updateElevation as S,transformPoints as x}from"../../layers/orientedImagery/transformations/groundToImageUtils.js";import{transformPoints as V}from"../../layers/orientedImagery/transformations/imageToGroundUtils.js";import j from"../../layers/support/RasterFunction.js";import{convolutionKernel as A}from"../../layers/support/rasterFunctionConstants.js";import O from"../../layers/support/rasterDatasets/RasterFactory.js";import G from"../../rest/support/AttachmentQuery.js";import D from"../../views/MapView.js";import{getResolutionToScaleFactor as R}from"../../views/2d/viewpointUtils.js";import{projectWithEngineOrService as L}from"../../views/support/projectionUtils.js";import{sectorsInOrder as E,sectorsRadii as U}from"./constants.js";import{activePolygonSymbol as T,polygonSymbol as N,activeSourcePointSymbol as k,sourcePointSymbol as H,crossSymbol as J,diamondSymbol as z}from"./symbols.js";import{isTifOrMrf as $,isSceneView as q,isGraphic as B}from"./utils.js";import W from"../../geometry/Polygon.js";import Z from"../../geometry/SpatialReference.js";import Q from"../../geometry/Point.js";const K={click:"view-click",view:"view",viewLayers:"view-layers",mapLayers:"map-layers",layerViews:"layer-views",layerListMode:"layer-list-mode",children:"children",registerLayerSelection:"register-layer-selection",plotPointOnGround:"plot-point-on-ground"},X=e=>/^https?:/i.test(e),Y=e=>"FA"===e;let ee=class extends s.EventedAccessor{constructor(e){super(e),this.activeLayer=null,this.shouldShowSelectedImage=!1,this.coverageFrustums=new i,this.coveragePolygons=new i,this.currentCoverageVisible=!0,this.disabled=!1,this.displayMessage=null,this.pointSources=new i,this.previousFeatureAngle=0,this.selectedFeature=null,this.selectedFeatureAngle=0,this.selectedPoint=null,this.features=new i,this.isAdditionalCoverageVisible=!1,this.isAdditionalPointSourcesVisible=!1,this.localPort=null,this.mapImageConversionToolState=!1,this.navigatorSelectedFeature=null,this._additionalCoveragePolygons=new i,this._additionalFeatureGraphics=new i,this._currentCoveragePolygon=null,this._currentImage=null,this._fetchFeaturesController=null,this._imageViewer=null,this._initialCurrentCoveragePolygon=null,this._initialCurrentCoverageUpdate=!0,this._overlays=null,this._plotPolygons=!1,this._initialPreviousCoveragePolygon=null,this._referencePointOnGround=null,this._referencePointOnImage=null,this._sectorData=null,this._crossSymbol=null,this._panConstraint=null,this._scaleConstraint=null,this._suitabilities=null,this._transformController=new AbortController,this._updateCoverageController=null,this.handleSectorClick=this.handleSectorClick.bind(this),this.loadViewer=this.loadViewer.bind(this),this.searchBestImage=this.searchBestImage.bind(this),this.transformAndPlotReferencePointOnImage=this.transformAndPlotReferencePointOnImage.bind(this)}initialize(){h((()=>this.view?.ready)).then((()=>{this._overlays=new f({listMode:"hide"}),this.view.map.layers.add(this._overlays)})),this.addHandles([c((()=>this.view),"click",(e=>{if(this.view.ready&&!this.disabled&&this.active&&(e.stopPropagation(),e.preventDefault(),"mouse"!==e.pointerType||0===e.button))if(this.mapImageConversionToolState)this.plotReferencePoint(e),this.transformAndPlotReferencePointOnImage({feature:this.selectedFeature,selectedLocation:e.mapPoint,options:{signal:this._transformController?.signal}});else{const{mapPoint:t}=e;this.displayMessage=null,this.selectedPoint=t.spatialReference.isGeographic?v(t):t.clone(),this.features.removeAll(),this.selectedFeature=null,this._fetchFeaturesWithController(e)}})),u((()=>this.view?.map?.allLayers?.length),(e=>{e&&this._overlays&&this.view.map.layers.reorder(this._overlays,e-1)}),{initial:!0})],K.view)}destroy(){this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures(),this.coverageFrustums.destroy(),this.coveragePolygons.destroy(),this.pointSources.destroy(),this._additionalCoveragePolygons.destroy(),this._additionalFeatureGraphics.destroy(),this._currentImage=l(this._currentImage),this._imageViewer=l(this._imageViewer),this._initialCurrentCoveragePolygon=l(this._initialCurrentCoveragePolygon),this._currentCoveragePolygon=l(this._currentCoveragePolygon),this._crossSymbol=l(this._crossSymbol),this._referencePointOnGround=l(this._referencePointOnGround),this._referencePointOnImage=l(this._referencePointOnImage),this._overlays&&this.view?.map.remove(this._overlays),this._overlays=l(this._overlays)}get active(){return!0===this.view?.map?.allLayers.some((e=>"oriented-imagery"===e.type&&e.loaded))}get brightness(){return this._get("brightness")??0}set brightness(e){this._set("brightness",n(e,-10,10))}get contrast(){return this._get("contrast")??0}set contrast(e){this._set("contrast",n(e,-10,10))}get currentImageView(){return this._imageViewer?.allLayerViews.find((e=>e.layer===this._currentImage))}get featureCount(){return this.features?.length??0}get imageGalleryEnabled(){return $(this.selectedFeature?.attributes.imagePath.trim())}get imageLoaded(){return this._currentImage?.loaded??!1}get updating(){return"loading"===this._currentImage?.loadStatus||!!this._fetchFeaturesController}get sharpness(){return this._get("sharpness")??0}set sharpness(e){this._set("sharpness",n(e,0,1))}get sectorData(){const{_sectorData:e}=this;if(e)return E.map((t=>e[t]))}get state(){const{active:e,activeLayer:t}=this;return e||t?this._currentImage?.loadStatus?`image-${this._currentImage.loadStatus}`:"ready":"disabled"}get thumbnails(){const{features:e}=this;return e?new i(e.map((({attributes:{imagePath:e,objectId:t}})=>{const r=e.trim();return $(r)?{url:r,objectId:t}:null})).filter(r)):null}set view(e){this._set("view",e)}getCurrentCoveragePolygon(){return this._currentCoveragePolygon}getSelectedFeature(){return this.selectedFeature}getSelectedFeaturePolygon(){return this._initialCurrentCoveragePolygon}handleSectorClick(e){if(isNaN(e))return;const t=this._sectorData?.[E[e]];t?.length&&this._updateSelectedFeature(t.at(0))}handleFeatureClick(e){const{sector:t,featureIndexInSector:r}=e;if(isNaN(r))return;const i=this._sectorData?.[t];i?.length&&this._updateSelectedFeature(i.at(r))}loadViewer(e){const t=new Map,r={wkid:0};this._imageViewer=new D({container:e,map:t,spatialReferance:r,constraints:{snapToZoom:!1,rotationEnabled:!1},ui:{components:["zoom"]}}),h((()=>!0===this._imageViewer?.stationary)).then((()=>{this.setMessage("onLoadMessage","info")})),this._imageViewer.addHandles([this._imageViewer.on("click",(async e=>{if(0===e.button&&this._currentImage&&this.mapImageConversionToolState&&this._currentImage&&this._currentImage.fullExtent){const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{x:o,y:a}=e.mapPoint;if(t>o||r<o||s<a||i>a)return;this.plotReferencePointOnImage(e.mapPoint);const n=this.getSelectedFeature();if(n){const t=(await V([e.mapPoint.toJSON()],{feature:n,currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:this._transformController?.signal}}))[0];t&&this.plotReferencePointOnGround(t)}}})),u((()=>[this._imageViewer?.viewpoint,this._initialCurrentCoveragePolygon]),((e,t)=>{this._initialPreviousCoveragePolygon=t?.[1],this._imageViewer?.viewpoint&&this._initialCurrentCoveragePolygon&&(this._cancelCurrentCoverageUpdate(),this.updateCoverage())})),u((()=>this.selectedFeatureAngle),((e,t)=>{this.previousFeatureAngle=t??0}),g),u((()=>this.selectedFeature),(async()=>{const{selectedFeature:e,selectedPoint:t}=this;if(!e&&this._currentImage&&(this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage=l(this._currentImage)),e&&t){this._initialCurrentCoverageUpdate=!0,this._updatePointsAndPolygons(),this._fetchFeaturesController??=new AbortController;const{signal:t}=this._fetchFeaturesController;await this.loadImage(e,{signal:t}).finally((()=>{this._fetchFeaturesController=null}))}}))])}resetImage(){this._currentImage=l(this._currentImage),this.setMessage("onLoadMessage","info"),this._cancelCurrentCoverageUpdate(),this._cancelFetchingFeatures()}async searchBestImage(e,t){try{const r=await C(e,t);r&&await this._processFeatureResponse(r,{signal:t?.signal})}catch(r){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while finding best image",r)}}setAdditionalCameraLocationsVisibility(e){this._additionalFeatureGraphics.forEach((t=>{t.visible=e}))}setAdditionalCoverageVisibility(e){this._additionalCoveragePolygons.forEach((t=>{t.visible=e}))}setCurrentCoverageVisibility(e){this._currentCoveragePolygon&&(this._currentCoveragePolygon.visible=e),this._selectedFeatureGraphic&&(this._selectedFeatureGraphic.visible=e)}setMapImageConversionToolState(e){this.mapImageConversionToolState=e}_cancelFetchingFeatures(e){const t=this._fetchFeaturesController;t&&t.abort(e),this._fetchFeaturesController=null}_cancelCurrentCoverageUpdate(){const e=this._updateCoverageController;e&&e.abort("Multiple Coverage Updates: Aborting Current Coverage Update to sync image and coverage"),this._updateCoverageController=null}async _fetchFeatures(e,t){const{screenPoint:r}=e,i=this.activeLayer;if(i){const e={include:i},s=await this.view.hitTest(r,e);this._processHitTestResults(i,s,t)}}async _fetchFeaturesWithController(e){this._cancelFetchingFeatures();const t=new AbortController,{signal:r}=t;this._fetchFeaturesController=t;try{await this._fetchFeatures(e,{signal:r}).finally((()=>{this._fetchFeaturesController=null}))}catch(i){const e=a.getLogger(this);this.setMessage("imageLoadError","error"),e.error("error occurred while fetching features",i)}}_groupFeaturesBySectors(){const{_suitabilities:e,features:t}=this;if(!e||!t)return void(this._sectorData=null);this._sectorData={};for(const a of E)this._sectorData[a]=new i;const r=e.map(((e,t)=>({...e,featureIndex:t})));r.sort(((e,t)=>e.trueSuitability-t.trueSuitability));const s=r.map((({distance:e})=>e)),o=Math.max(...s);r.forEach((e=>{const{distance:r,angle:i,featureIndex:s}=e;let a="FAR";const n=r/o*U[2];n<=U[0]?a="NEAR":n<=U[1]&&(a="");let l="NORTH";if(Math.abs(i)>=135?l="WEST":i<-45&&i>-135?l="SOUTH":i<=45&&(l="EAST"),!this._sectorData)return;const h=U[3]+n*Math.sin(i*Math.PI/180),c=U[3]+n*Math.cos(i*Math.PI/180);let u;const g=t.at(s),m=g===this.selectedFeature,d=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;if(m&&d)u=-90;else{const e=h-U[3],t=c-U[3],r=t/Math.sqrt(e**2+t**2);let i=180*Math.acos(r)/Math.PI;(e<0&&t<0||e<0&&t>0)&&(i*=-1),u=i}const p=""===a?l:`${a}_${l}`;m&&(u===this.selectedFeatureAngle?this.previousFeatureAngle=u:this.selectedFeatureAngle=u,this.navigatorSelectedFeature=d?null:{x:h,y:c,direction:l});const y=this._sectorData[p];y.add({angle:i,featureIndex:s,x:h,y:c,objectID:g.attributes.objectId,sector:p,featureIndexInSector:y.length})}))}async _processFeatureResponse(e,t){const{selectedPoint:r}=this;if(!r)return;if(!e)return;const i=e;if(!i)return;const{features:s}=i;if(!s.length)return this.setMessage("noImageError","error"),void(this.selectedFeature=null);const a=new Array;this.coveragePolygons.removeAll(),this.coverageFrustums.removeAll(),this.pointSources.removeAll(),s.forEach((e=>{let t;const{polygon:i,frustum:s}=w(e);if(t=i,e.attributes.isInspection&&(t=b(e.attributes)),e.layer.coveragePercent&&(t=F(t,e.layer.coveragePercent)),M(t,r)){a.push(e);const r=t.toJSON(),i=s?.toJSON(),{attributes:n}=e,{cameraHeight:l,cameraHeading:h,location:c,objectId:u}=n,g=o(c)?c.toJSON():c;r.imageID=g.imageID=u,i&&(i.imageID=u),g.z=l,this.pointSources?.push(g),this.coveragePolygons?.push(h>0?r:void 0),this.coverageFrustums?.push(h>0?i:void 0)}}));const n=this.coveragePolygons?.getItemAt(0);if(!a.length)return void this.setMessage("noImageError","error");if(a[0].attributes.elevationSource&&!r.z&&n){const e=await S([r],{feature:a[0],currentCoveragePolygon:new W(n),options:t});if(e[0]){const t=e[0];r.elevation=t.z}}this._suitabilities=I({features:a,selectedPoint:r,camera:q(this.view)?this.view.camera:null,currentImage:this.selectedFeature}),this._suitabilities?.sort(((e,t)=>e.suitability-t.suitability));const l=this._suitabilities?.map((e=>e.feature)),h=l[0];this._updateFeatures(l),this.selectedFeature=h,this._groupFeaturesBySectors(),this._initialCurrentCoverageUpdate=!0,this._plotPolygons=!0}async _processHitTestResults(e,t,r){const{screenPoint:i,results:s}=t,o=this.view.toMap(i),a=s[0],n={layerInstanceOrURL:e,point:o,queryParams:{maximumDistance:e.maximumDistance,objectIds:this.shouldShowSelectedImage?[a.graphic.attributes.id]:void 0},queryFeatures:null};await this.searchBestImage(n,r)}_updateFeatures(e){e.length&&(this.features.removeAll(),this.features.addMany(e))}_updatePointsAndPolygons(){const{coveragePolygons:e,pointSources:r,selectedFeature:i,currentCoverageVisible:s,isAdditionalCoverageVisible:o,isAdditionalPointSourcesVisible:a}=this;if(e&&r&&i){this._additionalCoveragePolygons.removeAll(),this._additionalFeatureGraphics.removeAll(),this._currentCoveragePolygon&&(this._currentCoveragePolygon.destroy(),this._currentCoveragePolygon=null,this._initialCurrentCoveragePolygon=null);for(const r of e)r?.imageID===i?.attributes.objectId?this._initialCurrentCoveragePolygon=new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:T,visible:!1}):this._additionalCoveragePolygons.push(new t({attributes:{imageID:r?.imageID},geometry:{type:"polygon",...r},symbol:N,visible:o}));for(const e of r)e.imageID===i?.attributes.objectId?this._selectedFeatureGraphic=new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:k,visible:s}):this._additionalFeatureGraphics?.push(new t({attributes:{imageID:e.imageID},geometry:{type:"point",...e},symbol:H,visible:a}))}}_updateSelectedFeature(e){if(!e)return;this.selectedFeature=this.features?.at(e.featureIndex);const t=this.selectedFeature?.attributes.cameraPitch&&this.selectedFeature?.attributes.cameraPitch<5;let r;if(t)r=-90;else{const t=e.x-U[3],i=e.y-U[3],s=i/Math.sqrt(t**2+i**2);let o=180*Math.acos(s)/Math.PI;(t<0&&i<0||t<0&&i>0)&&(o*=-1),r=o}r===this.selectedFeatureAngle?this.previousFeatureAngle=r:this.selectedFeatureAngle=r,this.navigatorSelectedFeature=t?null:{x:e.x,y:e.y,direction:e.sector.includes("_")?e.sector.split("_")[1]:e.sector}}plotReferencePoint(e){"mapPoint"in e?this.plotReferencePointOnGround(e.mapPoint):this.plotReferencePointOnGround(e)}updateCurrentCoveragePolygon(e){if(this._initialCurrentCoverageUpdate)if(this._overlays?.removeAll(),this._initialCurrentCoverageUpdate=!1,e&&(this._currentCoveragePolygon&&this._currentCoveragePolygon.destroy(),e.visible=this.currentCoverageVisible,this._currentCoveragePolygon=e),this.view){const e=this.selectedPoint?new t({geometry:this.selectedPoint.clone(),symbol:J,attributes:{imageID:this.selectedFeature?.attributes.objectId}}):null;this._overlays?.graphics.addMany([...this._additionalCoveragePolygons,...this._additionalFeatureGraphics,this._currentCoveragePolygon,this._selectedFeatureGraphic,e].filter(B))}else if(this._plotPolygons){this._plotPolygons=!1;const e={points:this.pointSources?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),frustums:this.coverageFrustums?.filter((e=>e?.imageID!==this.selectedFeature?.attributes.objectId)),polygons:this._additionalCoveragePolygons?.map((e=>e.geometry?.toJSON())),currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),currentPolygon:this._currentCoveragePolygon,currentFrustum:this.coverageFrustums?.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId))};this.emit("plot-polygons",{data:e})}else{const e={currentPoint:this.pointSources.find((e=>e?.imageID===this.selectedFeature?.attributes.objectId)),additionalPoint:this.pointSources.find((e=>e?.imageID===this._initialPreviousCoveragePolygon?.attributes.imageID)),currentPolygon:this._currentCoveragePolygon,additionalPolygon:this._initialPreviousCoveragePolygon};this.emit("update-selected-feature",{data:e})}else if(this.view){const t=this._currentCoveragePolygon&&this._overlays?this._overlays.graphics.indexOf(this._currentCoveragePolygon):-1;e&&(this._currentCoveragePolygon&&(this._overlays?.remove(this._currentCoveragePolygon),this._currentCoveragePolygon.destroy()),e.visible=this.currentCoverageVisible,this._currentCoveragePolygon=e,this._overlays?.graphics.add(this._currentCoveragePolygon,t>=0?t:void 0))}else e&&(this._currentCoveragePolygon=e,this.emit("update-current-coverage",{graphic:e.toJSON()}))}async loadImage(e,t){if(!this._imageViewer)return;if(this._imageViewer.graphics.removeAll(),this._currentImage&&this._imageViewer?.map.layers.includes(this._currentImage)&&(this._currentImage?.removeHandles("image-handles"),this._imageViewer?.map.layers.remove(this._currentImage),this._currentImage?.destroy(),this._currentImage=null),!e)return void this.setMessage("noImageError","error");const{horizontalFieldOfView:r,isSpherical:i}=e.attributes;if(360===r||i)return void this.setMessage("unsupportedPanaromicImageryError","error");let s,o,n=e.attributes.imagePath;if(!X(n)&&!Y(n)){if(!this.localPort)return this.setMessage("noLocalPort","error"),void a.getLogger(this).error("oriented-imagery-viewer:missing-local-port","A value for local port is not set. Local port is needed to load local images.");n=`http://127.0.0.1:${this.localPort}/${n}`}this._referencePointOnGround&&(this._imageViewer?.graphics.remove(this._referencePointOnGround),this._referencePointOnGround.destroy());const l={skipExtensions:["aux.xml","jgw"]};if(Y(n)){const r=new G({objectIds:[e.attributes.objectId]}),i=(await e.layer.queryAttachments(r,t))[`${e.attributes.objectId}`];if(!i[0]?.url)return void this.setMessage("noAttachment","error");if(s=i[0].contentType.split("/")[1]?.toUpperCase(),n=i[0]?.url,o=await O.open({ioConfig:l,url:n,datasetFormat:s,...t}).catch((e=>(this.setMessage("imageLoadError","error",e.message),null))),!o)return}this._currentImage=new P({ioConfig:l,url:n,raster:o,options:t}),this._imageViewer.map.layers.add(this._currentImage);try{const r=await this._currentImage.when();this._imageViewer.extent=r.fullExtent,r.raster.rasterInfo.isPseudoSpatialReference&&(this._imageViewer.rotation=(e.attributes.cameraRoll??0)+(e.attributes.imageRotation??0)),this._panConstraint&&this._imageViewer.constraints.customConstraints.remove(this._panConstraint),this._scaleConstraint&&this._imageViewer.constraints.customConstraints.remove(this._scaleConstraint),this._panConstraint={constrain:(e,t)=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:r,xmax:i,ymin:s,ymax:o}=this._currentImage.fullExtent,{extent:a,rotation:n}=this._imageViewer,l=n*Math.PI/180,h=Math.abs(Math.cos(l)*a.width+Math.sin(l)*a.height),c=Math.abs(Math.cos(l)*a.height+Math.sin(l)*a.width),{rasterInfo:u}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(r+Math.min(u.width,h)/2,e.targetGeometry.x),i-Math.min(u.width,h)/2),e.targetGeometry.y=Math.min(Math.max(s+Math.min(u.height,c)/2,e.targetGeometry.y),o-Math.min(u.height,c)/2),e},applyPanConstraint:e=>{if(!this._currentImage||!this._imageViewer||!e.targetGeometry)return e;const{xmin:t,xmax:r,ymin:i,ymax:s}=this._currentImage.fullExtent,{extent:o,rotation:a}=this._imageViewer,n=a*Math.PI/180,l=Math.abs(Math.cos(n)*o.width+Math.sin(n)*o.height),h=Math.abs(Math.cos(n)*o.height+Math.sin(n)*o.width),{rasterInfo:c}=this._currentImage;return e.targetGeometry.x=Math.min(Math.max(t+Math.min(c.width,l)/2,e.targetGeometry.x),r-Math.min(c.width,l)/2),e.targetGeometry.y=Math.min(Math.max(i+Math.min(c.height,h)/2,e.targetGeometry.y),s-Math.min(c.height,h)/2),e}},this._scaleConstraint={constrain:(e,t)=>{if(this._imageViewer&&this._currentImage){const{width:t,height:r}=this._currentImage.rasterInfo,{width:i,height:s,rotation:o,zoom:a}=this._imageViewer,n=o*Math.PI/180,l=Math.abs(Math.cos(n)*t+Math.sin(n)*r),h=Math.abs(Math.cos(n)*r+Math.sin(n)*t);a<1&&(e.scale=Math.max(e.scale,R(this._imageViewer.spatialReference)*Math.max(l/i,h/s)/2**a))}return e}},this._imageViewer.constraints.customConstraints.addMany([this._panConstraint,this._scaleConstraint]),r.addHandles(u((()=>[this.brightness,this.contrast,this.sharpness]),(([e,t,i])=>{r.loaded&&(r.effect=`contrast(${10*(t+10)}%) brightness(${10*(e+10)}%)`,this.sharpenImage(r,i))}),g)),await this.transformAndPlotSelectedLocation(t)}catch(h){a.getLogger(this).error("oriented-imagery-viewer:load-image",h),this.setMessage("imageLoadError","error",h.message)}}sharpenImage(e,t){const r=[0,-1*t,0,-1*t,5,-1*t,0,-1*t,0],i=new j({functionName:"Convolution",functionArguments:{type:A.userDefined,cols:3,rows:3,kernel:r,convolutionType:A.userDefined}});e.renderer=null,e.rasterFunction=i}async transformAndPlotSelectedLocation(e){const{_currentImage:r,selectedFeature:i,selectedPoint:s}=this;if(!s||!i||!r?.loaded)return;const{pixelSize:o}=r.rasterInfo,a=await x([s],{feature:i,imageProperties:r.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:e});if(!a.length)return;const n=a[0];if(!n)return;const l=p(_,await L(r.fullExtent,p(Z,this._imageViewer?.spatialReference),null,e?.signal));n.x=n.x*o.x+l.xmin,n.y=l.ymax-n.y*o.y,n.spatialReference=l.spatialReference,this._crossSymbol&&(this._imageViewer?.graphics.remove(this._crossSymbol),this._crossSymbol.destroy()),this._crossSymbol=new t({geometry:Q.fromJSON(n),symbol:J}),this._imageViewer?.graphics.add(this._crossSymbol)}async transformAndPlotReferencePointOnImage(e){if(!this._imageViewer)return;const t=this._currentImage;if(!t)return;const{feature:r,selectedLocation:i,options:s}=e,{pixelSize:o,isPseudoSpatialReference:a,transform:n}=t.rasterInfo,l=await x([i],{feature:r,imageProperties:t.rasterInfo,currentCoveragePolygon:this.getSelectedFeaturePolygon(),options:s});if(!l.length)return;let h=l[0];const c=await L(t.fullExtent,this._imageViewer.spatialReference,null,s?.signal);a?(h.x=h.x*o.x+c.xmin,h.y=c.ymax-h.y*o.y,h.spatialReference=c.spatialReference):h=n.forwardTransform(new Q(h)),this.plotReferencePointOnImage(h)}plotReferencePointOnGround(e){this._referencePointOnGround&&(this._overlays?.remove(this._referencePointOnGround),this._referencePointOnGround.destroy()),this._referencePointOnGround=new t({geometry:{type:"point",...e.toJSON()},symbol:z}),this.view?this._overlays?.add(this._referencePointOnGround):this.emit("plot-ground-point",{data:{point:this._referencePointOnGround?.geometry}})}plotReferencePointOnImage(e){this._imageViewer&&(this._referencePointOnImage&&(this._imageViewer.graphics.remove(this._referencePointOnImage),this._referencePointOnImage.destroy()),this._referencePointOnImage=new t({geometry:{type:"point",...o(e)?e.toJSON():e},symbol:z}),this._imageViewer.graphics.add(this._referencePointOnImage))}setMessage(e,t,r){this.displayMessage={key:e,type:t,data:r}}async updateCoverage(){const e=new AbortController,{signal:r}=e;this._updateCoverageController=e;const{_imageViewer:i}=this;if(this._currentImage?.loaded&&i){const{width:e,height:s}=this._currentImage.rasterInfo,{xmin:o,xmax:a,ymin:n,ymax:l}=this._currentImage.fullExtent,h=[[0,0],[Math.min(i.width,e),0],[Math.min(i.width,e),Math.min(i.height,s)],[0,Math.min(i.height,s)]].map((e=>i.toMap(m(e[0],e[1]))));h.forEach((e=>{e.x=o<=e.x&&e.x<=a?e.x:Math.abs(o-e.x)>Math.abs(a-e.x)?a:o,e.y=n<=e.y&&e.y<=l?e.y:Math.abs(n-e.y)>Math.abs(l-e.y)?l:n}));const c=await V(h,{feature:this.getSelectedFeature(),currentCoveragePolygon:this.getSelectedFeaturePolygon(),imageProperties:this._currentImage.rasterInfo,options:{signal:r}});if(c&&!r.aborted){const e=[c.map((e=>[e.x,e.y,1]))];e[0].push(e[0][0]);const r=new W({hasZ:!0,rings:e,spatialReference:c[0].spatialReference});this.updateCurrentCoveragePolygon(new t({attributes:{imageID:this.selectedFeature?.attributes.objectId},geometry:r,symbol:T,visible:this.currentCoverageVisible}))}}}};e([d()],ee.prototype,"active",null),e([d()],ee.prototype,"activeLayer",void 0),e([d()],ee.prototype,"shouldShowSelectedImage",void 0),e([d({type:Number})],ee.prototype,"brightness",null),e([d({type:Number})],ee.prototype,"contrast",null),e([d()],ee.prototype,"coverageFrustums",void 0),e([d()],ee.prototype,"coveragePolygons",void 0),e([d()],ee.prototype,"currentCoverageVisible",void 0),e([d()],ee.prototype,"currentImageView",null),e([d()],ee.prototype,"disabled",void 0),e([d()],ee.prototype,"displayMessage",void 0),e([d()],ee.prototype,"pointSources",void 0),e([d()],ee.prototype,"previousFeatureAngle",void 0),e([d()],ee.prototype,"selectedFeature",void 0),e([d()],ee.prototype,"selectedFeatureAngle",void 0),e([d()],ee.prototype,"selectedPoint",void 0),e([d({readOnly:!0})],ee.prototype,"featureCount",null),e([d()],ee.prototype,"features",void 0),e([d()],ee.prototype,"imageGalleryEnabled",null),e([d()],ee.prototype,"imageLoaded",null),e([d()],ee.prototype,"isAdditionalCoverageVisible",void 0),e([d()],ee.prototype,"isAdditionalPointSourcesVisible",void 0),e([d({type:Number})],ee.prototype,"localPort",void 0),e([d()],ee.prototype,"mapImageConversionToolState",void 0),e([d()],ee.prototype,"navigatorSelectedFeature",void 0),e([d()],ee.prototype,"updating",null),e([d({type:Number})],ee.prototype,"sharpness",null),e([d()],ee.prototype,"sectorData",null),e([d()],ee.prototype,"state",null),e([d()],ee.prototype,"thumbnails",null),e([d()],ee.prototype,"view",null),e([d()],ee.prototype,"_additionalCoveragePolygons",void 0),e([d()],ee.prototype,"_additionalFeatureGraphics",void 0),e([d()],ee.prototype,"_currentCoveragePolygon",void 0),e([d()],ee.prototype,"_currentImage",void 0),e([d()],ee.prototype,"_fetchFeaturesController",void 0),e([d()],ee.prototype,"_imageViewer",void 0),e([d()],ee.prototype,"_initialCurrentCoveragePolygon",void 0),e([d()],ee.prototype,"_initialCurrentCoverageUpdate",void 0),e([d()],ee.prototype,"_overlays",void 0),e([d()],ee.prototype,"_plotPolygons",void 0),e([d()],ee.prototype,"_initialPreviousCoveragePolygon",void 0),e([d()],ee.prototype,"_referencePointOnGround",void 0),e([d()],ee.prototype,"_referencePointOnImage",void 0),e([d()],ee.prototype,"_selectedFeatureGraphic",void 0),e([d()],ee.prototype,"_sectorData",void 0),ee=e([y("esri.widgets.OrientedImageryViewer.OrientedImageryViewerViewModel")],ee);const te=ee;export{te as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{prefersReducedMotion as t}from"../core/a11yUtils.js";import i from"../core/Logger.js";import{watch as s,initial as a}from"../core/reactiveUtils.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import{cast as r}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import l from"../layers/support/rasterDatasets/RasterFactory.js";import c from"./Widget.js";import{getAllArcPath as d}from"./OrientedImageryViewer/arcUtils.js";import{defaultVisibleElements as h,css as g,navigationToolRotationFrom as m,navigationToolRotationTo as v,base as p,root as u,segmentArcs as b,sectorsRadii as y,featureCircleRadius as _,navigation as C,navigationToolDimensionLength as w}from"./OrientedImageryViewer/constants.js";import I from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import{loadCalciteComponents as T}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{tsx as M}from"./support/jsxFactory.js";let A=class extends c{constructor(e,t){super(e,t),this.isDocked=!1,this.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.navigationToolActive=!1,this.viewModel=new I,this.messagesCommon=null,this.visibleElements={...h},this._navigationTool=null,this._actionItems=new Map,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this._renderViewerContainer=this._renderViewerContainer.bind(this),this._renderViewer=this._renderViewer.bind(this)}initialize(){this.addHandles([s((()=>[this.viewModel?.selectedFeatureAngle,this._navigationTool]),(([e,t])=>{!this.viewModel.updating&&t&&this._updateNavigationTool(t)}),a),s((()=>this.currentCoverageVisible),(e=>this._onCurrentCoverageVisibilityChange(e))),s((()=>this.isAdditionalCoverageVisible),(e=>this._onAdditionalCoverageVisibilityChange(e))),s((()=>this.isAdditionalPointSourcesVisible),(e=>this._onAdditionalCameraLocationsVisibility(e)))])}loadDependencies(){return T({tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js"),action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect()}get activeLayer(){return this.viewModel.activeLayer}set activeLayer(e){this.viewModel.activeLayer=e}get currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...h,...e}}async _getThumbnailPixelBlockInternal(e,t){const{level:s,offset:a,size:o}=this._getMaxLevelRasterParameters(e);try{const{pixelBlock:i}=await e.fetchRawPixels(s,a,o,t);return i}catch(r){i.getLogger(this).warn("failed to create canvas with pixeldata",r)}return null}_getMaxLevelRasterParameters(e){const{storageInfo:t,width:i,height:s}=e.rasterInfo,{maximumPyramidLevel:a,pyramidScalingFactor:o}=t,r=o??2;return{level:a,offset:{x:0,y:0},size:{width:Math.ceil(i/r**a),height:Math.ceil(s/r**a)}}}async _getThumbnailPixelBlock(e){const{signal:t}=this._galleryController;try{const i=await l.open({url:e,signal:t});return i?await this._getThumbnailPixelBlockInternal(i,{signal:t}):null}catch(s){i.getLogger(this).error("failed to create thumbnail",s)}return null}_handleBrightnessChange(e){this.viewModel.brightness=e.target.value??0}_handleContrastChange(e){this.viewModel.contrast=e.target.value??0}_handleSharpnessChange(e){this.viewModel.sharpness=e.target.value??0}_lazyLoadImage(e,t){e.forEach((async e=>{if(e.isIntersecting){const i=e.target,s=i.getAttribute("data-src");if(!s)return;const a=await this._getThumbnailPixelBlock(s);if(!a)return;i.width=a.width,i.height=a.height;const o=i.getContext("2d");if(!o)return;const r=o.createImageData(i.width,i.height);r.data.set(a.getAsRGBA()),o.putImageData(r,0,0),t.unobserve(i)}}))}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.selectedFeature?.attributes.objectId!==Number(i)&&(this.viewModel.selectedFeature=this.viewModel.features?.find((({attributes:e})=>e.objectId===Number(i))))}_onAdditionalCoverageVisibilityChange(e){this.viewModel.setAdditionalCoverageVisibility(e)}_onAdditionalCameraLocationsVisibility(e){this.viewModel.setAdditionalCameraLocationsVisibility(e)}_onCurrentCoverageVisibilityChange(e){this.viewModel.setCurrentCoverageVisibility(e)}_registerGalleryItem(e){this._galleryObserver.observe(e)}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_resizeNavigationTool(){this._navigationTool?.parentElement?.classList.toggle(g.navigationZoomed)}_storeActionElement(e){this._actionItems.set(e.text,e)}_storeNavigationToolReference(e){this._navigationTool=e}_toggleAdditionalCameraLocations(){this.isAdditionalPointSourcesVisible=!this.isAdditionalPointSourcesVisible}_toggleAdditionalCoverage(){this.isAdditionalCoverageVisible=!this.isAdditionalCoverageVisible}_toggleCurrentCoverage(){this.currentCoverageVisible=!this.currentCoverageVisible}_toggleImageEnhancementToolState(){this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.imageEnhancementToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleImageGallery(){this.galleryOpened=!!this.imageGalleryEnabled&&!this.galleryOpened,this.galleryOpened&&(this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleNavigationTool(){this.navigationToolActive=!this.navigationToolActive,this.navigationToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1))}_toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}_updateNavigationTool(e){const{previousFeatureAngle:t,selectedFeatureAngle:i}=this.viewModel,s=(i-t+540)%360-180;e.style.setProperty(m,`${t}deg`),e.style.setProperty(v,`${t+s}deg`)}resetImage(){this.viewModel.resetImage()}render(){const{isDocked:e,viewModel:{updating:t}}=this;return M("div",{class:this.classes(p,u)},M("calcite-panel",{bind:this,class:e?g.dock:g.float,heading:this.visibleElements.title?this.messages.title:void 0,loading:t},this.visibleElements.coverageMenu&&this._renderMenuBarContainer(),this._renderBody()))}_renderActionTooltips(){return[...this._actionItems].map((([e,t])=>M("calcite-tooltip",{key:e,referenceElement:t},M("span",null,e))))}_renderBody(){return M("div",{class:g.body},this._renderViewerContainer(),this._renderImageGallery(),this._renderImageEnhancementTools(),this._renderNavigation())}_renderImageEnhancementTools(){const{imageEnhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:s}}=this;return e&&M("calcite-panel",{bind:this,class:g.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleImageEnhancementToolState},M("div",{class:g.imageEnhancementTools},M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.brightness,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleBrightnessChange,ticks:5,value:t}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.contrast,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,onCalciteSliderInput:this._handleContrastChange,ticks:5,value:i}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.sharpness,M("calcite-slider",{bind:this,labelTicks:!0,max:1,min:0,onCalciteSliderInput:this._handleSharpnessChange,step:.1,ticks:.5,value:s})))),M("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset}))}_renderImageGallery(){const{container:e,galleryOpened:t,imageGalleryEnabled:i,viewModel:{thumbnails:s}}=this;return i&&t&&(e&&s)?M("calcite-panel",{bind:this,class:g.carousel,closable:!0,closed:!t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},M("div",{class:g.carouselContainer},this._renderThumbnails(s))):null}_renderMapImageConversionTool(){const{mapImageConversionToolState:e,viewModel:{state:t}}=this;return M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==t,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool})}_renderNavigation(){const{viewModel:{sectorData:e,features:i,selectedFeature:s,updating:a,navigatorSelectedFeature:o}}=this;if(!i.length||!this.container||!s)return null;let r,n,l,c,h;if(o){const{x:e,y:t,direction:i}=o,[s,a,d,g]=b[i];r=`M ${e} ${t} L ${s} ${a} A ${y[2]} ${y[2]} 0 0 1 ${d} ${g} Z`,n=e,c=t,l=b[i][4],h=b[i][5]}const m=e=>{const t=e.target.dataset?.sector;t&&this.viewModel.handleSectorClick(+t)},v=e=>{const t=e.target.dataset;if(!t)return;const{featureIndexInSector:i,sector:s}=t;i&&s&&this.viewModel.handleFeatureClick({sector:s,featureIndexInSector:+i})},p=e=>{e.removeEventListener("click",v)},u=e?.map((e=>e?.items)).filter(Boolean).flatMap((e=>e?.map((({x:e,y:t,objectID:i,featureIndexInSector:a,sector:o})=>M("circle",{afterRemoved:p,class:this.classes(g.feature,{selected:s.attributes.objectId===i}),"data-featureIndexInSector":a,"data-sector":o,key:`${g.feature}-${i}`,cx:e,cy:t,onclick:v,r:_}))))),I=e=>{e.removeEventListener("click",m)};return this.navigationToolActive&&!a?M("div",{bind:this,class:g.navigationWrapper,key:this.messages.navigationTool},M("svg",{afterCreate:this._storeNavigationToolReference.bind(this),class:t()?C:g.rotateWithAnimation,xmlns:"http://www.w3.org/2000/svg",width:w,height:w,role:"img",focusable:"false"},M("defs",null,M("linearGradient",{id:`${this.id}-coverage-fill`,gradientUnits:"userSpaceOnUse",x1:n,y1:c,x2:l,y2:h},M("stop",{class:g.navigationPathOffset0,offset:0}),M("stop",{class:g.navigationPathOffset1,offset:1}))),M("g",null,M("circle",{class:this.classes(g.sector,g.outerSector),onclick:this._resizeNavigationTool.bind(this),cx:y[3],cy:y[3],r:y[3]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[2]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[1]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[0]}),M("path",{class:g.pointer,d:"M 56.5 6.06217782649107 L 60 0 L 63.5 6.06217782649107 Z",key:`${g.pointer}-west`}),M("path",{class:this.classes(g.pointer,g.north),d:"M 113.93782217350893 56.5 L 120 60 L 113.93782217350893 63.5 Z",key:`${g.pointer}-north`}),M("path",{class:g.pointer,d:"M 56.5 113.93782217350893 L 60 120 L 63.5 113.93782217350893 Z",key:`${g.pointer}-east`}),M("path",{class:g.pointer,d:"M 6.06217782649107 56.5 L 0 60 L 6.06217782649107 63.5 Z",key:`${g.pointer}-south`}),M("path",{class:this.classes(g.sector,g.sectorSeparator),d:"M 23.937554159486076 23.937554159486076 L 96.06244584051393 96.06244584051393 M 23.937554159486076 96.06244584051393 L 96.06244584051393 23.937554159486076",key:g.sectorSeparator}),d([y[2],y[1],y[0]],y[3],y[3]).map(((t,i)=>M("path",{afterRemoved:I,class:this.classes(g.sector,e?.[i]?.length?g.sectorEnabled:g.sectorDisabled),d:t,"data-sector":`${i}`,key:`${g.sector}-${i}`,onclick:m}))),M("path",{class:this.classes(g.sector,g.sectorCross),d:"M 56.4 56.4 L 63.53 63.53 M 63.53 56.4 L 56.4 63.53",key:g.sectorCross}),u,s.attributes.cameraPitch>=5&&r&&M("path",{class:g.selectedFeaturePath,d:r,fill:`url(#${this.id}-coverage-fill)`,key:g.selectedFeaturePath})))):null}_renderNavigationTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.navigationToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"explore",onclick:this._toggleNavigationTool,text:this.messages.navigationTool})}_renderImageEnhancementTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.imageEnhancementToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"sliders-horizontal",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}_renderMenuBarContainer(){const{currentCoverageVisible:e,isAdditionalCoverageVisible:t,isAdditionalPointSourcesVisible:i,imageGalleryEnabled:s}=this;return M("calcite-action-bar",{layout:"horizontal",expandDisabled:!0,slot:"action-bar"},M("calcite-action-group",{expanded:!0},M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,class:g.currentCoverage,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint}),M("calcite-action",{active:t,afterCreate:this._storeActionElement,bind:this,class:g.addCoverage,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints}),M("calcite-action",{active:i,afterCreate:this._storeActionElement,bind:this,class:g.addExpPoints,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations})),M("calcite-action-group",{layout:"horizontal"},this.visibleElements.mapImageConversionTool&&this._renderMapImageConversionTool(),this.visibleElements.navigationTool&&this._renderNavigationTool(),this.visibleElements.imageEnhancement&&this._renderImageEnhancementTool()),M("calcite-action-group",null,M("calcite-action",{active:this.galleryOpened,afterCreate:this._storeActionElement,bind:this,disabled:!s,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,textEnabled:!0})),this._renderActionTooltips())}_renderMessageBox(){const{displayMessage:e}=this.viewModel;return e?M("span",{class:g.messageBox},this.messages[e.key],e?.data):null}_renderThumbnails(e){const{selectedFeature:t}=this.viewModel;return t?M("div",{class:g.carouselContent},e.items.map((({url:e,objectId:i},s)=>M("div",{class:`${g.carouselItemWrapper}${t.attributes.objectId===i?"--selected":""}`,key:`${g.carouselItemWrapper}-${s}`},M("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:g.carouselItem,"data-objectid":`${i}`,"data-src":e,onclick:this._loadImageFromGallery}))))):null}_renderViewerContainer(){return M("div",{class:g.viewerContainer},this._renderViewer(),this._renderMessageBox())}_renderViewer(){const{displayMessage:e}=this.viewModel;return M("div",{afterCreate:this.viewModel.loadViewer,bind:this,class:`${g.viewer}${e?"--hide":""}`})}};e([o()],A.prototype,"activeLayer",null),e([o()],A.prototype,"currentCoverageVisible",null),e([o()],A.prototype,"disabled",null),e([o()],A.prototype,"isDocked",void 0),e([o()],A.prototype,"galleryOpened",void 0),e([o()],A.prototype,"imageEnhancementToolActive",void 0),e([o()],A.prototype,"imageGalleryEnabled",null),e([o()],A.prototype,"isAdditionalCoverageVisible",null),e([o()],A.prototype,"isAdditionalPointSourcesVisible",null),e([o()],A.prototype,"mapImageConversionToolState",null),e([o()],A.prototype,"navigationToolActive",void 0),e([o({type:I})],A.prototype,"viewModel",void 0),e([o(),f("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],A.prototype,"messages",void 0),e([o(),f("esri/t9n/common")],A.prototype,"messagesCommon",void 0),e([o()],A.prototype,"view",null),e([o()],A.prototype,"visibleElements",void 0),e([r("visibleElements")],A.prototype,"castVisibleElements",null),e([o()],A.prototype,"_navigationTool",void 0),A=e([n("esri.widgets.OrientedImageryViewer")],A);const E=A;export{E as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{prefersReducedMotion as t}from"../core/a11yUtils.js";import i from"../core/Logger.js";import{watch as s,initial as a}from"../core/reactiveUtils.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import{cast as r}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import l from"../layers/support/rasterDatasets/RasterFactory.js";import c from"./Widget.js";import{getAllArcPath as d}from"./OrientedImageryViewer/arcUtils.js";import{defaultVisibleElements as h,css as g,navigationToolRotationFrom as m,navigationToolRotationTo as v,base as p,root as u,segmentArcs as b,sectorsRadii as y,featureCircleRadius as _,navigation as C,navigationToolDimensionLength as w}from"./OrientedImageryViewer/constants.js";import I from"./OrientedImageryViewer/OrientedImageryViewerViewModel.js";import{loadCalciteComponents as T}from"./support/componentsUtils.js";import"./support/widgetUtils.js";import{messageBundle as f}from"./support/decorators/messageBundle.js";import{tsx as M}from"./support/jsxFactory.js";let A=class extends c{constructor(e,t){super(e,t),this.isDocked=!1,this.galleryOpened=!1,this.imageEnhancementToolActive=!1,this.navigationToolActive=!1,this.viewModel=new I,this.messagesCommon=null,this.visibleElements={...h},this._navigationTool=null,this._actionItems=new Map,this._galleryController=new AbortController,this._galleryObserver=new IntersectionObserver(this._lazyLoadImage.bind(this)),this._loadImageFromGallery=this._loadImageFromGallery.bind(this),this._registerGalleryItem=this._registerGalleryItem.bind(this),this._unregisterGalleryItem=this._unregisterGalleryItem.bind(this),this._renderViewerContainer=this._renderViewerContainer.bind(this),this._renderViewer=this._renderViewer.bind(this)}initialize(){this.addHandles([s((()=>[this.viewModel?.selectedFeatureAngle,this._navigationTool]),(([e,t])=>{!this.viewModel.updating&&t&&this._updateNavigationTool(t)}),a),s((()=>this.currentCoverageVisible),(e=>this._onCurrentCoverageVisibilityChange(e))),s((()=>this.isAdditionalCoverageVisible),(e=>this._onAdditionalCoverageVisibilityChange(e))),s((()=>this.isAdditionalPointSourcesVisible),(e=>this._onAdditionalCameraLocationsVisibility(e)))])}loadDependencies(){return T({tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js"),action:()=>import("@esri/calcite-components/dist/components/calcite-action.js"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group.js"),"action-bar":()=>import("@esri/calcite-components/dist/components/calcite-action-bar.js"),label:()=>import("@esri/calcite-components/dist/components/calcite-label.js"),panel:()=>import("@esri/calcite-components/dist/components/calcite-panel.js"),slider:()=>import("@esri/calcite-components/dist/components/calcite-slider.js")})}destroy(){this._galleryController.abort(),this._galleryObserver.disconnect()}get activeLayer(){return this.viewModel.activeLayer}set activeLayer(e){this.viewModel.activeLayer=e}get currentCoverageVisible(){return this.viewModel.currentCoverageVisible}set currentCoverageVisible(e){this.viewModel.currentCoverageVisible=e}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get imageGalleryEnabled(){return this.viewModel.imageGalleryEnabled}get isAdditionalCoverageVisible(){return this.viewModel.isAdditionalCoverageVisible}set isAdditionalCoverageVisible(e){this.viewModel.isAdditionalCoverageVisible=e}get isAdditionalPointSourcesVisible(){return this.viewModel.isAdditionalPointSourcesVisible}set isAdditionalPointSourcesVisible(e){this.viewModel.isAdditionalPointSourcesVisible=e}get mapImageConversionToolState(){return this.viewModel.mapImageConversionToolState}set mapImageConversionToolState(e){this.viewModel.mapImageConversionToolState=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...h,...e}}async _getThumbnailPixelBlockInternal(e,t){const{level:s,offset:a,size:o}=this._getMaxLevelRasterParameters(e);try{const{pixelBlock:i}=await e.fetchRawPixels(s,a,o,t);return i}catch(r){i.getLogger(this).warn("failed to create canvas with pixeldata",r)}return null}_getMaxLevelRasterParameters(e){const{storageInfo:t,width:i,height:s}=e.rasterInfo,{maximumPyramidLevel:a,pyramidScalingFactor:o}=t,r=o??2;return{level:a,offset:{x:0,y:0},size:{width:Math.ceil(i/r**a),height:Math.ceil(s/r**a)}}}async _getThumbnailPixelBlock(e){const{signal:t}=this._galleryController;try{const i=await l.open({url:e,signal:t});return i?await this._getThumbnailPixelBlockInternal(i,{signal:t}):null}catch(s){i.getLogger(this).error("failed to create thumbnail",s)}return null}_handleBrightnessChange(e){this.viewModel.brightness=e.target.value??0}_handleContrastChange(e){this.viewModel.contrast=e.target.value??0}_handleSharpnessChange(e){this.viewModel.sharpness=e.target.value??0}_lazyLoadImage(e,t){e.forEach((async e=>{if(e.isIntersecting){const i=e.target,s=i.getAttribute("data-src");if(!s)return;const a=await this._getThumbnailPixelBlock(s);if(!a)return;i.width=a.width,i.height=a.height;const o=i.getContext("2d");if(!o)return;const r=o.createImageData(i.width,i.height);r.data.set(a.getAsRGBA()),o.putImageData(r,0,0),t.unobserve(i)}}))}_loadImageFromGallery(e){const{target:t}=e;if(!t)return;const i=t.getAttribute("data-objectid");i&&this.viewModel.selectedFeature?.attributes.objectId!==Number(i)&&(this.viewModel.selectedFeature=this.viewModel.features?.find((({attributes:e})=>e.objectId===Number(i))))}_onAdditionalCoverageVisibilityChange(e){this.viewModel.setAdditionalCoverageVisibility(e)}_onAdditionalCameraLocationsVisibility(e){this.viewModel.setAdditionalCameraLocationsVisibility(e)}_onCurrentCoverageVisibilityChange(e){this.viewModel.setCurrentCoverageVisibility(e)}_registerGalleryItem(e){this._galleryObserver.observe(e)}_resetImageTools(){this.viewModel.sharpness=this.viewModel.brightness=this.viewModel.contrast=0}_resizeNavigationTool(){this._navigationTool?.parentElement?.classList.toggle(g.navigationZoomed)}_storeActionElement(e){this._actionItems.set(e.text,e)}_storeNavigationToolReference(e){this._navigationTool=e}_toggleAdditionalCameraLocations(){this.isAdditionalPointSourcesVisible=!this.isAdditionalPointSourcesVisible}_toggleAdditionalCoverage(){this.isAdditionalCoverageVisible=!this.isAdditionalCoverageVisible}_toggleCurrentCoverage(){this.currentCoverageVisible=!this.currentCoverageVisible}_toggleImageEnhancementToolState(e){e.stopPropagation(),this.imageEnhancementToolActive=!this.imageEnhancementToolActive,this.imageEnhancementToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleImageGallery(e){e.stopPropagation(),this.galleryOpened=!!this.imageGalleryEnabled&&!this.galleryOpened,this.galleryOpened&&(this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1),this.navigationToolActive&&(this.navigationToolActive=!1))}_toggleNavigationTool(){this.navigationToolActive=!this.navigationToolActive,this.navigationToolActive&&(this.galleryOpened&&(this.galleryOpened=!1),this.imageEnhancementToolActive&&(this.imageEnhancementToolActive=!1))}_toggleMapImageConversionToolState(){this.mapImageConversionToolState=!this.mapImageConversionToolState}_unregisterGalleryItem(e){this._galleryObserver.unobserve(e)}_updateNavigationTool(e){const{previousFeatureAngle:t,selectedFeatureAngle:i}=this.viewModel,s=(i-t+540)%360-180;e.style.setProperty(m,`${t}deg`),e.style.setProperty(v,`${t+s}deg`)}resetImage(){this.viewModel.resetImage()}render(){const{isDocked:e,viewModel:{updating:t}}=this;return M("div",{class:this.classes(p,u)},M("calcite-panel",{bind:this,class:e?g.dock:g.float,heading:this.visibleElements.title?this.messages.title:void 0,loading:t},this.visibleElements.coverageMenu?this._renderMenuBarContainer():null,this._renderBody()))}_renderActionTooltips(){return[...this._actionItems].map((([e,t])=>M("calcite-tooltip",{key:e,referenceElement:t},M("span",null,e))))}_renderBody(){return M("div",{class:g.body},this._renderViewerContainer(),this._renderImageGallery(),this._renderImageEnhancementTools(),this._renderNavigation())}_renderImageEnhancementTools(){const{imageEnhancementToolActive:e,viewModel:{brightness:t,contrast:i,sharpness:s}}=this;return e&&M("calcite-panel",{bind:this,class:g.imageEnhancementWrapper,closable:!0,closed:!e,heading:this.messages.imageEnhancement,key:this.messages.imageEnhancement,onCalcitePanelClose:this._toggleImageEnhancementToolState},M("div",{class:g.imageEnhancementTools},M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.brightness,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,ticks:5,value:t,onCalciteSliderInput:this._handleBrightnessChange}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.contrast,M("calcite-slider",{bind:this,labelTicks:!0,max:10,min:-10,ticks:5,value:i,onCalciteSliderInput:this._handleContrastChange}))),M("div",{class:g.imageEnhancementToolContainer},M("calcite-label",null,this.messages.sharpness,M("calcite-slider",{bind:this,labelTicks:!0,max:1,min:0,step:.1,ticks:.5,value:s,onCalciteSliderInput:this._handleSharpnessChange})))),M("calcite-action",{bind:this,icon:"reset",onclick:this._resetImageTools,slot:"header-actions-end",text:this.messagesCommon.reset}))}_renderImageGallery(){const{container:e,galleryOpened:t,imageGalleryEnabled:i,viewModel:{thumbnails:s}}=this;return i&&t&&(e&&s)?M("calcite-panel",{bind:this,class:g.carousel,closable:!0,closed:!t,heading:this.messages.imageGallery,key:this.messages.imageGallery,onCalcitePanelClose:this._toggleImageGallery},M("div",{class:g.carouselContainer},this._renderThumbnails(s))):null}_renderMapImageConversionTool(){const{mapImageConversionToolState:e,viewModel:{state:t}}=this;return M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==t,icon:"image-pin",onclick:this._toggleMapImageConversionToolState,text:this.messages.mapImageConversionTool})}_renderNavigation(){const{viewModel:{sectorData:e,features:i,selectedFeature:s,updating:a,navigatorSelectedFeature:o}}=this;if(!i.length||!this.container||!s)return null;let r,n,l,c,h;if(o){const{x:e,y:t,direction:i}=o,[s,a,d,g]=b[i];r=`M ${e} ${t} L ${s} ${a} A ${y[2]} ${y[2]} 0 0 1 ${d} ${g} Z`,n=e,c=t,l=b[i][4],h=b[i][5]}const m=e=>{const t=e.target.dataset?.sector;t&&this.viewModel.handleSectorClick(+t)},v=e=>{const t=e.target.dataset;if(!t)return;const{featureIndexInSector:i,sector:s}=t;i&&s&&this.viewModel.handleFeatureClick({sector:s,featureIndexInSector:+i})},p=e=>{e.removeEventListener("click",v)},u=e?.map((e=>e?.items)).filter(Boolean).flatMap((e=>e?.map((({x:e,y:t,objectID:i,featureIndexInSector:a,sector:o})=>M("circle",{afterRemoved:p,class:this.classes(g.feature,{selected:s.attributes.objectId===i}),cx:e,cy:t,"data-featureIndexInSector":a,"data-sector":o,key:`${g.feature}-${i}`,onclick:v,r:_}))))),I=e=>{e.removeEventListener("click",m)};return this.navigationToolActive&&!a?M("div",{bind:this,class:g.navigationWrapper,key:this.messages.navigationTool},M("svg",{afterCreate:this._storeNavigationToolReference.bind(this),class:t()?C:g.rotateWithAnimation,focusable:"false",height:w,role:"img",width:w,xmlns:"http://www.w3.org/2000/svg"},M("defs",null,M("linearGradient",{gradientUnits:"userSpaceOnUse",id:`${this.id}-coverage-fill`,x1:n,x2:l,y1:c,y2:h},M("stop",{class:g.navigationPathOffset0,offset:0}),M("stop",{class:g.navigationPathOffset1,offset:1}))),M("g",null,M("circle",{class:this.classes(g.sector,g.outerSector),cx:y[3],cy:y[3],onclick:this._resizeNavigationTool.bind(this),r:y[3]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[2]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[1]}),M("circle",{class:g.sector,cx:y[3],cy:y[3],r:y[0]}),M("path",{class:g.pointer,d:"M 56.5 6.06217782649107 L 60 0 L 63.5 6.06217782649107 Z",key:`${g.pointer}-west`}),M("path",{class:this.classes(g.pointer,g.north),d:"M 113.93782217350893 56.5 L 120 60 L 113.93782217350893 63.5 Z",key:`${g.pointer}-north`}),M("path",{class:g.pointer,d:"M 56.5 113.93782217350893 L 60 120 L 63.5 113.93782217350893 Z",key:`${g.pointer}-east`}),M("path",{class:g.pointer,d:"M 6.06217782649107 56.5 L 0 60 L 6.06217782649107 63.5 Z",key:`${g.pointer}-south`}),M("path",{class:this.classes(g.sector,g.sectorSeparator),d:"M 23.937554159486076 23.937554159486076 L 96.06244584051393 96.06244584051393 M 23.937554159486076 96.06244584051393 L 96.06244584051393 23.937554159486076",key:g.sectorSeparator}),d([y[2],y[1],y[0]],y[3],y[3]).map(((t,i)=>M("path",{afterRemoved:I,class:this.classes(g.sector,e?.[i]?.length?g.sectorEnabled:g.sectorDisabled),d:t,"data-sector":`${i}`,key:`${g.sector}-${i}`,onclick:m}))),M("path",{class:this.classes(g.sector,g.sectorCross),d:"M 56.4 56.4 L 63.53 63.53 M 63.53 56.4 L 56.4 63.53",key:g.sectorCross}),u,s.attributes.cameraPitch>=5&&r?M("path",{class:g.selectedFeaturePath,d:r,fill:`url(#${this.id}-coverage-fill)`,key:g.selectedFeaturePath}):null))):null}_renderNavigationTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.navigationToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"explore",onclick:this._toggleNavigationTool,text:this.messages.navigationTool})}_renderImageEnhancementTool(){const{state:e}=this.viewModel;return M("calcite-action",{active:this.imageEnhancementToolActive,afterCreate:this._storeActionElement,bind:this,disabled:"image-loaded"!==e,icon:"sliders-horizontal",onclick:this._toggleImageEnhancementToolState,text:this.messages.imageEnhancement})}_renderMenuBarContainer(){const{currentCoverageVisible:e,isAdditionalCoverageVisible:t,isAdditionalPointSourcesVisible:i,imageGalleryEnabled:s}=this;return M("calcite-action-bar",{expandDisabled:!0,layout:"horizontal",slot:"action-bar"},M("calcite-action-group",{expanded:!0},M("calcite-action",{active:e,afterCreate:this._storeActionElement,bind:this,class:g.currentCoverage,icon:"trapezoid-area",onclick:this._toggleCurrentCoverage,text:this.messages.currentFootprint}),M("calcite-action",{active:t,afterCreate:this._storeActionElement,bind:this,class:g.addCoverage,icon:"trapezoid-area",onclick:this._toggleAdditionalCoverage,text:this.messages.additionalFootprints}),M("calcite-action",{active:i,afterCreate:this._storeActionElement,bind:this,class:g.addExpPoints,icon:"circle-area",onclick:this._toggleAdditionalCameraLocations,text:this.messages.additionalCameraLocations})),M("calcite-action-group",{layout:"horizontal"},this.visibleElements.mapImageConversionTool?this._renderMapImageConversionTool():null,this.visibleElements.navigationTool?this._renderNavigationTool():null,this.visibleElements.imageEnhancement?this._renderImageEnhancementTool():null),M("calcite-action-group",null,M("calcite-action",{active:this.galleryOpened,afterCreate:this._storeActionElement,bind:this,disabled:!s,icon:"images",onclick:this._toggleImageGallery,text:this.messages.imageGallery,textEnabled:!0})),this._renderActionTooltips())}_renderMessageBox(){const{displayMessage:e}=this.viewModel;return e?M("span",{class:g.messageBox},this.messages[e.key],e?.data):null}_renderThumbnails(e){const{selectedFeature:t}=this.viewModel;return t?M("div",{class:g.carouselContent},e.items.map((({url:e,objectId:i},s)=>M("div",{class:`${g.carouselItemWrapper}${t.attributes.objectId===i?"--selected":""}`,key:`${g.carouselItemWrapper}-${s}`},M("canvas",{afterCreate:this._registerGalleryItem,afterRemoved:this._unregisterGalleryItem,alt:`thumbnail-${i}`,class:g.carouselItem,"data-objectid":`${i}`,"data-src":e,onclick:this._loadImageFromGallery}))))):null}_renderViewerContainer(){return M("div",{class:g.viewerContainer},this._renderViewer(),this._renderMessageBox())}_renderViewer(){const{displayMessage:e}=this.viewModel;return M("div",{afterCreate:this.viewModel.loadViewer,bind:this,class:`${g.viewer}${e?"--hide":""}`})}};e([o()],A.prototype,"activeLayer",null),e([o()],A.prototype,"currentCoverageVisible",null),e([o()],A.prototype,"disabled",null),e([o()],A.prototype,"isDocked",void 0),e([o()],A.prototype,"galleryOpened",void 0),e([o()],A.prototype,"imageEnhancementToolActive",void 0),e([o()],A.prototype,"imageGalleryEnabled",null),e([o()],A.prototype,"isAdditionalCoverageVisible",null),e([o()],A.prototype,"isAdditionalPointSourcesVisible",null),e([o()],A.prototype,"mapImageConversionToolState",null),e([o()],A.prototype,"navigationToolActive",void 0),e([o({type:I})],A.prototype,"viewModel",void 0),e([o(),f("esri/widgets/OrientedImageryViewer/t9n/OrientedImageryViewer")],A.prototype,"messages",void 0),e([o(),f("esri/t9n/common")],A.prototype,"messagesCommon",void 0),e([o()],A.prototype,"view",null),e([o()],A.prototype,"visibleElements",void 0),e([r("visibleElements")],A.prototype,"castVisibleElements",null),e([o()],A.prototype,"_navigationTool",void 0),A=e([n("esri.widgets.OrientedImageryViewer")],A);const E=A;export{E as default};
|
package/widgets/Popup.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../chunks/tslib.es6.js";import{deprecatedProperty as e}from"../core/deprecate.js";import{eventKey as i}from"../core/events.js";import o from"../core/Logger.js";import{watch as n,on as s,whenOnce as r}from"../core/reactiveUtils.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as a}from"../core/accessorSupport/decorators/subclass.js";import d from"../support/actions/ActionButton.js";import c from"./Features.js";import p from"./Widget.js";import{css as h}from"./Popup/css.js";import u from"./Popup/PopupViewModel.js";import g from"./Popup/PopupVisibleElements.js";import{globalCss as v}from"./support/globalCss.js";import{isRTL as w}from"./support/widgetUtils.js";import{messageBundle as m}from"./support/decorators/messageBundle.js";import{vmEvent as b}from"./support/decorators/vmEvent.js";import{tsx as f}from"./support/jsxFactory.js";const _={buttonEnabled:!0,position:"auto",breakpoint:{width:544}};let k=class extends p{constructor(t,e){super(t,e),this._dockAction=new d({id:"popup-dock-action"}),this._featuresWidget=new c({responsiveActionsEnabled:!0}),this._containerNode=null,this._mainContainerNode=null,this._pointerOffsetInPx=16,this.alignment="auto",this.collapsed=!1,this.collapseEnabled=!0,this.dockEnabled=!1,this.headingLevel=2,this.maxInlineActions=3,this.messages=null,this.spinnerEnabled=!0,this.viewModel=new u,this.visibleElements=new g}initialize(){this.addHandles([n((()=>[this.viewModel?.view?.widthBreakpoint,this.dockEnabled]),(()=>this._handleDockIcon()),{initial:!0}),n((()=>[this.dockEnabled,this.messages?.undock,this.messages?.dock]),(()=>this._handleDockEnabled()),{initial:!0}),n((()=>this.dockOptions),(t=>{const{_dockAction:e}=this,i=this._featuresWidget.headerActions;i.remove(e),t.buttonEnabled&&i.add(e)}),{initial:!0}),n((()=>this.viewModel?.screenLocation),(()=>this._positionContainer())),n((()=>[this.viewModel?.active,this.dockEnabled]),(()=>this._toggleScreenLocationEnabled())),n((()=>[this.viewModel?.screenLocation,this.viewModel?.view?.padding,this.viewModel?.view?.size,this.viewModel?.active,this.viewModel?.location,this.alignment]),(()=>this.reposition())),n((()=>this.viewModel?.view?.size),((t,e)=>this._updateDockEnabledForViewSize(t,e))),n((()=>this.viewModel?.view),((t,e)=>this._viewChange(t,e))),n((()=>this.viewModel?.view?.ready),((t,e)=>this._viewReadyChange(t??!1,e??!1))),n((()=>this.viewModel),(()=>this._featuresWidget.viewModel=this.viewModel),{initial:!0}),n((()=>this._featureNavigationTop),(t=>this._featuresWidget.featureNavigationTop=t),{initial:!0}),n((()=>this.headingLevel),(t=>this._featuresWidget.headingLevel=t),{initial:!0}),n((()=>this.collapseEnabled),(t=>this._featuresWidget.visibleElements.collapseButton=t),{initial:!0}),n((()=>this.collapsed),(t=>this._featuresWidget.collapsed=t),{initial:!0}),n((()=>this.visibleElements.closeButton),(t=>this._featuresWidget.visibleElements.closeButton=!!t),{initial:!0}),n((()=>this.spinnerEnabled),(t=>this._featuresWidget.visibleElements.spinner=t),{initial:!0}),n((()=>this.visibleElements.featureNavigation),(t=>this._featuresWidget.visibleElements.featureNavigation=!!t),{initial:!0}),s((()=>this._featuresWidget),"trigger-header-action",(t=>{t.action===this._dockAction&&(this.dockEnabled=!this.dockEnabled)}))])}destroy(){this._dockAction.destroy(),this._featuresWidget?.destroy()}get _featureNavigationTop(){const{currentAlignment:t,currentDockPosition:e}=this;return"bottom-left"===t||"bottom-center"===t||"bottom-right"===t||"top-left"===e||"top-center"===e||"top-right"===e}get actions(){return this.viewModel.actions}set actions(t){this.viewModel.actions=t}get autoCloseEnabled(){return this.viewModel.autoCloseEnabled}set autoCloseEnabled(t){this.viewModel.autoCloseEnabled=t}get autoOpenEnabled(){return e(o.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled}set autoOpenEnabled(t){e(o.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled=t}get defaultPopupTemplateEnabled(){return this.viewModel.defaultPopupTemplateEnabled}set defaultPopupTemplateEnabled(t){this.viewModel.defaultPopupTemplateEnabled=t}get content(){return this.viewModel.content}set content(t){this.viewModel.content=t}get currentAlignment(){return this._getCurrentAlignment()}get currentDockPosition(){return this._getCurrentDockPosition()}get dockOptions(){return this._get("dockOptions")||_}set dockOptions(t){const e={..._},i=this.viewModel?.view?.breakpoints,o={};i&&(o.width=i.xsmall,o.height=i.xsmall);const n={...e,...t},s={...e.breakpoint,...o},{breakpoint:r}=n;"object"==typeof r?n.breakpoint={...s,...r}:r&&(n.breakpoint=s),this._set("dockOptions",n),this._setCurrentDockPosition(),this.reposition()}get featureCount(){return this.viewModel.featureCount}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(t){this.viewModel.featureMenuOpen=t}get features(){return this.viewModel.features}set features(t){this.viewModel.features=t}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(t){this.viewModel.goToOverride=t}get highlightEnabled(){return this.viewModel.highlightEnabled}set highlightEnabled(t){this.viewModel.highlightEnabled=t}get location(){return this.viewModel.location}set location(t){this.viewModel.location=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get promises(){return this.viewModel.promises}set promises(t){this.viewModel.promises=t}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(t){this.viewModel.selectedFeatureIndex=t}get selectedFeatureWidget(){return this._featuresWidget.selectedFeatureWidget}get title(){return this.viewModel.title}set title(t){this.viewModel.title=t}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(t){this.viewModel.updateLocationEnabled=t}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get visible(){return this.viewModel.visible}set visible(t){this.viewModel.visible=t}blur(){const{active:t}=this.viewModel;t||o.getLogger(this).warn("Popup can only be blurred when currently active."),this._featuresWidget.blur()}clear(){return this.viewModel.clear()}close(){this.visible=!1}fetchFeatures(t,e){return this.viewModel.fetchFeatures(t,e)}focus(){const{active:t}=this.viewModel;t||o.getLogger(this).warn("Popup can only be focused when currently active."),this._featuresWidget.focus()}next(){return this.viewModel.next()}open(t){const e=!!t&&!!t.featureMenuOpen,i={collapsed:!!t&&!!t.collapsed,featureMenuOpen:e};this.set(i),this.viewModel.open(t),this._shouldFocus(t)}previous(){return this.viewModel.previous()}reposition(){this.renderNow(),this._positionContainer(),this._setCurrentAlignment()}triggerAction(t){return this.viewModel.triggerAction(t)}render(){const{dockEnabled:t,currentAlignment:e,currentDockPosition:i}=this,{active:o}=this.viewModel,n=o&&t,s=o&&!t,r=this.selectedFeature?.layer?.title,l=this.selectedFeature?.layer?.id,a={[h.alignTopCenter]:"top-center"===e,[h.alignBottomCenter]:"bottom-center"===e,[h.alignTopLeft]:"top-left"===e,[h.alignBottomLeft]:"bottom-left"===e,[h.alignTopRight]:"top-right"===e,[h.alignBottomRight]:"bottom-right"===e,[h.isDocked]:n,[h.shadow]:s,[h.isDockedTopLeft]:"top-left"===i,[h.isDockedTopCenter]:"top-center"===i,[h.isDockedTopRight]:"top-right"===i,[h.isDockedBottomLeft]:"bottom-left"===i,[h.isDockedBottomCenter]:"bottom-center"===i,[h.isDockedBottomRight]:"bottom-right"===i};return f("div",{class:this.classes(h.base,a),role:"presentation","data-layer-title":r,"data-layer-id":l,bind:this,afterCreate:this._positionContainer,afterUpdate:this._positionContainer},o?[this._renderMainContainer(),this._renderPointer()]:null)}_renderPointer(){return this.dockEnabled?null:f("div",{key:"popup-pointer",class:h.pointer,role:"presentation"},f("div",{class:this.classes(h.pointerDirection,h.shadow)}))}_renderMainContainer(){const{dockEnabled:t}=this,e={[h.shadow]:t};return f("div",{class:this.classes(h.main,v.widget,e),bind:this,afterCreate:this._setMainContainerNode,afterUpdate:this._setMainContainerNode,onkeyup:this._handleMainKeyup},this._featuresWidget.render())}_handleMainKeyup(t){const e=i(t);"ArrowLeft"===e&&(t.stopPropagation(),this.previous()),"ArrowRight"===e&&(t.stopPropagation(),this.next())}async _shouldFocus(t){t?.shouldFocus&&(await r((()=>!0===this.viewModel?.active)),this.focus())}_isOutsideView(t){const{popupHeight:e,popupWidth:i,screenLocation:o,side:n,view:s}=t;if(isNaN(i)||isNaN(e)||!s||!o)return!1;const r=s.padding;return"right"===n&&o.x+i/2>s.width-r.right||("left"===n&&o.x-i/2<r.left||("top"===n&&o.y-e<r.top||"bottom"===n&&o.y+e>s.height-r.bottom))}_calculateAutoAlignment(t){if("auto"!==t)return t;const{_pointerOffsetInPx:e,_containerNode:i,_mainContainerNode:o,viewModel:n}=this,{screenLocation:s,view:r}=n;if(null==s||!r||!i)return"top-center";function l(t){return parseInt(t.replaceAll(/[^-\d\.]/g,""),10)}const a=o?window.getComputedStyle(o,null):null,d=a?l(a.getPropertyValue("max-height")):0,c=a?l(a.getPropertyValue("height")):0,{height:p,width:h}=i.getBoundingClientRect(),u=h+e,g=Math.max(p,d,c)+e,v=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"right",view:r}),w=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"left",view:r}),m=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"top",view:r}),b=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"bottom",view:r});return w?m?"bottom-right":"top-right":v?m?"bottom-left":"top-left":m?b?"top-center":"bottom-center":"top-center"}_callCurrentAlignment(t){return"function"==typeof t?t.call(this):t}_getCurrentAlignment(){const{alignment:t,dockEnabled:e}=this;return e||!this.viewModel.active?null:this._calculatePositionResult(this._calculateAutoAlignment(this._callCurrentAlignment(t)))}_setCurrentAlignment(){this._set("currentAlignment",this._getCurrentAlignment())}_setCurrentDockPosition(){this._set("currentDockPosition",this._getCurrentDockPosition())}_calculatePositionResult(t){const e=["left","right"];return w(this.container)&&e.reverse(),t?.replace(/leading/gi,e[0]).replaceAll(/trailing/gi,e[1])}_callDockPosition(t){return"function"==typeof t?t.call(this):t}_getDockPosition(){return this._calculatePositionResult(this._calculateAutoDockPosition(this._callDockPosition(this.dockOptions?.position)))}_getCurrentDockPosition(){return this.dockEnabled&&this.viewModel.active?this._getDockPosition():null}_calculateAutoDockPosition(t){if("auto"!==t)return t;const e=this.viewModel?.view,i=w(this.container)?"top-left":"top-right";if(!e)return i;const o=e.padding||{left:0,right:0,top:0,bottom:0},n=e.width-o.left-o.right,{breakpoints:s}=e;return s&&n<=s.xsmall?"bottom-center":i}_getDockIcon(){const t=this._getDockPosition();if(this.dockEnabled)return"minimize";switch(t){case"top-left":case"bottom-left":return"dock-left";case"top-center":return"maximize";case"bottom-center":return"dock-bottom";default:return"dock-right"}}_handleDockIcon(){this._dockAction.icon=this._getDockIcon()}_handleDockEnabled(){this._dockAction.title=this.dockEnabled?this.messages?.undock:this.messages?.dock}_setMainContainerNode(t){this._mainContainerNode=t}_positionContainer(t=this._containerNode){if(t&&(this._containerNode=t),!this._containerNode)return;const{screenLocation:e}=this.viewModel,{width:i}=this._containerNode.getBoundingClientRect(),o=this._calculatePositionStyle(e,i);o&&Object.assign(this._containerNode.style,o)}_calculateFullWidth(t){const{currentAlignment:e,_pointerOffsetInPx:i}=this;return"top-left"===e||"bottom-left"===e||"top-right"===e||"bottom-right"===e?t+i:t}_calculateAlignmentPosition(t,e,i,o){const{currentAlignment:n,_pointerOffsetInPx:s}=this;if(!i)return;const{padding:r}=i,l=o/2,a=i.height-e,d=i.width-t;return"bottom-center"===n?{top:e+s-r.top,left:t-l-r.left}:"top-left"===n?{bottom:a+s-r.bottom,right:d+s-r.right}:"bottom-left"===n?{top:e+s-r.top,right:d+s-r.right}:"top-right"===n?{bottom:a+s-r.bottom,left:t+s-r.left}:"bottom-right"===n?{top:e+s-r.top,left:t+s-r.left}:"top-center"===n?{bottom:a+s-r.bottom,left:t-l-r.left}:void 0}_calculatePositionStyle(t,e){const{dockEnabled:i,view:o}=this;if(!o)return;if(i)return{left:"",top:"",right:"",bottom:""};if(null==t||!e)return;const n=this._calculateFullWidth(e),s=this._calculateAlignmentPosition(t.x,t.y,o,n);return s?{top:void 0!==s.top?`${s.top}px`:"auto",left:void 0!==s.left?`${s.left}px`:"auto",bottom:void 0!==s.bottom?`${s.bottom}px`:"auto",right:void 0!==s.right?`${s.right}px`:"auto"}:void 0}_viewChange(t,e){t&&e&&(this.close(),this.clear())}_viewReadyChange(t,e){t?this._wireUpView():e&&(this.close(),this.clear())}_wireUpView(){this._setDockEnabledForViewSize(this.dockOptions)}_dockingThresholdCrossed(t,e,i){const[o,n]=t,[s,r]=e,{width:l=0,height:a=0}=i??{};return o<=l&&s>l||o>l&&s<=l||n<=a&&r>a||n>a&&r<=a}_updateDockEnabledForViewSize(t,e){if(!t||!e)return;const i=this.viewModel?.view?.padding||{left:0,right:0,top:0,bottom:0},o=i.left+i.right,n=i.top+i.bottom,s=[],r=[];s[0]=t[0]-o,s[1]=t[1]-n,r[0]=e[0]-o,r[1]=e[1]-n;const{dockOptions:l}=this,a=l.breakpoint;this._dockingThresholdCrossed(s,r,a)&&this._setDockEnabledForViewSize(l),this._setCurrentDockPosition()}_toggleScreenLocationEnabled(){const{dockEnabled:t,viewModel:e}=this;if(!e)return;const i=e.active&&!t;e.screenLocationEnabled=i}_shouldDockAtCurrentViewSize(t){const e=t.breakpoint,i=this.viewModel?.view?.ui;if(!i)return!1;const{width:o,height:n}=i;if(isNaN(o)||isNaN(n))return!1;if(!e)return!1;const s=e.hasOwnProperty("width")&&o<=(e.width??0),r=e.hasOwnProperty("height")&&n<=(e.height??0);return s||r}_setDockEnabledForViewSize(t){t.breakpoint&&(this.dockEnabled=this._shouldDockAtCurrentViewSize(t))}};t([l({readOnly:!0})],k.prototype,"_featureNavigationTop",null),t([l()],k.prototype,"actions",null),t([l()],k.prototype,"alignment",void 0),t([l()],k.prototype,"autoCloseEnabled",null),t([l()],k.prototype,"autoOpenEnabled",null),t([l()],k.prototype,"defaultPopupTemplateEnabled",null),t([l()],k.prototype,"content",null),t([l()],k.prototype,"collapsed",void 0),t([l()],k.prototype,"collapseEnabled",void 0),t([l({readOnly:!0})],k.prototype,"currentAlignment",null),t([l({readOnly:!0})],k.prototype,"currentDockPosition",null),t([l()],k.prototype,"dockOptions",null),t([l()],k.prototype,"dockEnabled",void 0),t([l({readOnly:!0})],k.prototype,"featureCount",null),t([l()],k.prototype,"featureMenuOpen",null),t([l()],k.prototype,"features",null),t([l()],k.prototype,"goToOverride",null),t([l()],k.prototype,"headingLevel",void 0),t([l()],k.prototype,"highlightEnabled",null),t([l()],k.prototype,"location",null),t([l()],k.prototype,"label",null),t([l()],k.prototype,"maxInlineActions",void 0),t([l(),m("esri/widgets/Popup/t9n/Popup")],k.prototype,"messages",void 0),t([l()],k.prototype,"promises",null),t([l({readOnly:!0})],k.prototype,"selectedFeature",null),t([l()],k.prototype,"selectedFeatureIndex",null),t([l({readOnly:!0})],k.prototype,"selectedFeatureWidget",null),t([l()],k.prototype,"spinnerEnabled",void 0),t([l()],k.prototype,"title",null),t([l()],k.prototype,"updateLocationEnabled",null),t([l()],k.prototype,"view",null),t([l({type:u}),b(["triggerAction","trigger-action"])],k.prototype,"viewModel",void 0),t([l()],k.prototype,"visible",null),t([l({type:g,nonNullable:!0})],k.prototype,"visibleElements",void 0),k=t([a("esri.widgets.Popup")],k);const M=k;export{M as default};
|
|
5
|
+
import{_ as t}from"../chunks/tslib.es6.js";import{deprecatedProperty as e}from"../core/deprecate.js";import{eventKey as i}from"../core/events.js";import o from"../core/Logger.js";import{watch as n,on as s,whenOnce as r}from"../core/reactiveUtils.js";import{property as l}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as a}from"../core/accessorSupport/decorators/subclass.js";import d from"../support/actions/ActionButton.js";import c from"./Features.js";import p from"./Widget.js";import{css as h}from"./Popup/css.js";import u from"./Popup/PopupViewModel.js";import g from"./Popup/PopupVisibleElements.js";import{globalCss as v}from"./support/globalCss.js";import{isRTL as w}from"./support/widgetUtils.js";import{messageBundle as m}from"./support/decorators/messageBundle.js";import{vmEvent as b}from"./support/decorators/vmEvent.js";import{tsx as f}from"./support/jsxFactory.js";const _={buttonEnabled:!0,position:"auto",breakpoint:{width:544}};let k=class extends p{constructor(t,e){super(t,e),this._dockAction=new d({id:"popup-dock-action"}),this._featuresWidget=new c({responsiveActionsEnabled:!0}),this._containerNode=null,this._mainContainerNode=null,this._pointerOffsetInPx=16,this.alignment="auto",this.collapsed=!1,this.collapseEnabled=!0,this.dockEnabled=!1,this.headingLevel=2,this.maxInlineActions=3,this.messages=null,this.spinnerEnabled=!0,this.viewModel=new u,this.visibleElements=new g}initialize(){this.addHandles([n((()=>[this.viewModel?.view?.widthBreakpoint,this.dockEnabled]),(()=>this._handleDockIcon()),{initial:!0}),n((()=>[this.dockEnabled,this.messages?.undock,this.messages?.dock]),(()=>this._handleDockEnabled()),{initial:!0}),n((()=>this.dockOptions),(t=>{const{_dockAction:e}=this,i=this._featuresWidget.headerActions;i.remove(e),t.buttonEnabled&&i.add(e)}),{initial:!0}),n((()=>this.viewModel?.screenLocation),(()=>this._positionContainer())),n((()=>[this.viewModel?.active,this.dockEnabled]),(()=>this._toggleScreenLocationEnabled())),n((()=>[this.viewModel?.screenLocation,this.viewModel?.view?.padding,this.viewModel?.view?.size,this.viewModel?.active,this.viewModel?.location,this.alignment]),(()=>this.reposition())),n((()=>this.viewModel?.view?.size),((t,e)=>this._updateDockEnabledForViewSize(t,e))),n((()=>this.viewModel?.view),((t,e)=>this._viewChange(t,e))),n((()=>this.viewModel?.view?.ready),((t,e)=>this._viewReadyChange(t??!1,e??!1))),n((()=>this.viewModel),(()=>this._featuresWidget.viewModel=this.viewModel),{initial:!0}),n((()=>this._featureNavigationTop),(t=>this._featuresWidget.featureNavigationTop=t),{initial:!0}),n((()=>this.headingLevel),(t=>this._featuresWidget.headingLevel=t),{initial:!0}),n((()=>this.collapseEnabled),(t=>this._featuresWidget.visibleElements.collapseButton=t),{initial:!0}),n((()=>this.collapsed),(t=>this._featuresWidget.collapsed=t),{initial:!0}),n((()=>this.visibleElements.closeButton),(t=>this._featuresWidget.visibleElements.closeButton=!!t),{initial:!0}),n((()=>this.spinnerEnabled),(t=>this._featuresWidget.visibleElements.spinner=t),{initial:!0}),n((()=>this.visibleElements.featureNavigation),(t=>this._featuresWidget.visibleElements.featureNavigation=!!t),{initial:!0}),s((()=>this._featuresWidget),"trigger-header-action",(t=>{t.action===this._dockAction&&(this.dockEnabled=!this.dockEnabled)}))])}destroy(){this._dockAction.destroy(),this._featuresWidget?.destroy()}get _featureNavigationTop(){const{currentAlignment:t,currentDockPosition:e}=this;return"bottom-left"===t||"bottom-center"===t||"bottom-right"===t||"top-left"===e||"top-center"===e||"top-right"===e}get actions(){return this.viewModel.actions}set actions(t){this.viewModel.actions=t}get autoCloseEnabled(){return this.viewModel.autoCloseEnabled}set autoCloseEnabled(t){this.viewModel.autoCloseEnabled=t}get autoOpenEnabled(){return e(o.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled}set autoOpenEnabled(t){e(o.getLogger(this),"autoOpenEnabled",{replacement:"MapView/SceneView.popupEnabled",version:"4.27"}),this.viewModel.autoOpenEnabled=t}get defaultPopupTemplateEnabled(){return this.viewModel.defaultPopupTemplateEnabled}set defaultPopupTemplateEnabled(t){this.viewModel.defaultPopupTemplateEnabled=t}get content(){return this.viewModel.content}set content(t){this.viewModel.content=t}get currentAlignment(){return this._getCurrentAlignment()}get currentDockPosition(){return this._getCurrentDockPosition()}get dockOptions(){return this._get("dockOptions")||_}set dockOptions(t){const e={..._},i=this.viewModel?.view?.breakpoints,o={};i&&(o.width=i.xsmall,o.height=i.xsmall);const n={...e,...t},s={...e.breakpoint,...o},{breakpoint:r}=n;"object"==typeof r?n.breakpoint={...s,...r}:r&&(n.breakpoint=s),this._set("dockOptions",n),this._setCurrentDockPosition(),this.reposition()}get featureCount(){return this.viewModel.featureCount}get featureMenuOpen(){return this.viewModel.featureMenuOpen}set featureMenuOpen(t){this.viewModel.featureMenuOpen=t}get features(){return this.viewModel.features}set features(t){this.viewModel.features=t}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(t){this.viewModel.goToOverride=t}get highlightEnabled(){return this.viewModel.highlightEnabled}set highlightEnabled(t){this.viewModel.highlightEnabled=t}get location(){return this.viewModel.location}set location(t){this.viewModel.location=t}get label(){return this.messages?.widgetLabel??""}set label(t){this._overrideIfSome("label",t)}get promises(){return this.viewModel.promises}set promises(t){this.viewModel.promises=t}get selectedFeature(){return this.viewModel.selectedFeature}get selectedFeatureIndex(){return this.viewModel.selectedFeatureIndex}set selectedFeatureIndex(t){this.viewModel.selectedFeatureIndex=t}get selectedFeatureWidget(){return this._featuresWidget.selectedFeatureWidget}get title(){return this.viewModel.title}set title(t){this.viewModel.title=t}get updateLocationEnabled(){return this.viewModel.updateLocationEnabled}set updateLocationEnabled(t){this.viewModel.updateLocationEnabled=t}get view(){return this.viewModel.view}set view(t){this.viewModel.view=t}get visible(){return this.viewModel.visible}set visible(t){this.viewModel.visible=t}blur(){const{active:t}=this.viewModel;t||o.getLogger(this).warn("Popup can only be blurred when currently active."),this._featuresWidget.blur()}clear(){return this.viewModel.clear()}close(){this.visible=!1}fetchFeatures(t,e){return this.viewModel.fetchFeatures(t,e)}focus(){const{active:t}=this.viewModel;t||o.getLogger(this).warn("Popup can only be focused when currently active."),this._featuresWidget.focus()}next(){return this.viewModel.next()}open(t){const e=!!t&&!!t.featureMenuOpen,i={collapsed:!!t&&!!t.collapsed,featureMenuOpen:e};this.set(i),this.viewModel.open(t),this._shouldFocus(t)}previous(){return this.viewModel.previous()}reposition(){this.renderNow(),this._positionContainer(),this._setCurrentAlignment()}triggerAction(t){return this.viewModel.triggerAction(t)}render(){const{dockEnabled:t,currentAlignment:e,currentDockPosition:i}=this,{active:o}=this.viewModel,n=o&&t,s=o&&!t,r=this.selectedFeature?.layer?.title,l=this.selectedFeature?.layer?.id,a={[h.alignTopCenter]:"top-center"===e,[h.alignBottomCenter]:"bottom-center"===e,[h.alignTopLeft]:"top-left"===e,[h.alignBottomLeft]:"bottom-left"===e,[h.alignTopRight]:"top-right"===e,[h.alignBottomRight]:"bottom-right"===e,[h.isDocked]:n,[h.shadow]:s,[h.isDockedTopLeft]:"top-left"===i,[h.isDockedTopCenter]:"top-center"===i,[h.isDockedTopRight]:"top-right"===i,[h.isDockedBottomLeft]:"bottom-left"===i,[h.isDockedBottomCenter]:"bottom-center"===i,[h.isDockedBottomRight]:"bottom-right"===i};return f("div",{afterCreate:this._positionContainer,afterUpdate:this._positionContainer,bind:this,class:this.classes(h.base,a),"data-layer-id":l,"data-layer-title":r,role:"presentation"},o?[this._renderMainContainer(),this._renderPointer()]:null)}_renderPointer(){return this.dockEnabled?null:f("div",{class:h.pointer,key:"popup-pointer",role:"presentation"},f("div",{class:this.classes(h.pointerDirection,h.shadow)}))}_renderMainContainer(){const{dockEnabled:t}=this,e={[h.shadow]:t};return f("div",{afterCreate:this._setMainContainerNode,afterUpdate:this._setMainContainerNode,bind:this,class:this.classes(h.main,v.widget,e),onkeyup:this._handleMainKeyup},this._featuresWidget.render())}_handleMainKeyup(t){const e=i(t);"ArrowLeft"===e&&(t.stopPropagation(),this.previous()),"ArrowRight"===e&&(t.stopPropagation(),this.next())}async _shouldFocus(t){t?.shouldFocus&&(await r((()=>!0===this.viewModel?.active)),this.focus())}_isOutsideView(t){const{popupHeight:e,popupWidth:i,screenLocation:o,side:n,view:s}=t;if(isNaN(i)||isNaN(e)||!s||!o)return!1;const r=s.padding;return"right"===n&&o.x+i/2>s.width-r.right||("left"===n&&o.x-i/2<r.left||("top"===n&&o.y-e<r.top||"bottom"===n&&o.y+e>s.height-r.bottom))}_calculateAutoAlignment(t){if("auto"!==t)return t;const{_pointerOffsetInPx:e,_containerNode:i,_mainContainerNode:o,viewModel:n}=this,{screenLocation:s,view:r}=n;if(null==s||!r||!i)return"top-center";function l(t){return parseInt(t.replaceAll(/[^-\d\.]/g,""),10)}const a=o?window.getComputedStyle(o,null):null,d=a?l(a.getPropertyValue("max-height")):0,c=a?l(a.getPropertyValue("height")):0,{height:p,width:h}=i.getBoundingClientRect(),u=h+e,g=Math.max(p,d,c)+e,v=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"right",view:r}),w=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"left",view:r}),m=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"top",view:r}),b=this._isOutsideView({popupHeight:g,popupWidth:u,screenLocation:s,side:"bottom",view:r});return w?m?"bottom-right":"top-right":v?m?"bottom-left":"top-left":m?b?"top-center":"bottom-center":"top-center"}_callCurrentAlignment(t){return"function"==typeof t?t.call(this):t}_getCurrentAlignment(){const{alignment:t,dockEnabled:e}=this;return e||!this.viewModel.active?null:this._calculatePositionResult(this._calculateAutoAlignment(this._callCurrentAlignment(t)))}_setCurrentAlignment(){this._set("currentAlignment",this._getCurrentAlignment())}_setCurrentDockPosition(){this._set("currentDockPosition",this._getCurrentDockPosition())}_calculatePositionResult(t){const e=["left","right"];return w(this.container)&&e.reverse(),t?.replace(/leading/gi,e[0]).replaceAll(/trailing/gi,e[1])}_callDockPosition(t){return"function"==typeof t?t.call(this):t}_getDockPosition(){return this._calculatePositionResult(this._calculateAutoDockPosition(this._callDockPosition(this.dockOptions?.position)))}_getCurrentDockPosition(){return this.dockEnabled&&this.viewModel.active?this._getDockPosition():null}_calculateAutoDockPosition(t){if("auto"!==t)return t;const e=this.viewModel?.view,i=w(this.container)?"top-left":"top-right";if(!e)return i;const o=e.padding||{left:0,right:0,top:0,bottom:0},n=e.width-o.left-o.right,{breakpoints:s}=e;return s&&n<=s.xsmall?"bottom-center":i}_getDockIcon(){const t=this._getDockPosition();if(this.dockEnabled)return"minimize";switch(t){case"top-left":case"bottom-left":return"dock-left";case"top-center":return"maximize";case"bottom-center":return"dock-bottom";default:return"dock-right"}}_handleDockIcon(){this._dockAction.icon=this._getDockIcon()}_handleDockEnabled(){this._dockAction.title=this.dockEnabled?this.messages?.undock:this.messages?.dock}_setMainContainerNode(t){this._mainContainerNode=t}_positionContainer(t=this._containerNode){if(t&&(this._containerNode=t),!this._containerNode)return;const{screenLocation:e}=this.viewModel,{width:i}=this._containerNode.getBoundingClientRect(),o=this._calculatePositionStyle(e,i);o&&Object.assign(this._containerNode.style,o)}_calculateFullWidth(t){const{currentAlignment:e,_pointerOffsetInPx:i}=this;return"top-left"===e||"bottom-left"===e||"top-right"===e||"bottom-right"===e?t+i:t}_calculateAlignmentPosition(t,e,i,o){const{currentAlignment:n,_pointerOffsetInPx:s}=this;if(!i)return;const{padding:r}=i,l=o/2,a=i.height-e,d=i.width-t;return"bottom-center"===n?{top:e+s-r.top,left:t-l-r.left}:"top-left"===n?{bottom:a+s-r.bottom,right:d+s-r.right}:"bottom-left"===n?{top:e+s-r.top,right:d+s-r.right}:"top-right"===n?{bottom:a+s-r.bottom,left:t+s-r.left}:"bottom-right"===n?{top:e+s-r.top,left:t+s-r.left}:"top-center"===n?{bottom:a+s-r.bottom,left:t-l-r.left}:void 0}_calculatePositionStyle(t,e){const{dockEnabled:i,view:o}=this;if(!o)return;if(i)return{left:"",top:"",right:"",bottom:""};if(null==t||!e)return;const n=this._calculateFullWidth(e),s=this._calculateAlignmentPosition(t.x,t.y,o,n);return s?{top:void 0!==s.top?`${s.top}px`:"auto",left:void 0!==s.left?`${s.left}px`:"auto",bottom:void 0!==s.bottom?`${s.bottom}px`:"auto",right:void 0!==s.right?`${s.right}px`:"auto"}:void 0}_viewChange(t,e){t&&e&&(this.close(),this.clear())}_viewReadyChange(t,e){t?this._wireUpView():e&&(this.close(),this.clear())}_wireUpView(){this._setDockEnabledForViewSize(this.dockOptions)}_dockingThresholdCrossed(t,e,i){const[o,n]=t,[s,r]=e,{width:l=0,height:a=0}=i??{};return o<=l&&s>l||o>l&&s<=l||n<=a&&r>a||n>a&&r<=a}_updateDockEnabledForViewSize(t,e){if(!t||!e)return;const i=this.viewModel?.view?.padding||{left:0,right:0,top:0,bottom:0},o=i.left+i.right,n=i.top+i.bottom,s=[],r=[];s[0]=t[0]-o,s[1]=t[1]-n,r[0]=e[0]-o,r[1]=e[1]-n;const{dockOptions:l}=this,a=l.breakpoint;this._dockingThresholdCrossed(s,r,a)&&this._setDockEnabledForViewSize(l),this._setCurrentDockPosition()}_toggleScreenLocationEnabled(){const{dockEnabled:t,viewModel:e}=this;if(!e)return;const i=e.active&&!t;e.screenLocationEnabled=i}_shouldDockAtCurrentViewSize(t){const e=t.breakpoint,i=this.viewModel?.view?.ui;if(!i)return!1;const{width:o,height:n}=i;if(isNaN(o)||isNaN(n))return!1;if(!e)return!1;const s=e.hasOwnProperty("width")&&o<=(e.width??0),r=e.hasOwnProperty("height")&&n<=(e.height??0);return s||r}_setDockEnabledForViewSize(t){t.breakpoint&&(this.dockEnabled=this._shouldDockAtCurrentViewSize(t))}};t([l({readOnly:!0})],k.prototype,"_featureNavigationTop",null),t([l()],k.prototype,"actions",null),t([l()],k.prototype,"alignment",void 0),t([l()],k.prototype,"autoCloseEnabled",null),t([l()],k.prototype,"autoOpenEnabled",null),t([l()],k.prototype,"defaultPopupTemplateEnabled",null),t([l()],k.prototype,"content",null),t([l()],k.prototype,"collapsed",void 0),t([l()],k.prototype,"collapseEnabled",void 0),t([l({readOnly:!0})],k.prototype,"currentAlignment",null),t([l({readOnly:!0})],k.prototype,"currentDockPosition",null),t([l()],k.prototype,"dockOptions",null),t([l()],k.prototype,"dockEnabled",void 0),t([l({readOnly:!0})],k.prototype,"featureCount",null),t([l()],k.prototype,"featureMenuOpen",null),t([l()],k.prototype,"features",null),t([l()],k.prototype,"goToOverride",null),t([l()],k.prototype,"headingLevel",void 0),t([l()],k.prototype,"highlightEnabled",null),t([l()],k.prototype,"location",null),t([l()],k.prototype,"label",null),t([l()],k.prototype,"maxInlineActions",void 0),t([l(),m("esri/widgets/Popup/t9n/Popup")],k.prototype,"messages",void 0),t([l()],k.prototype,"promises",null),t([l({readOnly:!0})],k.prototype,"selectedFeature",null),t([l()],k.prototype,"selectedFeatureIndex",null),t([l({readOnly:!0})],k.prototype,"selectedFeatureWidget",null),t([l()],k.prototype,"spinnerEnabled",void 0),t([l()],k.prototype,"title",null),t([l()],k.prototype,"updateLocationEnabled",null),t([l()],k.prototype,"view",null),t([l({type:u}),b(["triggerAction","trigger-action"])],k.prototype,"viewModel",void 0),t([l()],k.prototype,"visible",null),t([l({type:g,nonNullable:!0})],k.prototype,"visibleElements",void 0),k=t([a("esri.widgets.Popup")],k);const M=k;export{M as default};
|
package/widgets/Print.js
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.28/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{on as a,eventKey as i}from"../core/events.js";import{clone as s}from"../core/lang.js";import n from"../core/Logger.js";import{watch as o,initial as l}from"../core/reactiveUtils.js";import{addProxy as r,hasSameOrigin as p}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import{getToken as u}from"../rest/utils.js";import h from"./Widget.js";import m from"./Print/FileLink.js";import _ from"./Print/PrintViewModel.js";import b from"./Print/TemplateOptions.js";import{globalCss as v}from"./support/globalCss.js";import{Heading as y}from"./support/Heading.js";import{legacyIcon as f}from"./support/legacyIcon.js";import g from"./support/Popover.js";import{isActivationKey as T,keepMenuItemWithinView as w}from"./support/widgetUtils.js";import{messageBundle as O}from"./support/decorators/messageBundle.js";import{tsx as x}from"./support/jsxFactory.js";const C=t.ofType(m),L="MAP_ONLY";var I;!function(e){e.layout="layoutTab",e.mapOnly="mapOnlyTab"}(I||(I={}));const k="esri-print",S=`${k}__advanced-options-button`,$={base:k,widgetIcon:f.printer,headerTitle:`${k}__header-title`,inputText:`${k}__input-text`,layoutTabList:`${k}__layout-tab-list`,layoutTab:`${k}__layout-tab`,layoutSection:`${k}__layout-section`,mapOnlySection:`${k}__map-only-section`,scaleInput:`${k}__scale-input`,templateList:`${k}__template-list`,templateListScroller:`${k}__template-list-scroller`,templateListFooter:`${k}__template-list-footer`,loader:`${k}__loader`,advancedOptionsButton:S,advancedOptionsButtonContainer:`${S}-container`,advancedOptionsButtonTitle:`${S}-title`,advancedOptionsButtonIconOpened:`${S}-icon--opened`,advancedOptionsButtonIconClosed:`${S}-icon--closed`,advancedOptionsButtonIconClosed_RTL:`${S}-icon--closed-rtl`,refreshButton:`${k}__refresh-button`,swapButton:`${k}__swap-button`,linkButton:`${k}__link-button`,printButton:`${k}__export-button`,templateButton:`${k}__template-button`,formSectionContainer:`${k}__form-section-container`,advancedOptionsSection:`${k}__advanced-options-section`,advancedOptionsContainer:`${k}__advanced-options-container`,authorInfoContainer:`${k}__author-info-container`,copyrightInfoContainer:`${k}__copyright-info-container`,exportedFilesContainer:`${k}__export-panel-container`,exportedFilesTitle:`${k}__export-title`,exportedFile:`${k}__exported-file`,exportedFileLink:`${k}__exported-file-link`,exportedFileLinkTitle:`${k}__exported-file-link-title`,heightContainer:`${k}__height-container`,legendInfoContainer:`${k}__legend-info-container`,printWidgetContainer:`${k}__container`,panelContainer:`${k}__panel-container`,scaleInfoContainer:`${k}__scale-info-container`,scaleInputContainer:`${k}__scale-input-container`,sizeContainer:`${k}__size-container`,widthContainer:`${k}__width-container`,panelError:`${k}__panel--error`,exportedFileError:`${k}__exported-file--error`},M="User sets an invalid layout, resetting it to the default valid one...",F="User sets an invalid format, resetting it to the default valid one...";function E(e){const t=8.3333,a=11.4583;return{width:Math.round(e*t),height:Math.round(e*a)}}function P(e){return!isNaN(e)&&e>0}function V(e){return e?.toUpperCase()===L}let A=class extends h{constructor(e,t){super(e,t),this._activeTabFocusRequested=!1,this._advancedOptionsVisibleForLayout=!1,this._advancedOptionsVisibleForMapOnly=!1,this._awaitingServerResponse=!1,this._exportedFileNameMap={},this._focusedTemplateIndex=0,this._layoutTabSelected=!0,this._pendingExportScroll=!1,this._rootNode=null,this._selectTemplateNode=null,this._templateListPopover=new g({owner:this,placement:"top",offset:[0,-100],anchorElement:()=>this._selectTemplateNode,renderContentFunction:this._renderTemplateList}),this.exportedLinks=new C,this.headingLevel=3,this.iconClass=$.widgetIcon,this.icon=null,this.templateOptions=new b,this.viewModel=new _,this._handleTemplateListCreation=e=>e.focus(),this._handleTemplateChildBlur=e=>{const t=e.relatedTarget?.closest(`.${$.templateList}`);t||this._handleCloseTemplateSelection()},this._handleCloseTemplateSelection=()=>{this._focusedTemplateIndex=0,this._templateListPopover.open=!1,this._selectTemplateNode?.focus()},this._handleSelectTemplateClick=()=>{this._focusedTemplateIndex=0,this._templateListPopover.open=!0},this._handleTemplateListClick=e=>{const t=B(e.target);t&&this._applyTemplate(t)},this._handleTemplateListKeyDown=e=>{if(this._focusedTemplateIndex){if(T(e.key))return this._applyTemplate(this.viewModel.defaultTemplates.at(this._focusedTemplateIndex)),void e.preventDefault();if("ArrowDown"===e.key||"ArrowUp"===e.key){const{defaultTemplates:t}=this.viewModel,a="ArrowDown"===e.key?1:-1,i=(this._focusedTemplateIndex+a)%t.length;this._focusedTemplateIndex=i<0?t.length-1:i;const s=e.currentTarget;w(s.querySelectorAll(`.${v.menuItem}`)[this._focusedTemplateIndex],s.parentElement),e.preventDefault()}"Escape"===e.key&&this._handleCloseTemplateSelection()}},this._removeLink=e=>{const t=e.currentTarget["data-item"];t&&"error"===t.state&&this.exportedLinks.remove(t)},this._handleLinkClick=e=>{const t=e.currentTarget,{href:a}=t,i=u(this.viewModel.effectivePrintServiceUrl);if(!i)return;if(!e.isTrusted)return void e.stopPropagation();e.preventDefault();const s=new URL(a);s.searchParams.set("token",i),t.href=s.href,t.click(),t.href=a},this._focusOnTabChange=this._focusOnTabChange.bind(this)}initialize(){this.addHandles([o((()=>this.viewModel?.templatesInfo),(e=>{const{format:t,layout:a}=this.templateOptions;if(e){const i=a===e.layout.defaultValue||V(a)||e.layout.choiceList&&a&&e.layout.choiceList.includes(a),s=t===e.format.defaultValue||e.format.choiceList&&t&&e.format.choiceList.includes(t);i||(a&&n.getLogger(this).warn(M),this.templateOptions.layout=e.layout.defaultValue),s||(t&&n.getLogger(this).warn(F),this.templateOptions.format=e.format.defaultValue),V(a)&&(this._layoutTabSelected=!1)}}),l),o((()=>this.templateOptions?.format),(e=>{const{viewModel:{templatesInfo:t}}=this;if(t&&e){let a=!1;t.format.choiceList&&t.format.choiceList.forEach((t=>{t.toUpperCase()===e.toUpperCase()&&(this.templateOptions.format=t,a=!0)})),a||(this.templateOptions.format=t.format.defaultValue,n.getLogger(this).warn(F)),this.scheduleRender()}}),l),o((()=>this.templateOptions?.layout),(e=>{const{viewModel:{templatesInfo:t}}=this;if(t&&e){this._layoutTabSelected=!V(e);let a=!this._layoutTabSelected;a||t.layout.choiceList&&t.layout.choiceList.forEach((t=>{t.toUpperCase()===e.toUpperCase()&&(this.templateOptions.layout=t,a=!0)})),a||(this.templateOptions.layout=t.layout.defaultValue,n.getLogger(this).warn(M));const i=this.viewModel.effectiveTemplateCustomTextElements[this.templateOptions.layout];this.templateOptions.customTextElements=i?s(i):null,this.scheduleRender()}}),l),o((()=>this.templateOptions?.dpi),(e=>{e<=0?this.templateOptions.dpi=1:this.scheduleRender()}),l),o((()=>this.viewModel?.view?.scale),(e=>{const{scale:t,scaleEnabled:a}=this.templateOptions;a&&t||(this.templateOptions.scale=e)}),l)]);const{height:e,width:t}=this.templateOptions;this.templateOptions.width=t||800,this.templateOptions.height=e||1100;const a=setTimeout((()=>{this._awaitingServerResponse=!0,this.scheduleRender()}),500);this.viewModel.load().then((()=>clearTimeout(a)))}get allowedFormats(){return this.viewModel.allowedFormats}set allowedFormats(e){this.viewModel.allowedFormats=e}get allowedLayouts(){return this.viewModel.allowedLayouts}set allowedLayouts(e){this.viewModel.allowedLayouts=e}get error(){return this.viewModel.error}get extraParameters(){return this.viewModel.extraParameters}set extraParameters(e){this.viewModel.extraParameters=e}get includeDefaultTemplates(){return this.viewModel.includeDefaultTemplates}set includeDefaultTemplates(e){this.viewModel.includeDefaultTemplates=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get portal(){return this.viewModel.portal}set portal(e){this.viewModel.portal=e}get printServiceUrl(){return this.viewModel.printServiceUrl}set printServiceUrl(e){this.viewModel.printServiceUrl=e}get templateCustomTextElements(){return this.viewModel.templateCustomTextElements}set templateCustomTextElements(e){this.viewModel.templateCustomTextElements=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}render(){const{attributionEnabled:e,author:t,copyright:a,dpi:i,format:s,height:n,layout:o,legendEnabled:l,northArrowEnabled:r,scaleEnabled:p,scale:d,width:c}=this.templateOptions,u="ready"!==this.viewModel?.state,h=this._renderTitleOrFileNameSection(),{includeDefaultTemplates:m,messages:_,viewModel:b}=this,g=this.viewModel?.templatesInfo?.format?.choiceList||[],T=g.length>0?g.map((e=>x("option",{key:e,selected:e===s,value:e},e.toUpperCase()))):x("option",{key:"format-default-option"},_.formatDefaultOption),w=x("div",{class:$.formSectionContainer},x("label",null,_.fileFormatTitle,x("select",{class:v.select,onchange:this._updateFromOption,"data-target-property":"format",bind:this},T))),O=this.viewModel?.templatesInfo?.layout?.choiceList,C=O?.length?O.map((e=>x("option",{key:e,selected:e===o,value:e},_[e]||e))):x("option",{key:"layout-default-option"},_.layoutDefaultOption),L=x("div",{class:$.formSectionContainer},x("label",null,_.layoutTitle,x("select",{class:v.select,onchange:this._updateFromOption,"data-target-property":"layout",bind:this},C))),k=x("div",{class:$.formSectionContainer},x("label",null,_.dpi,x("input",{type:"number",class:this.classes($.inputText,v.input),"data-input-name":"dpi",onchange:this._handleDPIChange,value:`${i}`,min:"1",tabIndex:0,bind:this}))),S=x("div",{class:this.classes($.scaleInfoContainer,$.formSectionContainer)},x("label",null,x("input",{"data-option-name":"scaleEnabled",checked:p,type:"checkbox",tabIndex:0,onchange:this._toggleInputValue,bind:this}),_.scale),x("div",{class:$.scaleInputContainer},x("input",{"aria-label":_.scaleLabel,"aria-valuenow":`${d}`,role:"spinbutton",type:"number",class:this.classes($.inputText,v.input,$.scaleInput),tabIndex:0,"data-input-name":"scale",onchange:this._updateInputValue,disabled:!p,value:`${d}`,bind:this}),x("button",{type:"button","aria-label":_.reset,class:this.classes(v.widgetButton,$.refreshButton,f.refresh),tabIndex:0,onclick:this._resetToCurrentScale,bind:this}))),M=this._advancedOptionsVisibleForLayout?x("div",{"aria-labelledby":`${this.id}__advancedOptionsForLayout`,class:$.advancedOptionsContainer},S,x("div",{class:this.classes($.authorInfoContainer,$.formSectionContainer)},x("label",null,_.author,x("input",{type:"text",value:t??"",class:this.classes($.inputText,v.input),tabIndex:0,"data-input-name":"author",onchange:this._updateInputValue,bind:this}))),x("div",{class:this.classes($.copyrightInfoContainer,$.formSectionContainer)},x("label",null,_.copyright,x("input",{type:"text",class:this.classes($.inputText,v.input),tabIndex:0,value:a??"","data-input-name":"copyright",onchange:this._updateInputValue,bind:this}))),k,x("div",{class:this.classes($.legendInfoContainer,$.formSectionContainer)},x("label",null,x("input",{type:"checkbox","data-option-name":"legendEnabled",tabIndex:0,checked:l,onchange:this._toggleInputValue,bind:this}),_.legend)),this.viewModel.templateToNorthArrowInfo[o]?x("div",{class:this.classes($.legendInfoContainer,$.formSectionContainer),key:"north-arrow"},x("label",null,x("input",{type:"checkbox","data-option-name":"northArrowEnabled",tabIndex:0,checked:r,onchange:this._toggleInputValue,bind:this}),_.northArrow)):null,this._renderCustomTextElementSection()):null,F=this._advancedOptionsVisibleForMapOnly?x("div",{"aria-labelledby":`${this.id}__advancedOptionsForMapOnly`,class:$.advancedOptionsContainer},S,k,x("div",{class:$.formSectionContainer},x("label",null,x("input",{"data-option-name":"attributionEnabled",type:"checkbox",onchange:this._toggleInputValue,tabIndex:0,checked:e,bind:this}),_.attribution)),this._renderCustomTextElementSection()):null,E=this._layoutTabSelected?x("section",{key:"esri-print__layoutContent",id:`${this.id}__layoutContent`,"aria-labelledby":`${this.id}__layoutTab`,class:$.layoutSection,role:"tabpanel"},x("div",{class:$.panelContainer},h,L,this._layoutTabSelected?w:null),x("div",{class:this.classes($.panelContainer,$.advancedOptionsSection)},x("button",{"aria-label":_.advancedOptions,"aria-expanded":this._advancedOptionsVisibleForLayout?"true":"false",class:$.advancedOptionsButton,onclick:this._showAdvancedOptions,bind:this,type:"button"},x("div",{class:$.advancedOptionsButtonContainer},x("span",{"aria-hidden":"true",class:this.classes(f.rightTriangleArrow,$.advancedOptionsButtonIconClosed)}),x("span",{"aria-hidden":"true",class:this.classes(f.leftTriangleArrow,$.advancedOptionsButtonIconClosed_RTL)}),x("span",{"aria-hidden":"true",class:this.classes(f.downArrow,$.advancedOptionsButtonIconOpened)}),x("span",{class:$.advancedOptionsButtonTitle},_.advancedOptions))),M)):x("section",{key:"esri-print__mapOnlyContent",id:`${this.id}__mapOnlyContent`,"aria-labelledby":`${this.id}__mapOnlyTab`,class:$.mapOnlySection,role:"tabpanel"},x("div",{class:$.panelContainer},h,this._layoutTabSelected?null:w,x("div",{class:this.classes($.sizeContainer,$.formSectionContainer)},x("div",{class:$.widthContainer},x("label",null,_.width,x("input",{type:"number",class:this.classes($.inputText,v.input),"data-input-name":"width",onchange:this._updateInputValue,value:`${c}`,tabIndex:0,bind:this}))),x("div",{class:$.heightContainer},x("label",null,_.height,x("input",{type:"number",class:this.classes($.inputText,v.input),"data-input-name":"height",onchange:this._updateInputValue,value:`${n}`,tabIndex:0,bind:this}))),x("button",{type:"button","aria-label":_.swap,class:this.classes(v.widgetButton,$.swapButton,f.swap),onclick:this._switchInput,tabIndex:0,bind:this})),x("div",{class:this.classes($.panelContainer,$.advancedOptionsSection)},x("button",{"aria-label":_.advancedOptions,"aria-expanded":this._advancedOptionsVisibleForMapOnly?"true":"false",type:"button",class:$.advancedOptionsButton,onclick:this._showAdvancedOptions,bind:this},x("div",{class:$.advancedOptionsButtonContainer},x("span",{"aria-hidden":"true",class:this.classes(f.rightTriangleArrow,$.advancedOptionsButtonIconClosed)}),x("span",{"aria-hidden":"true",class:this.classes(f.leftTriangleArrow,$.advancedOptionsButtonIconClosed_RTL)}),x("span",{"aria-hidden":"true",class:this.classes(f.downArrow,$.advancedOptionsButtonIconOpened)}),x("span",{class:$.advancedOptionsButtonTitle},_.advancedOptions))),F))),P=this.exportedLinks.toArray(),V=this._renderExportedLink(P),A={[v.buttonDisabled]:u||!o&&!s},{view:B}=this,D=!B||"2d"!==B.type,N=x("div",{class:$.panelError},D?_.sceneViewError:_.serviceError),j=x("div",null,x("ul",{class:$.layoutTabList,role:"tablist",onclick:this._toggleLayoutPanel,onkeydown:this._handleLayoutPanelKeyDown,bind:this},x("li",{afterCreate:this._focusOnTabChange,afterUpdate:this._focusOnTabChange,id:`${this.id}__layoutTab`,"data-tab-id":I.layout,class:$.layoutTab,role:"tab",tabIndex:0,"aria-selected":`${this._layoutTabSelected}`},_.layoutTab),x("li",{afterCreate:this._focusOnTabChange,afterUpdate:this._focusOnTabChange,id:`${this.id}__mapOnlyTab`,"data-tab-id":I.mapOnly,class:$.layoutTab,role:"tab",tabIndex:0,"aria-selected":`${!this._layoutTabSelected}`},_.mapOnlyTab)),E,x("button",{"aria-label":_.exportDescription,type:"button",class:this.classes($.printButton,v.button,A),disabled:u,tabIndex:0,onclick:this._handlePrintMap,bind:this},_.export),m&&b.defaultTemplates.length>0?this._renderTemplateSectionTrigger():null,x("div",{class:$.exportedFilesContainer,afterUpdate:this._scrollExportIntoView,bind:this},x(y,{class:$.exportedFilesTitle,level:this.headingLevel},_.exportText),P.length>0?null:x("div",null,x("div",null,_.exportHint)),V)),U=x("div",{class:$.printWidgetContainer},x("header",{class:$.headerTitle},_.export),this.error||D||!this.view?N:j),R="initializing"===this.viewModel?.state?this._renderLoader():U;return x("div",{afterCreate:this._handleRootAfterCreate,bind:this,class:this.classes($.base,v.widget,v.panel)},R)}_renderTemplateSectionTrigger(){const{messages:e,_templateListPopover:t}=this,a=t.open;return x("button",{afterCreate:e=>this._selectTemplateNode=e,"aria-controls":a?`${this.id}__template-selection`:"","aria-label":e.selectTemplateDescription,"aria-pressed":a.toString(),class:this.classes(v.button,v.buttonTertiary,$.templateButton),onclick:this._handleSelectTemplateClick,title:e.selectTemplateDescription,type:"button"},e.selectTemplate)}_renderCustomTextElementSection(){const{templateOptions:{customTextElements:e}}=this;return e?x("div",{class:$.formSectionContainer,key:"custom-text-elements"},e.map((e=>{const[t,a]=Object.entries(e)[0];return"date"===t?null:x("label",{key:t},t,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-custom":!0,"data-input-name":t,onchange:this._updateInputValue,type:"text",value:a}))}))):null}_renderTemplateList(){const{messages:e,messagesCommon:t,viewModel:a}=this,{defaultTemplates:i}=a,s=e.selectTemplateDescription,n=`${this.id}__template-selection`;return x("div",{class:this.classes($.templateList,v.widget,v.panel),id:n},x(y,{class:v.menuHeader,level:this.headingLevel},e.selectTemplate),x("div",{class:$.templateListScroller},x("ul",{afterCreate:this._handleTemplateListCreation,"aria-activedescendant":`${this.id}__template-item--${this._focusedTemplateIndex}`,"aria-label":s,class:v.menuList,key:"templates",onblur:this._handleTemplateChildBlur,onclick:this._handleTemplateListClick,onkeydown:this._handleTemplateListKeyDown,role:"listbox",tabIndex:0,title:s},i.toArray().map(((t,a)=>{const i=a===this._focusedTemplateIndex,s=t.description??"",n=t.label??"";return x("li",{"aria-label":s,class:this.classes(v.menuItem,{[v.menuItemFocus]:i}),"data-template":t,id:`${this.id}__template-item--${a}`,key:n,title:s},V(n)?e.mapOnlyTab:n)})))),x("div",{class:$.templateListFooter},x("button",{type:"button",class:this.classes(v.button,v.buttonSecondary),onblur:this._handleTemplateChildBlur,onclick:this._handleCloseTemplateSelection},t.done)))}_applyTemplate(e){const{format:t,layout:a,layoutOptions:i}=e,{templateOptions:s}=this;this._templateListPopover.open=!1,this._toggleTab("map-only"===a?I.mapOnly:I.layout,!1),t&&(s.format=t),a&&(s.layout=a),this._focusedTemplateIndex=null,s.legendEnabled=i?.legend??s.legendEnabled,this._handleCloseTemplateSelection()}_renderTitleOrFileNameSection(){const{templateOptions:e,messages:t}=this;let a,i,s,n;return this._layoutTabSelected?(a=t.title,i=t.titlePlaceHolder,s=e.title,n="title"):(a=t.fileName,i=t.fileNamePlaceHolder,s=e.fileName,n="fileName"),x("div",{class:$.formSectionContainer,key:n},x("label",null,a,x("input",{type:"text",tabIndex:0,placeholder:i,class:this.classes($.inputText,v.input),value:s??"","data-input-name":n,onchange:this._updateInputValue,bind:this})))}_handleRootAfterCreate(e){this._rootNode=e,this.addHandles(a(e,"scroll",(()=>{this._templateListPopover.open&&this._handleCloseTemplateSelection()})))}_focusOnTabChange(e){if(!this._activeTabFocusRequested)return;const t=e.getAttribute("data-tab-id");("layoutTab"===t&&this._layoutTabSelected||"mapOnlyTab"===t&&!this._layoutTabSelected)&&(e.focus(),this._activeTabFocusRequested=!1)}_renderLoader(){const e={[$.loader]:this._awaitingServerResponse};return x("div",{class:this.classes(e),key:"loader"})}_createFileLink(e,t){const a=t||this.messages.untitled,i=e.format.toLowerCase(),s=i.includes("png")?"png":i,n=a+s;return void 0!==this._exportedFileNameMap[n]?this._exportedFileNameMap[n]++:this._exportedFileNameMap[n]=0,new m({name:a,extension:s,count:this._exportedFileNameMap[n]})}_resetToCurrentScale(){this.templateOptions.scale=this.viewModel.view?.scale}_updateCustomTextElementValue(e,t,a){e.find((e=>{const[a]=Object.entries(e)[0];return a===t}))[t]=a}_updateInputValue(e){const t=e.target,a=t.getAttribute("data-input-name"),i=!!t["data-input-custom"],{templateOptions:s}=this;if(i)return void this._updateCustomTextElementValue(s.customTextElements,a,t.value);let n;if("number"===t.type){if(!P(t.valueAsNumber)){const e=s[a];return void(t.value=`${e}`)}n=t.valueAsNumber}else n=t.value;s[a]=n}_handleDPIChange(e){this._updateInputValue(e);const t=e.currentTarget.valueAsNumber,{height:a,width:i}=E(t),{templateOptions:s}=this;s.height=a,s.width=i}_handlePrintMap(){this._pendingExportScroll=!0;const{templateOptions:e}=this,t=this.viewModel.toPrintTemplate(e),a=this._layoutTabSelected?t.layoutOptions?.titleText:e.fileName,i=this._createFileLink(t,a);this.exportedLinks.add(i),this.emit("submit",{link:i}),this.viewModel.print(t).then((e=>{i.set({url:e&&e.url,state:"ready"})})).catch((e=>{i.set({error:e,state:"error"})})).then((()=>{this.emit("complete",{link:i}),this.scheduleRender()}))}_updateFromOption(e){const t=e.target,a=t.selectedOptions?t.selectedOptions.item(0)?.value:t.options[t.selectedIndex].value,i=t.getAttribute("data-target-property");this.templateOptions[i]=a}_switchInput(){[this.templateOptions.width,this.templateOptions.height]=[this.templateOptions.height,this.templateOptions.width]}_showAdvancedOptions(){this._layoutTabSelected?this._advancedOptionsVisibleForLayout=!this._advancedOptionsVisibleForLayout:this._advancedOptionsVisibleForMapOnly=!this._advancedOptionsVisibleForMapOnly}_scrollExportIntoView(){if(!this._pendingExportScroll)return;this._pendingExportScroll=!1;const e=this._rootNode;if(!e)return;const{clientHeight:t,scrollHeight:a}=e,i=a-t;i>0&&(e.scrollTop=i)}_toggleInputValue(e){const t=e.target,a=t.getAttribute("data-option-name");this.templateOptions[a]=t.checked,"scaleEnabled"===a&&(this.templateOptions[a]||this._resetToCurrentScale())}_renderExportedLink(e){const t=this.messages;return e.map((e=>{const{error:a,url:i,state:s}=e,n=e.formattedName??"",o="error"===s,l="pending"===s,d="ready"===s,c={[v.anchorDisabled]:l||o};let u=i||null;u&&(u=r(u));const h=p(i,location.href),m={[f.loadingIndicator]:l,[v.rotating]:l,[f.download]:h&&d,[f.launchLinkExternal]:!h&&d,[f.error]:o,[$.exportedFileError]:o},_={[$.exportedFileError]:o};let b;b=l?t.pending:d?t.ready:t.errorMessage;const y=o?"print-task:cim-symbol-unsupported"===a?.name?t.exportWebMapCIMError:t.exportWebMapError:"";return x("div",{"aria-label":b,class:$.exportedFile,"data-item":e,key:n,onclick:this._removeLink,title:y},x("a",{"aria-label":`${n}. ${t.linkReady}`,download:n,href:u??"",rel:"noreferrer",tabIndex:0,target:"_blank",class:this.classes($.exportedFileLink,v.anchor,c),onclick:this._handleLinkClick},x("span",{class:this.classes(m)}),x("span",{class:this.classes($.exportedFileLinkTitle,_)},n)))}))}_toggleLayoutPanel(e){const t=e.target;this._toggleTab(t.getAttribute("data-tab-id"))}_toggleTab(e,t=!0){if(this._layoutTabSelected=e===I.layout,this._layoutTabSelected){const e=this.viewModel?.templatesInfo?.layout?.choiceList;this.templateOptions.layout=e?e[0]:"letter-ansi-a-landscape"}else this.templateOptions.layout=L;t&&(this._activeTabFocusRequested=!0)}_handleLayoutPanelKeyDown(e){const t=i(e),a=e.target.getAttribute("data-tab-id");if(T(t))return this._toggleTab(a),e.preventDefault(),void e.stopPropagation();"ArrowLeft"!==t&&"ArrowRight"!==t||(this._toggleTab(a===I.layout?I.mapOnly:I.layout),e.preventDefault(),e.stopPropagation())}};function B(e){return e?.["data-template"]}e([d()],A.prototype,"allowedFormats",null),e([d()],A.prototype,"allowedLayouts",null),e([d()],A.prototype,"error",null),e([d({type:C})],A.prototype,"exportedLinks",void 0),e([d()],A.prototype,"extraParameters",null),e([d()],A.prototype,"headingLevel",void 0),e([d()],A.prototype,"iconClass",void 0),e([d()],A.prototype,"icon",void 0),e([d()],A.prototype,"includeDefaultTemplates",null),e([d()],A.prototype,"label",null),e([d(),O("esri/widgets/Print/t9n/Print")],A.prototype,"messages",void 0),e([d(),O("esri/t9n/common")],A.prototype,"messagesCommon",void 0),e([d()],A.prototype,"portal",null),e([d()],A.prototype,"printServiceUrl",null),e([d()],A.prototype,"templateCustomTextElements",null),e([d({type:b})],A.prototype,"templateOptions",void 0),e([d()],A.prototype,"view",null),e([d({type:_})],A.prototype,"viewModel",void 0),A=e([c("esri.widgets.Print")],A);const D=A;export{D as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{on as a,eventKey as i}from"../core/events.js";import{clone as s}from"../core/lang.js";import n from"../core/Logger.js";import{watch as o,initial as l}from"../core/reactiveUtils.js";import{addProxy as r,hasSameOrigin as p}from"../core/urlUtils.js";import{property as d}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import{getToken as u}from"../rest/utils.js";import h from"./Widget.js";import m from"./Print/FileLink.js";import _ from"./Print/PrintViewModel.js";import b from"./Print/TemplateOptions.js";import{globalCss as v}from"./support/globalCss.js";import{Heading as y}from"./support/Heading.js";import{legacyIcon as f}from"./support/legacyIcon.js";import g from"./support/Popover.js";import{isActivationKey as T,keepMenuItemWithinView as w}from"./support/widgetUtils.js";import{messageBundle as O}from"./support/decorators/messageBundle.js";import{tsx as x}from"./support/jsxFactory.js";const C=t.ofType(m),L="MAP_ONLY";var I;!function(e){e.layout="layoutTab",e.mapOnly="mapOnlyTab"}(I||(I={}));const k="esri-print",S=`${k}__advanced-options-button`,$={base:k,widgetIcon:f.printer,headerTitle:`${k}__header-title`,inputText:`${k}__input-text`,layoutTabList:`${k}__layout-tab-list`,layoutTab:`${k}__layout-tab`,layoutSection:`${k}__layout-section`,mapOnlySection:`${k}__map-only-section`,scaleInput:`${k}__scale-input`,templateList:`${k}__template-list`,templateListScroller:`${k}__template-list-scroller`,templateListFooter:`${k}__template-list-footer`,loader:`${k}__loader`,advancedOptionsButton:S,advancedOptionsButtonContainer:`${S}-container`,advancedOptionsButtonTitle:`${S}-title`,advancedOptionsButtonIconOpened:`${S}-icon--opened`,advancedOptionsButtonIconClosed:`${S}-icon--closed`,advancedOptionsButtonIconClosed_RTL:`${S}-icon--closed-rtl`,refreshButton:`${k}__refresh-button`,swapButton:`${k}__swap-button`,linkButton:`${k}__link-button`,printButton:`${k}__export-button`,templateButton:`${k}__template-button`,formSectionContainer:`${k}__form-section-container`,advancedOptionsSection:`${k}__advanced-options-section`,advancedOptionsContainer:`${k}__advanced-options-container`,authorInfoContainer:`${k}__author-info-container`,copyrightInfoContainer:`${k}__copyright-info-container`,exportedFilesContainer:`${k}__export-panel-container`,exportedFilesTitle:`${k}__export-title`,exportedFile:`${k}__exported-file`,exportedFileLink:`${k}__exported-file-link`,exportedFileLinkTitle:`${k}__exported-file-link-title`,heightContainer:`${k}__height-container`,legendInfoContainer:`${k}__legend-info-container`,printWidgetContainer:`${k}__container`,panelContainer:`${k}__panel-container`,scaleInfoContainer:`${k}__scale-info-container`,scaleInputContainer:`${k}__scale-input-container`,sizeContainer:`${k}__size-container`,widthContainer:`${k}__width-container`,panelError:`${k}__panel--error`,exportedFileError:`${k}__exported-file--error`},M="User sets an invalid layout, resetting it to the default valid one...",F="User sets an invalid format, resetting it to the default valid one...";function E(e){const t=8.3333,a=11.4583;return{width:Math.round(e*t),height:Math.round(e*a)}}function P(e){return!isNaN(e)&&e>0}function V(e){return e?.toUpperCase()===L}let A=class extends h{constructor(e,t){super(e,t),this._activeTabFocusRequested=!1,this._advancedOptionsVisibleForLayout=!1,this._advancedOptionsVisibleForMapOnly=!1,this._awaitingServerResponse=!1,this._exportedFileNameMap={},this._focusedTemplateIndex=0,this._layoutTabSelected=!0,this._pendingExportScroll=!1,this._rootNode=null,this._selectTemplateNode=null,this._templateListPopover=new g({owner:this,placement:"top",offset:[0,-100],anchorElement:()=>this._selectTemplateNode,renderContentFunction:this._renderTemplateList}),this.exportedLinks=new C,this.headingLevel=3,this.iconClass=$.widgetIcon,this.icon=null,this.templateOptions=new b,this.viewModel=new _,this._handleTemplateListCreation=e=>e.focus(),this._handleTemplateChildBlur=e=>{const t=e.relatedTarget?.closest(`.${$.templateList}`);t||this._handleCloseTemplateSelection()},this._handleCloseTemplateSelection=()=>{this._focusedTemplateIndex=0,this._templateListPopover.open=!1,this._selectTemplateNode?.focus()},this._handleSelectTemplateClick=()=>{this._focusedTemplateIndex=0,this._templateListPopover.open=!0},this._handleTemplateListClick=e=>{const t=B(e.target);t&&this._applyTemplate(t)},this._handleTemplateListKeyDown=e=>{if(this._focusedTemplateIndex){if(T(e.key))return this._applyTemplate(this.viewModel.defaultTemplates.at(this._focusedTemplateIndex)),void e.preventDefault();if("ArrowDown"===e.key||"ArrowUp"===e.key){const{defaultTemplates:t}=this.viewModel,a="ArrowDown"===e.key?1:-1,i=(this._focusedTemplateIndex+a)%t.length;this._focusedTemplateIndex=i<0?t.length-1:i;const s=e.currentTarget;w(s.querySelectorAll(`.${v.menuItem}`)[this._focusedTemplateIndex],s.parentElement),e.preventDefault()}"Escape"===e.key&&this._handleCloseTemplateSelection()}},this._removeLink=e=>{const t=e.currentTarget["data-item"];t&&"error"===t.state&&this.exportedLinks.remove(t)},this._handleLinkClick=e=>{const t=e.currentTarget,{href:a}=t,i=u(this.viewModel.effectivePrintServiceUrl);if(!i)return;if(!e.isTrusted)return void e.stopPropagation();e.preventDefault();const s=new URL(a);s.searchParams.set("token",i),t.href=s.href,t.click(),t.href=a},this._focusOnTabChange=this._focusOnTabChange.bind(this)}initialize(){this.addHandles([o((()=>this.viewModel?.templatesInfo),(e=>{const{format:t,layout:a}=this.templateOptions;if(e){const i=a===e.layout.defaultValue||V(a)||e.layout.choiceList&&a&&e.layout.choiceList.includes(a),s=t===e.format.defaultValue||e.format.choiceList&&t&&e.format.choiceList.includes(t);i||(a&&n.getLogger(this).warn(M),this.templateOptions.layout=e.layout.defaultValue),s||(t&&n.getLogger(this).warn(F),this.templateOptions.format=e.format.defaultValue),V(a)&&(this._layoutTabSelected=!1)}}),l),o((()=>this.templateOptions?.format),(e=>{const{viewModel:{templatesInfo:t}}=this;if(t&&e){let a=!1;t.format.choiceList&&t.format.choiceList.forEach((t=>{t.toUpperCase()===e.toUpperCase()&&(this.templateOptions.format=t,a=!0)})),a||(this.templateOptions.format=t.format.defaultValue,n.getLogger(this).warn(F)),this.scheduleRender()}}),l),o((()=>this.templateOptions?.layout),(e=>{const{viewModel:{templatesInfo:t}}=this;if(t&&e){this._layoutTabSelected=!V(e);let a=!this._layoutTabSelected;a||t.layout.choiceList&&t.layout.choiceList.forEach((t=>{t.toUpperCase()===e.toUpperCase()&&(this.templateOptions.layout=t,a=!0)})),a||(this.templateOptions.layout=t.layout.defaultValue,n.getLogger(this).warn(M));const i=this.viewModel.effectiveTemplateCustomTextElements[this.templateOptions.layout];this.templateOptions.customTextElements=i?s(i):null,this.scheduleRender()}}),l),o((()=>this.templateOptions?.dpi),(e=>{e<=0?this.templateOptions.dpi=1:this.scheduleRender()}),l),o((()=>this.viewModel?.view?.scale),(e=>{const{scale:t,scaleEnabled:a}=this.templateOptions;a&&t||(this.templateOptions.scale=e)}),l)]);const{height:e,width:t}=this.templateOptions;this.templateOptions.width=t||800,this.templateOptions.height=e||1100;const a=setTimeout((()=>{this._awaitingServerResponse=!0,this.scheduleRender()}),500);this.viewModel.load().then((()=>clearTimeout(a)))}get allowedFormats(){return this.viewModel.allowedFormats}set allowedFormats(e){this.viewModel.allowedFormats=e}get allowedLayouts(){return this.viewModel.allowedLayouts}set allowedLayouts(e){this.viewModel.allowedLayouts=e}get error(){return this.viewModel.error}get extraParameters(){return this.viewModel.extraParameters}set extraParameters(e){this.viewModel.extraParameters=e}get includeDefaultTemplates(){return this.viewModel.includeDefaultTemplates}set includeDefaultTemplates(e){this.viewModel.includeDefaultTemplates=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get portal(){return this.viewModel.portal}set portal(e){this.viewModel.portal=e}get printServiceUrl(){return this.viewModel.printServiceUrl}set printServiceUrl(e){this.viewModel.printServiceUrl=e}get templateCustomTextElements(){return this.viewModel.templateCustomTextElements}set templateCustomTextElements(e){this.viewModel.templateCustomTextElements=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}render(){const{attributionEnabled:e,author:t,copyright:a,dpi:i,format:s,height:n,layout:o,legendEnabled:l,northArrowEnabled:r,scaleEnabled:p,scale:d,width:c}=this.templateOptions,u="ready"!==this.viewModel?.state,h=this._renderTitleOrFileNameSection(),{includeDefaultTemplates:m,messages:_,viewModel:b}=this,g=this.viewModel?.templatesInfo?.format?.choiceList||[],T=g.length>0?g.map((e=>x("option",{key:e,selected:e===s,value:e},e.toUpperCase()))):x("option",{key:"format-default-option"},_.formatDefaultOption),w=x("div",{class:$.formSectionContainer},x("label",null,_.fileFormatTitle,x("select",{bind:this,class:v.select,"data-target-property":"format",onchange:this._updateFromOption},T))),O=this.viewModel?.templatesInfo?.layout?.choiceList,C=O?.length?O.map((e=>x("option",{key:e,selected:e===o,value:e},_[e]||e))):x("option",{key:"layout-default-option"},_.layoutDefaultOption),L=x("div",{class:$.formSectionContainer},x("label",null,_.layoutTitle,x("select",{bind:this,class:v.select,"data-target-property":"layout",onchange:this._updateFromOption},C))),k=x("div",{class:$.formSectionContainer},x("label",null,_.dpi,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":"dpi",min:"1",onchange:this._handleDPIChange,tabIndex:0,type:"number",value:`${i}`}))),S=x("div",{class:this.classes($.scaleInfoContainer,$.formSectionContainer)},x("label",null,x("input",{bind:this,checked:p,"data-option-name":"scaleEnabled",onchange:this._toggleInputValue,tabIndex:0,type:"checkbox"}),_.scale),x("div",{class:$.scaleInputContainer},x("input",{"aria-label":_.scaleLabel,"aria-valuenow":`${d}`,bind:this,class:this.classes($.inputText,v.input,$.scaleInput),"data-input-name":"scale",disabled:!p,onchange:this._updateInputValue,role:"spinbutton",tabIndex:0,type:"number",value:`${d}`}),x("button",{"aria-label":_.reset,bind:this,class:this.classes(v.widgetButton,$.refreshButton,f.refresh),onclick:this._resetToCurrentScale,tabIndex:0,type:"button"}))),M=this._advancedOptionsVisibleForLayout?x("div",{"aria-labelledby":`${this.id}__advancedOptionsForLayout`,class:$.advancedOptionsContainer},S,x("div",{class:this.classes($.authorInfoContainer,$.formSectionContainer)},x("label",null,_.author,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":"author",onchange:this._updateInputValue,tabIndex:0,type:"text",value:t??""}))),x("div",{class:this.classes($.copyrightInfoContainer,$.formSectionContainer)},x("label",null,_.copyright,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":"copyright",onchange:this._updateInputValue,tabIndex:0,type:"text",value:a??""}))),k,x("div",{class:this.classes($.legendInfoContainer,$.formSectionContainer)},x("label",null,x("input",{bind:this,checked:l,"data-option-name":"legendEnabled",onchange:this._toggleInputValue,tabIndex:0,type:"checkbox"}),_.legend)),this.viewModel.templateToNorthArrowInfo[o]?x("div",{class:this.classes($.legendInfoContainer,$.formSectionContainer),key:"north-arrow"},x("label",null,x("input",{bind:this,checked:r,"data-option-name":"northArrowEnabled",onchange:this._toggleInputValue,tabIndex:0,type:"checkbox"}),_.northArrow)):null,this._renderCustomTextElementSection()):null,F=this._advancedOptionsVisibleForMapOnly?x("div",{"aria-labelledby":`${this.id}__advancedOptionsForMapOnly`,class:$.advancedOptionsContainer},S,k,x("div",{class:$.formSectionContainer},x("label",null,x("input",{bind:this,checked:e,"data-option-name":"attributionEnabled",onchange:this._toggleInputValue,tabIndex:0,type:"checkbox"}),_.attribution)),this._renderCustomTextElementSection()):null,E=this._layoutTabSelected?x("section",{"aria-labelledby":`${this.id}__layoutTab`,class:$.layoutSection,id:`${this.id}__layoutContent`,key:"esri-print__layoutContent",role:"tabpanel"},x("div",{class:$.panelContainer},h,L,this._layoutTabSelected?w:null),x("div",{class:this.classes($.panelContainer,$.advancedOptionsSection)},x("button",{"aria-expanded":this._advancedOptionsVisibleForLayout?"true":"false","aria-label":_.advancedOptions,bind:this,class:$.advancedOptionsButton,onclick:this._showAdvancedOptions,type:"button"},x("div",{class:$.advancedOptionsButtonContainer},x("span",{"aria-hidden":"true",class:this.classes(f.rightTriangleArrow,$.advancedOptionsButtonIconClosed)}),x("span",{"aria-hidden":"true",class:this.classes(f.leftTriangleArrow,$.advancedOptionsButtonIconClosed_RTL)}),x("span",{"aria-hidden":"true",class:this.classes(f.downArrow,$.advancedOptionsButtonIconOpened)}),x("span",{class:$.advancedOptionsButtonTitle},_.advancedOptions))),M)):x("section",{"aria-labelledby":`${this.id}__mapOnlyTab`,class:$.mapOnlySection,id:`${this.id}__mapOnlyContent`,key:"esri-print__mapOnlyContent",role:"tabpanel"},x("div",{class:$.panelContainer},h,this._layoutTabSelected?null:w,x("div",{class:this.classes($.sizeContainer,$.formSectionContainer)},x("div",{class:$.widthContainer},x("label",null,_.width,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":"width",onchange:this._updateInputValue,tabIndex:0,type:"number",value:`${c}`}))),x("div",{class:$.heightContainer},x("label",null,_.height,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":"height",onchange:this._updateInputValue,tabIndex:0,type:"number",value:`${n}`}))),x("button",{"aria-label":_.swap,bind:this,class:this.classes(v.widgetButton,$.swapButton,f.swap),onclick:this._switchInput,tabIndex:0,type:"button"})),x("div",{class:this.classes($.panelContainer,$.advancedOptionsSection)},x("button",{"aria-expanded":this._advancedOptionsVisibleForMapOnly?"true":"false","aria-label":_.advancedOptions,bind:this,class:$.advancedOptionsButton,onclick:this._showAdvancedOptions,type:"button"},x("div",{class:$.advancedOptionsButtonContainer},x("span",{"aria-hidden":"true",class:this.classes(f.rightTriangleArrow,$.advancedOptionsButtonIconClosed)}),x("span",{"aria-hidden":"true",class:this.classes(f.leftTriangleArrow,$.advancedOptionsButtonIconClosed_RTL)}),x("span",{"aria-hidden":"true",class:this.classes(f.downArrow,$.advancedOptionsButtonIconOpened)}),x("span",{class:$.advancedOptionsButtonTitle},_.advancedOptions))),F))),P=this.exportedLinks.toArray(),V=this._renderExportedLink(P),A={[v.buttonDisabled]:u||!o&&!s},{view:B}=this,D=!B||"2d"!==B.type,N=x("div",{class:$.panelError},D?_.sceneViewError:_.serviceError),j=x("div",null,x("ul",{bind:this,class:$.layoutTabList,onclick:this._toggleLayoutPanel,onkeydown:this._handleLayoutPanelKeyDown,role:"tablist"},x("li",{afterCreate:this._focusOnTabChange,afterUpdate:this._focusOnTabChange,"aria-selected":`${this._layoutTabSelected}`,class:$.layoutTab,"data-tab-id":I.layout,id:`${this.id}__layoutTab`,role:"tab",tabIndex:0},_.layoutTab),x("li",{afterCreate:this._focusOnTabChange,afterUpdate:this._focusOnTabChange,"aria-selected":`${!this._layoutTabSelected}`,class:$.layoutTab,"data-tab-id":I.mapOnly,id:`${this.id}__mapOnlyTab`,role:"tab",tabIndex:0},_.mapOnlyTab)),E,x("button",{"aria-label":_.exportDescription,bind:this,class:this.classes($.printButton,v.button,A),disabled:u,onclick:this._handlePrintMap,tabIndex:0,type:"button"},_.export),m&&b.defaultTemplates.length>0?this._renderTemplateSectionTrigger():null,x("div",{afterUpdate:this._scrollExportIntoView,bind:this,class:$.exportedFilesContainer},x(y,{class:$.exportedFilesTitle,level:this.headingLevel},_.exportText),P.length>0?null:x("div",null,x("div",null,_.exportHint)),V)),U=x("div",{class:$.printWidgetContainer},x("header",{class:$.headerTitle},_.export),this.error||D||!this.view?N:j),R="initializing"===this.viewModel?.state?this._renderLoader():U;return x("div",{afterCreate:this._handleRootAfterCreate,bind:this,class:this.classes($.base,v.widget,v.panel)},R)}_renderTemplateSectionTrigger(){const{messages:e,_templateListPopover:t}=this,a=t.open;return x("button",{afterCreate:e=>this._selectTemplateNode=e,"aria-controls":a?`${this.id}__template-selection`:"","aria-label":e.selectTemplateDescription,"aria-pressed":a.toString(),class:this.classes(v.button,v.buttonTertiary,$.templateButton),onclick:this._handleSelectTemplateClick,title:e.selectTemplateDescription,type:"button"},e.selectTemplate)}_renderCustomTextElementSection(){const{templateOptions:{customTextElements:e}}=this;return e?x("div",{class:$.formSectionContainer,key:"custom-text-elements"},e.map((e=>{const[t,a]=Object.entries(e)[0];return"date"===t?null:x("label",{key:t},t,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-custom":!0,"data-input-name":t,onchange:this._updateInputValue,type:"text",value:a}))}))):null}_renderTemplateList(){const{messages:e,messagesCommon:t,viewModel:a}=this,{defaultTemplates:i}=a,s=e.selectTemplateDescription,n=`${this.id}__template-selection`;return x("div",{class:this.classes($.templateList,v.widget,v.panel),id:n},x(y,{class:v.menuHeader,level:this.headingLevel},e.selectTemplate),x("div",{class:$.templateListScroller},x("ul",{afterCreate:this._handleTemplateListCreation,"aria-activedescendant":`${this.id}__template-item--${this._focusedTemplateIndex}`,"aria-label":s,class:v.menuList,key:"templates",onblur:this._handleTemplateChildBlur,onclick:this._handleTemplateListClick,onkeydown:this._handleTemplateListKeyDown,role:"listbox",tabIndex:0,title:s},i.toArray().map(((t,a)=>{const i=a===this._focusedTemplateIndex,s=t.description??"",n=t.label??"";return x("li",{"aria-label":s,class:this.classes(v.menuItem,{[v.menuItemFocus]:i}),"data-template":t,id:`${this.id}__template-item--${a}`,key:n,title:s},V(n)?e.mapOnlyTab:n)})))),x("div",{class:$.templateListFooter},x("button",{class:this.classes(v.button,v.buttonSecondary),onblur:this._handleTemplateChildBlur,onclick:this._handleCloseTemplateSelection,type:"button"},t.done)))}_applyTemplate(e){const{format:t,layout:a,layoutOptions:i}=e,{templateOptions:s}=this;this._templateListPopover.open=!1,this._toggleTab("map-only"===a?I.mapOnly:I.layout,!1),t&&(s.format=t),a&&(s.layout=a),this._focusedTemplateIndex=null,s.legendEnabled=i?.legend??s.legendEnabled,this._handleCloseTemplateSelection()}_renderTitleOrFileNameSection(){const{templateOptions:e,messages:t}=this;let a,i,s,n;return this._layoutTabSelected?(a=t.title,i=t.titlePlaceHolder,s=e.title,n="title"):(a=t.fileName,i=t.fileNamePlaceHolder,s=e.fileName,n="fileName"),x("div",{class:$.formSectionContainer,key:n},x("label",null,a,x("input",{bind:this,class:this.classes($.inputText,v.input),"data-input-name":n,onchange:this._updateInputValue,placeholder:i,tabIndex:0,type:"text",value:s??""})))}_handleRootAfterCreate(e){this._rootNode=e,this.addHandles(a(e,"scroll",(()=>{this._templateListPopover.open&&this._handleCloseTemplateSelection()})))}_focusOnTabChange(e){if(!this._activeTabFocusRequested)return;const t=e.getAttribute("data-tab-id");("layoutTab"===t&&this._layoutTabSelected||"mapOnlyTab"===t&&!this._layoutTabSelected)&&(e.focus(),this._activeTabFocusRequested=!1)}_renderLoader(){const e={[$.loader]:this._awaitingServerResponse};return x("div",{class:this.classes(e),key:"loader"})}_createFileLink(e,t){const a=t||this.messages.untitled,i=e.format.toLowerCase(),s=i.includes("png")?"png":i,n=a+s;return void 0!==this._exportedFileNameMap[n]?this._exportedFileNameMap[n]++:this._exportedFileNameMap[n]=0,new m({name:a,extension:s,count:this._exportedFileNameMap[n]})}_resetToCurrentScale(){this.templateOptions.scale=this.viewModel.view?.scale}_updateCustomTextElementValue(e,t,a){e.find((e=>{const[a]=Object.entries(e)[0];return a===t}))[t]=a}_updateInputValue(e){const t=e.target,a=t.getAttribute("data-input-name"),i=!!t["data-input-custom"],{templateOptions:s}=this;if(i)return void this._updateCustomTextElementValue(s.customTextElements,a,t.value);let n;if("number"===t.type){if(!P(t.valueAsNumber)){const e=s[a];return void(t.value=`${e}`)}n=t.valueAsNumber}else n=t.value;s[a]=n}_handleDPIChange(e){this._updateInputValue(e);const t=e.currentTarget.valueAsNumber,{height:a,width:i}=E(t),{templateOptions:s}=this;s.height=a,s.width=i}_handlePrintMap(){this._pendingExportScroll=!0;const{templateOptions:e}=this,t=this.viewModel.toPrintTemplate(e),a=this._layoutTabSelected?t.layoutOptions?.titleText:e.fileName,i=this._createFileLink(t,a);this.exportedLinks.add(i),this.emit("submit",{link:i}),this.viewModel.print(t).then((e=>{i.set({url:e&&e.url,state:"ready"})})).catch((e=>{i.set({error:e,state:"error"})})).then((()=>{this.emit("complete",{link:i}),this.scheduleRender()}))}_updateFromOption(e){const t=e.target,a=t.selectedOptions?t.selectedOptions.item(0)?.value:t.options[t.selectedIndex].value,i=t.getAttribute("data-target-property");this.templateOptions[i]=a}_switchInput(){[this.templateOptions.width,this.templateOptions.height]=[this.templateOptions.height,this.templateOptions.width]}_showAdvancedOptions(){this._layoutTabSelected?this._advancedOptionsVisibleForLayout=!this._advancedOptionsVisibleForLayout:this._advancedOptionsVisibleForMapOnly=!this._advancedOptionsVisibleForMapOnly}_scrollExportIntoView(){if(!this._pendingExportScroll)return;this._pendingExportScroll=!1;const e=this._rootNode;if(!e)return;const{clientHeight:t,scrollHeight:a}=e,i=a-t;i>0&&(e.scrollTop=i)}_toggleInputValue(e){const t=e.target,a=t.getAttribute("data-option-name");this.templateOptions[a]=t.checked,"scaleEnabled"===a&&(this.templateOptions[a]||this._resetToCurrentScale())}_renderExportedLink(e){const t=this.messages;return e.map((e=>{const{error:a,url:i,state:s}=e,n=e.formattedName??"",o="error"===s,l="pending"===s,d="ready"===s,c={[v.anchorDisabled]:l||o};let u=i||null;u&&(u=r(u));const h=p(i,location.href),m={[f.loadingIndicator]:l,[v.rotating]:l,[f.download]:h&&d,[f.launchLinkExternal]:!h&&d,[f.error]:o,[$.exportedFileError]:o},_={[$.exportedFileError]:o};let b;b=l?t.pending:d?t.ready:t.errorMessage;const y=o?"print-task:cim-symbol-unsupported"===a?.name?t.exportWebMapCIMError:t.exportWebMapError:"";return x("div",{"aria-label":b,class:$.exportedFile,"data-item":e,key:n,onclick:this._removeLink,title:y},x("a",{"aria-label":`${n}. ${t.linkReady}`,class:this.classes($.exportedFileLink,v.anchor,c),download:n,href:u??"",onclick:this._handleLinkClick,rel:"noreferrer",tabIndex:0,target:"_blank"},x("span",{class:this.classes(m)}),x("span",{class:this.classes($.exportedFileLinkTitle,_)},n)))}))}_toggleLayoutPanel(e){const t=e.target;this._toggleTab(t.getAttribute("data-tab-id"))}_toggleTab(e,t=!0){if(this._layoutTabSelected=e===I.layout,this._layoutTabSelected){const e=this.viewModel?.templatesInfo?.layout?.choiceList;this.templateOptions.layout=e?e[0]:"letter-ansi-a-landscape"}else this.templateOptions.layout=L;t&&(this._activeTabFocusRequested=!0)}_handleLayoutPanelKeyDown(e){const t=i(e),a=e.target.getAttribute("data-tab-id");if(T(t))return this._toggleTab(a),e.preventDefault(),void e.stopPropagation();"ArrowLeft"!==t&&"ArrowRight"!==t||(this._toggleTab(a===I.layout?I.mapOnly:I.layout),e.preventDefault(),e.stopPropagation())}};function B(e){return e?.["data-template"]}e([d()],A.prototype,"allowedFormats",null),e([d()],A.prototype,"allowedLayouts",null),e([d()],A.prototype,"error",null),e([d({type:C})],A.prototype,"exportedLinks",void 0),e([d()],A.prototype,"extraParameters",null),e([d()],A.prototype,"headingLevel",void 0),e([d()],A.prototype,"iconClass",void 0),e([d()],A.prototype,"icon",void 0),e([d()],A.prototype,"includeDefaultTemplates",null),e([d()],A.prototype,"label",null),e([d(),O("esri/widgets/Print/t9n/Print")],A.prototype,"messages",void 0),e([d(),O("esri/t9n/common")],A.prototype,"messagesCommon",void 0),e([d()],A.prototype,"portal",null),e([d()],A.prototype,"printServiceUrl",null),e([d()],A.prototype,"templateCustomTextElements",null),e([d({type:b})],A.prototype,"templateOptions",void 0),e([d()],A.prototype,"view",null),e([d({type:_})],A.prototype,"viewModel",void 0),A=e([c("esri.widgets.Print")],A);const D=A;export{D as default};
|