@arcgis/core 4.27.0-next.20230321 → 4.27.0-next.20230323
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/analysis/LineOfSightAnalysisObserver.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/02b6227c156ee0d8eb66.js +1 -0
- package/assets/esri/core/workers/chunks/{7e0c65aa61c2ff0c3504.js → 1c98b92933a48cf96c1e.js} +1 -1
- package/assets/esri/core/workers/chunks/{a27951dbe83c63f9d01a.js → 26bc91a9d9d7345a3eba.js} +1 -1
- package/assets/esri/core/workers/chunks/321f272d4c7ed6b0cb46.js +1 -0
- package/assets/esri/core/workers/chunks/{a09cc8e2ff43fe4afa04.js → 375628de4cfc71cb41c1.js} +1 -1
- package/assets/esri/core/workers/chunks/47bd558e2ce89f47f908.js +1 -0
- package/assets/esri/core/workers/chunks/4cb62855bb1ae608bfde.js +1 -0
- package/assets/esri/core/workers/chunks/4f0c2b6b200bf8222fd7.js +1 -0
- package/assets/esri/core/workers/chunks/5252f3cc244204edc299.js +1 -0
- package/assets/esri/core/workers/chunks/6f952a6464cf9e62dbac.js +1098 -0
- package/assets/esri/core/workers/chunks/76d6c1fc25f02bcf258e.js +1 -0
- package/assets/esri/core/workers/chunks/{d6ec7682de8fad9718e9.js → 77dccfaf1f9e778973b3.js} +1 -1
- package/assets/esri/core/workers/chunks/{c5d872adce711ec61ede.js → 8980c5dc389c27368b73.js} +1 -1
- package/assets/esri/core/workers/chunks/{6acaf28cba5d49a98fb6.js → 91b292f310f06a0cbf72.js} +1 -1
- package/assets/esri/core/workers/chunks/9bac27976e7a71268b7b.js +1 -0
- package/assets/esri/core/workers/chunks/{ff9efa829497557ec26a.js → aa4640a0207e0be224e2.js} +1 -1
- package/assets/esri/core/workers/chunks/{81a6f4b43e047c3395c0.js → aebc5091bd4159197ce0.js} +1 -1
- package/assets/esri/core/workers/chunks/{c8cd3fde6d8d43ddb954.js → b6cdf4daf07d9e55f61e.js} +1 -1
- package/assets/esri/core/workers/chunks/{6b14673a4afd6ef81487.js → c76cabd2d2510a653dff.js} +1 -1
- package/assets/esri/core/workers/chunks/{4be7647605300e07e843.js → c90fff7e28ba5b443b11.js} +1 -1
- package/assets/esri/core/workers/chunks/{e637e47000f4dc48054d.js → cc7f4fd20443a2acf0f1.js} +1 -1
- package/assets/esri/core/workers/chunks/d19e9fab4f4fb765c6a3.js +1 -0
- package/assets/esri/core/workers/chunks/d9ef4891c8b0bdd90f5b.js +1 -0
- package/assets/esri/core/workers/chunks/{d92d6a43270fb0d366b4.js → de4f5c48efbcee82c3c1.js} +1 -1
- package/assets/esri/core/workers/chunks/f6e7948075b3742b4ef9.js +1 -0
- package/assets/esri/core/workers/chunks/{32f9b488915a4a8864e5.js → f8b9e0c1671e55b61904.js} +1 -1
- package/assets/esri/views/3d/analysis/Slice/images/heading-rotate.ts.svg +7 -28
- package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.ts.svg +11 -0
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ar.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_bg.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_bs.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ca.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_cs.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_da.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_de.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_el.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_en.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_es.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_et.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_fi.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_fr.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_he.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_hr.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_hu.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_id.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_it.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ja.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ko.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_lt.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_lv.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_nb.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_nl.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pl.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pt-BR.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_pt-PT.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ro.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_ru.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sk.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sl.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sr.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_sv.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_th.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_tr.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_uk.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_vi.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-CN.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-HK.json +1 -1
- package/assets/esri/widgets/BasemapLayerList/t9n/BasemapLayerList_zh-TW.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ar.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bg.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_bs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ca.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_cs.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_da.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_de.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_el.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_es.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_et.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_fr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_he.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_hu.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_id.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_it.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ja.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ko.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lt.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_lv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nb.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_nl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-BR.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_pt-PT.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ro.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_ru.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sl.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_sv.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_th.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_tr.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_uk.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_vi.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-CN.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-HK.json +1 -1
- package/assets/esri/widgets/Editor/t9n/Editor_zh-TW.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ar.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_bg.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_bs.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ca.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_cs.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_da.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_de.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_el.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_en.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_es.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_et.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_fi.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_fr.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_he.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_hr.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_hu.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_id.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_it.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ja.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ko.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_lt.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_lv.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_nb.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_nl.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_pl.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_pt-BR.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_pt-PT.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ro.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_ru.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_sk.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_sl.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_sr.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_sv.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_th.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_tr.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_uk.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_vi.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_zh-CN.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_zh-HK.json +1 -1
- package/assets/esri/widgets/LayerList/t9n/LayerList_zh-TW.json +1 -1
- package/chunks/ComponentShader.glsl.js +1 -1
- package/chunks/DefaultMaterial.glsl.js +4 -4
- package/chunks/vec42.js +1 -1
- package/core/Loadable.js +1 -1
- package/core/accessorSupport/Property.js +1 -1
- package/core/accessorSupport/tracking/SimpleTrackingTarget.js +1 -1
- package/core/analysisThemeUtils.js +1 -1
- package/core/maybe.js +1 -1
- package/geometry/support/buffer/math/vec4.js +1 -1
- package/interfaces.d.ts +1 -1
- package/layers/IntegratedMeshLayer.js +1 -1
- package/layers/LineOfSightLayer.js +1 -1
- package/layers/SceneLayer.js +1 -1
- package/layers/graphics/sources/connections/GeoEventConnection.js +1 -1
- package/layers/mixins/ImageryTileMixin.js +1 -1
- package/layers/mixins/RefreshableLayer.js +1 -1
- package/layers/support/SceneFilter.js +1 -1
- package/layers/support/SceneModifications.js +1 -1
- package/layers/support/rasterFunctions/clipUtils.js +1 -1
- package/layers/support/rasterFunctions/stretchUtils.js +1 -1
- package/package.json +1 -1
- package/portal/PortalItemResource.js +1 -1
- package/portal/support/resourceUtils.js +1 -1
- package/support/revision.js +1 -1
- package/symbols/support/utils.js +1 -1
- package/views/2d/engine/vectorTiles/TileHandler.js +1 -1
- package/views/2d/viewpointUtils.js +1 -1
- package/views/3d/analysis/Dimension/LengthDimensionSubTool.js +1 -1
- package/views/3d/analysis/Dimension/lengthDimensionManipulatorUtils.js +1 -1
- package/views/3d/analysis/Dimension/settings.js +1 -1
- package/views/3d/analysis/Slice/SliceTool.js +1 -1
- package/views/3d/analysis/Slice/SliceVisualization.js +1 -1
- package/views/3d/analysis/Slice/images/Factory.js +1 -1
- package/views/3d/analysis/Slice/images/generateTextures.js +1 -1
- package/views/3d/analysis/Slice/images/heading-rotate-svg.js +1 -1
- package/views/3d/analysis/Slice/images/tilt-rotate-svg.js +5 -0
- package/views/3d/analysis/Slice/settings.js +5 -0
- package/views/3d/analysis/Slice/sliceToolConfig.js +1 -1
- package/views/3d/analysis/Slice/sliceToolUtils.js +1 -1
- package/views/3d/environment/Stars.js +1 -1
- package/views/3d/interactive/Manipulator3D.js +1 -1
- package/views/3d/interactive/editingTools/transformGraphic/ExtentTransformTool.js +1 -1
- package/views/3d/interactive/manipulatorUtils.js +1 -1
- package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudLayerView3D.js +1 -1
- package/views/3d/layers/PointCloudWorker.js +1 -1
- package/views/3d/layers/VectorTileLayerView3D.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/Graphics3DIconSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPathSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DTextSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/layers/i3s/I3SOverrides.js +1 -1
- package/views/3d/layers/i3s/PointCloudRendererUtil.js +1 -1
- package/views/3d/layers/i3s/PointCloudWorkerUtil.js +1 -1
- package/views/3d/layers/i3s/PointGraphic.js +1 -1
- package/views/3d/state/ViewState.js +1 -1
- package/views/3d/state/controllers/SurfaceCollisionCorrectionController.js +1 -1
- package/views/3d/terrain/GeometryState.js +1 -1
- package/views/3d/terrain/PatchGeometry.js +1 -1
- package/views/3d/terrain/PatchGeometryFactory.js +1 -1
- package/views/3d/terrain/TileAgent.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js +6 -5
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +11 -11
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeShadingNormal.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/AnimationTimeStep.js +1 -1
- package/views/3d/webgl-engine/lib/AttributeArray.js +1 -1
- package/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js +1 -1
- package/views/3d/webgl-engine/lib/Normals.js +5 -0
- package/views/3d/webgl-engine/lib/OffscreenRendering.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/TextRenderParameters.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTreeTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/TerrainTechniqueConfiguration.js +1 -1
- package/views/LayerViewManager.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/draw/support/Reshape.js +1 -1
- package/views/layers/SceneLayerView.js +1 -1
- package/views/support/colorUtils.js +1 -1
- package/views/webgl/ShaderTranspiler.js +1 -1
- package/widgets/BasemapLayerList.js +1 -1
- package/widgets/Daylight/DaylightViewModel.js +1 -1
- package/widgets/Expand.js +1 -1
- package/widgets/FeatureForm/FieldInput.js +1 -1
- package/widgets/LayerList.js +1 -1
- package/widgets/Search.js +1 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/assets/esri/core/workers/chunks/0487ab23a20ec356ab4c.js +0 -1
- package/assets/esri/core/workers/chunks/29ee4f14602caf6967e4.js +0 -1
- package/assets/esri/core/workers/chunks/2c0775541cfec9d43acb.js +0 -1
- package/assets/esri/core/workers/chunks/4879164b48da9ad4547a.js +0 -1
- package/assets/esri/core/workers/chunks/69060e5cffc19e76062a.js +0 -1
- package/assets/esri/core/workers/chunks/87edeb09a948122fa030.js +0 -1
- package/assets/esri/core/workers/chunks/92951b85676df776961f.js +0 -1100
- package/assets/esri/core/workers/chunks/a71a5c8a9aa302bf6f01.js +0 -1
- package/assets/esri/core/workers/chunks/ad5c61daaed286c74982.js +0 -1
- package/assets/esri/core/workers/chunks/bc002e4dff8859571a7a.js +0 -1
- package/assets/esri/core/workers/chunks/ef2d3e84cd58df5f80af.js +0 -1
- package/assets/esri/core/workers/chunks/fec5e55e0fbf1710e22d.js +0 -1
- package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.svg +0 -80
- package/assets/esri/views/3d/analysis/Slice/images/tilt-rotate.ts.png +0 -0
- package/views/3d/analysis/Slice/images/tilt-rotate-png.js +0 -5
- package/views/3d/webgl-engine/core/shaderLibrary/util/DecodeNormal.glsl.js +0 -8
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import{HandleOwnerMixin as s}from"../core/HandleOwner.js";import has from"../core/has.js";import{watch as n,on as r,initial as o}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import{cast as l}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import h from"./BasemapLayerList/BasemapLayerListViewModel.js";import u from"./LayerList/ListItem.js";import{findSelectedItem as m}from"./LayerList/support/layerListUtils.js";import{loadCalciteComponents as g}from"./support/componentsUtils.js";import{Heading as p,incrementHeadingLevel as b}from"./support/Heading.js";import{accessibleHandler as _}from"./support/decorators/accessibleHandler.js";import{messageBundle as y}from"./support/decorators/messageBundle.js";import{vmEvent as f}from"./support/decorators/vmEvent.js";import{tsx as I}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import v from"sortablejs";const L=t.ofType(u);function C(e,t,i){e.splice(i,0,e.splice(t,1)[0])}const T=".*\\S+.*",w="esri-basemaplayerlist-new-ui",A="root-layers",S="data-layer-uid",$="layerUid",E="esri-basemap-layer-list",k=`${E}__item`,R=`${E}__list`,M={base:`${E} esri-widget esri-widget--panel`,newUI:`${E}--new-ui`,titleContainer:`${E}__title-container`,mainHeading:`${E}__main-heading`,editingCard:`${E}__editing-card`,editingInput:`${E}__editing-input`,editingActions:`${E}__editing-actions`,editButton:`${E}__edit-button`,editButtonIcon:`${E}__edit-button-icon`,submitButton:`${E}__submit-button`,cancelButton:`${E}__cancel-button`,noItems:`${E}__no-items`,horizontalRule:`${E}__hr`,list:R,listHeading:`${R}-heading`,listRoot:`${R}--root`,listExclusive:`${R}--exclusive`,listInherited:`${R}--inherited`,listIndependent:`${R}--independent`,item:k,itemOnlyChild:`${k}--only-child`,itemContent:`${k}-content`,itemMessage:`${k}--has-message`,itemInvisible:`${k}--invisible`,itemInvisibleAtScale:`${k}--invisible-at-scale`,itemChildren:`${k}--has-children`,itemSelectable:`${k}--selectable`,itemContainer:`${k}-container`,actionsMenu:`${k}-actions-menu`,actionsMenuItem:`${k}-actions-menu-item`,actionsMenuItemActive:`${k}-actions-menu-item--active`,actions:`${k}-actions`,actionsList:`${k}-actions-list`,action:`${k}-action`,actionIcon:`${k}-action-icon`,actionImage:`${k}-action-image`,actionTitle:`${k}-action-title`,actionToggle:`${E}__action-toggle`,actionToggleOn:`${E}__action-toggle--on`,label:`${k}-label`,message:`${k}-message`,title:`${k}-title`,statusIndicator:`${E}__status-indicator`,publishing:`${E}__publishing`,updating:`${E}__updating`,connectionStatus:`${E}__connection-status`,connectionStatusConnected:`${E}__connection-status--connected`,toggleVisible:`${k}-toggle`,toggleVisibleIcon:`${k}-toggle-icon`,toggleIcon:`${k}-toggle-icon`,radioIcon:`${k}-radio-icon`,childToggle:`${E}__child-toggle`,childToggleOpen:`${E}__child-toggle--open`,childOpened:`${E}__child-toggle-icon--opened`,childClosed:`${E}__child-toggle-icon--closed`,childClosed_RTL:`${E}__child-toggle-icon--closed-rtl`,sortableChosen:`${E}--chosen`,button:"esri-button",buttonTertiary:"esri-button--tertiary",input:"esri-input",disabled:"esri-disabled",disabledElement:"esri-disabled-element",hidden:"esri-hidden",rotating:"esri-rotating",heading:"esri-widget__heading",iconEdit:"esri-icon-edit",iconCheckMark:"esri-icon-check-mark",iconClose:"esri-icon-close",iconEllipses:"esri-icon-handle-horizontal",iconVisible:"esri-icon-visible",iconInvisible:"esri-icon-non-visible",iconRadioSelected:"esri-icon-radio-checked",iconRadioUnselected:"esri-icon-radio-unchecked",iconNoticeTriangle:"esri-icon-notice-triangle",iconChildrenOpen:"esri-icon-down-arrow",iconDownArrow:"esri-icon-down-arrow",iconRightArrow:"esri-icon-right-triangle-arrow",iconLeftArrow:"esri-icon-left-triangle-arrow",iconLoading:"esri-icon-loading-indicator",iconDefaultAction:"esri-icon-default-action",widgetIcon:"esri-icon-layers"},B={actions:"actions",actionSection:"action-section",baseItems:"base-items",referenceItems:"reference-items"},O={exclusive:"exclusive",inherited:"inherited",independent:"independent"};function x(e){const{actionsOpen:t,children:i}=e;t&&(e.actionsOpen=!1),i.forEach((e=>x(e)))}const U={baseLayers:!0,referenceLayers:!0,statusIndicators:!0,errors:!1};let N=class extends(s(d)){constructor(e,t){super(e,t),this._tooltipReferenceMap=new Map,this._editingTitle=!1,this._editTitleInput=null,this._editTitleButton=null,this._focusOnElement=null,this._sortableBaseLayers=null,this._sortableReferenceLayers=null,this._sortableBaseLayersNode=null,this._sortableReferenceLayersNode=null,this._focusSortUid=null,this._newUI=has(w),this.visibleItems=null,this.editingEnabled=!1,this.headingLevel=2,this.iconClass=M.widgetIcon,this.messages=null,this.messagesCommon=null,this.multipleSelectionEnabled=!1,this.selectedItems=new L,this.viewModel=new h,this.visibleElements={...U}}initialize(){const{baseItems:e,referenceItems:t}=this;this._setVisibleItems(),this.addHandles([n((()=>this.visibleElements),(()=>{this._itemsChanged(e,B.baseItems),this._itemsChanged(t,B.referenceItems)})),r((()=>this.baseItems),"change",(()=>{this._itemsChanged(e,B.baseItems)})),r((()=>this.referenceItems),"change",(()=>this._itemsChanged(t,B.referenceItems))),n((()=>this.editingEnabled),(()=>this._toggleSorting()),o)])}loadDependencies(){return g({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})}destroy(){this._destroyBaseSortable(),this._destroyReferenceSortable(),this._tooltipReferenceMap.clear()}get basemapTitle(){return this.viewModel.basemapTitle}set basemapTitle(e){this.viewModel.basemapTitle=e}get baseListItemCreatedFunction(){return this.viewModel.baseListItemCreatedFunction}set baseListItemCreatedFunction(e){this.viewModel.baseListItemCreatedFunction=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get referenceListItemCreatedFunction(){return this.viewModel.referenceListItemCreatedFunction}set referenceListItemCreatedFunction(e){this.viewModel.referenceListItemCreatedFunction=e}get baseItems(){return this.viewModel.baseItems}get referenceItems(){return this.viewModel.referenceItems}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...U,...e}}triggerAction(e,t){return this.viewModel.triggerAction(e,t)}render(){const{state:e}=this.viewModel,t={[M.newUI]:this._newUI,[M.hidden]:"loading"===e,[M.disabled]:"disabled"===e},i=this.renderItemTooltips(),s=this.renderReferenceSection(),n=this.renderBaseSection(),r=s&&n?I("hr",{class:M.horizontalRule}):null,o=[this.renderTitleContainer(),s,r,n];return I("div",{class:this.classes(M.base,t)},[i,o])}renderItemTooltip(e){const{_tooltipReferenceMap:t,messages:i}=this;return e?I("calcite-tooltip",{label:i.layerIncompatible,referenceElement:t.get(e.uid)},i.layerIncompatibleTooltip):null}renderItemTooltipNodes(e){const{incompatible:t,children:i}=e;return[t?this.renderItemTooltip(e):null,...!t&&i?i.toArray().map((e=>this.renderItemTooltipNodes(e))):[]]}renderItemTooltips(){return this.visibleItems?.toArray().map((e=>this.renderItemTooltipNodes(e)))??[]}renderEditingInput(){const{messages:e}=this,{basemapTitle:t}=this.viewModel;return I("label",{class:M.editingInput},e.basemapTitle,I("input",{bind:this,class:M.input,title:e.basemapTitle,"aria-label":e.basemapTitle,placeholder:e.basemapTitle,type:"text",role:"textbox",required:!0,pattern:T,value:t??void 0,afterCreate:this._storeEditTitleInput,afterUpdate:this._focusEditElement}))}renderCancelButton(){const{messagesCommon:e}=this;return I("button",{title:e.cancel,"aria-label":e.cancel,type:"button",bind:this,class:this.classes(M.button,M.buttonTertiary),onclick:this._toggleEditingTitle},e.cancel)}renderSubmitButton(){const{messagesCommon:e}=this;return I("button",{title:e.form.submit,"aria-label":e.form.submit,type:"submit",bind:this,class:M.button},e.form.ok)}renderEditingForm(){return I("div",{class:M.editingCard},I("form",{bind:this,onsubmit:this._formSubmit},this.renderEditingInput(),I("div",{class:M.editingActions},this.renderCancelButton(),this.renderSubmitButton())))}renderBasemapTitle(){const{basemapTitle:e}=this.viewModel;return I(p,{level:this.headingLevel,class:this.classes(M.heading,M.mainHeading)},e)}renderEditTitleButton(){const{_editingTitle:e,editingEnabled:t,messagesCommon:i}=this;return t&&!e?I("button",{bind:this,class:M.editButton,title:i.edit,"aria-label":i.edit,onclick:this._toggleEditingTitle,afterCreate:this._storeEditTitleButton,afterUpdate:this._focusEditElement,"data-node-ref":"_editButtonNode",type:"button"},I("span",{"aria-hidden":"true",class:this.classes(M.iconEdit,M.editButtonIcon)})):null}renderTitleContainer(){return I("div",{class:M.titleContainer},this._editingTitle?this.renderEditingForm():this.renderBasemapTitle(),this.renderEditTitleButton())}renderNoLayersInfo(e,t){return I("div",{key:t,class:M.noItems},e)}renderList(e,t){const{messages:i}=this,s="reference"===t?this._destroyReferenceSortable:this._destroyBaseSortable;return I("ul",{key:t,"aria-label":i.widgetLabel,role:this.editingEnabled&&e.length?"listbox":void 0,afterCreate:this._sortNodeCreated,afterRemoved:s,"data-node-ref":t,bind:this,class:this.classes(M.list,M.listRoot,M.listIndependent)},e.map((i=>this.renderItem({item:i,parent:null,itemType:t,isOnlyChild:1===e.length}))))}renderBaseHeader(){return I(p,{key:"base-heading",level:b(this.headingLevel),class:this.classes(M.heading,M.listHeading)},this.messages.baseHeading)}renderBaseSection(){const{baseItems:e,messages:t,visibleElements:i}=this;if(!i.baseLayers)return null;const s=this._getItems(e),n="base";return[this.renderBaseHeader(),[0===s.length?this.renderNoLayersInfo(t.noBaseLayers,n):null,this.renderList(s,n)]]}renderReferenceHeader(){return I(p,{key:"reference-heading",level:b(this.headingLevel),class:this.classes(M.heading,M.listHeading)},this.messages.referenceHeading)}renderReferenceSection(){const{referenceItems:e,messages:t,visibleElements:i}=this;if(!i.referenceLayers)return null;const s=this._getItems(e),n="reference";return[this.renderReferenceHeader(),[0===s.length?this.renderNoLayersInfo(t.noReferenceLayers,n):null,this.renderList(s,n)]]}renderChildrenToggle(e,t){const{messagesCommon:i}=this,{children:s}=e,n=!!e.error,r=!!s.length&&!n,o={[M.childToggleOpen]:e.open},a=e.open?i.collapse:i.expand;return r?I("span",{onclick:this._toggleChildrenClick,onkeydown:this._toggleChildrenClick,"data-item":e,key:"toggle-children",class:this.classes(M.childToggle,o),tabindex:"0",role:"button","aria-controls":t,"aria-label":a,title:a},I("span",{"aria-hidden":"true",class:this.classes(M.childClosed,M.iconRightArrow)}),I("span",{"aria-hidden":"true",class:this.classes(M.childOpened,M.iconDownArrow)}),I("span",{"aria-hidden":"true",class:this.classes(M.childClosed_RTL,M.iconLeftArrow)})):null}renderItemMessage(e){return e.error?I("div",{key:"esri-basemap-layer-list__error",class:M.message,role:"alert"},I("span",{"aria-hidden":"true",class:M.iconNoticeTriangle}),this.messages.layerError):e.incompatible?I("div",{key:"esri-basemap-layer-list__incompatible",class:M.message,role:"alert"},I("span",{bind:this,tabIndex:0,"aria-hidden":"true",class:M.iconNoticeTriangle,afterCreate:t=>this._setTooltipReference(t,e)}),this.messages.layerIncompatible):null}renderActionsMenuIcon(e,t){const{messagesCommon:i}=this,s={[M.actionsMenuItemActive]:e.actionsOpen};return I("div",{key:"actions-menu-toggle","data-item":e,bind:this,onclick:this._toggleActionsOpen,onkeydown:this._toggleActionsOpen,class:this.classes(M.actionsMenuItem,s),tabindex:"0",role:"button","aria-controls":t,"aria-label":i.options,title:i.options},I("span",{"aria-hidden":"true",class:M.iconEllipses}))}renderActionsMenu(e,t,i,s){const{panel:n}=e,r=n&&n.visible?this.renderPanelButton(n):null,o=1===i&&this._getSingleActionButton(t),a=o?this.renderAction({item:e,action:o,singleAction:!0}):null,l=!o&&i?this.renderActionsMenuIcon(e,s):null;return l||r||o?I("div",{key:"actions-menu",class:M.actionsMenu},r,a,l):null}renderChildList(e,t){const{editingEnabled:i}=this,{visibilityMode:s,children:n}=e,r=this._hasChildren(e),o=!r&&i&&"group"===e.layer?.type,{exclusive:a,inherited:l}=O,c={[M.listExclusive]:s===a,[M.listInherited]:s===l,[M.listIndependent]:s!==l&&s!==a};return r||o?I("ul",{bind:this,key:"list-items",id:t,"data-group":e.uid,"data-item":e,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,class:this.classes(M.list,c),"aria-expanded":e.open?"true":"false",role:i?"listbox":s===a?"radiogroup":"group",hidden:!e.open||null},n?.map((t=>this.renderItem({item:t,parent:e}))).toArray()):null}renderItemContent(e,t,i){const{id:s}=this,n=`${s}_${e.uid}`,r=`${n}_actions`,o=`${n}__list`,{panel:a}=e,l=this._filterActions(e.actionsSections),c=this._countActions(l);return[I("div",{key:"list-item-container",class:M.itemContainer},this.renderChildrenToggle(e,o),this.renderLabel(e,t,i),this.renderActionsMenu(e,l,c,r)),this.renderItemMessage(e),c?this.renderActionsSections(e,l,r):null,a&&a.open&&!a.disabled?a.render():null,this.renderChildList(e,o)]}renderItem({item:e,parent:t,itemType:i,isOnlyChild:s}){const{_newUI:n,id:r,editingEnabled:o,selectedItems:a}=this,l=`${`${r}_${e.uid}`}__title`,c=this._hasMessage(e),d=this._hasChildren(e),h={[M.itemChildren]:d,[M.itemMessage]:!!c,[M.itemInvisible]:n&&!e.visible,[M.itemInvisibleAtScale]:!e.visibleAtCurrentScale,[M.itemSelectable]:o};if(o){const n={[S]:e.layer?.uid};return I("li",{key:`item-with-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(M.item,h,{[M.itemOnlyChild]:!!s}),"aria-labelledby":l,onclick:this._toggleSelection,onkeydown:this._selectionKeydown,"data-item-type":i,"data-item":e,tabIndex:0,"aria-selected":m(e,a)?"true":"false",role:"option",...n},this.renderItemContent(e,t,l))}return I("li",{key:`item-no-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(M.item,h),"aria-labelledby":l},this.renderItemContent(e,t,l))}renderConnectionIcon(e){const{connectionStatus:t}=e;return null!=t?I("calcite-icon",{icon:"connected"===t?"check-circle":"offline",scale:"s"}):null}renderItemStatus(e,t){const{visibleElements:i}=this;if(!i.statusIndicators)return null;const{connectionStatus:s,publishing:n,updating:r}=e,o=r&&!t,a=!!s;return I("span",{class:this.classes({[M.statusIndicator]:!0,[M.publishing]:n,[M.updating]:o,[M.connectionStatus]:a,[M.connectionStatusConnected]:a&&"connected"===s}),key:"layer-item-status"},this.renderConnectionIcon(e))}renderItemTitle(e,t){const{messages:i}=this,s=e.title||i.untitledLayer,n=e.visibleAtCurrentScale?s:`${s} (${i.layerInvisibleAtScale})`;return I("span",{key:"layer-title-container",id:t,title:n,"aria-label":n,class:M.title},s)}renderItemToggleIcon(e,t){const{_newUI:i}=this,{exclusive:s}=O,n=t&&t.visibilityMode,r={[M.toggleVisibleIcon]:i,[M.toggleIcon]:i&&n!==s,[M.radioIcon]:i&&n===s,[M.iconRadioSelected]:n===s&&e.visible,[M.iconRadioUnselected]:n===s&&!e.visible,[M.iconVisible]:n!==s&&e.visible,[M.iconInvisible]:n!==s&&!e.visible};return I("span",{key:"item-toggle-icon",class:this.classes(r),"aria-hidden":"true"})}renderItemToggle(e,t,i){const{editingEnabled:s,messages:n}=this,{exclusive:r}=O,o=t&&t.visibilityMode,a=o===r?"radio":"switch";return I("span",s?{key:"item-toggle-selection-enabled",class:M.toggleVisible,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":o,tabIndex:0,"aria-checked":e.visible?"true":"false",title:e.visible?n.hideLayer:n.showLayer,role:a,"aria-labelledby":i}:{key:"item-toggle",class:M.toggleVisible},this.renderItemToggleIcon(e,t))}renderLabel(e,t,i){const{editingEnabled:s,_newUI:n,messages:r}=this,{inherited:o,exclusive:a}=O,l=t?.visibilityMode,c=l===a?"radio":"switch",d=n?[this.renderItemTitle(e,i),this.renderItemStatus(e,t),this.renderItemToggle(e,t,i)]:[this.renderItemToggle(e,t,i),this.renderItemTitle(e,i),this.renderItemStatus(e,t)],h=I("div",s?{key:`item-label-no-selection-${e.uid}`,class:M.label}:{key:`item-label-with-selection-${e.uid}`,class:M.label,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":l,tabIndex:0,title:e.visible?r.hideLayer:r.showLayer,"aria-checked":e.visible?"true":"false",role:c,"aria-labelledby":i},d);return l===o||e.error?I("div",{key:`item-label-container-${e.uid}`,class:M.label},this.renderItemTitle(e,i),this.renderItemStatus(e,t)):h}renderPanelButton(e){const{className:t,open:i,title:s,image:n}=e,r=n||t?t:M.iconDefaultAction,o=this._getIconImageStyles(e),a={[M.actionsMenuItemActive]:i},l={[M.actionImage]:!!o["background-image"],[M.disabledElement]:e.disabled};return r&&(l[r]=!!r),I("div",{"aria-disabled":e.disabled.toString(),key:`panel-${e.uid}`,bind:this,"data-panel":e,onclick:this._triggerPanel,onkeydown:this._triggerPanel,class:this.classes(M.actionsMenuItem,a),role:"button",tabindex:e.disabled?null:0,title:s,"aria-label":s},I("span",{class:this.classes(l),styles:o}))}renderActionsSections(e,t,i){const s=t.toArray().map(((t,i)=>I("ul",{key:`${e}-action-section-${i}`,class:M.actionsList},this.renderActionSection(e,t))));return I("div",{role:"group","aria-expanded":e.actionsOpen?"true":"false",key:"actions-section",id:i,class:M.actions,hidden:!e.actionsOpen||null},s)}renderActionSection(e,t){return(t&&t.toArray()).map((t=>this.renderAction({item:e,action:t})))}renderActionIcon(e){const{active:t,className:i}=e,s=this._getIconImageStyles(e),n="button"!==e.type||e.image||i?i:M.iconDefaultAction,r={[M.actionImage]:!t&&!!s["background-image"],[M.iconLoading]:t,[M.rotating]:t};return n&&!t&&(r[n]=!0),I("span",{key:"action-icon","aria-hidden":"true",class:this.classes(M.actionIcon,r),styles:s})}renderActionTitle(e,t){return t?null:I("span",{key:"action-title",class:M.actionTitle},e)}renderAction(e){const{item:t,action:i,singleAction:s}=e,{active:n,disabled:r,title:o}=i,a={[M.actionsMenuItem]:s&&"button"===i.type,[M.action]:n||!s&&"toggle"!==i.type,[M.actionToggle]:!n&&"toggle"===i.type,[M.actionToggleOn]:!n&&"toggle"===i.type&&i.value,[M.disabledElement]:r},l=[this.renderActionIcon(i),this.renderActionTitle(o,s)];return s?I("div",{bind:this,"data-item":t,"data-action":i,role:"button",key:`single-action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:a,tabindex:"0",title:o??void 0,"aria-label":o},l):I("li",{bind:this,"data-item":t,"data-action":i,key:`action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:a,tabindex:"0",role:"button",title:o??void 0,"aria-label":o},l)}_setVisibleItems(){const{referenceItems:e,baseItems:t,visibleElements:i}=this,s=e.concat(t);this.visibleItems=s?.filter((e=>!e.hidden&&(i.errors||!e.error)))}_setTooltipReference(e,t){this._tooltipReferenceMap.set(t.uid,e),this.scheduleRender()}_hasMessage(e){return!!e.error||e.incompatible}_hasChildren(e){return!!e.children.length&&!this._hasMessage(e)}_filterActions(e){return e.map((e=>e.filter((e=>e.visible))))}_destroyReferenceSortable(){const{_sortableReferenceLayers:e}=this;e?.el&&e.destroy(),this._sortableReferenceLayersNode=null}_destroyBaseSortable(){const{_sortableBaseLayers:e}=this;e?.el&&e.destroy(),this._sortableBaseLayersNode=null}_toggleEditingTitle(){const{_editingTitle:e}=this,t=!e;this._editingTitle=t,this._focusOnElement=t?"edit-input":"edit-button",this.scheduleRender()}_storeEditTitleInput(e){this._editTitleInput=e,this._focusEditElement()}_focusEditElement(){this._editTitleInput&&"edit-input"===this._focusOnElement&&(this._focusOnElement=null,this._editTitleInput.focus()),this._editTitleButton&&"edit-button"===this._focusOnElement&&(this._focusOnElement=null,this._editTitleButton.focus())}_storeEditTitleButton(e){this._editTitleButton=e,this._focusEditElement()}_formSubmit(e){e.preventDefault();const t=this._editTitleInput?.value;t?.trim()&&(this.basemapTitle=t),this._toggleEditingTitle()}_itemMovedList(e){const t=e.item["data-item"],i=e.to.dataset.nodeRef,s=e.from.dataset.nodeRef,n=e.newIndex;this.viewModel.transferListItem({listItem:t,from:s,to:i,newIndex:n})}_toggleSortingBaseLayers(){const{_sortableBaseLayers:e,_sortableBaseLayersNode:t,editingEnabled:i}=this;if(!t)return;const s=!i;if(e)e.option("disabled",s);else{const e=v.create(t,{dataIdAttr:S,group:A,filter:`.${M.itemOnlyChild}`,fallbackTolerance:4,disabled:s,onSort:()=>this._sortLayersToItems({type:"base",itemIds:e.toArray()}),onAdd:e=>this._itemMovedList(e),chosenClass:M.sortableChosen});this._sortableBaseLayers=e}}_toggleSortingReferenceLayers(){const{_sortableReferenceLayers:e,_sortableReferenceLayersNode:t,editingEnabled:i}=this;if(!t)return;const s=!i;if(e)e.option("disabled",s);else{const e=v.create(t,{dataIdAttr:S,group:A,disabled:s,fallbackTolerance:4,onSort:()=>this._sortLayersToItems({type:"reference",itemIds:e.toArray()}),onAdd:e=>this._itemMovedList(e),chosenClass:M.sortableChosen});this._sortableReferenceLayers=e}}_toggleSorting(){this._toggleSortingBaseLayers(),this._toggleSortingReferenceLayers()}_sortNodeCreated(e){const t=e.getAttribute("data-node-ref");"base"===t&&(this._sortableBaseLayersNode=e),"reference"===t&&(this._sortableReferenceLayersNode=e),this._toggleSorting()}_getItems(e){return e.toArray().filter((e=>!e.hidden&&(this.visibleElements.errors||!e.error)))}_getSingleActionButton(e){return e.reduce((e=>e)).filter((e=>e&&"button"===e.type)).getItemAt(0)}_sortLayersToItems({type:e,itemIds:t}){const i="base"===e?this.get("view.map.basemap.baseLayers"):"reference"===e?this.get("view.map.basemap.referenceLayers"):null;i&&i.sort(((e,i)=>{const s=t.indexOf(e.uid),n=t.indexOf(i.uid);return s>n?-1:s<n?1:0}))}_focusListItem(e){const{_focusSortUid:t}=this;if(!e||!t)return;const i=e["data-item"];i.layer?.uid===t&&(e.focus(),this._focusSortUid=null)}_selectionKeydown(e){const t=["ArrowDown","ArrowUp"],s=i(e);if(!t.includes(s))return void this._toggleSelection(e);e.stopPropagation();const n=e.currentTarget,r=n["data-item"],o=n.dataset.itemType,{_sortableBaseLayers:a,_sortableReferenceLayers:l,selectedItems:c}=this,d="base"===o?a:"reference"===o?l:null;if(!d)return;const h=m(r,c),u=d.toArray(),g=e.target,p=u.indexOf(g.dataset[$]),{baseItems:b,referenceItems:_}=this.viewModel;if(-1!==p){if("ArrowDown"===s){const e=p+1,t=e>=u.length;if(t&&"reference"===o&&h){const e=b.length;return this.viewModel.transferListItem({listItem:r,from:"reference",to:"base",newIndex:e}),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if(t&&"reference"===o){const e=b.getItemAt(0);return this._focusSortUid=e?.layer?.uid,void this.scheduleRender()}if(t)return;return h&&(C(u,p,e),d.sort(u),this._sortLayersToItems({type:o,itemIds:d.toArray()})),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if("ArrowUp"===s){const e=p-1,t=e<0;if(t&&"base"===o&&h){if(1===b.length)return;const e=0;return this.viewModel.transferListItem({listItem:r,from:"base",to:"reference",newIndex:e}),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if(t&&"base"===o){const e=_.getItemAt(_.length-1);return this._focusSortUid=e?.layer?.uid,void this.scheduleRender()}if(t)return;h&&(C(u,p,e),d.sort(u),this._sortLayersToItems({type:o,itemIds:d.toArray()})),this._focusSortUid=r.layer?.uid,this.scheduleRender()}}}_watchActionSectionChanges(e,t){this.handles.add(e.on("change",(()=>this.scheduleRender())),t),e.forEach((e=>this._renderOnActionChanges(e,t)))}_renderOnActionChanges(e,t){"toggle"!==e.type?"slider"!==e.type?this.handles.add([n((()=>[e.className,e.image,e.id,e.title,e.visible]),(()=>this.scheduleRender()),o)],t):this.handles.add([n((()=>[e.className,e.id,e.title,e.visible,e.value,e.displayValueEnabled,e.max,e.min,e.step]),(()=>this.scheduleRender()),o)],t):this.handles.add([n((()=>[e.className,e.image,e.id,e.title,e.visible,e.value]),(()=>this.scheduleRender()),o)],t)}_renderOnItemChanges(e,t){this.handles.add([n((()=>[e.actionsOpen,e.visible,e.open,e.updating,e.connectionStatus,e.publishing,e.title,e.visibleAtCurrentScale,e.error,e.visibilityMode,e.panel,e.panel?.title,e.panel?.content,e.panel?.className]),(()=>this.scheduleRender()),o),n((()=>[e.hidden,e.error]),(()=>this._setVisibleItems())),e.actionsSections.on("change",(()=>this.scheduleRender())),e.children.on("change",(()=>this.scheduleRender()))],t),e.children.forEach((e=>this._renderOnItemChanges(e,t))),e.actionsSections.forEach((e=>this._watchActionSectionChanges(e,t)))}_itemsChanged(e,t){this.handles.remove(t),this._tooltipReferenceMap.clear(),this._setVisibleItems(),e.forEach((e=>this._renderOnItemChanges(e,t))),this.scheduleRender()}_countActions(e){return e.reduce(((e,t)=>e+t.length),0)}_getIconImageStyles(e){const t="esri.widgets.LayerList.ListItemPanel"===e.declaredClass||"esri.support.Action.ActionButton"===e.declaredClass||"esri.support.Action.ActionToggle"===e.declaredClass?e.image:null;return{"background-image":t?`url("${t}")`:""}}_toggleActionsOpen(e){e.stopPropagation();const t=e.currentTarget["data-item"],{actionsOpen:i}=t,s=!i,{baseItems:n,referenceItems:r}=this;s&&(n.forEach((e=>x(e))),r.forEach((e=>x(e)))),t.actionsOpen=s}_triggerPanel(e){e.stopPropagation();const t=e.currentTarget["data-panel"];t&&!t.disabled&&(t.open=!t.open)}_triggerAction(e){e.stopPropagation();const t=e.currentTarget,i=t["data-action"],s=t["data-item"];"toggle"===i.type&&(i.value=!i.value),this.triggerAction(i,s)}_toggleVisibility(e){e.stopPropagation();const t=e.currentTarget,i=t.getAttribute("data-parent-visibility"),s=t["data-item"];i===O.exclusive&&s.visible||(s.visible=!s.visible)}_toggleChildrenClick(e){e.stopPropagation();const t=e.currentTarget["data-item"];t.open=!t.open}_toggleSelection(e){e.stopPropagation();const{multipleSelectionEnabled:t,selectedItems:i}=this,s=t&&(e.metaKey||e.ctrlKey),n=e.currentTarget["data-item"],r=m(n,i),{length:o}=i;if(!s)return o&&!(r&&1===o)?(i.removeAll(),void i.add(n)):void(r?i.remove(r):i.add(n));r?i.remove(r):i.add(n)}};e([a()],N.prototype,"visibleItems",void 0),e([a()],N.prototype,"basemapTitle",null),e([a()],N.prototype,"baseListItemCreatedFunction",null),e([a()],N.prototype,"editingEnabled",void 0),e([a()],N.prototype,"headingLevel",void 0),e([a()],N.prototype,"iconClass",void 0),e([a()],N.prototype,"label",null),e([a(),y("esri/widgets/BasemapLayerList/t9n/BasemapLayerList")],N.prototype,"messages",void 0),e([a(),y("esri/t9n/common")],N.prototype,"messagesCommon",void 0),e([a()],N.prototype,"multipleSelectionEnabled",void 0),e([a()],N.prototype,"referenceListItemCreatedFunction",null),e([a({readOnly:!0})],N.prototype,"baseItems",null),e([a({readOnly:!0})],N.prototype,"referenceItems",null),e([a()],N.prototype,"selectedItems",void 0),e([a()],N.prototype,"view",null),e([f("trigger-action"),a({type:h})],N.prototype,"viewModel",void 0),e([a()],N.prototype,"visibleElements",void 0),e([l("visibleElements")],N.prototype,"castVisibleElements",null),e([_()],N.prototype,"_toggleActionsOpen",null),e([_()],N.prototype,"_triggerPanel",null),e([_()],N.prototype,"_triggerAction",null),e([_()],N.prototype,"_toggleVisibility",null),e([_()],N.prototype,"_toggleChildrenClick",null),e([_()],N.prototype,"_toggleSelection",null),N=e([c("esri.widgets.BasemapLayerList")],N);const j=N;export{j as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import{HandleOwnerMixin as s}from"../core/HandleOwner.js";import has from"../core/has.js";import{watch as n,on as r,initial as o}from"../core/reactiveUtils.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import{cast as l}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import h from"./BasemapLayerList/BasemapLayerListViewModel.js";import u from"./LayerList/ListItem.js";import{findSelectedItem as m}from"./LayerList/support/layerListUtils.js";import{loadCalciteComponents as g}from"./support/componentsUtils.js";import{Heading as p,incrementHeadingLevel as b}from"./support/Heading.js";import{accessibleHandler as _}from"./support/decorators/accessibleHandler.js";import{messageBundle as y}from"./support/decorators/messageBundle.js";import{vmEvent as f}from"./support/decorators/vmEvent.js";import{tsx as I}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import v from"sortablejs";const C=t.ofType(u);function L(e,t,i){e.splice(i,0,e.splice(t,1)[0])}const T=".*\\S+.*",w="esri-basemaplayerlist-new-ui",A="root-layers",S="data-layer-uid",$="layerUid",E="esri-basemap-layer-list",k=`${E}__item`,R=`${E}__list`,M={base:`${E} esri-widget esri-widget--panel`,newUI:`${E}--new-ui`,titleContainer:`${E}__title-container`,mainHeading:`${E}__main-heading`,editingCard:`${E}__editing-card`,editingInput:`${E}__editing-input`,editingActions:`${E}__editing-actions`,editButton:`${E}__edit-button`,editButtonIcon:`${E}__edit-button-icon`,submitButton:`${E}__submit-button`,cancelButton:`${E}__cancel-button`,noItems:`${E}__no-items`,horizontalRule:`${E}__hr`,list:R,listHeading:`${R}-heading`,listRoot:`${R}--root`,listExclusive:`${R}--exclusive`,listInherited:`${R}--inherited`,listIndependent:`${R}--independent`,item:k,itemOnlyChild:`${k}--only-child`,itemContent:`${k}-content`,itemMessage:`${k}--has-message`,itemInvisible:`${k}--invisible`,itemInvisibleAtScale:`${k}--invisible-at-scale`,itemChildren:`${k}--has-children`,itemSelectable:`${k}--selectable`,itemContainer:`${k}-container`,actionsMenu:`${k}-actions-menu`,actionsMenuItem:`${k}-actions-menu-item`,actionsMenuItemActive:`${k}-actions-menu-item--active`,actions:`${k}-actions`,actionsList:`${k}-actions-list`,action:`${k}-action`,actionIcon:`${k}-action-icon`,actionImage:`${k}-action-image`,actionTitle:`${k}-action-title`,actionToggle:`${E}__action-toggle`,actionToggleOn:`${E}__action-toggle--on`,label:`${k}-label`,message:`${k}-message`,title:`${k}-title`,statusIndicator:`${E}__status-indicator`,publishing:`${E}__publishing`,updating:`${E}__updating`,connectionStatus:`${E}__connection-status`,connectionStatusConnected:`${E}__connection-status--connected`,toggleVisible:`${k}-toggle`,toggleVisibleIcon:`${k}-toggle-icon`,toggleIcon:`${k}-toggle-icon`,radioIcon:`${k}-radio-icon`,childToggle:`${E}__child-toggle`,childToggleOpen:`${E}__child-toggle--open`,childOpened:`${E}__child-toggle-icon--opened`,childClosed:`${E}__child-toggle-icon--closed`,childClosed_RTL:`${E}__child-toggle-icon--closed-rtl`,sortableChosen:`${E}--chosen`,button:"esri-button",buttonTertiary:"esri-button--tertiary",input:"esri-input",disabled:"esri-disabled",disabledElement:"esri-disabled-element",hidden:"esri-hidden",rotating:"esri-rotating",heading:"esri-widget__heading",iconEdit:"esri-icon-edit",iconCheckMark:"esri-icon-check-mark",iconClose:"esri-icon-close",iconEllipses:"esri-icon-handle-horizontal",iconVisible:"esri-icon-visible",iconInvisible:"esri-icon-non-visible",iconRadioSelected:"esri-icon-radio-checked",iconRadioUnselected:"esri-icon-radio-unchecked",iconNoticeTriangle:"esri-icon-notice-triangle",iconChildrenOpen:"esri-icon-down-arrow",iconDownArrow:"esri-icon-down-arrow",iconRightArrow:"esri-icon-right-triangle-arrow",iconLeftArrow:"esri-icon-left-triangle-arrow",iconLoading:"esri-icon-loading-indicator",iconDefaultAction:"esri-icon-default-action",widgetIcon:"esri-icon-layers"},B={actions:"actions",actionSection:"action-section",baseItems:"base-items",referenceItems:"reference-items"},O={exclusive:"exclusive",inherited:"inherited",independent:"independent"};function x(e){const{actionsOpen:t,children:i}=e;t&&(e.actionsOpen=!1),i.forEach((e=>x(e)))}const U={baseLayers:!0,referenceLayers:!0,statusIndicators:!0,errors:!1};let N=class extends(s(d)){constructor(e,t){super(e,t),this._tooltipReferenceMap=new Map,this._editingTitle=!1,this._editTitleInput=null,this._editTitleButton=null,this._focusOnElement=null,this._sortableBaseLayers=null,this._sortableReferenceLayers=null,this._sortableBaseLayersNode=null,this._sortableReferenceLayersNode=null,this._focusSortUid=null,this._newUI=has(w),this.visibleItems=null,this.editingEnabled=!1,this.headingLevel=2,this.iconClass=M.widgetIcon,this.messages=null,this.messagesCommon=null,this.multipleSelectionEnabled=!1,this.selectedItems=new C,this.viewModel=new h,this.visibleElements={...U}}initialize(){const{baseItems:e,referenceItems:t}=this;this._setVisibleItems(),this.addHandles([n((()=>this.visibleElements),(()=>{this._itemsChanged(e,B.baseItems),this._itemsChanged(t,B.referenceItems)})),r((()=>this.baseItems),"change",(()=>{this._itemsChanged(e,B.baseItems)})),r((()=>this.referenceItems),"change",(()=>this._itemsChanged(t,B.referenceItems))),n((()=>this.editingEnabled),(()=>this._toggleSorting()),o)])}loadDependencies(){return g({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})}destroy(){this._destroyBaseSortable(),this._destroyReferenceSortable(),this._tooltipReferenceMap.clear()}get basemapTitle(){return this.viewModel.basemapTitle}set basemapTitle(e){this.viewModel.basemapTitle=e}get baseListItemCreatedFunction(){return this.viewModel.baseListItemCreatedFunction}set baseListItemCreatedFunction(e){this.viewModel.baseListItemCreatedFunction=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get referenceListItemCreatedFunction(){return this.viewModel.referenceListItemCreatedFunction}set referenceListItemCreatedFunction(e){this.viewModel.referenceListItemCreatedFunction=e}get baseItems(){return this.viewModel.baseItems}get referenceItems(){return this.viewModel.referenceItems}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...U,...e}}triggerAction(e,t){return this.viewModel.triggerAction(e,t)}render(){const{state:e}=this.viewModel,t={[M.newUI]:this._newUI,[M.hidden]:"loading"===e,[M.disabled]:"disabled"===e},i=this.renderItemTooltips(),s=this.renderReferenceSection(),n=this.renderBaseSection(),r=s&&n?I("hr",{class:M.horizontalRule}):null,o=[this.renderTitleContainer(),s,r,n];return I("div",{class:this.classes(M.base,t)},[i,o])}renderItemTooltip(e){const{_tooltipReferenceMap:t,messages:i}=this;return e?I("calcite-tooltip",{label:i.layerIncompatible,referenceElement:t.get(e.uid)},i.layerIncompatibleTooltip):null}renderItemTooltipNodes(e){const{incompatible:t,children:i}=e;return[t?this.renderItemTooltip(e):null,...!t&&i?i.toArray().map((e=>this.renderItemTooltipNodes(e))):[]]}renderItemTooltips(){return this.visibleItems?.toArray().map((e=>this.renderItemTooltipNodes(e)))??[]}renderEditingInput(){const{messages:e}=this,{basemapTitle:t}=this.viewModel;return I("label",{class:M.editingInput},e.basemapTitle,I("input",{bind:this,class:M.input,title:e.basemapTitle,"aria-label":e.basemapTitle,placeholder:e.basemapTitle,type:"text",role:"textbox",required:!0,pattern:T,value:t??void 0,afterCreate:this._storeEditTitleInput,afterUpdate:this._focusEditElement}))}renderCancelButton(){const{messagesCommon:e}=this;return I("button",{title:e.cancel,"aria-label":e.cancel,type:"button",bind:this,class:this.classes(M.button,M.buttonTertiary),onclick:this._toggleEditingTitle},e.cancel)}renderSubmitButton(){const{messagesCommon:e}=this;return I("button",{title:e.form.submit,"aria-label":e.form.submit,type:"submit",bind:this,class:M.button},e.form.ok)}renderEditingForm(){return I("div",{class:M.editingCard},I("form",{bind:this,onsubmit:this._formSubmit},this.renderEditingInput(),I("div",{class:M.editingActions},this.renderCancelButton(),this.renderSubmitButton())))}renderBasemapTitle(){const{basemapTitle:e}=this.viewModel;return I(p,{level:this.headingLevel,class:this.classes(M.heading,M.mainHeading)},e)}renderEditTitleButton(){const{_editingTitle:e,editingEnabled:t,messagesCommon:i}=this;return t&&!e?I("button",{bind:this,class:M.editButton,title:i.edit,"aria-label":i.edit,onclick:this._toggleEditingTitle,afterCreate:this._storeEditTitleButton,afterUpdate:this._focusEditElement,"data-node-ref":"_editButtonNode",type:"button"},I("span",{"aria-hidden":"true",class:this.classes(M.iconEdit,M.editButtonIcon)})):null}renderTitleContainer(){return I("div",{class:M.titleContainer},this._editingTitle?this.renderEditingForm():this.renderBasemapTitle(),this.renderEditTitleButton())}renderNoLayersInfo(e,t){return I("div",{key:t,class:M.noItems},e)}renderList(e,t){const{messages:i}=this,s="reference"===t?this._destroyReferenceSortable:this._destroyBaseSortable;return I("ul",{key:t,"aria-label":i.widgetLabel,role:this.editingEnabled&&e.length?"listbox":void 0,afterCreate:this._sortNodeCreated,afterRemoved:s,"data-node-ref":t,bind:this,class:this.classes(M.list,M.listRoot,M.listIndependent)},e.map((i=>this.renderItem({item:i,parent:null,itemType:t,isOnlyChild:1===e.length}))))}renderBaseHeader(){return I(p,{key:"base-heading",level:b(this.headingLevel),class:this.classes(M.heading,M.listHeading)},this.messages.baseHeading)}renderBaseSection(){const{baseItems:e,messages:t,visibleElements:i}=this;if(!i.baseLayers)return null;const s=this._getItems(e),n="base";return[this.renderBaseHeader(),[0===s.length?this.renderNoLayersInfo(t.noBaseLayers,n):null,this.renderList(s,n)]]}renderReferenceHeader(){return I(p,{key:"reference-heading",level:b(this.headingLevel),class:this.classes(M.heading,M.listHeading)},this.messages.referenceHeading)}renderReferenceSection(){const{referenceItems:e,messages:t,visibleElements:i}=this;if(!i.referenceLayers)return null;const s=this._getItems(e),n="reference";return[this.renderReferenceHeader(),[0===s.length?this.renderNoLayersInfo(t.noReferenceLayers,n):null,this.renderList(s,n)]]}renderChildrenToggle(e,t){const{messagesCommon:i}=this,{children:s}=e,n=!!e.error,r=!!s.length&&!n,o={[M.childToggleOpen]:e.open},a=e.open?i.collapse:i.expand;return r?I("span",{onclick:this._toggleChildrenClick,onkeydown:this._toggleChildrenClick,"data-item":e,key:"toggle-children",class:this.classes(M.childToggle,o),tabindex:"0",role:"button","aria-controls":t,"aria-label":a,title:a},I("span",{"aria-hidden":"true",class:this.classes(M.childClosed,M.iconRightArrow)}),I("span",{"aria-hidden":"true",class:this.classes(M.childOpened,M.iconDownArrow)}),I("span",{"aria-hidden":"true",class:this.classes(M.childClosed_RTL,M.iconLeftArrow)})):null}renderItemMessage(e){return e.error?I("div",{key:"esri-basemap-layer-list__error",class:M.message,role:"alert"},I("span",{"aria-hidden":"true",class:M.iconNoticeTriangle}),this.messages.layerError):e.incompatible?I("div",{key:"esri-basemap-layer-list__incompatible",class:M.message,role:"alert"},I("span",{bind:this,tabIndex:0,"aria-hidden":"true",class:M.iconNoticeTriangle,afterCreate:t=>this._setTooltipReference(t,e)}),this.messages.layerIncompatible):null}renderActionsMenuIcon(e,t){const{messagesCommon:i}=this,s={[M.actionsMenuItemActive]:e.actionsOpen};return I("div",{key:"actions-menu-toggle","data-item":e,bind:this,onclick:this._toggleActionsOpen,onkeydown:this._toggleActionsOpen,class:this.classes(M.actionsMenuItem,s),tabindex:"0",role:"button","aria-controls":t,"aria-label":i.options,title:i.options},I("span",{"aria-hidden":"true",class:M.iconEllipses}))}renderActionsMenu(e,t,i,s){const{panel:n}=e,r=n&&n.visible?this.renderPanelButton(n):null,o=1===i&&this._getSingleActionButton(t),a=o?this.renderAction({item:e,action:o,singleAction:!0}):null,l=!o&&i?this.renderActionsMenuIcon(e,s):null;return l||r||o?I("div",{key:"actions-menu",class:M.actionsMenu},r,a,l):null}renderChildList(e,t){const{editingEnabled:i}=this,{visibilityMode:s,children:n}=e,r=this._hasChildren(e),o=!r&&i&&"group"===e.layer?.type,{exclusive:a,inherited:l}=O,c={[M.listExclusive]:s===a,[M.listInherited]:s===l,[M.listIndependent]:s!==l&&s!==a};return r||o?I("ul",{bind:this,key:"list-items",id:t,"data-group":e.uid,"data-item":e,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,class:this.classes(M.list,c),"aria-expanded":e.open?"true":"false",role:i?"listbox":s===a?"radiogroup":"group",hidden:!e.open||null},n?.map((t=>this.renderItem({item:t,parent:e}))).toArray()):null}renderItemContent(e,t,i){const{id:s}=this,n=`${s}_${e.uid}`,r=`${n}_actions`,o=`${n}__list`,{panel:a}=e,l=this._filterActions(e.actionsSections),c=this._countActions(l);return[I("div",{key:"list-item-container",class:M.itemContainer},this.renderChildrenToggle(e,o),this.renderLabel(e,t,i),this.renderActionsMenu(e,l,c,r)),this.renderItemMessage(e),c?this.renderActionsSections(e,l,r):null,a&&a.open&&!a.disabled?a.render():null,this.renderChildList(e,o)]}renderItem({item:e,parent:t,itemType:i,isOnlyChild:s}){const{_newUI:n,id:r,editingEnabled:o,selectedItems:a}=this,l=`${`${r}_${e.uid}`}__title`,c=this._hasMessage(e),d=this._hasChildren(e),h={[M.itemChildren]:d,[M.itemMessage]:!!c,[M.itemInvisible]:n&&!e.visible,[M.itemInvisibleAtScale]:!e.visibleAtCurrentScale,[M.itemSelectable]:o};if(o){const n={[S]:e.layer?.uid};return I("li",{key:`item-with-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(M.item,h,{[M.itemOnlyChild]:!!s}),"aria-labelledby":l,onclick:this._toggleSelection,onkeydown:this._selectionKeydown,"data-item-type":i,"data-item":e,tabIndex:0,"aria-selected":m(e,a)?"true":"false",role:"option",...n},this.renderItemContent(e,t,l))}return I("li",{key:`item-no-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(M.item,h),"aria-labelledby":l},this.renderItemContent(e,t,l))}renderConnectionIcon(e){const{connectionStatus:t}=e;return null!=t?I("calcite-icon",{icon:"connected"===t?"check-circle":"offline",scale:"s"}):null}renderItemStatus(e,t){const{visibleElements:i}=this;if(!i.statusIndicators)return null;const{connectionStatus:s,publishing:n,updating:r}=e,o=r&&!t,a=!!s;return I("span",{class:this.classes({[M.statusIndicator]:!0,[M.publishing]:n,[M.updating]:o,[M.connectionStatus]:a,[M.connectionStatusConnected]:a&&"connected"===s}),key:"layer-item-status"},this.renderConnectionIcon(e))}renderItemTitle(e,t){const{messages:i}=this,s=e.title||i.untitledLayer,n=e.visibleAtCurrentScale?s:`${s} (${i.layerInvisibleAtScale})`;return I("span",{key:"layer-title-container",id:t,title:n,"aria-label":n,class:M.title},s)}renderItemToggleIcon(e,t){const{_newUI:i}=this,{exclusive:s}=O,n=t&&t.visibilityMode,r={[M.toggleVisibleIcon]:i,[M.toggleIcon]:i&&n!==s,[M.radioIcon]:i&&n===s,[M.iconRadioSelected]:n===s&&e.visible,[M.iconRadioUnselected]:n===s&&!e.visible,[M.iconVisible]:n!==s&&e.visible,[M.iconInvisible]:n!==s&&!e.visible};return I("span",{key:"item-toggle-icon",class:this.classes(r),"aria-hidden":"true"})}renderItemToggle(e,t,i){const{editingEnabled:s,messages:n}=this,{exclusive:r}=O,o=t&&t.visibilityMode,a=o===r?"radio":"switch";return I("span",s?{key:"item-toggle-selection-enabled",class:M.toggleVisible,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":o,tabIndex:0,"aria-checked":e.visible?"true":"false",title:n.layerVisibility,role:a,"aria-labelledby":i}:{key:"item-toggle",class:M.toggleVisible},this.renderItemToggleIcon(e,t))}renderLabel(e,t,i){const{editingEnabled:s,_newUI:n,messages:r}=this,{inherited:o,exclusive:a}=O,l=t?.visibilityMode,c=l===a?"radio":"switch",d=n?[this.renderItemTitle(e,i),this.renderItemStatus(e,t),this.renderItemToggle(e,t,i)]:[this.renderItemToggle(e,t,i),this.renderItemTitle(e,i),this.renderItemStatus(e,t)],h=I("div",s?{key:`item-label-no-selection-${e.uid}`,class:M.label}:{key:`item-label-with-selection-${e.uid}`,class:M.label,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":l,tabIndex:0,title:r.layerVisibility,"aria-checked":e.visible?"true":"false",role:c,"aria-labelledby":i},d);return l===o||e.error?I("div",{key:`item-label-container-${e.uid}`,class:M.label},this.renderItemTitle(e,i),this.renderItemStatus(e,t)):h}renderPanelButton(e){const{className:t,open:i,title:s,image:n}=e,r=n||t?t:M.iconDefaultAction,o=this._getIconImageStyles(e),a={[M.actionsMenuItemActive]:i},l={[M.actionImage]:!!o["background-image"],[M.disabledElement]:e.disabled};return r&&(l[r]=!!r),I("div",{"aria-disabled":e.disabled.toString(),key:`panel-${e.uid}`,bind:this,"data-panel":e,onclick:this._triggerPanel,onkeydown:this._triggerPanel,class:this.classes(M.actionsMenuItem,a),role:"button",tabindex:e.disabled?null:0,title:s,"aria-label":s},I("span",{class:this.classes(l),styles:o}))}renderActionsSections(e,t,i){const s=t.toArray().map(((t,i)=>I("ul",{key:`${e}-action-section-${i}`,class:M.actionsList},this.renderActionSection(e,t))));return I("div",{role:"group","aria-expanded":e.actionsOpen?"true":"false",key:"actions-section",id:i,class:M.actions,hidden:!e.actionsOpen||null},s)}renderActionSection(e,t){return(t&&t.toArray()).map((t=>this.renderAction({item:e,action:t})))}renderActionIcon(e){const{active:t,className:i}=e,s=this._getIconImageStyles(e),n="button"!==e.type||e.image||i?i:M.iconDefaultAction,r={[M.actionImage]:!t&&!!s["background-image"],[M.iconLoading]:t,[M.rotating]:t};return n&&!t&&(r[n]=!0),I("span",{key:"action-icon","aria-hidden":"true",class:this.classes(M.actionIcon,r),styles:s})}renderActionTitle(e,t){return t?null:I("span",{key:"action-title",class:M.actionTitle},e)}renderAction(e){const{item:t,action:i,singleAction:s}=e,{active:n,disabled:r,title:o}=i,a={[M.actionsMenuItem]:s&&"button"===i.type,[M.action]:n||!s&&"toggle"!==i.type,[M.actionToggle]:!n&&"toggle"===i.type,[M.actionToggleOn]:!n&&"toggle"===i.type&&i.value,[M.disabledElement]:r},l=[this.renderActionIcon(i),this.renderActionTitle(o,s)];return s?I("div",{bind:this,"data-item":t,"data-action":i,role:"button",key:`single-action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:a,tabindex:"0",title:o??void 0,"aria-label":o},l):I("li",{bind:this,"data-item":t,"data-action":i,key:`action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:a,tabindex:"0",role:"button",title:o??void 0,"aria-label":o},l)}_setVisibleItems(){const{referenceItems:e,baseItems:t,visibleElements:i}=this,s=e.concat(t);this.visibleItems=s?.filter((e=>!e.hidden&&(i.errors||!e.error)))}_setTooltipReference(e,t){this._tooltipReferenceMap.set(t.uid,e),this.scheduleRender()}_hasMessage(e){return!!e.error||e.incompatible}_hasChildren(e){return!!e.children.length&&!this._hasMessage(e)}_filterActions(e){return e.map((e=>e.filter((e=>e.visible))))}_destroyReferenceSortable(){const{_sortableReferenceLayers:e}=this;e?.el&&e.destroy(),this._sortableReferenceLayersNode=null}_destroyBaseSortable(){const{_sortableBaseLayers:e}=this;e?.el&&e.destroy(),this._sortableBaseLayersNode=null}_toggleEditingTitle(){const{_editingTitle:e}=this,t=!e;this._editingTitle=t,this._focusOnElement=t?"edit-input":"edit-button",this.scheduleRender()}_storeEditTitleInput(e){this._editTitleInput=e,this._focusEditElement()}_focusEditElement(){this._editTitleInput&&"edit-input"===this._focusOnElement&&(this._focusOnElement=null,this._editTitleInput.focus()),this._editTitleButton&&"edit-button"===this._focusOnElement&&(this._focusOnElement=null,this._editTitleButton.focus())}_storeEditTitleButton(e){this._editTitleButton=e,this._focusEditElement()}_formSubmit(e){e.preventDefault();const t=this._editTitleInput?.value;t?.trim()&&(this.basemapTitle=t),this._toggleEditingTitle()}_itemMovedList(e){const t=e.item["data-item"],i=e.to.dataset.nodeRef,s=e.from.dataset.nodeRef,n=e.newIndex;this.viewModel.transferListItem({listItem:t,from:s,to:i,newIndex:n})}_toggleSortingBaseLayers(){const{_sortableBaseLayers:e,_sortableBaseLayersNode:t,editingEnabled:i}=this;if(!t)return;const s=!i;if(e)e.option("disabled",s);else{const e=v.create(t,{dataIdAttr:S,group:A,filter:`.${M.itemOnlyChild}`,fallbackTolerance:4,disabled:s,onSort:()=>this._sortLayersToItems({type:"base",itemIds:e.toArray()}),onAdd:e=>this._itemMovedList(e),chosenClass:M.sortableChosen});this._sortableBaseLayers=e}}_toggleSortingReferenceLayers(){const{_sortableReferenceLayers:e,_sortableReferenceLayersNode:t,editingEnabled:i}=this;if(!t)return;const s=!i;if(e)e.option("disabled",s);else{const e=v.create(t,{dataIdAttr:S,group:A,disabled:s,fallbackTolerance:4,onSort:()=>this._sortLayersToItems({type:"reference",itemIds:e.toArray()}),onAdd:e=>this._itemMovedList(e),chosenClass:M.sortableChosen});this._sortableReferenceLayers=e}}_toggleSorting(){this._toggleSortingBaseLayers(),this._toggleSortingReferenceLayers()}_sortNodeCreated(e){const t=e.getAttribute("data-node-ref");"base"===t&&(this._sortableBaseLayersNode=e),"reference"===t&&(this._sortableReferenceLayersNode=e),this._toggleSorting()}_getItems(e){return e.toArray().filter((e=>!e.hidden&&(this.visibleElements.errors||!e.error)))}_getSingleActionButton(e){return e.reduce((e=>e)).filter((e=>e&&"button"===e.type)).getItemAt(0)}_sortLayersToItems({type:e,itemIds:t}){const i="base"===e?this.get("view.map.basemap.baseLayers"):"reference"===e?this.get("view.map.basemap.referenceLayers"):null;i&&i.sort(((e,i)=>{const s=t.indexOf(e.uid),n=t.indexOf(i.uid);return s>n?-1:s<n?1:0}))}_focusListItem(e){const{_focusSortUid:t}=this;if(!e||!t)return;const i=e["data-item"];i.layer?.uid===t&&(e.focus(),this._focusSortUid=null)}_selectionKeydown(e){const t=["ArrowDown","ArrowUp"],s=i(e);if(!t.includes(s))return void this._toggleSelection(e);e.stopPropagation();const n=e.currentTarget,r=n["data-item"],o=n.dataset.itemType,{_sortableBaseLayers:a,_sortableReferenceLayers:l,selectedItems:c}=this,d="base"===o?a:"reference"===o?l:null;if(!d)return;const h=m(r,c),u=d.toArray(),g=e.target,p=u.indexOf(g.dataset[$]),{baseItems:b,referenceItems:_}=this.viewModel;if(-1!==p){if("ArrowDown"===s){const e=p+1,t=e>=u.length;if(t&&"reference"===o&&h){const e=b.length;return this.viewModel.transferListItem({listItem:r,from:"reference",to:"base",newIndex:e}),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if(t&&"reference"===o){const e=b.getItemAt(0);return this._focusSortUid=e?.layer?.uid,void this.scheduleRender()}if(t)return;return h&&(L(u,p,e),d.sort(u),this._sortLayersToItems({type:o,itemIds:d.toArray()})),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if("ArrowUp"===s){const e=p-1,t=e<0;if(t&&"base"===o&&h){if(1===b.length)return;const e=0;return this.viewModel.transferListItem({listItem:r,from:"base",to:"reference",newIndex:e}),this._focusSortUid=r.layer?.uid,void this.scheduleRender()}if(t&&"base"===o){const e=_.getItemAt(_.length-1);return this._focusSortUid=e?.layer?.uid,void this.scheduleRender()}if(t)return;h&&(L(u,p,e),d.sort(u),this._sortLayersToItems({type:o,itemIds:d.toArray()})),this._focusSortUid=r.layer?.uid,this.scheduleRender()}}}_watchActionSectionChanges(e,t){this.handles.add(e.on("change",(()=>this.scheduleRender())),t),e.forEach((e=>this._renderOnActionChanges(e,t)))}_renderOnActionChanges(e,t){"toggle"!==e.type?"slider"!==e.type?this.handles.add([n((()=>[e.className,e.image,e.id,e.title,e.visible]),(()=>this.scheduleRender()),o)],t):this.handles.add([n((()=>[e.className,e.id,e.title,e.visible,e.value,e.displayValueEnabled,e.max,e.min,e.step]),(()=>this.scheduleRender()),o)],t):this.handles.add([n((()=>[e.className,e.image,e.id,e.title,e.visible,e.value]),(()=>this.scheduleRender()),o)],t)}_renderOnItemChanges(e,t){this.handles.add([n((()=>[e.actionsOpen,e.visible,e.open,e.updating,e.connectionStatus,e.publishing,e.title,e.visibleAtCurrentScale,e.error,e.visibilityMode,e.panel,e.panel?.title,e.panel?.content,e.panel?.className]),(()=>this.scheduleRender()),o),n((()=>[e.hidden,e.error]),(()=>this._setVisibleItems())),e.actionsSections.on("change",(()=>this.scheduleRender())),e.children.on("change",(()=>this.scheduleRender()))],t),e.children.forEach((e=>this._renderOnItemChanges(e,t))),e.actionsSections.forEach((e=>this._watchActionSectionChanges(e,t)))}_itemsChanged(e,t){this.handles.remove(t),this._tooltipReferenceMap.clear(),this._setVisibleItems(),e.forEach((e=>this._renderOnItemChanges(e,t))),this.scheduleRender()}_countActions(e){return e.reduce(((e,t)=>e+t.length),0)}_getIconImageStyles(e){const t="esri.widgets.LayerList.ListItemPanel"===e.declaredClass||"esri.support.Action.ActionButton"===e.declaredClass||"esri.support.Action.ActionToggle"===e.declaredClass?e.image:null;return{"background-image":t?`url("${t}")`:""}}_toggleActionsOpen(e){e.stopPropagation();const t=e.currentTarget["data-item"],{actionsOpen:i}=t,s=!i,{baseItems:n,referenceItems:r}=this;s&&(n.forEach((e=>x(e))),r.forEach((e=>x(e)))),t.actionsOpen=s}_triggerPanel(e){e.stopPropagation();const t=e.currentTarget["data-panel"];t&&!t.disabled&&(t.open=!t.open)}_triggerAction(e){e.stopPropagation();const t=e.currentTarget,i=t["data-action"],s=t["data-item"];"toggle"===i.type&&(i.value=!i.value),this.triggerAction(i,s)}_toggleVisibility(e){e.stopPropagation();const t=e.currentTarget,i=t.getAttribute("data-parent-visibility"),s=t["data-item"];i===O.exclusive&&s.visible||(s.visible=!s.visible)}_toggleChildrenClick(e){e.stopPropagation();const t=e.currentTarget["data-item"];t.open=!t.open}_toggleSelection(e){e.stopPropagation();const{multipleSelectionEnabled:t,selectedItems:i}=this,s=t&&(e.metaKey||e.ctrlKey),n=e.currentTarget["data-item"],r=m(n,i),{length:o}=i;if(!s)return o&&!(r&&1===o)?(i.removeAll(),void i.add(n)):void(r?i.remove(r):i.add(n));r?i.remove(r):i.add(n)}};e([a()],N.prototype,"visibleItems",void 0),e([a()],N.prototype,"basemapTitle",null),e([a()],N.prototype,"baseListItemCreatedFunction",null),e([a()],N.prototype,"editingEnabled",void 0),e([a()],N.prototype,"headingLevel",void 0),e([a()],N.prototype,"iconClass",void 0),e([a()],N.prototype,"label",null),e([a(),y("esri/widgets/BasemapLayerList/t9n/BasemapLayerList")],N.prototype,"messages",void 0),e([a(),y("esri/t9n/common")],N.prototype,"messagesCommon",void 0),e([a()],N.prototype,"multipleSelectionEnabled",void 0),e([a()],N.prototype,"referenceListItemCreatedFunction",null),e([a({readOnly:!0})],N.prototype,"baseItems",null),e([a({readOnly:!0})],N.prototype,"referenceItems",null),e([a()],N.prototype,"selectedItems",void 0),e([a()],N.prototype,"view",null),e([f("trigger-action"),a({type:h})],N.prototype,"viewModel",void 0),e([a()],N.prototype,"visibleElements",void 0),e([l("visibleElements")],N.prototype,"castVisibleElements",null),e([_()],N.prototype,"_toggleActionsOpen",null),e([_()],N.prototype,"_triggerPanel",null),e([_()],N.prototype,"_triggerAction",null),e([_()],N.prototype,"_toggleVisibility",null),e([_()],N.prototype,"_toggleChildrenClick",null),e([_()],N.prototype,"_toggleSelection",null),N=e([c("esri.widgets.BasemapLayerList")],N);const j=N;export{j 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.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as t}from"../../chunks/tslib.es6.js";import{HandleOwner as i}from"../../core/HandleOwner.js";import{applySome as e}from"../../core/maybe.js";import{when as n,initial as s,watch as l,on as a}from"../../core/reactiveUtils.js";import{schedule as o}from"../../core/scheduling.js";import{truncateLocalTime as r,resetUTCDate as h,offsetDate as g}from"../../core/timeUtils.js";import{property as d}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as p}from"../../core/accessorSupport/decorators/subclass.js";import u from"../../views/SceneView.js";import c from"../../views/3d/environment/SunLighting.js";import y from"../../views/3d/environment/VirtualLighting.js";import{positionToTimezoneInfo as m}from"../../views/3d/support/earthUtils.js";import{dateTimeToSliderPos as _,sliderPosToDateTime as f,getSeasonFromDate as w,getNorthernHemisphereSeason as D,getSeasonDate as S,Hemisphere as v,calculatePlaySpeed as T}from"./support/daylightUtils.js";import{SliderWithDropdownViewModel as U}from"./support/SliderWithDropdownViewModel.js";import b from"../support/DatePickerViewModel.js";import{formatSliderLabel as L,getSunriseAndSunsetTimes as P}from"../support/timeWidgetUtils.js";let E=class extends i{constructor(t){super(t),this.view=null,this.datePickerViewModel=new b,this.timeSliderViewModel=new U({min:0,max:1439,values:[0],labelFormatFunction:L,inputFormatFunction:L}),this.lightingUpdateInterval=200,this._oldLighting=null,this.playSpeedMultiplier=1,this._lastTime=null,this._sunrise=null,this._sunset=null,this._cachedLightingDateUTC=new Date(0),this._cachedDisplayUTCOffset=0,this._firstInteraction=!0,this._lastLightingUpdate=0,this._nextLightingUpdate=null}initialize(){this.handles.add([n((()=>this.view),(t=>t.when((()=>this._updateLighting(null)))),s),l((()=>e(this._lighting,(t=>"virtual"!==t.type?t.date:null))),(t=>this._scheduleUpdateLighting(t))),a((()=>this._lighting),"timezone-will-change",(t=>this._timezoneWillChange(t)),{onListenerAdd:()=>this._timezoneWillChange(null)}),l((()=>!0===e(this.view,(t=>t.stationary))),(()=>{(this.dayPlaying||this.yearPlaying)&&this._updateSunriseAndSunset()}),s),l((()=>{const t=this.timeSliderViewModel;return{vm:t,state:t.state,sliderPosition:this.timeSliderPosition}}),(({vm:t,state:i,sliderPosition:e})=>{"ready"===i&&t.setValue(0,e)})),l((()=>this.timeSliderViewModel.currentItem?.utcOffset),(t=>this.utcOffset=t)),l((()=>this.timeSliderViewModel.isDropdownOpen),(()=>this.stopPlaying())),l((()=>this.timeSliderViewModel.values),(t=>this.timeSliderPosition=t?.[0]??0)),l((()=>this.datePickerViewModel.value),(t=>{this.dayPlaying=!1,this.localDate=t})),l((()=>this.localDate),(t=>{this.datePickerViewModel.value.valueOf()!==t.getTime()&&this.datePickerViewModel.set("value",t)}))])}destroy(){this._nextLightingUpdate&&(clearTimeout(this._nextLightingUpdate),this._nextLightingUpdate=null),this.view=null}get isSupported(){return null==this.view||"3d"===this.view.type}get utcOffset(){return this._cachedDisplayUTCOffset}set utcOffset(t){t!==this.utcOffset&&null!=this._lighting&&"virtual"!==this._lighting.type&&(this._lighting.displayUTCOffset=t,this._updateLighting(null))}get localDate(){return r(this._lightingDateDisplay)}set localDate(t){t.getTime()!==this.localDate.getTime()&&(this._lightingDateDisplay=h(this._lightingDateDisplay,t))}get timeSliderPosition(){return _(this._lightingDateDisplay)}set timeSliderPosition(t){Math.abs(t-this.timeSliderPosition)>1/60&&(this._lightingDateDisplay=f(this._lightingDateDisplay,t),this.stopPlaying(),this._enableDirectShadowsIfFirstInteraction())}_timezoneFromCamera(t,i){if(null==i||!t.cameraTrackingEnabled)return 0;const e=m([i.longitude,i.latitude]);return null==e?0:Math.round(e.hours+e.minutes/60+e.seconds/3600)}get directShadowsEnabled(){return e(this._lighting,(t=>t.directShadowsEnabled))??!1}set directShadowsEnabled(t){e(this._lighting,(i=>{i.directShadowsEnabled=t}))}get sunLightingEnabled(){return"sun"===this._lightingType}set sunLightingEnabled(t){const i=this._environment;if(t===this._get("sunLightingEnabled")||null==i)return;const e=i.lighting,n=this._oldLighting;this._oldLighting=e;const s={directShadowsEnabled:e.directShadowsEnabled,ambientOcclusionEnabled:e.ambientOcclusionEnabled,waterReflectionEnabled:e.waterReflectionEnabled,cameraTrackingEnabled:e.cameraTrackingEnabled},l=t?"sun":"virtual";let a;a=null!=n&&n.type===l?n:t?new c:new y,a.set(s),i.lighting=a,t||(this.timeSliderViewModel.isDropdownOpen=!1)}set playingState(t){this.playingState!==t&&this.sunLightingEnabled&&(this._set("playingState",t),"none"!==t&&(this._updateSunriseAndSunset(),this._lastTime=Date.now(),this._play(),this._enableDirectShadowsIfFirstInteraction()))}get dayPlaying(){return"day"===this.playingState}set dayPlaying(t){t?this.playingState="day":this.dayPlaying&&(this.playingState="none")}get yearPlaying(){return"year"===this.playingState}set yearPlaying(t){t?this.playingState="year":this.yearPlaying&&(this.playingState="none")}get currentSeason(){return w(this.localDate,this._currentHemisphere)}set currentSeason(t){this.stopPlaying();const i=D(t,this._currentHemisphere);this.localDate=S(this.localDate,i,v.NORTHERN)}get _currentHemisphere(){const t=e(this.view,(t=>t.camera?.position?.latitude));return null==t||t>=0?v.NORTHERN:v.SOUTHERN}get _environment(){return e(this.view,(t=>t.environment))}get _lighting(){return e(this._environment,(t=>t.lighting))}get _lightingType(){return e(this._lighting,(t=>t.type))}get _lightingDateDisplay(){return g(this._cachedLightingDateUTC,this._cachedDisplayUTCOffset,"hours")}set _lightingDateDisplay(t){const i=this._lighting;if(null==i||!this.sunLightingEnabled||"virtual"===i.type)return;const e=g(t,-this._cachedDisplayUTCOffset,"hours");e.getTime()!==i.date.getTime()&&(i.date=e,this._updateLighting(null))}stopPlaying(){this.playingState="none"}toggleDayPlaying(){this.dayPlaying=!this.dayPlaying}toggleYearPlaying(){this.yearPlaying=!this.yearPlaying}toggleSunLightingEnabled(){this.stopPlaying(),this.sunLightingEnabled=!this.sunLightingEnabled}toggleDirectShadowsEnabled(){this.stopPlaying(),this.directShadowsEnabled=!this.directShadowsEnabled}_enableDirectShadowsIfFirstInteraction(){this._firstInteraction&&(this._firstInteraction=!1,this.directShadowsEnabled=!0)}_updateLighting(t){const i=Date.now();this._lastLightingUpdate=i;const{view:e}=this,n=this._lighting;if(null==e||null==n||"virtual"===n.type)return;const s=t||n.date,l=n.displayUTCOffset,a=null!==l?l:this._timezoneFromCamera(n,e.camera?.position);this._cachedLightingDateUTC.getTime()!==s.getTime()&&(this._cachedLightingDateUTC=new Date(s.getTime())),this._cachedDisplayUTCOffset!==a&&(this._cachedDisplayUTCOffset=a)}_timezoneWillChange(t){const i=this._lighting;if(null==i||"virtual"===i.type||!i.cameraTrackingEnabled)return;let e;if(t)e=t.timezoneOffset;else{if(null!=i.displayUTCOffset)return;e=c.calculateTimezoneOffset(i.positionTimezoneInfo)}i.displayUTCOffset=e,this._scheduleUpdateLighting(null)}_scheduleUpdateLighting(t){if(this._nextLightingUpdate||null==t)return;const i=Date.now()-this._lastLightingUpdate,e=this.lightingUpdateInterval-i;e<=0?o((()=>this._updateLighting(t))):this._nextLightingUpdate=setTimeout((()=>{this._updateLighting(null),this._nextLightingUpdate=null}),e)}_play(){const t=this._lighting;if(null!=t&&this.sunLightingEnabled&&"virtual"!==t.type&&(this.dayPlaying||this.yearPlaying)){const i=Date.now()-(this._lastTime??0);if(this.dayPlaying){this._lastTime=Date.now();const e=T(this._sunrise,this._sunset,t.date)*this.playSpeedMultiplier/100*i;if(e>0){let i=new Date(t.date.getTime()+e);const n=t.displayUTCOffset??0;if(((i.getUTCHours()+n)%24+24)%24<((t.date.getUTCHours()+n)%24+24)%24){const n=864e5;i=new Date(t.date.getTime()+e-n)}t.date=i}}else{if(i>1e3){this._lastTime=Date.now();const i=(t.date.getUTCMonth()+1)%12,e=new Date(t.date.getTime());e.setUTCMonth(i),t.date=e}}requestAnimationFrame((()=>this._play()))}}_updateSunriseAndSunset(){const t=this._lighting;if(null==t||"virtual"===t.type||!this.sunLightingEnabled)return;const i=e(this.view,(t=>t.camera?.position));if(null==i)return;const{latitude:n,longitude:s}=i,{date:l,displayUTCOffset:a}=t,o=P(l,n,s,a);o&&(this._sunrise=new Date(o.sunrise),this._sunset=new Date(o.sunset))}};t([d({type:u})],E.prototype,"view",void 0),t([d({type:b,nonNullable:!0})],E.prototype,"datePickerViewModel",void 0),t([d({type:U,nonNullable:!0})],E.prototype,"timeSliderViewModel",void 0),t([d()],E.prototype,"isSupported",null),t([d()],E.prototype,"lightingUpdateInterval",void 0),t([d()],E.prototype,"utcOffset",null),t([d()],E.prototype,"localDate",null),t([d()],E.prototype,"timeSliderPosition",null),t([d()],E.prototype,"directShadowsEnabled",null),t([d()],E.prototype,"sunLightingEnabled",null),t([d({type:["none","day","year"],value:"none"})],E.prototype,"playingState",null),t([d()],E.prototype,"dayPlaying",null),t([d()],E.prototype,"yearPlaying",null),t([d()],E.prototype,"playSpeedMultiplier",void 0),t([d()],E.prototype,"currentSeason",null),t([d()],E.prototype,"_lastTime",void 0),t([d()],E.prototype,"_sunrise",void 0),t([d()],E.prototype,"_sunset",void 0),t([d()],E.prototype,"_cachedLightingDateUTC",void 0),t([d()],E.prototype,"_cachedDisplayUTCOffset",void 0),t([d()],E.prototype,"_firstInteraction",void 0),t([d()],E.prototype,"_currentHemisphere",null),t([d()],E.prototype,"_environment",null),t([d()],E.prototype,"_lighting",null),t([d()],E.prototype,"_lightingType",null),t([d()],E.prototype,"_lightingDateDisplay",null),E=t([p("esri.widgets.Daylight.DaylightViewModel")],E);const O=E;export{O as default};
|
|
5
|
+
import{_ as t}from"../../chunks/tslib.es6.js";import{HandleOwner as i}from"../../core/HandleOwner.js";import{makeHandle as e}from"../../core/handleUtils.js";import{applySome as n,removeMaybe as s}from"../../core/maybe.js";import{when as l,initial as a,watch as o,on as r}from"../../core/reactiveUtils.js";import{schedule as h}from"../../core/scheduling.js";import{truncateLocalTime as g,resetUTCDate as d,offsetDate as p}from"../../core/timeUtils.js";import{property as u}from"../../core/accessorSupport/decorators/property.js";import"../../core/accessorSupport/ensureType.js";import"../../core/arrayUtils.js";import"../../core/has.js";import{subclass as c}from"../../core/accessorSupport/decorators/subclass.js";import y from"../../views/SceneView.js";import m from"../../views/3d/environment/SunLighting.js";import _ from"../../views/3d/environment/VirtualLighting.js";import{positionToTimezoneInfo as f}from"../../views/3d/support/earthUtils.js";import{dateTimeToSliderPos as w,sliderPosToDateTime as D,getSeasonFromDate as S,getNorthernHemisphereSeason as T,getSeasonDate as v,Hemisphere as U,calculatePlaySpeed as b}from"./support/daylightUtils.js";import{SliderWithDropdownViewModel as P}from"./support/SliderWithDropdownViewModel.js";import L from"../support/DatePickerViewModel.js";import{formatSliderLabel as E,getSunriseAndSunsetTimes as O}from"../support/timeWidgetUtils.js";let C=class extends i{constructor(t){super(t),this.view=null,this.datePickerViewModel=new L,this.timeSliderViewModel=new P({min:0,max:1439,values:[0],labelFormatFunction:E,inputFormatFunction:E}),this.lightingUpdateInterval=200,this._oldLighting=null,this.playSpeedMultiplier=1,this._lastTime=null,this._sunrise=null,this._sunset=null,this._cachedLightingDateUTC=new Date(0),this._cachedDisplayUTCOffset=0,this._firstInteraction=!0,this._lastLightingUpdate=0,this._lightingUpdateHandle=null}initialize(){this.handles.add([l((()=>this.view),(t=>t.when((()=>this._updateLighting(null)))),a),o((()=>n(this._lighting,(t=>"virtual"!==t.type?t.date:null))),(t=>this._scheduleLightingUpdate(t))),r((()=>this._lighting),"timezone-will-change",(t=>this._timezoneWillChange(t)),{onListenerAdd:()=>this._timezoneWillChange(null)}),o((()=>!0===n(this.view,(t=>t.stationary))),(()=>{(this.dayPlaying||this.yearPlaying)&&this._updateSunriseAndSunset()}),a),o((()=>{const t=this.timeSliderViewModel;return{vm:t,state:t.state,sliderPosition:this.timeSliderPosition}}),(({vm:t,state:i,sliderPosition:e})=>{"ready"===i&&t.setValue(0,e)})),o((()=>this.timeSliderViewModel.currentItem?.utcOffset),(t=>this.utcOffset=t)),o((()=>this.timeSliderViewModel.isDropdownOpen),(()=>this.stopPlaying())),o((()=>this.timeSliderViewModel.values),(t=>this._setTimeSliderPosition(t?.[0]??0,{forceLightingUpdate:!1}))),o((()=>this.datePickerViewModel.value),(t=>{this.dayPlaying=!1,this.localDate=t})),o((()=>this.localDate),(t=>{this.datePickerViewModel.value.valueOf()!==t.getTime()&&this.datePickerViewModel.set("value",t)}))])}destroy(){this._cancelLightingUpdate(),this.view=null}get isSupported(){return null==this.view||"3d"===this.view.type}get utcOffset(){return this._cachedDisplayUTCOffset}set utcOffset(t){t!==this.utcOffset&&null!=this._lighting&&"virtual"!==this._lighting.type&&(this._lighting.displayUTCOffset=t,this._updateLighting(null))}get localDate(){return g(this._lightingDateDisplay)}set localDate(t){t.getTime()!==this.localDate.getTime()&&(this._lightingDateDisplay=d(this._lightingDateDisplay,t))}get timeSliderPosition(){return w(this._lightingDateDisplay)}set timeSliderPosition(t){this._setTimeSliderPosition(t,{forceLightingUpdate:!0})}_setTimeSliderPosition(t,i){Math.abs(t-this.timeSliderPosition)<=1/60||(this.stopPlaying(),this._enableDirectShadowsIfFirstInteraction(),i.forceLightingUpdate&&(this._cancelLightingUpdate(),this._updateLighting(null)),this._lightingDateDisplay=D(this._lightingDateDisplay,t))}_timezoneFromCamera(t,i){if(null==i||!t.cameraTrackingEnabled)return 0;const e=f([i.longitude,i.latitude]);return null==e?0:Math.round(e.hours+e.minutes/60+e.seconds/3600)}get directShadowsEnabled(){return n(this._lighting,(t=>t.directShadowsEnabled))??!1}set directShadowsEnabled(t){n(this._lighting,(i=>{i.directShadowsEnabled=t}))}get sunLightingEnabled(){return"sun"===this._lightingType}set sunLightingEnabled(t){const i=this._environment;if(t===this._get("sunLightingEnabled")||null==i)return;const e=i.lighting,n=this._oldLighting;this._oldLighting=e;const s={directShadowsEnabled:e.directShadowsEnabled,ambientOcclusionEnabled:e.ambientOcclusionEnabled,waterReflectionEnabled:e.waterReflectionEnabled,cameraTrackingEnabled:e.cameraTrackingEnabled},l=t?"sun":"virtual";let a;a=null!=n&&n.type===l?n:t?new m:new _,a.set(s),i.lighting=a,t||(this.timeSliderViewModel.isDropdownOpen=!1)}set playingState(t){this.playingState!==t&&this.sunLightingEnabled&&(this._set("playingState",t),"none"!==t&&(this._updateSunriseAndSunset(),this._lastTime=Date.now(),this._play(),this._enableDirectShadowsIfFirstInteraction()))}get dayPlaying(){return"day"===this.playingState}set dayPlaying(t){t?this.playingState="day":this.dayPlaying&&(this.playingState="none")}get yearPlaying(){return"year"===this.playingState}set yearPlaying(t){t?this.playingState="year":this.yearPlaying&&(this.playingState="none")}get currentSeason(){return S(this.localDate,this._currentHemisphere)}set currentSeason(t){this.stopPlaying();const i=T(t,this._currentHemisphere);this.localDate=v(this.localDate,i,U.NORTHERN)}get _currentHemisphere(){const t=n(this.view,(t=>t.camera?.position?.latitude));return null==t||t>=0?U.NORTHERN:U.SOUTHERN}get _environment(){return n(this.view,(t=>t.environment))}get _lighting(){return n(this._environment,(t=>t.lighting))}get _lightingType(){return n(this._lighting,(t=>t.type))}get _lightingDateDisplay(){return p(this._cachedLightingDateUTC,this._cachedDisplayUTCOffset,"hours")}set _lightingDateDisplay(t){const i=this._lighting;if(null==i||!this.sunLightingEnabled||"virtual"===i.type)return;const e=p(t,-this._cachedDisplayUTCOffset,"hours");e.getTime()!==i.date.getTime()&&(i.date=e,this._updateLighting(null))}stopPlaying(){this.playingState="none"}toggleDayPlaying(){this.dayPlaying=!this.dayPlaying}toggleYearPlaying(){this.yearPlaying=!this.yearPlaying}toggleSunLightingEnabled(){this.stopPlaying(),this.sunLightingEnabled=!this.sunLightingEnabled}toggleDirectShadowsEnabled(){this.stopPlaying(),this.directShadowsEnabled=!this.directShadowsEnabled}_enableDirectShadowsIfFirstInteraction(){this._firstInteraction&&(this._firstInteraction=!1,this.directShadowsEnabled=!0)}_updateLighting(t){const i=Date.now();this._lastLightingUpdate=i;const{view:e}=this,n=this._lighting;if(null==e||null==n||"virtual"===n.type)return;const s=t||n.date,l=n.displayUTCOffset,a=null!==l?l:this._timezoneFromCamera(n,e.camera?.position);this._cachedLightingDateUTC.getTime()!==s.getTime()&&(this._cachedLightingDateUTC=new Date(s.getTime())),this._cachedDisplayUTCOffset!==a&&(this._cachedDisplayUTCOffset=a)}_timezoneWillChange(t){const i=this._lighting;if(null==i||"virtual"===i.type||!i.cameraTrackingEnabled)return;let e;if(t)e=t.timezoneOffset;else{if(null!=i.displayUTCOffset)return;e=m.calculateTimezoneOffset(i.positionTimezoneInfo)}i.displayUTCOffset=e,this._scheduleLightingUpdate(null)}_scheduleLightingUpdate(t){if(this._lightingUpdateHandle||null==t)return;const i=Date.now()-this._lastLightingUpdate,n=this.lightingUpdateInterval-i;let s=null;const l=()=>{this._updateLighting(t),this._lightingUpdateHandle===s&&(this._lightingUpdateHandle=null)};if(n<=0)this._lightingUpdateHandle=s=h(l);else{const t=setTimeout(l,n);this._lightingUpdateHandle=s=e((()=>clearTimeout(t)))}}_cancelLightingUpdate(){this._lightingUpdateHandle=s(this._lightingUpdateHandle)}_play(){const t=this._lighting;if(null!=t&&this.sunLightingEnabled&&"virtual"!==t.type&&(this.dayPlaying||this.yearPlaying)){const i=Date.now()-(this._lastTime??0);if(this.dayPlaying){this._lastTime=Date.now();const e=b(this._sunrise,this._sunset,t.date)*this.playSpeedMultiplier/100*i;if(e>0){let i=new Date(t.date.getTime()+e);const n=t.displayUTCOffset??0;if(((i.getUTCHours()+n)%24+24)%24<((t.date.getUTCHours()+n)%24+24)%24){const n=864e5;i=new Date(t.date.getTime()+e-n)}t.date=i}}else{if(i>1e3){this._lastTime=Date.now();const i=(t.date.getUTCMonth()+1)%12,e=new Date(t.date.getTime());e.setUTCMonth(i),t.date=e}}requestAnimationFrame((()=>this._play()))}}_updateSunriseAndSunset(){const t=this._lighting;if(null==t||"virtual"===t.type||!this.sunLightingEnabled)return;const i=n(this.view,(t=>t.camera?.position));if(null==i)return;const{latitude:e,longitude:s}=i,{date:l,displayUTCOffset:a}=t,o=O(l,e,s,a);o&&(this._sunrise=new Date(o.sunrise),this._sunset=new Date(o.sunset))}};t([u({type:y})],C.prototype,"view",void 0),t([u({type:L,nonNullable:!0})],C.prototype,"datePickerViewModel",void 0),t([u({type:P,nonNullable:!0})],C.prototype,"timeSliderViewModel",void 0),t([u()],C.prototype,"isSupported",null),t([u()],C.prototype,"lightingUpdateInterval",void 0),t([u()],C.prototype,"utcOffset",null),t([u()],C.prototype,"localDate",null),t([u()],C.prototype,"timeSliderPosition",null),t([u()],C.prototype,"directShadowsEnabled",null),t([u()],C.prototype,"sunLightingEnabled",null),t([u({type:["none","day","year"],value:"none"})],C.prototype,"playingState",null),t([u()],C.prototype,"dayPlaying",null),t([u()],C.prototype,"yearPlaying",null),t([u()],C.prototype,"playSpeedMultiplier",void 0),t([u()],C.prototype,"currentSeason",null),t([u()],C.prototype,"_lastTime",void 0),t([u()],C.prototype,"_sunrise",void 0),t([u()],C.prototype,"_sunset",void 0),t([u()],C.prototype,"_cachedLightingDateUTC",void 0),t([u()],C.prototype,"_cachedDisplayUTCOffset",void 0),t([u()],C.prototype,"_firstInteraction",void 0),t([u()],C.prototype,"_currentHemisphere",null),t([u()],C.prototype,"_environment",null),t([u()],C.prototype,"_lighting",null),t([u()],C.prototype,"_lightingType",null),t([u()],C.prototype,"_lightingDateDisplay",null),C=t([c("esri.widgets.Daylight.DaylightViewModel")],C);const M=C;export{M as default};
|
package/widgets/Expand.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.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import{property as t}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as o}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import s from"./Expand/ExpandViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{isWidget as i,hasDomNode as a}from"./support/widget.js";import{tsx as d}from"./support/jsxFactory.js";import{messageBundle as l}from"./support/decorators/messageBundle.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";const c="esri-expand",u={base:`${c} esri-widget`,modeAuto:`${c}--auto`,modeDrawer:`${c}--drawer`,modeFloating:`${c}--floating`,container:`${c}__container`,containerExpanded:`${c}__container--expanded`,panel:`${c}__panel`,button:"esri-widget--button",text:"esri-icon-font-fallback-text",icon:"esri-collapse__icon",iconExpanded:`${c}__icon--expanded`,iconNumber:`${c}__icon-number`,iconNumberExpanded:`${c}__icon-number--expanded`,expandIcon:"esri-icon-expand",collapseIcon:"esri-icon-collapse",content:`${c}__content`,contentExpanded:`${c}__content--expanded`,expandMask:`${c}__mask`,expandMaskExpanded:`${c}__mask--expanded`};let h=class extends n{constructor(e,t){super(e,t),this.closeOnEsc=!0,this.collapseIcon=null,this.collapseTooltip="",this.content="",this.expandIcon=null,this.expandTooltip="",this.iconClass=null,this.icon=null,this.iconNumber=0,this.messages=null,this.messagesCommon=null,this.mode="auto",this.viewModel=new s,this._handleKeyDown=e=>{const{closeOnEsc:t,_toggleButtonEl:o,expanded:n}=this;if(!n||!t||e.target===o||"Escape"!==e.key)return;("function"==typeof t?t(e):t)&&(this.expanded=!1,o?.focus())}}loadDependencies(){return r({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js")})}get contentId(){return`${this.id}_controls_content`}get expandTitle(){const{expanded:e,messagesCommon:t,collapseTooltip:o,expandTooltip:n}=this;return(e?o||t?.collapse:n||t?.expand)??""}get autoCollapse(){return this.viewModel.autoCollapse}set autoCollapse(e){this.viewModel.autoCollapse=e}get collapseIconClass(){return u.collapseIcon}set collapseIconClass(e){this._overrideIfSome("collapseIconClass",e)}get expanded(){return this.viewModel.expanded}set expanded(e){this.viewModel.expanded=e}get expandIconClass(){return i(this.content)?this.content.iconClass:u.expandIcon}set expandIconClass(e){this._overrideIfSome("expandIconClass",e)}get group(){return this.viewModel.group}set group(e){this.viewModel.group=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}expand(){this.viewModel.expanded=!0}collapse(){this.viewModel.expanded=!1}toggle(){this.viewModel.expanded=!this.viewModel.expanded}render(){const{mode:e}=this,t={[u.modeAuto]:"auto"===e,[u.modeDrawer]:"drawer"===e,[u.modeFloating]:"floating"===e};return d("div",{class:this.classes(u.base,t),onkeydown:this._handleKeyDown},this._renderMask(),this._renderContainer())}_renderContainer(){const{expanded:e}=this,t={[u.containerExpanded]:e};return d("div",{class:this.classes(u.container,t)},this._renderPanel(),this._renderContent())}_renderMask(){const{expanded:e}=this,t={[u.expandMaskExpanded]:e};return d("div",{bind:this,onclick:this._toggle,class:this.classes(u.expandMask,t)})}_renderBadgeNumber(){const{expanded:e,iconNumber:t}=this;return t&&!e?d("span",{key:"expand__icon-number",class:u.iconNumber},t):null}_renderPanelNumber(){const{iconNumber:e,expanded:t}=this;return e&&t?d("span",{key:"expand__expand-icon-number",class:this.classes(u.iconNumber,u.iconNumberExpanded)},e):null}_renderIcon(){const e=(this.expanded?this.collapseIcon:this.expandIcon)??"";return d("calcite-icon",{
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import{property as t}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as o}from"../core/accessorSupport/decorators/subclass.js";import n from"./Widget.js";import s from"./Expand/ExpandViewModel.js";import{loadCalciteComponents as r}from"./support/componentsUtils.js";import{isWidget as i,hasDomNode as a}from"./support/widget.js";import{tsx as d}from"./support/jsxFactory.js";import{messageBundle as l}from"./support/decorators/messageBundle.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";const c="esri-expand",u={base:`${c} esri-widget`,modeAuto:`${c}--auto`,modeDrawer:`${c}--drawer`,modeFloating:`${c}--floating`,container:`${c}__container`,containerExpanded:`${c}__container--expanded`,panel:`${c}__panel`,button:"esri-widget--button",text:"esri-icon-font-fallback-text",icon:"esri-collapse__icon",iconExpanded:`${c}__icon--expanded`,iconNumber:`${c}__icon-number`,iconNumberExpanded:`${c}__icon-number--expanded`,expandIcon:"esri-icon-expand",collapseIcon:"esri-icon-collapse",content:`${c}__content`,contentExpanded:`${c}__content--expanded`,expandMask:`${c}__mask`,expandMaskExpanded:`${c}__mask--expanded`};let h=class extends n{constructor(e,t){super(e,t),this.closeOnEsc=!0,this.collapseIcon=null,this.collapseTooltip="",this.content="",this.expandIcon=null,this.expandTooltip="",this.iconClass=null,this.icon=null,this.iconNumber=0,this.messages=null,this.messagesCommon=null,this.mode="auto",this.viewModel=new s,this._handleKeyDown=e=>{const{closeOnEsc:t,_toggleButtonEl:o,expanded:n}=this;if(!n||!t||e.target===o||"Escape"!==e.key)return;("function"==typeof t?t(e):t)&&(this.expanded=!1,o?.focus())}}loadDependencies(){return r({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js")})}get contentId(){return`${this.id}_controls_content`}get expandTitle(){const{expanded:e,messagesCommon:t,collapseTooltip:o,expandTooltip:n}=this;return(e?o||t?.collapse:n||t?.expand)??""}get autoCollapse(){return this.viewModel.autoCollapse}set autoCollapse(e){this.viewModel.autoCollapse=e}get collapseIconClass(){return u.collapseIcon}set collapseIconClass(e){this._overrideIfSome("collapseIconClass",e)}get expanded(){return this.viewModel.expanded}set expanded(e){this.viewModel.expanded=e}get expandIconClass(){return i(this.content)?this.content.iconClass:u.expandIcon}set expandIconClass(e){this._overrideIfSome("expandIconClass",e)}get group(){return this.viewModel.group}set group(e){this.viewModel.group=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}expand(){this.viewModel.expanded=!0}collapse(){this.viewModel.expanded=!1}toggle(){this.viewModel.expanded=!this.viewModel.expanded}render(){const{mode:e}=this,t={[u.modeAuto]:"auto"===e,[u.modeDrawer]:"drawer"===e,[u.modeFloating]:"floating"===e};return d("div",{class:this.classes(u.base,t),onkeydown:this._handleKeyDown},this._renderMask(),this._renderContainer())}_renderContainer(){const{expanded:e}=this,t={[u.containerExpanded]:e};return d("div",{class:this.classes(u.container,t)},this._renderPanel(),this._renderContent())}_renderMask(){const{expanded:e}=this,t={[u.expandMaskExpanded]:e};return d("div",{bind:this,onclick:this._toggle,class:this.classes(u.expandMask,t)})}_renderBadgeNumber(){const{expanded:e,iconNumber:t}=this;return t&&!e?d("span",{key:"expand__icon-number",class:u.iconNumber},t):null}_renderPanelNumber(){const{iconNumber:e,expanded:t}=this;return e&&t?d("span",{key:"expand__expand-icon-number",class:this.classes(u.iconNumber,u.iconNumberExpanded)},e):null}_renderIcon(){const e=(this.expanded?this.collapseIcon:this.expandIcon)??"";return d("calcite-icon",{key:"icon",icon:e,scale:"s"})}_renderLegacyIcon(){const{collapseIconClass:e,expandIconClass:t,expanded:o}=this,n={[u.iconExpanded]:o};return null!=t&&(n[t]=!o),null!=e&&(n[e]=e===t||o),d("span",{key:"legacy-icon","aria-hidden":"true",class:this.classes(u.icon,n)})}_renderTitle(){return d("span",{class:u.text},this.expandTitle)}_renderExpandButton(){const{expanded:e,expandTitle:t,expandIcon:o,collapseIcon:n,contentId:s}=this;return d("div",{afterCreate:this._storeToggleButtonEl,"aria-controls":s,"aria-expanded":e?"true":"false",bind:this,class:u.button,onclick:this._toggle,onkeydown:this._toggle,role:"button",tabindex:"0",title:t},this._renderBadgeNumber(),!e&&null!=o||e&&null!=n?this._renderIcon():this._renderLegacyIcon(),this._renderTitle())}_renderPanel(){return d("div",{class:u.panel},this._renderExpandButton(),this._renderPanelNumber())}_renderContent(){const{expanded:e,contentId:t,content:o}=this,n={[u.contentExpanded]:e},s={id:t,role:"region",class:this.classes(u.content,n)};return"string"==typeof o?d("div",{key:"content__string",innerHTML:o,...s}):i(o)?d("div",{key:"content__widget",...s},o.render()):o instanceof HTMLElement?d("div",{key:"content__html-element",bind:o,afterCreate:this._attachToNode,...s}):a(o)?d("div",{key:"content__node",bind:o.domNode,afterCreate:this._attachToNode,...s}):null}_toggle(){this.toggle()}_attachToNode(e){const t=this;e.appendChild(t)}_storeToggleButtonEl(e){this._toggleButtonEl=e}};e([t({readOnly:!0})],h.prototype,"contentId",null),e([t({readOnly:!0})],h.prototype,"expandTitle",null),e([t()],h.prototype,"autoCollapse",null),e([t()],h.prototype,"closeOnEsc",void 0),e([t()],h.prototype,"collapseIconClass",null),e([t()],h.prototype,"collapseIcon",void 0),e([t()],h.prototype,"collapseTooltip",void 0),e([t()],h.prototype,"content",void 0),e([t()],h.prototype,"expanded",null),e([t()],h.prototype,"expandIconClass",null),e([t()],h.prototype,"expandIcon",void 0),e([t()],h.prototype,"expandTooltip",void 0),e([t()],h.prototype,"group",null),e([t()],h.prototype,"iconClass",void 0),e([t()],h.prototype,"icon",void 0),e([t()],h.prototype,"iconNumber",void 0),e([t()],h.prototype,"label",null),e([t(),l("esri/widgets/Expand/t9n/Expand")],h.prototype,"messages",void 0),e([t(),l("esri/t9n/common")],h.prototype,"messagesCommon",void 0),e([t()],h.prototype,"mode",void 0),e([t()],h.prototype,"view",null),e([t({type:s})],h.prototype,"viewModel",void 0),e([p()],h.prototype,"_toggle",null),h=e([o("esri.widgets.Expand")],h);const x=h;export{x 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.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../chunks/tslib.es6.js";import"../../intl.js";import t from"../../core/Accessor.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{
|
|
5
|
+
import{_ as e}from"../../chunks/tslib.es6.js";import"../../intl.js";import t from"../../core/Accessor.js";import{HandleOwnerMixin as i}from"../../core/HandleOwner.js";import{generateUID as r}from"../../core/uid.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 s}from"../../core/accessorSupport/decorators/subclass.js";import{CodedValue as o}from"../../layers/support/CodedValue.js";import n from"../../layers/support/CodedValueDomain.js";import"../../layers/support/Domain.js";import"../../layers/support/InheritedDomain.js";import"../../layers/support/RangeDomain.js";import{validateDomainValue as u,DomainValidationError as a,getDomainRange as p}from"../../layers/support/domainUtils.js";import{isNumericField as d,isStringField as m,isDateField as y,TypeValidationError as h,validateFieldValue as c,getFeatureEditFields as E,getFeatureGeometryFields as f,NumericRangeValidationError as g,getFieldRange as v}from"../../layers/support/fieldUtils.js";import{getEffectiveLayerCapabilities as x}from"../../layers/support/layerUtils.js";import{getNormalizedFeatureTypeInfo as b,isFieldElementWithInputType as _}from"./featureFormUtils.js";import{substitute as V}from"../../intl/substitute.js";var T,O;!function(e){e.Text="text",e.Number="number",e.Date="date",e.Unsupported="unsupported"}(T||(T={})),function(e){e.TOO_SHORT="length-validation-error::too-short"}(O||(O={}));const D={type:"number"},j={type:"number",intlOptions:{notation:"scientific"}},A={type:"date",intlOptions:{day:"2-digit",month:"2-digit",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric"}},F="__internal-type-based-coded-value-domain__";function N(e){return e>=1e7||e<=-1e7}let U=class extends(i(t)){constructor(e){super(e),this._storedValue=null,this.arcadeEditType="NA",this.editableExpressionExecutor=null,this.id=r().toString(),this.requiredExpressionExecutor=null,this.valueExpressionExecutor=null,this.visibilityExpressionExecutor=null,this.feature=null,this.field=null,this.fieldElement=null,this.layer=null,this.error=null,this.group=null,this.messages=null}get _configAllowsEdits(){const{fieldElement:e,layer:t,name:i}=this;if(null!=e)return e.editableExpression?!!this.evaluatedEditableExpression:!1!==e.editable;if(t?.userHasUpdateItemPrivileges)return!0;const r=t&&"popupTemplate"in t?t?.popupTemplate?.fieldInfos?.find((({fieldName:e})=>e===i)):null;return r?.isEditable??!0}get _layerFieldAllowsEdits(){const{field:e,layer:t}=this;if(!t||!e)return!1;const i=x(t),r=i?.operations.supportsEditing,l=e.editable,s=L(i,this.arcadeEditType);return!!(r&&l&&s)}get isUsingValueExpression(){return this._shouldUseValueExpression()}get evaluatedEditableExpression(){const{editableExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedRequiredExpression(){const{requiredExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedVisibilityExpression(){const{visibilityExpressionExecutor:e}=this;return null!=e?!!e.lastEvaluatedValue:null}get evaluatedValueExpression(){const{valueExpressionExecutor:e}=this;return null!=e?e.lastEvaluatedValue:null}set initialFeature(e){this._set("initialFeature",e),this.notifyChange("valid")}get description(){return this.fieldElement?.description}get domain(){const{layer:e}=this,{typeFieldName:t,types:i}=b(e);if(t===this.name&&null==this.field.domain)return new n({name:F,codedValues:i.map((({code:e,name:t})=>new o({code:e,name:t})))});const{feature:r}=this,l=e?.getFieldDomain(this.name,{feature:r}),s=this.fieldElement?.domain;return null!=s&&this._isDomainCompatible(s)?s:l}get editable(){return!!this._layerFieldAllowsEdits&&(this.evaluatedEditableExpression??this._configAllowsEdits)}get inputType(){return this.fieldElement?.input?.type}get errorMessage(){return this._toErrorMessage()}get hint(){return this.fieldElement?.hint}get includeTime(){const{fieldElement:e}=this,t=null!=e&&"datetime-picker"===e.input?.type?e.input.includeTime:void 0;return void 0===t||t}get label(){return null!=this.fieldElement&&this.fieldElement.label||this.field.alias||this.field.name}get maxLength(){const e=-1;if(this.type===T.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=q(i)?i.input.maxLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:r}get minLength(){const e=-1;if(this.type===T.Date)return e;const{field:t,fieldElement:i}=this,r=t?.length,l=q(i)?i.input.minLength:NaN;return null!=l&&!isNaN(l)&&l>=e&&(r===e||l<=r)?l:e}get name(){return this.field?.name}get required(){const{editable:e,evaluatedRequiredExpression:t,field:i,visible:r}=this;return!!e&&(!1===i?.nullable||!(!r||null==t)&&t)}set required(e){this._overrideIfSome("required",e)}get submittable(){const{field:e,required:t,valid:i,value:r}=this;return(!t||null!=r)&&(!!i||this.initialFeature.getAttribute(e.name)===r)}get type(){const{field:e}=this;return d(e)?T.Number:m(e)?T.Text:y(e)?T.Date:T.Unsupported}get updating(){const{editableExpressionExecutor:e,valueExpressionExecutor:t}=this;return null!=t&&t.updating||null!=e&&e.updating}get valid(){const e=this.editable?this._validate():null;return this._set("error",e),null===e}get value(){if(this._shouldUseValueExpression()){const e=this.evaluatedValueExpression;if(this.type===T.Date){if(e instanceof Date)return e.getTime();if("number"!=typeof e)return parseInt(e,10)}return null!=e&&"object"==typeof e?e.toString():e}return this.get("_storedValue")}set value(e){this.notifyChange("evaluatedVisibilityExpression"),this.set("_storedValue",e)}get visible(){return!this._isEditorField()&&(null!=this.evaluatedVisibilityExpression?this.evaluatedVisibilityExpression:null!=this.fieldElement||this._isVisibleByDefault())}_isDomainCompatible(e){const{field:t}=this;if("coded-value"===e?.type){const i=typeof e.codedValues[0].code;if("string"===i&&m(t)||"number"===i&&d(t))return!0}return!!("range"===e?.type&&d(t)||y(t))}_validate(){const{domain:e,field:t,initialFeature:i,minLength:r,required:l,type:s,valid:o,value:n}=this,a=l&&null===n,p=void 0!==o;return!a&&i.getAttribute(t.name)===n&&p?null:a?h.INVALID_TYPE:"text"===s&&r>-1&&"string"==typeof n&&n.length<r?O.TOO_SHORT:e?null!==n||l?u(e,n):null:c(t,n)}_isVisibleByDefault(){const e=this.field?.type;return this.field?.visible&&"oid"!==e&&"global-id"!==e&&!this._isGeometryField()}_isEditorField(){return E(this.layer).includes(this.name)}_isGeometryField(){return f(this.layer).includes(this.name)}_shouldUseValueExpression(){return this._layerFieldAllowsEdits&&!this._configAllowsEdits&&null!=this.valueExpressionExecutor}_toErrorMessage(){const{domain:e,field:t,messages:i,minLength:r,value:l,required:s,type:o}=this,n=this.error;if(!i)return null;if(s&&null===l)return i.validationErrors.cannotBeNull;if(n===a.VALUE_OUT_OF_RANGE||n===g.OUT_OF_RANGE){const r=p(e)||v(t);return V(i.validationErrors.outsideRange,r,{format:{max:"date"===o?A:N(r.max)?j:D,min:"date"===o?A:N(r.min)?j:D}})}return n===a.INVALID_CODED_VALUE?i.validationErrors.invalidCodedValue:n===h.INVALID_TYPE?i.validationErrors.invalidType:n===O.TOO_SHORT?V(i.validationErrors.tooShort,{min:r}):null}};e([l()],U.prototype,"_storedValue",void 0),e([l()],U.prototype,"_configAllowsEdits",null),e([l()],U.prototype,"_layerFieldAllowsEdits",null),e([l()],U.prototype,"arcadeEditType",void 0),e([l()],U.prototype,"editableExpressionExecutor",void 0),e([l()],U.prototype,"requiredExpressionExecutor",void 0),e([l()],U.prototype,"valueExpressionExecutor",void 0),e([l()],U.prototype,"isUsingValueExpression",null),e([l()],U.prototype,"visibilityExpressionExecutor",void 0),e([l()],U.prototype,"evaluatedEditableExpression",null),e([l()],U.prototype,"evaluatedRequiredExpression",null),e([l()],U.prototype,"evaluatedVisibilityExpression",null),e([l()],U.prototype,"evaluatedValueExpression",null),e([l()],U.prototype,"feature",void 0),e([l()],U.prototype,"field",void 0),e([l({constructOnly:!0})],U.prototype,"fieldElement",void 0),e([l()],U.prototype,"initialFeature",null),e([l()],U.prototype,"layer",void 0),e([l({readOnly:!0})],U.prototype,"description",null),e([l()],U.prototype,"domain",null),e([l()],U.prototype,"editable",null),e([l({readOnly:!0})],U.prototype,"inputType",null),e([l({readOnly:!0})],U.prototype,"error",void 0),e([l({dependsOn:["error","messages","value"]})],U.prototype,"errorMessage",null),e([l()],U.prototype,"group",void 0),e([l({readOnly:!0})],U.prototype,"hint",null),e([l()],U.prototype,"includeTime",null),e([l()],U.prototype,"label",null),e([l()],U.prototype,"maxLength",null),e([l()],U.prototype,"minLength",null),e([l()],U.prototype,"messages",void 0),e([l({readOnly:!0})],U.prototype,"name",null),e([l()],U.prototype,"required",null),e([l()],U.prototype,"submittable",null),e([l()],U.prototype,"type",null),e([l()],U.prototype,"updating",null),e([l()],U.prototype,"valid",null),e([l({value:null})],U.prototype,"value",null),e([l()],U.prototype,"visible",null),U=e([s("esri.widgets.FeatureForm.FieldInput")],U);const L=(e,t)=>{if(!e)return!0;const{operations:i}=e;switch(t){case"INSERT":return i.supportsAdd;case"UPDATE":case"DELETE":return i.supportsUpdate;default:return!0}},q=e=>null!=e&&(_(e,"text-box")||_(e,"text-area")),w=U;export{w as default};
|
package/widgets/LayerList.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.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import has from"../core/has.js";import{on as s,watch as n,initial as o,syncAndInitial as l}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as a}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import h from"./LayerList/LayerListViewModel.js";import m from"./LayerList/ListItem.js";import{findSelectedItem as g,sortLayersToIds as u,sortChildLayersToIds as p,canSortSublayers as b}from"./LayerList/support/layerListUtils.js";import{loadCalciteComponents as _}from"./support/componentsUtils.js";import{accessibleHandler as y}from"./support/decorators/accessibleHandler.js";import{messageBundle as I}from"./support/decorators/messageBundle.js";import{vmEvent as v}from"./support/decorators/vmEvent.js";import{tsx as f}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import C from"sortablejs";function w(e,t,i){e.splice(i,0,e.splice(t,1)[0])}const A="esri-layerlist-new-ui",S=t.ofType(m),$="data-sort-filter",k="data-layer-uid",L="layerUid",M="esri-layer-list",T=`${M}__item`,E={base:`${M} esri-widget esri-widget--panel`,newUI:`${M}--new-ui`,noItems:`${M}__no-items`,list:`${M}__list`,listRoot:`${M}__list--root`,listExclusive:`${M}__list--exclusive`,listInherited:`${M}__list--inherited`,listIndependent:`${M}__list--independent`,item:T,itemContent:`${T}-content`,itemMessage:`${T}--has-message`,itemInvisible:`${T}--invisible`,itemInvisibleAtScale:`${T}--invisible-at-scale`,itemChildren:`${T}--has-children`,itemSelectable:`${T}--selectable`,itemContainer:`${T}-container`,actionsMenu:`${T}-actions-menu`,actionsMenuItem:`${T}-actions-menu-item`,actionsMenuItemActive:`${T}-actions-menu-item--active`,actions:`${T}-actions`,actionsList:`${T}-actions-list`,action:`${T}-action`,actionIcon:`${T}-action-icon`,actionImage:`${T}-action-image`,actionTitle:`${T}-action-title`,actionToggle:`${M}__action-toggle`,actionToggleOn:`${M}__action-toggle--on`,label:`${T}-label`,message:`${T}-message`,title:`${T}-title`,statusIndicator:`${M}__status-indicator`,publishing:`${M}__publishing`,updating:`${M}__updating`,connectionStatus:`${M}__connection-status`,connectionStatusConnected:`${M}__connection-status--connected`,toggleVisible:`${T}-toggle`,toggleVisibleIcon:`${T}-toggle-icon`,toggleIcon:`${T}-toggle-icon`,radioIcon:`${T}-radio-icon`,childToggle:`${M}__child-toggle`,childToggleOpen:`${M}__child-toggle--open`,childOpened:`${M}__child-toggle-icon--opened`,childClosed:`${M}__child-toggle-icon--closed`,childClosed_RTL:`${M}__child-toggle-icon--closed-rtl`,sortableChosen:`${M}--chosen`,disabled:"esri-disabled",disabledElement:"esri-disabled-element",hidden:"esri-hidden",rotating:"esri-rotating",iconEllipses:"esri-icon-handle-horizontal",iconVisible:"esri-icon-visible",iconInvisible:"esri-icon-non-visible",iconRadioSelected:"esri-icon-radio-checked",iconRadioUnselected:"esri-icon-radio-unchecked",iconNoticeTriangle:"esri-icon-notice-triangle",iconChildrenOpen:"esri-icon-down-arrow",iconDownArrow:"esri-icon-down-arrow",iconRightArrow:"esri-icon-right-triangle-arrow",iconLeftArrow:"esri-icon-left-triangle-arrow",iconLoading:"esri-icon-loading-indicator",iconDefaultAction:"esri-icon-default-action",widgetIcon:"esri-icon-layers"},R={actions:"actions",actionSection:"action-section",items:"items"},x={exclusive:"exclusive",inherited:"inherited",independent:"independent"};function U(e){const{actionsOpen:t,children:i}=e;t&&(e.actionsOpen=!1),i.forEach((e=>U(e)))}const N="root",O={statusIndicators:!0,errors:!1};let j=class extends d{constructor(e,t){super(e,t),this._sortableNodes=new Map,this._sortableMap=new Map,this._focusSortUid=null,this._newUI=has(A),this._tooltipReferenceMap=new Map,this.visibleItems=null,this.iconClass=E.widgetIcon,this.icon=null,this.listItemCanGiveFunction=null,this.listItemCanReceiveFunction=null,this.messages=null,this.messagesCommon=null,this.multipleSelectionEnabled=!1,this.selectionEnabled=!1,this.selectedItems=new S,this.viewModel=new h,this.visibleElements={...O},this._onSortableSort=({to:e,from:t,item:i,newIndex:s})=>{t&&e&&(t===e?this._sortLayers(this._sortableMap.get(t.dataset.group)):this._moveLayerFromChildList({to:e,from:t,item:i,newIndex:s}))},this._sortableCanSort=(e,t)=>!(!e.el.dataset.group||!t.el.dataset.group),this._sortableCanPull=(e,t,i)=>{const{listItemCanGiveFunction:s}=this,n={selected:i["data-item"],from:t.el["data-item"],to:e.el["data-item"]};return!this._sortableCanSort(e,t)||"function"!=typeof s||s.call(null,n)},this._sortableCanPut=(e,t,i)=>{const{listItemCanReceiveFunction:s}=this,n={selected:i["data-item"],from:t.el["data-item"],to:e.el["data-item"]};return!this._sortableCanSort(e,t)||"function"!=typeof s||s.call(null,n)},this._onSortableEnd=({oldIndex:e,from:t,to:i,item:s})=>{t!==i&&t.insertBefore(s,t.children[e])}}initialize(){const e=this.operationalItems;this._setVisibleItems(e),this.addHandles([s((()=>this.operationalItems),"change",(()=>this._itemsChanged(e))),n((()=>this.visibleElements),(()=>this._itemsChanged(e))),n((()=>this.selectionEnabled),(()=>this._toggleAllSorting()),o)])}loadDependencies(){return _({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})}destroy(){this.removeAllHandles(),this._destroySortables(),this._tooltipReferenceMap.clear()}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get listItemCreatedFunction(){return this.viewModel.listItemCreatedFunction}set listItemCreatedFunction(e){this.viewModel.listItemCreatedFunction=e}get operationalItems(){return this.viewModel.operationalItems}set operationalItems(e){this.viewModel.operationalItems=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...O,...e}}triggerAction(e,t){return this.viewModel.triggerAction(e,t)}render(){const{visibleItems:e,_newUI:t}=this,i=this.viewModel?.state,s={[E.newUI]:t,[E.hidden]:"loading"===i,[E.disabled]:"disabled"===i},n=this.renderItemTooltips(),o=this.renderItems();return f("div",{class:this.classes(E.base,s)},e.length?[n,o]:this.renderNoItems())}renderItemTooltip(e){const{_tooltipReferenceMap:t,messages:i}=this;return e?f("calcite-tooltip",{label:i.layerIncompatible,referenceElement:t.get(e.uid)},i.layerIncompatibleTooltip):null}renderItemTooltipNodes(e){const{incompatible:t,children:i}=e;return[t?this.renderItemTooltip(e):null,...!t&&i?i.toArray().map((e=>this.renderItemTooltipNodes(e))):[]]}renderItemTooltips(){return this.visibleItems.toArray().map((e=>this.renderItemTooltipNodes(e)))??[]}renderNoItems(){return f("div",{class:E.noItems},this.messages.noItemsToDisplay)}renderItems(){const{visibleItems:e,selectionEnabled:t,messages:i}=this;return f("ul",{"aria-label":i.widgetLabel,role:t?"listbox":void 0,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,afterRemoved:this._sortNodeRemoved,"data-group":N,bind:this,class:this.classes(E.list,E.listRoot,E.listIndependent)},e.map((e=>this.renderItem(e,null))).toArray())}renderActionsMenuIcon(e,t){const{messagesCommon:i}=this,s={[E.actionsMenuItemActive]:e.actionsOpen};return f("div",{key:"actions-menu-toggle","data-item":e,bind:this,onclick:this._toggleActionsOpen,onkeydown:this._toggleActionsOpen,class:this.classes(E.actionsMenuItem,s),tabindex:"0",role:"button","aria-controls":t,"aria-label":i.options,title:i.options},f("span",{"aria-hidden":"true",class:E.iconEllipses}))}renderActionsMenu(e,t,i,s){const{panel:n}=e,o=n&&n.visible?this.renderPanelButton(n):null,l=1===i&&this._getSingleActionButton(t),r=l?this.renderAction({item:e,action:l,singleAction:!0}):null,a=!l&&i?this.renderActionsMenuIcon(e,s):null;return a||o||l?f("div",{key:"actions-menu",class:E.actionsMenu},o,r,a):null}renderChildList(e,t){const{selectionEnabled:i}=this,{visibilityMode:s,children:n}=e,o=this._hasChildren(e),l=!o&&i&&"group"===e.layer?.type,{exclusive:r,inherited:a}=x,c={[E.listExclusive]:s===r,[E.listInherited]:s===a,[E.listIndependent]:s!==a&&s!==r};return o||l?f("ul",{bind:this,key:"list-items",id:t,"data-group":e.uid,"data-item":e,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,afterRemoved:this._sortNodeRemoved,class:this.classes(E.list,c),"aria-expanded":e.open?"true":"false",role:i?"listbox":s===r?"radiogroup":"group",hidden:!e.open&&!l||null},n?.map((t=>this.renderItem(t,e))).toArray()):null}renderChildrenToggle(e,t){const{messagesCommon:i}=this,s=this._hasChildren(e),n={[E.childToggleOpen]:e.open},o=e.open?i.collapse:i.expand;return s?f("span",{onclick:this._toggleChildrenClick,onkeydown:this._toggleChildrenClick,"data-item":e,key:"toggle-children",class:this.classes(E.childToggle,n),tabindex:"0",role:"button","aria-controls":t,"aria-label":o,title:o},f("span",{"aria-hidden":"true",class:this.classes(E.childClosed,E.iconRightArrow)}),f("span",{"aria-hidden":"true",class:this.classes(E.childOpened,E.iconDownArrow)}),f("span",{"aria-hidden":"true",class:this.classes(E.childClosed_RTL,E.iconLeftArrow)})):null}renderItemMessage(e){return e.error?f("div",{key:"esri-layer-list__error",class:E.message,role:"alert"},f("span",{"aria-hidden":"true",class:E.iconNoticeTriangle}),this.messages.layerError):e.incompatible?f("div",{key:"esri-layer-list__incompatible",class:E.message,role:"alert"},f("span",{bind:this,tabIndex:0,"aria-hidden":"true",class:E.iconNoticeTriangle,afterCreate:t=>this._setTooltipReference(t,e)}),this.messages.layerIncompatible):null}renderItemContent(e,t,i){const{id:s}=this,n=`${s}_${e.uid}`,o=`${n}_actions`,l=`${n}__list`,{panel:r}=e,a=this._filterActions(e.actionsSections),c=this._countActions(a);return[f("div",{key:"list-item-container",class:E.itemContainer},this.renderChildrenToggle(e,l),this.renderLabel(e,t,i),this.renderActionsMenu(e,a,c,o)),this.renderItemMessage(e),c?this.renderActionsSections(e,a,o):null,r&&r.open&&!r.disabled?r.render():null,this.renderChildList(e,l)]}renderItem(e,t){const{_newUI:i,id:s,selectionEnabled:n,selectedItems:o}=this,l=`${`${s}_${e.uid}`}__title`,r=this._hasMessage(e),a=this._hasChildren(e),c={[E.itemChildren]:a,[E.itemMessage]:!!r,[E.itemInvisible]:i&&!e.visible,[E.itemInvisibleAtScale]:!e.visibleAtCurrentScale,[E.itemSelectable]:n};if(n){const i={[k]:e.layer?.uid,[$]:(!e.sortable).toString()};return f("li",{key:`item-with-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(E.item,c),"aria-labelledby":l,onclick:this._toggleSelection,onkeydown:this._selectionKeydown,"data-item":e,"data-group":t?t.uid:N,tabIndex:0,"aria-selected":g(e,o)?"true":"false",role:"option",...i},this.renderItemContent(e,t,l))}return f("li",{key:`item-no-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(E.item,c),"aria-labelledby":l},this.renderItemContent(e,t,l))}renderConnectionIcon(e){const{connectionStatus:t}=e;return null!=t?f("calcite-icon",{icon:"connected"===t?"check-circle":"offline",scale:"s"}):null}renderItemStatus(e,t){const{visibleElements:i}=this;if(!i.statusIndicators)return null;const{connectionStatus:s,publishing:n,updating:o}=e,l=o&&!t,r=!!s;return f("span",{class:this.classes({[E.statusIndicator]:!0,[E.publishing]:n,[E.updating]:l,[E.connectionStatus]:r,[E.connectionStatusConnected]:r&&"connected"===s}),key:"layer-item-status"},this.renderConnectionIcon(e))}renderItemTitle(e,t){const{messages:i}=this;if(!e)return null;const s=e.title||i.untitledLayer,n=e.visibleAtCurrentScale?s:`${s} (${i.layerInvisibleAtScale})`;return f("span",{key:"layer-title-container",id:t,title:n,"aria-label":n,class:E.title},s)}renderItemToggleIcon(e,t){const{_newUI:i}=this,{exclusive:s}=x,n=t?.visibilityMode,o={[E.toggleVisibleIcon]:i,[E.toggleIcon]:i&&n!==s,[E.radioIcon]:i&&n===s,[E.iconRadioSelected]:n===s&&e.visible,[E.iconRadioUnselected]:n===s&&!e.visible,[E.iconVisible]:n!==s&&e.visible,[E.iconInvisible]:n!==s&&!e.visible};return f("span",{key:"item-toggle-icon",class:this.classes(o),"aria-hidden":"true"})}renderItemToggle(e,t,i){const{selectionEnabled:s,messages:n}=this,{exclusive:o}=x,l=t?.visibilityMode,r=l===o?"radio":"switch";return f("span",s?{key:"item-toggle-selection-enabled",class:E.toggleVisible,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":l,tabIndex:0,title:e.visible?n.hideLayer:n.showLayer,"aria-checked":e.visible?"true":"false",role:r,"aria-labelledby":i}:{key:"item-toggle",class:E.toggleVisible},this.renderItemToggleIcon(e,t))}renderLabel(e,t,i){const{selectionEnabled:s,_newUI:n,messages:o}=this,{inherited:l,exclusive:r}=x,a=t?.visibilityMode,c=a===r?"radio":"switch",d=n?[this.renderItemTitle(e,i),this.renderItemStatus(e,t),this.renderItemToggle(e,t,i)]:[this.renderItemToggle(e,t,i),this.renderItemTitle(e,i),this.renderItemStatus(e,t)],h=f("div",s?{key:`item-label-no-selection-${e.uid}`,class:E.label}:{key:`item-label-with-selection-${e.uid}`,class:E.label,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":a,tabIndex:0,"aria-checked":e.visible?"true":"false",title:e.visible?o.hideLayer:o.showLayer,role:c,"aria-labelledby":i},d);return a===l||e.error?f("div",{key:`item-label-container-${e.uid}`,class:E.label},this.renderItemTitle(e,i),this.renderItemStatus(e,t)):h}renderPanelButton(e){const{className:t,open:i,title:s,image:n}=e,o=n||t?t:E.iconDefaultAction,l=this._getIconImageStyles(e),r={[E.actionsMenuItemActive]:i},a={[E.actionImage]:!!l["background-image"],[E.disabledElement]:e.disabled};return o&&(a[o]=!!o),f("div",{"aria-disabled":e.disabled.toString(),key:`panel-${e.uid}`,bind:this,"data-panel":e,onclick:this._triggerPanel,onkeydown:this._triggerPanel,class:this.classes(E.actionsMenuItem,r),role:"button",tabindex:e.disabled?null:0,title:s,"aria-label":s},f("span",{class:this.classes(a),styles:l}))}renderActionsSections(e,t,i){const s=t.toArray().map(((t,i)=>f("ul",{key:`${e}-action-section-${i}`,class:E.actionsList},this.renderActionSection(e,t))));return f("div",{role:"group","aria-expanded":e.actionsOpen?"true":"false",key:"actions-section",id:i,class:E.actions,hidden:!e.actionsOpen||null},s)}renderActionSection(e,t){return(t&&t.toArray()).map((t=>this.renderAction({item:e,action:t})))}renderActionIcon(e){const{active:t,className:i}=e,s=this._getIconImageStyles(e),n="button"!==e.type||e.image||i?i:E.iconDefaultAction,o={[E.actionImage]:!t&&!!s["background-image"],[E.iconLoading]:t,[E.rotating]:t};return n&&!t&&(o[n]=!0),f("span",{key:"action-icon","aria-hidden":"true",class:this.classes(E.actionIcon,o),styles:s})}renderActionTitle(e,t){return t?null:f("span",{key:"action-title",class:E.actionTitle},e)}renderAction(e){const{item:t,action:i,singleAction:s}=e,{active:n,disabled:o,title:l}=i,r={[E.actionsMenuItem]:s&&"button"===i.type,[E.action]:n||!s&&"toggle"!==i.type,[E.actionToggle]:!n&&"toggle"===i.type,[E.actionToggleOn]:!n&&"toggle"===i.type&&i.value,[E.disabledElement]:o},a=[this.renderActionIcon(i),this.renderActionTitle(l,s)];return s?f("div",{bind:this,"data-item":t,"data-action":i,role:"button",key:`single-action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:r,tabindex:"0",title:l??void 0,"aria-label":l??void 0},a):f("li",{bind:this,"data-item":t,"data-action":i,key:`action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:r,tabindex:"0",role:"button",title:l??void 0,"aria-label":l??void 0},a)}_setTooltipReference(e,t){this._tooltipReferenceMap.set(t.uid,e),this.scheduleRender()}_hasMessage(e){return!!e.error||e.incompatible}_hasChildren(e){return!!e.children.length&&!this._hasMessage(e)}_sortNodeRemoved(e){const{_sortableMap:t}=this,i=e.dataset.group,s=t.get(i);s&&s.destroy(),t.delete(i)}_destroySortables(){const{_sortableMap:e,_sortableNodes:t}=this;e.forEach((e=>e&&e.destroy())),e.clear(),t.clear()}_moveLayerFromChildList({to:e,from:t,item:i,newIndex:s}){const n=i["data-item"],o=e["data-item"],l=t["data-item"];this.viewModel.moveListItem(n,l,o,s)}_sortLayers(e){if(!e)return;const t=e.el["data-item"],i=e.toArray();t?p(t,i):u(this.view?.map?.layers,i)}_toggleSorting(e,t){const{_sortableMap:i,selectionEnabled:s}=this,n=i.get(t),o=e["data-item"],l=(t===N||o.childrenSortable&&b(o))&&s;if(n)n.option("disabled",!l);else if(l){const s=C.create(e,{dataIdAttr:k,group:{name:t,pull:this._sortableCanPull,put:this._sortableCanPut},filter:`[${$}="true"]`,fallbackTolerance:4,onSort:this._onSortableSort,onEnd:this._onSortableEnd,disabled:!l,chosenClass:E.sortableChosen});i.set(t,s)}}_toggleAllSorting(){this._sortableNodes.forEach(((e,t)=>this._toggleSorting(e,t)))}_sortNodeCreated(e){const t=e.dataset.group;t&&(this._sortableNodes.set(t,e),this._toggleSorting(e,t))}_setVisibleItems(e){this.visibleItems=e.filter((e=>!e.hidden&&(this.visibleElements.errors||!e.error)))}_getSingleActionButton(e){return e.reduce((e=>e)).filter((e=>e&&"button"===e.type)).getItemAt(0)}_focusListItem(e){const{_focusSortUid:t}=this;if(!e||!t)return;const i=e["data-item"];i.layer?.uid===t&&(e.focus(),this._focusSortUid=null)}_watchActionSectionChanges(e){this.addHandles(e.on("change",this.scheduleRender.bind(this)),R.actionSection),e.forEach((e=>this._renderOnActionChanges(e)))}_renderOnActionChanges(e){"toggle"!==e.type?"slider"!==e.type?this.addHandles(n((()=>[e?.className,e?.image,e?.id,e?.title,e?.visible]),(()=>this.scheduleRender()),o),R.actions):this.addHandles(n((()=>[e?.className,e?.id,e?.title,e?.visible,e?.value,e?.displayValueEnabled,e?.max,e?.min,e?.step]),(()=>this.scheduleRender()),o),R.actions):this.addHandles(n((()=>[e?.className,e?.image,e?.id,e?.title,e?.visible,e?.value]),(()=>this.scheduleRender()),o),R.actions)}_renderOnItemChanges(e){this.addHandles([n((()=>[e?.actionsOpen,e?.visible,e?.open,e?.updating,e?.connectionStatus,e?.publishing,e?.title,e?.visibleAtCurrentScale,e?.error,e?.visibilityMode,e?.panel,e?.panel?.title,e?.panel?.content,e?.panel?.className,e?.sortable,e?.childrenSortable]),(()=>this.scheduleRender()),l),n((()=>[e?.hidden,e?.error]),(()=>this._setVisibleItems(this.operationalItems))),e.actionsSections.on("change",(()=>this.scheduleRender())),e.children.on("change",(()=>this.scheduleRender()))],R.items),e.children.forEach((e=>this._renderOnItemChanges(e))),e.actionsSections.forEach((e=>this._watchActionSectionChanges(e)))}_itemsChanged(e){this.removeHandles(R.items),this.removeHandles(R.actions),this.removeHandles(R.actionSection),e.forEach((e=>this._renderOnItemChanges(e))),this._tooltipReferenceMap.clear(),this._setVisibleItems(e),this.scheduleRender()}_filterActions(e){return e.map((e=>e.filter((e=>e.visible))))}_countActions(e){return e.reduce(((e,t)=>e+t.length),0)}_getIconImageStyles(e){const t="esri.widgets.LayerList.ListItemPanel"===e.declaredClass||"esri.support.Action.ActionButton"===e.declaredClass||"esri.support.Action.ActionToggle"===e.declaredClass?e.image:null;return{"background-image":t?`url("${t}")`:void 0}}_selectionKeydown(e){const t=["ArrowDown","ArrowUp"],s=i(e);if(!t.includes(s))return void this._toggleSelection(e);e.stopPropagation();const n=e.currentTarget,o=n["data-item"],{_sortableMap:l,selectedItems:r}=this,a=n.dataset.group,c=l.get(a);if(!c)return;const d=g(o,r),h=c.toArray(),m=e.target,u=h.indexOf(m.dataset[L]);if(-1!==u){if("ArrowDown"===s){const e=u+1;if(e>=h.length)return;d?(w(h,u,e),c.sort(h),this._sortLayers(c),this._focusSortUid=o.layer?.uid):(this._focusSortUid=o.layer?.uid,this.scheduleRender())}if("ArrowUp"===s){const e=u-1;if(e<=-1)return;d?(w(h,u,e),c.sort(h),this._sortLayers(c),this._focusSortUid=o.layer?.uid):(this._focusSortUid=o.layer?.uid,this.scheduleRender())}}}_toggleActionsOpen(e){const t=e.currentTarget["data-item"],{actionsOpen:i}=t,s=!i;s&&this.operationalItems.forEach((e=>U(e))),t.actionsOpen=s,e.stopPropagation()}_triggerPanel(e){const t=e.currentTarget["data-panel"];e.stopPropagation(),t&&!t.disabled&&(t.open=!t.open)}_triggerAction(e){const t=e.currentTarget,i=t["data-action"],s=t["data-item"];"toggle"===i.type&&(i.value=!i.value),this.triggerAction(i,s),e.stopPropagation()}_toggleVisibility(e){const t=e.currentTarget,i=t.getAttribute("data-parent-visibility"),s=t["data-item"];i===x.exclusive&&s.visible||(s.visible=!s.visible),e.stopPropagation()}_toggleChildrenClick(e){const t=e.currentTarget["data-item"];t.open=!t.open,e.stopPropagation()}_toggleSelection(e){e.stopPropagation();const{multipleSelectionEnabled:t,selectedItems:i}=this,s=e.currentTarget["data-item"],n=g(s,i),{length:o}=i;if(!t)return o&&!(n&&1===o)?(i.removeAll(),void i.add(s)):void(n?i.remove?.(n):i.add(s));n?i.remove?.(n):i.add(s)}get test(){return{visibleItems:this.visibleItems}}};e([r()],j.prototype,"visibleItems",void 0),e([r()],j.prototype,"iconClass",void 0),e([r()],j.prototype,"icon",void 0),e([r()],j.prototype,"label",null),e([r()],j.prototype,"listItemCanGiveFunction",void 0),e([r()],j.prototype,"listItemCanReceiveFunction",void 0),e([r()],j.prototype,"listItemCreatedFunction",null),e([r(),I("esri/widgets/LayerList/t9n/LayerList")],j.prototype,"messages",void 0),e([r(),I("esri/t9n/common")],j.prototype,"messagesCommon",void 0),e([r()],j.prototype,"multipleSelectionEnabled",void 0),e([r()],j.prototype,"operationalItems",null),e([r()],j.prototype,"selectionEnabled",void 0),e([r()],j.prototype,"selectedItems",void 0),e([r()],j.prototype,"view",null),e([v("trigger-action"),r({type:h})],j.prototype,"viewModel",void 0),e([r()],j.prototype,"visibleElements",void 0),e([a("visibleElements")],j.prototype,"castVisibleElements",null),e([y()],j.prototype,"_toggleActionsOpen",null),e([y()],j.prototype,"_triggerPanel",null),e([y()],j.prototype,"_triggerAction",null),e([y()],j.prototype,"_toggleVisibility",null),e([y()],j.prototype,"_toggleChildrenClick",null),e([y()],j.prototype,"_toggleSelection",null),j=e([c("esri.widgets.LayerList")],j);const V=j;export{V as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import t from"../core/Collection.js";import{eventKey as i}from"../core/events.js";import has from"../core/has.js";import{on as s,watch as n,initial as o,syncAndInitial as l}from"../core/reactiveUtils.js";import{property as r}from"../core/accessorSupport/decorators/property.js";import{cast as a}from"../core/accessorSupport/decorators/cast.js";import"../core/arrayUtils.js";import{subclass as c}from"../core/accessorSupport/decorators/subclass.js";import d from"./Widget.js";import h from"./LayerList/LayerListViewModel.js";import m from"./LayerList/ListItem.js";import{findSelectedItem as g,sortLayersToIds as u,sortChildLayersToIds as p,canSortSublayers as b}from"./LayerList/support/layerListUtils.js";import{loadCalciteComponents as _}from"./support/componentsUtils.js";import{accessibleHandler as y}from"./support/decorators/accessibleHandler.js";import{messageBundle as I}from"./support/decorators/messageBundle.js";import{vmEvent as v}from"./support/decorators/vmEvent.js";import{tsx as f}from"./support/jsxFactory.js";import"./support/widgetUtils.js";import C from"sortablejs";function w(e,t,i){e.splice(i,0,e.splice(t,1)[0])}const A="esri-layerlist-new-ui",S=t.ofType(m),$="data-sort-filter",k="data-layer-uid",M="layerUid",T="esri-layer-list",L=`${T}__item`,E={base:`${T} esri-widget esri-widget--panel`,newUI:`${T}--new-ui`,noItems:`${T}__no-items`,list:`${T}__list`,listRoot:`${T}__list--root`,listExclusive:`${T}__list--exclusive`,listInherited:`${T}__list--inherited`,listIndependent:`${T}__list--independent`,item:L,itemContent:`${L}-content`,itemMessage:`${L}--has-message`,itemInvisible:`${L}--invisible`,itemInvisibleAtScale:`${L}--invisible-at-scale`,itemChildren:`${L}--has-children`,itemSelectable:`${L}--selectable`,itemContainer:`${L}-container`,actionsMenu:`${L}-actions-menu`,actionsMenuItem:`${L}-actions-menu-item`,actionsMenuItemActive:`${L}-actions-menu-item--active`,actions:`${L}-actions`,actionsList:`${L}-actions-list`,action:`${L}-action`,actionIcon:`${L}-action-icon`,actionImage:`${L}-action-image`,actionTitle:`${L}-action-title`,actionToggle:`${T}__action-toggle`,actionToggleOn:`${T}__action-toggle--on`,label:`${L}-label`,message:`${L}-message`,title:`${L}-title`,statusIndicator:`${T}__status-indicator`,publishing:`${T}__publishing`,updating:`${T}__updating`,connectionStatus:`${T}__connection-status`,connectionStatusConnected:`${T}__connection-status--connected`,toggleVisible:`${L}-toggle`,toggleVisibleIcon:`${L}-toggle-icon`,toggleIcon:`${L}-toggle-icon`,radioIcon:`${L}-radio-icon`,childToggle:`${T}__child-toggle`,childToggleOpen:`${T}__child-toggle--open`,childOpened:`${T}__child-toggle-icon--opened`,childClosed:`${T}__child-toggle-icon--closed`,childClosed_RTL:`${T}__child-toggle-icon--closed-rtl`,sortableChosen:`${T}--chosen`,disabled:"esri-disabled",disabledElement:"esri-disabled-element",hidden:"esri-hidden",rotating:"esri-rotating",iconEllipses:"esri-icon-handle-horizontal",iconVisible:"esri-icon-visible",iconInvisible:"esri-icon-non-visible",iconRadioSelected:"esri-icon-radio-checked",iconRadioUnselected:"esri-icon-radio-unchecked",iconNoticeTriangle:"esri-icon-notice-triangle",iconChildrenOpen:"esri-icon-down-arrow",iconDownArrow:"esri-icon-down-arrow",iconRightArrow:"esri-icon-right-triangle-arrow",iconLeftArrow:"esri-icon-left-triangle-arrow",iconLoading:"esri-icon-loading-indicator",iconDefaultAction:"esri-icon-default-action",widgetIcon:"esri-icon-layers"},R={actions:"actions",actionSection:"action-section",items:"items"},x={exclusive:"exclusive",inherited:"inherited",independent:"independent"};function U(e){const{actionsOpen:t,children:i}=e;t&&(e.actionsOpen=!1),i.forEach((e=>U(e)))}const N="root",O={statusIndicators:!0,errors:!1};let j=class extends d{constructor(e,t){super(e,t),this._sortableNodes=new Map,this._sortableMap=new Map,this._focusSortUid=null,this._newUI=has(A),this._tooltipReferenceMap=new Map,this.visibleItems=null,this.iconClass=E.widgetIcon,this.icon=null,this.listItemCanGiveFunction=null,this.listItemCanReceiveFunction=null,this.messages=null,this.messagesCommon=null,this.multipleSelectionEnabled=!1,this.selectionEnabled=!1,this.selectedItems=new S,this.viewModel=new h,this.visibleElements={...O},this._onSortableSort=({to:e,from:t,item:i,newIndex:s})=>{t&&e&&(t===e?this._sortLayers(this._sortableMap.get(t.dataset.group)):this._moveLayerFromChildList({to:e,from:t,item:i,newIndex:s}))},this._sortableCanSort=(e,t)=>!(!e.el.dataset.group||!t.el.dataset.group),this._sortableCanPull=(e,t,i)=>{const{listItemCanGiveFunction:s}=this,n={selected:i["data-item"],from:t.el["data-item"],to:e.el["data-item"]};return!this._sortableCanSort(e,t)||"function"!=typeof s||s.call(null,n)},this._sortableCanPut=(e,t,i)=>{const{listItemCanReceiveFunction:s}=this,n={selected:i["data-item"],from:t.el["data-item"],to:e.el["data-item"]};return!this._sortableCanSort(e,t)||"function"!=typeof s||s.call(null,n)},this._onSortableEnd=({oldIndex:e,from:t,to:i,item:s})=>{t!==i&&t.insertBefore(s,t.children[e])}}initialize(){const e=this.operationalItems;this._setVisibleItems(e),this.addHandles([s((()=>this.operationalItems),"change",(()=>this._itemsChanged(e))),n((()=>this.visibleElements),(()=>this._itemsChanged(e))),n((()=>this.selectionEnabled),(()=>this._toggleAllSorting()),o)])}loadDependencies(){return _({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon.js"),tooltip:()=>import("@esri/calcite-components/dist/components/calcite-tooltip.js")})}destroy(){this.removeAllHandles(),this._destroySortables(),this._tooltipReferenceMap.clear()}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get listItemCreatedFunction(){return this.viewModel.listItemCreatedFunction}set listItemCreatedFunction(e){this.viewModel.listItemCreatedFunction=e}get operationalItems(){return this.viewModel.operationalItems}set operationalItems(e){this.viewModel.operationalItems=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}castVisibleElements(e){return{...O,...e}}triggerAction(e,t){return this.viewModel.triggerAction(e,t)}render(){const{visibleItems:e,_newUI:t}=this,i=this.viewModel?.state,s={[E.newUI]:t,[E.hidden]:"loading"===i,[E.disabled]:"disabled"===i},n=this.renderItemTooltips(),o=this.renderItems();return f("div",{class:this.classes(E.base,s)},e.length?[n,o]:this.renderNoItems())}renderItemTooltip(e){const{_tooltipReferenceMap:t,messages:i}=this;return e?f("calcite-tooltip",{label:i.layerIncompatible,referenceElement:t.get(e.uid)},i.layerIncompatibleTooltip):null}renderItemTooltipNodes(e){const{incompatible:t,children:i}=e;return[t?this.renderItemTooltip(e):null,...!t&&i?i.toArray().map((e=>this.renderItemTooltipNodes(e))):[]]}renderItemTooltips(){return this.visibleItems.toArray().map((e=>this.renderItemTooltipNodes(e)))??[]}renderNoItems(){return f("div",{class:E.noItems},this.messages.noItemsToDisplay)}renderItems(){const{visibleItems:e,selectionEnabled:t,messages:i}=this;return f("ul",{"aria-label":i.widgetLabel,role:t?"listbox":void 0,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,afterRemoved:this._sortNodeRemoved,"data-group":N,bind:this,class:this.classes(E.list,E.listRoot,E.listIndependent)},e.map((e=>this.renderItem(e,null))).toArray())}renderActionsMenuIcon(e,t){const{messagesCommon:i}=this,s={[E.actionsMenuItemActive]:e.actionsOpen};return f("div",{key:"actions-menu-toggle","data-item":e,bind:this,onclick:this._toggleActionsOpen,onkeydown:this._toggleActionsOpen,class:this.classes(E.actionsMenuItem,s),tabindex:"0",role:"button","aria-controls":t,"aria-label":i.options,title:i.options},f("span",{"aria-hidden":"true",class:E.iconEllipses}))}renderActionsMenu(e,t,i,s){const{panel:n}=e,o=n&&n.visible?this.renderPanelButton(n):null,l=1===i&&this._getSingleActionButton(t),r=l?this.renderAction({item:e,action:l,singleAction:!0}):null,a=!l&&i?this.renderActionsMenuIcon(e,s):null;return a||o||l?f("div",{key:"actions-menu",class:E.actionsMenu},o,r,a):null}renderChildList(e,t){const{selectionEnabled:i}=this,{visibilityMode:s,children:n}=e,o=this._hasChildren(e),l=!o&&i&&"group"===e.layer?.type,{exclusive:r,inherited:a}=x,c={[E.listExclusive]:s===r,[E.listInherited]:s===a,[E.listIndependent]:s!==a&&s!==r};return o||l?f("ul",{bind:this,key:"list-items",id:t,"data-group":e.uid,"data-item":e,afterCreate:this._sortNodeCreated,afterUpdate:this._sortNodeCreated,afterRemoved:this._sortNodeRemoved,class:this.classes(E.list,c),"aria-expanded":e.open?"true":"false",role:i?"listbox":s===r?"radiogroup":"group",hidden:!e.open&&!l||null},n?.map((t=>this.renderItem(t,e))).toArray()):null}renderChildrenToggle(e,t){const{messagesCommon:i}=this,s=this._hasChildren(e),n={[E.childToggleOpen]:e.open},o=e.open?i.collapse:i.expand;return s?f("span",{onclick:this._toggleChildrenClick,onkeydown:this._toggleChildrenClick,"data-item":e,key:"toggle-children",class:this.classes(E.childToggle,n),tabindex:"0",role:"button","aria-controls":t,"aria-label":o,title:o},f("span",{"aria-hidden":"true",class:this.classes(E.childClosed,E.iconRightArrow)}),f("span",{"aria-hidden":"true",class:this.classes(E.childOpened,E.iconDownArrow)}),f("span",{"aria-hidden":"true",class:this.classes(E.childClosed_RTL,E.iconLeftArrow)})):null}renderItemMessage(e){return e.error?f("div",{key:"esri-layer-list__error",class:E.message,role:"alert"},f("span",{"aria-hidden":"true",class:E.iconNoticeTriangle}),this.messages.layerError):e.incompatible?f("div",{key:"esri-layer-list__incompatible",class:E.message,role:"alert"},f("span",{bind:this,tabIndex:0,"aria-hidden":"true",class:E.iconNoticeTriangle,afterCreate:t=>this._setTooltipReference(t,e)}),this.messages.layerIncompatible):null}renderItemContent(e,t,i){const{id:s}=this,n=`${s}_${e.uid}`,o=`${n}_actions`,l=`${n}__list`,{panel:r}=e,a=this._filterActions(e.actionsSections),c=this._countActions(a);return[f("div",{key:"list-item-container",class:E.itemContainer},this.renderChildrenToggle(e,l),this.renderLabel(e,t,i),this.renderActionsMenu(e,a,c,o)),this.renderItemMessage(e),c?this.renderActionsSections(e,a,o):null,r&&r.open&&!r.disabled?r.render():null,this.renderChildList(e,l)]}renderItem(e,t){const{_newUI:i,id:s,selectionEnabled:n,selectedItems:o}=this,l=`${`${s}_${e.uid}`}__title`,r=this._hasMessage(e),a=this._hasChildren(e),c={[E.itemChildren]:a,[E.itemMessage]:!!r,[E.itemInvisible]:i&&!e.visible,[E.itemInvisibleAtScale]:!e.visibleAtCurrentScale,[E.itemSelectable]:n};if(n){const i={[k]:e.layer?.uid,[$]:(!e.sortable).toString()};return f("li",{key:`item-with-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(E.item,c),"aria-labelledby":l,onclick:this._toggleSelection,onkeydown:this._selectionKeydown,"data-item":e,"data-group":t?t.uid:N,tabIndex:0,"aria-selected":g(e,o)?"true":"false",role:"option",...i},this.renderItemContent(e,t,l))}return f("li",{key:`item-no-selection-${e.uid}`,bind:this,afterCreate:this._focusListItem,afterUpdate:this._focusListItem,class:this.classes(E.item,c),"aria-labelledby":l},this.renderItemContent(e,t,l))}renderConnectionIcon(e){const{connectionStatus:t}=e;return null!=t?f("calcite-icon",{icon:"connected"===t?"check-circle":"offline",scale:"s"}):null}renderItemStatus(e,t){const{visibleElements:i}=this;if(!i.statusIndicators)return null;const{connectionStatus:s,publishing:n,updating:o}=e,l=o&&!t,r=!!s;return f("span",{class:this.classes({[E.statusIndicator]:!0,[E.publishing]:n,[E.updating]:l,[E.connectionStatus]:r,[E.connectionStatusConnected]:r&&"connected"===s}),key:"layer-item-status"},this.renderConnectionIcon(e))}renderItemTitle(e,t){const{messages:i}=this;if(!e)return null;const s=e.title||i.untitledLayer,n=e.visibleAtCurrentScale?s:`${s} (${i.layerInvisibleAtScale})`;return f("span",{key:"layer-title-container",id:t,title:n,"aria-label":n,class:E.title},s)}renderItemToggleIcon(e,t){const{_newUI:i}=this,{exclusive:s}=x,n=t?.visibilityMode,o={[E.toggleVisibleIcon]:i,[E.toggleIcon]:i&&n!==s,[E.radioIcon]:i&&n===s,[E.iconRadioSelected]:n===s&&e.visible,[E.iconRadioUnselected]:n===s&&!e.visible,[E.iconVisible]:n!==s&&e.visible,[E.iconInvisible]:n!==s&&!e.visible};return f("span",{key:"item-toggle-icon",class:this.classes(o),"aria-hidden":"true"})}renderItemToggle(e,t,i){const{selectionEnabled:s,messages:n}=this,{exclusive:o}=x,l=t?.visibilityMode,r=l===o?"radio":"switch";return f("span",s?{key:"item-toggle-selection-enabled",class:E.toggleVisible,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":l,tabIndex:0,title:n.layerVisibility,"aria-checked":e.visible?"true":"false",role:r,"aria-labelledby":i}:{key:"item-toggle",class:E.toggleVisible},this.renderItemToggleIcon(e,t))}renderLabel(e,t,i){const{selectionEnabled:s,_newUI:n,messages:o}=this,{inherited:l,exclusive:r}=x,a=t?.visibilityMode,c=a===r?"radio":"switch",d=n?[this.renderItemTitle(e,i),this.renderItemStatus(e,t),this.renderItemToggle(e,t,i)]:[this.renderItemToggle(e,t,i),this.renderItemTitle(e,i),this.renderItemStatus(e,t)],h=f("div",s?{key:`item-label-no-selection-${e.uid}`,class:E.label}:{key:`item-label-with-selection-${e.uid}`,class:E.label,bind:this,onclick:this._toggleVisibility,onkeydown:this._toggleVisibility,"data-item":e,"data-parent-visibility":a,tabIndex:0,"aria-checked":e.visible?"true":"false",title:o.layerVisibility,role:c,"aria-labelledby":i},d);return a===l||e.error?f("div",{key:`item-label-container-${e.uid}`,class:E.label},this.renderItemTitle(e,i),this.renderItemStatus(e,t)):h}renderPanelButton(e){const{className:t,open:i,title:s,image:n}=e,o=n||t?t:E.iconDefaultAction,l=this._getIconImageStyles(e),r={[E.actionsMenuItemActive]:i},a={[E.actionImage]:!!l["background-image"],[E.disabledElement]:e.disabled};return o&&(a[o]=!!o),f("div",{"aria-disabled":e.disabled.toString(),key:`panel-${e.uid}`,bind:this,"data-panel":e,onclick:this._triggerPanel,onkeydown:this._triggerPanel,class:this.classes(E.actionsMenuItem,r),role:"button",tabindex:e.disabled?null:0,title:s,"aria-label":s},f("span",{class:this.classes(a),styles:l}))}renderActionsSections(e,t,i){const s=t.toArray().map(((t,i)=>f("ul",{key:`${e}-action-section-${i}`,class:E.actionsList},this.renderActionSection(e,t))));return f("div",{role:"group","aria-expanded":e.actionsOpen?"true":"false",key:"actions-section",id:i,class:E.actions,hidden:!e.actionsOpen||null},s)}renderActionSection(e,t){return(t&&t.toArray()).map((t=>this.renderAction({item:e,action:t})))}renderActionIcon(e){const{active:t,className:i}=e,s=this._getIconImageStyles(e),n="button"!==e.type||e.image||i?i:E.iconDefaultAction,o={[E.actionImage]:!t&&!!s["background-image"],[E.iconLoading]:t,[E.rotating]:t};return n&&!t&&(o[n]=!0),f("span",{key:"action-icon","aria-hidden":"true",class:this.classes(E.actionIcon,o),styles:s})}renderActionTitle(e,t){return t?null:f("span",{key:"action-title",class:E.actionTitle},e)}renderAction(e){const{item:t,action:i,singleAction:s}=e,{active:n,disabled:o,title:l}=i,r={[E.actionsMenuItem]:s&&"button"===i.type,[E.action]:n||!s&&"toggle"!==i.type,[E.actionToggle]:!n&&"toggle"===i.type,[E.actionToggleOn]:!n&&"toggle"===i.type&&i.value,[E.disabledElement]:o},a=[this.renderActionIcon(i),this.renderActionTitle(l,s)];return s?f("div",{bind:this,"data-item":t,"data-action":i,role:"button",key:`single-action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:r,tabindex:"0",title:l??void 0,"aria-label":l??void 0},a):f("li",{bind:this,"data-item":t,"data-action":i,key:`action-${i.uid}`,onclick:this._triggerAction,onkeydown:this._triggerAction,classes:r,tabindex:"0",role:"button",title:l??void 0,"aria-label":l??void 0},a)}_setTooltipReference(e,t){this._tooltipReferenceMap.set(t.uid,e),this.scheduleRender()}_hasMessage(e){return!!e.error||e.incompatible}_hasChildren(e){return!!e.children.length&&!this._hasMessage(e)}_sortNodeRemoved(e){const{_sortableMap:t}=this,i=e.dataset.group,s=t.get(i);s&&s.destroy(),t.delete(i)}_destroySortables(){const{_sortableMap:e,_sortableNodes:t}=this;e.forEach((e=>e&&e.destroy())),e.clear(),t.clear()}_moveLayerFromChildList({to:e,from:t,item:i,newIndex:s}){const n=i["data-item"],o=e["data-item"],l=t["data-item"];this.viewModel.moveListItem(n,l,o,s)}_sortLayers(e){if(!e)return;const t=e.el["data-item"],i=e.toArray();t?p(t,i):u(this.view?.map?.layers,i)}_toggleSorting(e,t){const{_sortableMap:i,selectionEnabled:s}=this,n=i.get(t),o=e["data-item"],l=(t===N||o.childrenSortable&&b(o))&&s;if(n)n.option("disabled",!l);else if(l){const s=C.create(e,{dataIdAttr:k,group:{name:t,pull:this._sortableCanPull,put:this._sortableCanPut},filter:`[${$}="true"]`,fallbackTolerance:4,onSort:this._onSortableSort,onEnd:this._onSortableEnd,disabled:!l,chosenClass:E.sortableChosen});i.set(t,s)}}_toggleAllSorting(){this._sortableNodes.forEach(((e,t)=>this._toggleSorting(e,t)))}_sortNodeCreated(e){const t=e.dataset.group;t&&(this._sortableNodes.set(t,e),this._toggleSorting(e,t))}_setVisibleItems(e){this.visibleItems=e.filter((e=>!e.hidden&&(this.visibleElements.errors||!e.error)))}_getSingleActionButton(e){return e.reduce((e=>e)).filter((e=>e&&"button"===e.type)).getItemAt(0)}_focusListItem(e){const{_focusSortUid:t}=this;if(!e||!t)return;const i=e["data-item"];i.layer?.uid===t&&(e.focus(),this._focusSortUid=null)}_watchActionSectionChanges(e){this.addHandles(e.on("change",this.scheduleRender.bind(this)),R.actionSection),e.forEach((e=>this._renderOnActionChanges(e)))}_renderOnActionChanges(e){"toggle"!==e.type?"slider"!==e.type?this.addHandles(n((()=>[e?.className,e?.image,e?.id,e?.title,e?.visible]),(()=>this.scheduleRender()),o),R.actions):this.addHandles(n((()=>[e?.className,e?.id,e?.title,e?.visible,e?.value,e?.displayValueEnabled,e?.max,e?.min,e?.step]),(()=>this.scheduleRender()),o),R.actions):this.addHandles(n((()=>[e?.className,e?.image,e?.id,e?.title,e?.visible,e?.value]),(()=>this.scheduleRender()),o),R.actions)}_renderOnItemChanges(e){this.addHandles([n((()=>[e?.actionsOpen,e?.visible,e?.open,e?.updating,e?.connectionStatus,e?.publishing,e?.title,e?.visibleAtCurrentScale,e?.error,e?.visibilityMode,e?.panel,e?.panel?.title,e?.panel?.content,e?.panel?.className,e?.sortable,e?.childrenSortable]),(()=>this.scheduleRender()),l),n((()=>[e?.hidden,e?.error]),(()=>this._setVisibleItems(this.operationalItems))),e.actionsSections.on("change",(()=>this.scheduleRender())),e.children.on("change",(()=>this.scheduleRender()))],R.items),e.children.forEach((e=>this._renderOnItemChanges(e))),e.actionsSections.forEach((e=>this._watchActionSectionChanges(e)))}_itemsChanged(e){this.removeHandles(R.items),this.removeHandles(R.actions),this.removeHandles(R.actionSection),e.forEach((e=>this._renderOnItemChanges(e))),this._tooltipReferenceMap.clear(),this._setVisibleItems(e),this.scheduleRender()}_filterActions(e){return e.map((e=>e.filter((e=>e.visible))))}_countActions(e){return e.reduce(((e,t)=>e+t.length),0)}_getIconImageStyles(e){const t="esri.widgets.LayerList.ListItemPanel"===e.declaredClass||"esri.support.Action.ActionButton"===e.declaredClass||"esri.support.Action.ActionToggle"===e.declaredClass?e.image:null;return{"background-image":t?`url("${t}")`:void 0}}_selectionKeydown(e){const t=["ArrowDown","ArrowUp"],s=i(e);if(!t.includes(s))return void this._toggleSelection(e);e.stopPropagation();const n=e.currentTarget,o=n["data-item"],{_sortableMap:l,selectedItems:r}=this,a=n.dataset.group,c=l.get(a);if(!c)return;const d=g(o,r),h=c.toArray(),m=e.target,u=h.indexOf(m.dataset[M]);if(-1!==u){if("ArrowDown"===s){const e=u+1;if(e>=h.length)return;d?(w(h,u,e),c.sort(h),this._sortLayers(c),this._focusSortUid=o.layer?.uid):(this._focusSortUid=o.layer?.uid,this.scheduleRender())}if("ArrowUp"===s){const e=u-1;if(e<=-1)return;d?(w(h,u,e),c.sort(h),this._sortLayers(c),this._focusSortUid=o.layer?.uid):(this._focusSortUid=o.layer?.uid,this.scheduleRender())}}}_toggleActionsOpen(e){const t=e.currentTarget["data-item"],{actionsOpen:i}=t,s=!i;s&&this.operationalItems.forEach((e=>U(e))),t.actionsOpen=s,e.stopPropagation()}_triggerPanel(e){const t=e.currentTarget["data-panel"];e.stopPropagation(),t&&!t.disabled&&(t.open=!t.open)}_triggerAction(e){const t=e.currentTarget,i=t["data-action"],s=t["data-item"];"toggle"===i.type&&(i.value=!i.value),this.triggerAction(i,s),e.stopPropagation()}_toggleVisibility(e){const t=e.currentTarget,i=t.getAttribute("data-parent-visibility"),s=t["data-item"];i===x.exclusive&&s.visible||(s.visible=!s.visible),e.stopPropagation()}_toggleChildrenClick(e){const t=e.currentTarget["data-item"];t.open=!t.open,e.stopPropagation()}_toggleSelection(e){e.stopPropagation();const{multipleSelectionEnabled:t,selectedItems:i}=this,s=e.currentTarget["data-item"],n=g(s,i),{length:o}=i;if(!t)return o&&!(n&&1===o)?(i.removeAll(),void i.add(s)):void(n?i.remove?.(n):i.add(s));n?i.remove?.(n):i.add(s)}get test(){return{visibleItems:this.visibleItems}}};e([r()],j.prototype,"visibleItems",void 0),e([r()],j.prototype,"iconClass",void 0),e([r()],j.prototype,"icon",void 0),e([r()],j.prototype,"label",null),e([r()],j.prototype,"listItemCanGiveFunction",void 0),e([r()],j.prototype,"listItemCanReceiveFunction",void 0),e([r()],j.prototype,"listItemCreatedFunction",null),e([r(),I("esri/widgets/LayerList/t9n/LayerList")],j.prototype,"messages",void 0),e([r(),I("esri/t9n/common")],j.prototype,"messagesCommon",void 0),e([r()],j.prototype,"multipleSelectionEnabled",void 0),e([r()],j.prototype,"operationalItems",null),e([r()],j.prototype,"selectionEnabled",void 0),e([r()],j.prototype,"selectedItems",void 0),e([r()],j.prototype,"view",null),e([v("trigger-action"),r({type:h})],j.prototype,"viewModel",void 0),e([r()],j.prototype,"visibleElements",void 0),e([a("visibleElements")],j.prototype,"castVisibleElements",null),e([y()],j.prototype,"_toggleActionsOpen",null),e([y()],j.prototype,"_triggerPanel",null),e([y()],j.prototype,"_triggerAction",null),e([y()],j.prototype,"_toggleVisibility",null),e([y()],j.prototype,"_toggleChildrenClick",null),e([y()],j.prototype,"_toggleSelection",null),j=e([c("esri.widgets.LayerList")],j);const V=j;export{V as default};
|
package/widgets/Search.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.27/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{eventKey as t}from"../core/events.js";import{destroyMaybe as s,abortMaybe as r}from"../core/maybe.js";import{watch as i,on as n,initial as o}from"../core/reactiveUtils.js";import{escapeRegExpString as l}from"../core/string.js";import{property as a}from"../core/accessorSupport/decorators/property.js";import"../core/accessorSupport/ensureType.js";import"../core/arrayUtils.js";import"../core/has.js";import{subclass as u}from"../core/accessorSupport/decorators/subclass.js";import c from"./Widget.js";import{CSS as d}from"./Search/css.js";import h from"./Search/SearchResultRenderer.js";import g from"./Search/SearchViewModel.js";import{storeNode as p,keepMenuItemWithinView as m,isActivationKey as v}from"./support/widgetUtils.js";import{messageBundle as _}from"./support/decorators/messageBundle.js";import{vmEvent as M}from"./support/decorators/vmEvent.js";import{tsx as S}from"./support/jsxFactory.js";import{substitute as I}from"../intl/substitute.js";const w=/<[a-z/][\s\S]*>/i;let b=class extends c{constructor(e,t){super(e,t),this._activeMenuItemIndex=-1,this._inputNode=null,this._menuItemCount=0,this._sourceMenuButtonNode=null,this._sourceListNode=null,this._suggestionListNode=null,this._searchResultRenderer=new h,this._suggestController=null,this._searchController=null,this._locateFailed=!1,this._container=null,this.activeMenu="none",this.disabled=!1,this.iconClass=d.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new g,this._clearActiveMenu=()=>{this.activeMenu="none"},this._removeActiveMenu=e=>{const t=e.relatedTarget;t&&this._container?.contains(t)||this._clearActiveMenu()},this.addHandles([i((()=>this.searchTerm),(e=>{(e&&"warning"===this.activeMenu||!e&&!this.get("viewModel.selectedSuggestion.location"))&&this._clearActiveMenu()})),n((()=>this.viewModel?.allSources),"change",(()=>this._watchSourceChanges())),i((()=>this.activeMenu),(()=>this._resetActiveMenuItemIndex()),o),i((()=>this.viewModel?.defaultPopupTemplate),(e=>{e&&(e.content=this._renderSearchResultsContent.bind(this))}),o)])}destroy(){this.removeAllHandles(),this._cancelSuggest(),this._cancelSearch(),this._searchResultRenderer=s(this._searchResultRenderer)}get displayedSearchTerm(){return`${this.viewModel.searchTerm}`.trim()}get inputId(){return this._buildId("input")}get suggestionsMenuId(){return this._buildId("suggest-menu")}get sourceMenuId(){return this._buildId("source-menu")}get sourceMenuButtonId(){return this._buildId("source-menu-button")}get activeSource(){return this.viewModel?.activeSource}get activeSourceIndex(){return this.viewModel.activeSourceIndex}set activeSourceIndex(e){this.viewModel.activeSourceIndex=e}get allPlaceholder(){return this.viewModel.allPlaceholder}set allPlaceholder(e){this.viewModel.allPlaceholder=e}get allSources(){return this.viewModel.allSources}get autoNavigate(){return this.viewModel.autoNavigate}set autoNavigate(e){this.viewModel.autoNavigate=e}get autoSelect(){return this.viewModel.autoSelect}set autoSelect(e){this.viewModel.autoSelect=e}get defaultSources(){return this.viewModel.defaultSources}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get includeDefaultSources(){return this.viewModel.includeDefaultSources}set includeDefaultSources(e){this.viewModel.includeDefaultSources=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get locationEnabled(){return this.viewModel.locationEnabled}set locationEnabled(e){this.viewModel.locationEnabled=e}get maxResults(){return this.viewModel.maxResults}set maxResults(e){this.viewModel.maxResults=e}get maxSuggestions(){return this.viewModel.maxSuggestions}set maxSuggestions(e){this.viewModel.maxSuggestions=e}get minSuggestCharacters(){return this.viewModel.minSuggestCharacters}set minSuggestCharacters(e){this.viewModel.minSuggestCharacters=e}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get popupTemplate(){return this.viewModel.popupTemplate}set popupTemplate(e){this.viewModel.popupTemplate=e}get portal(){return this.viewModel?.portal}set portal(e){this.viewModel&&(this.viewModel.portal=e)}get resultGraphic(){return this.viewModel.resultGraphic}set resultGraphic(e){this.viewModel.resultGraphic=e}get resultGraphicEnabled(){return this.viewModel.resultGraphicEnabled}set resultGraphicEnabled(e){this.viewModel.resultGraphicEnabled=e}get results(){return this.viewModel.results}get searchAllEnabled(){return this.viewModel.searchAllEnabled}set searchAllEnabled(e){this.viewModel.searchAllEnabled=e}get searchTerm(){return this.viewModel.searchTerm}set searchTerm(e){this.viewModel.searchTerm=e}get selectedResult(){return this.viewModel.selectedResult}get sources(){return this.viewModel.sources}set sources(e){this.viewModel.sources=e}get suggestions(){return this.viewModel.suggestions}get suggestionsEnabled(){return this.viewModel.suggestionsEnabled}set suggestionsEnabled(e){this.viewModel.suggestionsEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}clear(){this.viewModel.clear()}focus(){this._inputNode?.focus(),this.emit("search-focus")}blur(){this._inputNode?.blur(),this.emit("search-blur")}async search(e){this._clearActiveMenu(),this._cancelSuggest(),this._cancelSearch();const t=new AbortController,{signal:s}=t;this._searchController=t;let r=null;try{if(r=await this.viewModel.search(e,{signal:s}),this._searchController!==t)return;this._clearActiveMenu(),this._searchController=null}catch(i){if(this._searchController!==t)return;this._clearActiveMenu(),this._searchController=null}if(this._searchController===t)return this.activeMenu=r?.numResults?"none":"warning",this._searchController=null,r}async suggest(e){this._cancelSuggest();const t=new AbortController,{signal:s}=t;this._suggestController=t;try{const r=await this.viewModel.suggest(e,null,{signal:s});if(this._suggestController!==t)return;return this._suggestController=null,r?.numResults&&this._openSuggestionMenu(),this._scrollToTopSuggestion(),r}catch(r){return this._suggestController!==t||(this._suggestController=null),null}}render(){const{state:e}=this.viewModel,t={[d.disabled]:"disabled"===e,[d.esriWidgetDisabled]:this.disabled};return S("div",{class:this.classes(d.base,t)},"loading"===e?this.renderLoader():this.renderContainer())}renderSubmitButton(){const{messages:e,disabled:t}=this;return S("button",{"aria-label":e.searchButtonTitle,bind:this,disabled:t,class:this.classes(d.submitButton,d.button),key:"esri-search__submit-button",onclick:this._handleSearchButtonClick,title:e.searchButtonTitle,type:"button"},S("span",{"aria-hidden":"true",class:d.searchIcon}))}renderWarningMenu(){return S("div",{key:"esri-search__error-menu",class:this.classes(d.menu,d.warningMenu)},S("div",{class:d.warningMenuBody},this.renderWarning()))}renderSourceMenuButton(){const{messages:e,activeMenu:t,sourceMenuId:s,sourceMenuButtonId:r,disabled:i}=this,{activeSourceIndex:n,allSources:o}=this.viewModel;return o.length>1?S("button",{id:r,key:"esri-search__source-menu-button",bind:this,disabled:i,"aria-label":e.searchIn,title:e.searchIn,"aria-haspopup":"true","aria-expanded":("source"===t).toString(),"aria-controls":s,class:this.classes(d.sourcesButton,d.button),onclick:this._handleSourcesMenuToggleClick,onfocus:this._handleSourcesMenuToggleFocus,afterCreate:p,"data-node-ref":"_sourceMenuButtonNode",type:"button"},S("span",{"aria-hidden":"true",class:d.dropdownIcon}),S("span",{"aria-hidden":"true",class:d.dropupIcon}),S("span",{class:d.sourceName},this._getSourceName(n))):null}renderSourcesList(){const{allSources:e,searchAllEnabled:t}=this.viewModel,{_activeMenuItemIndex:s,activeMenu:r,sourceMenuId:i,sourceMenuButtonId:n}=this,o="source"===r&&s>-1?this._buildId("source-item",s):null;return e.length>1?S("ul",{"aria-activedescendant":o,"aria-labelledby":n,id:i,role:"menu",bind:this,afterCreate:p,onkeydown:this._handleSourceMenuKeydown,onkeyup:this._handleSourceMenuKeyup,"data-node-ref":"_sourceListNode",class:d.menuList,tabIndex:-1},t?this.renderSource(g.ALL_INDEX):null,e.map(((e,t)=>this.renderSource(t))).toArray()):null}renderSourcesMenu(){const{allSources:e}=this.viewModel;return e.length>1?S("div",{key:"esri-search__source-menu",class:this.classes(d.menu,d.sourcesMenu)},this.renderSourcesList()):null}renderLoader(){const{messages:e,messagesCommon:t,disabled:s}=this;return S("div",{class:d.loader,key:"base-loader",tabIndex:s?-1:void 0},S("span",{"aria-hidden":"true",class:d.loaderAnimation}),S("span",{class:d.fallbackText},e.searchButtonTitle),S("span",{class:d.loaderText},t.loading))}renderContainer(){const{allSources:e,state:t}=this.viewModel,{activeMenu:s}=this,r={[d.hasMultipleSources]:e.length>1,[d.isLoading]:"loading"===t,[d.isSearching]:"searching"===t,[d.showWarning]:"warning"===s,[d.showSources]:"source"===s,[d.showSuggestions]:"suggestion"===s};return S("div",{tabIndex:-1,afterCreate:e=>{this._container=e,e.addEventListener("focusout",this._removeActiveMenu)},afterRemoved:e=>{e.removeEventListener("focusout",this._removeActiveMenu)},class:this.classes(r,d.container),key:"base-container"},this.renderSourceMenuButton(),this.renderSourcesMenu(),this.renderInputContainer(),this.renderSubmitButton(),this.renderWarningMenu())}renderClearButton(){return this.searchTerm?S("button",{bind:this,disabled:this.disabled,class:this.classes(d.clearButton,d.button),key:"esri-search__clear-button",onclick:this._handleClearButtonClick,onfocus:this._clearActiveMenu,title:this.messages.clearButtonTitle,type:"button"},S("span",{"aria-hidden":"true",class:d.clearIcon})):null}renderLocationGroup(){const{messages:e,locationEnabled:t,displayedSearchTerm:s}=this,r=t&&!s,i="suggestion"===this.activeMenu&&0===this._activeMenuItemIndex;return r?S("ul",{role:"group",key:"esri-search__suggestion-list-current-location",class:this.classes(d.menuList,d.suggestionList,d.suggestionListCurrentLocation)},S("li",{bind:this,"data-current-location-item":!0,onclick:this._handleUseCurrentLocationClick,id:this._buildId("suggestion-item",0),"aria-selected":("suggestion"===this.activeMenu&&0===this._activeMenuItemIndex).toString(),role:"option",class:this.classes(d.menuItem,i?d.menuItemFocus:null)},S("span",{"aria-hidden":"true",class:d.locate})," ",e.useCurrentLocation)):null}renderInput(){const{activeMenu:e,locationEnabled:t,displayedSearchTerm:s,messages:r,suggestionsMenuId:i,inputId:n,_activeMenuItemIndex:o,disabled:l}=this,{maxInputLength:a,placeholder:u,searchTerm:c,suggestionCount:h}=this.viewModel,g=!(!(t&&!s)&&!h),m="suggestion"===e&&o>-1?this._buildId("suggestion-item",o):null;return S("input",{"aria-activedescendant":m,"aria-autocomplete":"list","aria-expanded":(g&&"suggestion"===e).toString(),"aria-controls":g?i:null,"aria-haspopup":"listbox","aria-label":r.searchButtonTitle,bind:this,disabled:l,placeholder:u,maxlength:a,autocomplete:"off",type:"text",class:this.classes(d.esriInput,d.input),value:c,id:n,role:"combobox",onkeyup:this._handleInputKeyup,onclick:this._openSuggestionMenu,oninput:this._handleInputPaste,onpaste:this._handleInputPaste,afterCreate:p,"data-node-ref":"_inputNode",onfocus:this.focus,onblur:this.blur,title:c?"":u})}renderForm(){return S("form",{key:"esri-search__form",bind:this,disabled:this.disabled,class:d.form,onsubmit:this._formSubmit,role:"search"},this.renderInput())}renderSuggestList(e){const{sourceIndex:t}=e,{results:s}=e,r=s?.length;return r?S("ul",{role:"group",key:`esri-search__suggestion-list-${t}`,class:this.classes(d.menuList,d.suggestionList)},s?.map((e=>this.renderSuggestion(e,this._menuItemCount++)))):null}renderSuggestionsGroup(){const{suggestions:e}=this.viewModel;return e?e.map((e=>[this.renderSuggestionHeader(e),this.renderSuggestList(e)])):[]}renderSuggestionsMenu(){const{displayedSearchTerm:e,locationEnabled:t,suggestionsMenuId:s,inputId:r}=this,{suggestionCount:i}=this.viewModel,n=t&&!e||i;return this._menuItemCount=0,n?S("div",{id:s,key:"esri-search__suggestions-menu",class:this.classes(d.menu,d.suggestionsMenu),role:"listbox","aria-labelledby":r,bind:this,afterCreate:p,"data-node-ref":"_suggestionListNode"},this.renderLocationGroup(),this.renderSuggestionsGroup()):null}renderInputContainer(){return S("div",{key:"esri-search__input-container",class:d.inputContainer},this.renderForm(),this.renderSuggestionsMenu(),this.renderClearButton())}renderSuggestionHeader(e){const{allSources:t,activeSourceIndex:s}=this.viewModel,{sourceIndex:r}=e,i=e.results?.length,n=t.length>1&&s===g.ALL_INDEX;return i&&n?S("div",{key:`esri-search__suggestion-header-${r}`,class:d.menuHeader},this._getSourceName(r)):null}renderSuggestion(e,t){const{_activeMenuItemIndex:s,messages:r}=this,{searchTerm:i}=this.viewModel;if(i){const{text:n}=e,o=n||r.untitledResult,l=w.test(o),a=[];if(l)a.push(S("div",{innerHTML:o}));else{const e=this._splitResult(o,i),t=i.toLowerCase();e.forEach(((e,s)=>{e&&e.length&&(e.toLowerCase()===t?a.push(S("strong",{key:s},e)):a.push(e))}))}const u="suggestion"===this.activeMenu&&s===t;return S("li",{bind:this,id:this._buildId("suggestion-item",t),"aria-selected":("suggestion"===this.activeMenu&&this._activeMenuItemIndex===t).toString(),onclick:this._handleSuggestionClick,key:`esri-search__suggestion_${t}`,"data-suggestion":e,role:"option",class:this.classes(d.menuItem,u?d.menuItemFocus:null)},a)}}renderSource(e){const{activeSourceIndex:t,searchAllEnabled:s}=this.viewModel,r={[d.menuItemActive]:e===t,[d.menuItemFocus]:"source"===this.activeMenu&&e===(s?this._activeMenuItemIndex-1:this._activeMenuItemIndex)},i=s?e+1:e;return S("li",{bind:this,key:`esri-search__source-${e}`,id:this._buildId("source-item",i),"aria-checked":(e===t).toString(),onclick:this._handleSourceClick,"data-source-index":e,role:"menuitemradio",class:this.classes(d.source,d.menuItem,r)},this._getSourceName(e))}renderNoResultsWarning(e){const{messages:t}=this,s=e?I(t.noResultsFoundForValue,{value:`"${e}"`}):t.noResultsFound;return S("div",{key:"esri-search__no_results"},S("div",{class:d.warningMenuHeader},t.noResults),S("div",{class:d.warningMenuText},s))}renderEmptySearchWarning(){const{messages:e}=this;return S("div",{key:"esri-search__empty-search"},S("span",{"aria-hidden":"true",class:d.noticeIcon}),S("span",{class:d.noValueText},e.emptyValue))}renderLocateWarning(){const{messages:e}=this;return S("div",{key:"esri-search__locate-error"},S("span",{"aria-hidden":"true",class:d.noticeIcon}),S("span",{class:d.noValueText},e.locateError))}renderWarning(){const{displayedSearchTerm:e,_locateFailed:t}=this,{viewModel:s}=this;return t?this.renderLocateWarning():s.selectedSuggestion?.location||e?this.renderNoResultsWarning(e):this.renderEmptySearchWarning()}_resetActiveMenuItemIndex(){this._activeMenuItemIndex=-1}_buildId(e,t){return`${this.id}-${e}${void 0===t?"":`-${t}`}`}_watchSourceChanges(){const{viewModel:{allSources:e}}=this,t="sources";this.removeHandles(t),e.forEach((e=>this.addHandles(i((()=>e.name),(()=>this.scheduleRender())),t)))}_handleSourcesMenuToggleFocus(){"source"!==this.activeMenu&&this._clearActiveMenu()}_handleSourcesMenuToggleClick(){const e="source"===this.activeMenu;this.activeMenu=e?"none":"source",this.renderNow(),"source"===this.activeMenu&&this._sourceListNode?.focus()}_handleClearButtonClick(){this.viewModel.clear(),this._focus()}_handleSearchButtonClick(){this.search()}_handleSuggestionClick(e){const t=e.currentTarget["data-suggestion"];t&&(this._focus(),this.search(t))}_handleUseCurrentLocationClick(){this._useCurrentLocation()}_useCurrentLocation(){this._focus("none"),this._cancelSuggest(),this._cancelSearch();const e=new AbortController,{signal:t}=e;this._searchController=e;(async()=>{try{const e=await this.viewModel.searchNearby({signal:t});this.activeMenu=e?.numResults?"none":"warning"}catch(e){this._locateFailed=!0,this.activeMenu="warning"}finally{this._searchController=null}})()}_handleSourceClick(e){this._setSourceFromMenuItem(e.currentTarget)}_setSourceFromMenuItem(e){if(!e)return;const t=e["data-source-index"];this.viewModel.activeSourceIndex=t,this._clearActiveMenu(),this._sourceMenuButtonNode?.focus()}_cancelSuggest(){this._suggestController=r(this._suggestController)}_cancelSearch(){this._searchController=r(this._searchController),this._locateFailed=!1}_handleInputKeyup(e){const s=t(e);if(e.ctrlKey||e.metaKey||"Copy"===s||"ArrowLeft"===s||"ArrowRight"===s||"Shift"===s)return;if("Tab"===s||"Escape"===s||e.shiftKey&&"Tab"===s)return this._cancelSuggest(),void("Escape"===s&&this._clearActiveMenu());const r="Home"===s||"End"===s||"ArrowUp"===s||"ArrowDown"===s;if("Enter"===s&&this._activeMenuItemIndex<0)return void this._cancelSuggest();const i=this._suggestionListNode?.getElementsByTagName("li");if(i?.length){if("suggestion"!==this.activeMenu&&this._openSuggestionMenu(),r)return e.preventDefault(),this._cancelSuggest(),void this._handleItemNavigation(s,i,this._suggestionListNode);const t=i[this._activeMenuItemIndex];if("Enter"===s&&t){const e=t["data-suggestion"];return void(e?(this._focus(),this.search(e)):t["data-current-location-item"]&&this._useCurrentLocation())}}this.viewModel.searchTerm&&this.suggest()}_handleItemNavigation(e,t,s){const r=this._activeMenuItemIndex;"Home"===e&&(this._activeMenuItemIndex=0),"End"===e&&(this._activeMenuItemIndex=t.length-1),"ArrowUp"===e&&(this._activeMenuItemIndex=this._activeMenuItemIndex<=0?t.length-1:this._activeMenuItemIndex-1),"ArrowDown"===e&&(this._activeMenuItemIndex=this._activeMenuItemIndex===t.length-1?0:this._activeMenuItemIndex+1),r!==this._activeMenuItemIndex&&s&&m(t[this._activeMenuItemIndex],s)}_scrollToTopSuggestion(){this._suggestionListNode&&(this._suggestionListNode.scrollTop=0)}_openSuggestionMenu(){this.activeMenu="suggestion"}_handleInputPaste(e){const t=e.target;this.viewModel.searchTerm!==t.value&&(this.viewModel.searchTerm=t.value),this.viewModel.searchTerm&&this.suggest()}_handleSourceMenuKeydown(e){const s=t(e);if(v(s)){e.preventDefault();const t=this._sourceListNode?.getElementsByTagName("li"),s=t?.[this._activeMenuItemIndex];this._setSourceFromMenuItem(s)}else"ArrowUp"!==s&&"ArrowDown"!==s&&"End"!==s&&"Home"!==s||e.preventDefault()}_handleSourceMenuKeyup(e){const s=t(e),r="ArrowUp"===s||"ArrowDown"===s||"End"===s||"Home"===s;if(r&&e.preventDefault(),"Escape"===s)return this._clearActiveMenu(),void this._sourceMenuButtonNode?.focus();const i=this._sourceListNode?.getElementsByTagName("li");return i&&0!==i.length&&r?("source"!==this.activeMenu&&(this.activeMenu="source"),void this._handleItemNavigation(s,i,this._sourceListNode?.parentElement)):void 0}_focus(e){this.focus(),e&&(this.activeMenu=e)}_formSubmit(e){e.preventDefault(),-1===this._activeMenuItemIndex&&this.search()}_getSourceName(e){const{messages:t}=this,s=this.viewModel,{allSources:r}=s,i=r.getItemAt(e);return e===g.ALL_INDEX?t.all:i&&i.name||t.untitledSource}_splitResult(e,t){const s=l(t);return e.replace(new RegExp(`(^|)(${s})(|$)`,"ig"),"$1|$2|$3").split("|")}_renderSearchResultsContent(){return this._searchResultRenderer.showMoreResultsOpen=!1,this._searchResultRenderer.viewModel=this.viewModel,this._searchResultRenderer}};e([a()],b.prototype,"_activeMenuItemIndex",void 0),e([a()],b.prototype,"displayedSearchTerm",null),e([a({readOnly:!0})],b.prototype,"inputId",null),e([a({readOnly:!0})],b.prototype,"suggestionsMenuId",null),e([a({readOnly:!0})],b.prototype,"sourceMenuId",null),e([a({readOnly:!0})],b.prototype,"sourceMenuButtonId",null),e([a()],b.prototype,"activeMenu",void 0),e([a({readOnly:!0})],b.prototype,"activeSource",null),e([a()],b.prototype,"activeSourceIndex",null),e([a()],b.prototype,"allPlaceholder",null),e([a({readOnly:!0})],b.prototype,"allSources",null),e([a()],b.prototype,"autoNavigate",null),e([a()],b.prototype,"autoSelect",null),e([a({readOnly:!0})],b.prototype,"defaultSources",null),e([a()],b.prototype,"disabled",void 0),e([a()],b.prototype,"goToOverride",null),e([a()],b.prototype,"iconClass",void 0),e([a()],b.prototype,"icon",void 0),e([a()],b.prototype,"includeDefaultSources",null),e([a()],b.prototype,"label",null),e([a()],b.prototype,"locationEnabled",null),e([a()],b.prototype,"maxResults",null),e([a()],b.prototype,"maxSuggestions",null),e([a(),_("esri/widgets/Search/t9n/Search")],b.prototype,"messages",void 0),e([a(),_("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([a()],b.prototype,"minSuggestCharacters",null),e([a()],b.prototype,"popupEnabled",null),e([a()],b.prototype,"popupTemplate",null),e([a()],b.prototype,"portal",null),e([a()],b.prototype,"resultGraphic",null),e([a()],b.prototype,"resultGraphicEnabled",null),e([a({readOnly:!0})],b.prototype,"results",null),e([a()],b.prototype,"searchAllEnabled",null),e([a()],b.prototype,"searchTerm",null),e([a({readOnly:!0})],b.prototype,"selectedResult",null),e([a()],b.prototype,"sources",null),e([a({readOnly:!0})],b.prototype,"suggestions",null),e([a()],b.prototype,"suggestionsEnabled",null),e([a()],b.prototype,"view",null),e([M(["search-complete","search-clear","search-start","select-result","suggest-start","suggest-complete"]),a({type:g})],b.prototype,"viewModel",void 0),b=e([u("esri.widgets.Search")],b);const y=b;export{y as default};
|
|
5
|
+
import{_ as e}from"../chunks/tslib.es6.js";import"../intl.js";import{eventKey as t}from"../core/events.js";import{destroyMaybe as s,abortMaybe as r}from"../core/maybe.js";import{watch as i,on as n,initial as o}from"../core/reactiveUtils.js";import{escapeRegExpString as a}from"../core/string.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 u}from"../core/accessorSupport/decorators/subclass.js";import c from"./Widget.js";import{CSS as d}from"./Search/css.js";import h from"./Search/SearchResultRenderer.js";import g from"./Search/SearchViewModel.js";import{storeNode as p,keepMenuItemWithinView as m,isActivationKey as v}from"./support/widgetUtils.js";import{messageBundle as _}from"./support/decorators/messageBundle.js";import{vmEvent as M}from"./support/decorators/vmEvent.js";import{tsx as S}from"./support/jsxFactory.js";import{substitute as I}from"../intl/substitute.js";const w=/<[a-z/][\s\S]*>/i;let b=class extends c{constructor(e,t){super(e,t),this._activeMenuItemIndex=-1,this._inputNode=null,this._menuItemCount=0,this._sourceMenuButtonNode=null,this._sourceListNode=null,this._suggestionListNode=null,this._searchResultRenderer=new h,this._suggestController=null,this._searchController=null,this._locateFailed=!1,this._container=null,this.activeMenu="none",this.disabled=!1,this.iconClass=d.widgetIcon,this.icon=null,this.messages=null,this.messagesCommon=null,this.viewModel=new g,this._clearActiveMenu=()=>{this.activeMenu="none"},this._removeActiveMenu=e=>{const t=e.relatedTarget;t&&this._container?.contains(t)||this._clearActiveMenu()},this.addHandles([i((()=>this.searchTerm),(e=>{(e&&"warning"===this.activeMenu||!e&&!this.get("viewModel.selectedSuggestion.location"))&&this._clearActiveMenu()})),n((()=>this.viewModel?.allSources),"change",(()=>this._watchSourceChanges())),i((()=>this.activeMenu),(()=>this._resetActiveMenuItemIndex()),o),i((()=>this.viewModel?.defaultPopupTemplate),(e=>{e&&(e.content=this._renderSearchResultsContent.bind(this))}),o)])}destroy(){this.removeAllHandles(),this._cancelSuggest(),this._cancelSearch(),this._searchResultRenderer=s(this._searchResultRenderer)}get displayedSearchTerm(){return`${this.viewModel.searchTerm}`.trim()}get inputId(){return this._buildId("input")}get suggestionsMenuId(){return this._buildId("suggest-menu")}get sourceMenuId(){return this._buildId("source-menu")}get sourceMenuButtonId(){return this._buildId("source-menu-button")}get activeSource(){return this.viewModel?.activeSource}get activeSourceIndex(){return this.viewModel.activeSourceIndex}set activeSourceIndex(e){this.viewModel.activeSourceIndex=e}get allPlaceholder(){return this.viewModel.allPlaceholder}set allPlaceholder(e){this.viewModel.allPlaceholder=e}get allSources(){return this.viewModel.allSources}get autoNavigate(){return this.viewModel.autoNavigate}set autoNavigate(e){this.viewModel.autoNavigate=e}get autoSelect(){return this.viewModel.autoSelect}set autoSelect(e){this.viewModel.autoSelect=e}get defaultSources(){return this.viewModel.defaultSources}get goToOverride(){return this.viewModel.goToOverride}set goToOverride(e){this.viewModel.goToOverride=e}get includeDefaultSources(){return this.viewModel.includeDefaultSources}set includeDefaultSources(e){this.viewModel.includeDefaultSources=e}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get locationEnabled(){return this.viewModel.locationEnabled}set locationEnabled(e){this.viewModel.locationEnabled=e}get maxResults(){return this.viewModel.maxResults}set maxResults(e){this.viewModel.maxResults=e}get maxSuggestions(){return this.viewModel.maxSuggestions}set maxSuggestions(e){this.viewModel.maxSuggestions=e}get minSuggestCharacters(){return this.viewModel.minSuggestCharacters}set minSuggestCharacters(e){this.viewModel.minSuggestCharacters=e}get popupEnabled(){return this.viewModel.popupEnabled}set popupEnabled(e){this.viewModel.popupEnabled=e}get popupTemplate(){return this.viewModel.popupTemplate}set popupTemplate(e){this.viewModel.popupTemplate=e}get portal(){return this.viewModel?.portal}set portal(e){this.viewModel&&(this.viewModel.portal=e)}get resultGraphic(){return this.viewModel.resultGraphic}set resultGraphic(e){this.viewModel.resultGraphic=e}get resultGraphicEnabled(){return this.viewModel.resultGraphicEnabled}set resultGraphicEnabled(e){this.viewModel.resultGraphicEnabled=e}get results(){return this.viewModel.results}get searchAllEnabled(){return this.viewModel.searchAllEnabled}set searchAllEnabled(e){this.viewModel.searchAllEnabled=e}get searchTerm(){return this.viewModel.searchTerm}set searchTerm(e){this.viewModel.searchTerm=e}get selectedResult(){return this.viewModel.selectedResult}get sources(){return this.viewModel.sources}set sources(e){this.viewModel.sources=e}get suggestions(){return this.viewModel.suggestions}get suggestionsEnabled(){return this.viewModel.suggestionsEnabled}set suggestionsEnabled(e){this.viewModel.suggestionsEnabled=e}get view(){return this.viewModel.view}set view(e){this.viewModel.view=e}clear(){this.viewModel.clear()}focus(){this._inputNode?.focus(),this.emit("search-focus")}blur(){this._inputNode?.blur(),this.emit("search-blur")}async search(e){this._clearActiveMenu(),this._cancelSuggest(),this._cancelSearch();const t=new AbortController,{signal:s}=t;this._searchController=t;try{const r=await this.viewModel.search(e,{signal:s});if(this._searchController!==t)return;return this.activeMenu=r?.numResults?"none":"warning",this._searchController=null,r}catch(r){if(this._searchController!==t)return;return this._clearActiveMenu(),void(this._searchController=null)}}async suggest(e){this._cancelSuggest();const t=new AbortController,{signal:s}=t;this._suggestController=t;try{const r=await this.viewModel.suggest(e,null,{signal:s});if(this._suggestController!==t)return;return this._suggestController=null,r?.numResults&&this._openSuggestionMenu(),this._scrollToTopSuggestion(),r}catch(r){return this._suggestController!==t||(this._suggestController=null),null}}render(){const{state:e}=this.viewModel,t={[d.disabled]:"disabled"===e,[d.esriWidgetDisabled]:this.disabled};return S("div",{class:this.classes(d.base,t)},"loading"===e?this.renderLoader():this.renderContainer())}renderSubmitButton(){const{messages:e,disabled:t}=this;return S("button",{"aria-label":e.searchButtonTitle,bind:this,disabled:t,class:this.classes(d.submitButton,d.button),key:"esri-search__submit-button",onclick:this._handleSearchButtonClick,title:e.searchButtonTitle,type:"button"},S("span",{"aria-hidden":"true",class:d.searchIcon}))}renderWarningMenu(){return S("div",{key:"esri-search__error-menu",class:this.classes(d.menu,d.warningMenu)},S("div",{class:d.warningMenuBody},this.renderWarning()))}renderSourceMenuButton(){const{messages:e,activeMenu:t,sourceMenuId:s,sourceMenuButtonId:r,disabled:i}=this,{activeSourceIndex:n,allSources:o}=this.viewModel;return o.length>1?S("button",{id:r,key:"esri-search__source-menu-button",bind:this,disabled:i,"aria-label":e.searchIn,title:e.searchIn,"aria-haspopup":"true","aria-expanded":("source"===t).toString(),"aria-controls":s,class:this.classes(d.sourcesButton,d.button),onclick:this._handleSourcesMenuToggleClick,onfocus:this._handleSourcesMenuToggleFocus,afterCreate:p,"data-node-ref":"_sourceMenuButtonNode",type:"button"},S("span",{"aria-hidden":"true",class:d.dropdownIcon}),S("span",{"aria-hidden":"true",class:d.dropupIcon}),S("span",{class:d.sourceName},this._getSourceName(n))):null}renderSourcesList(){const{allSources:e,searchAllEnabled:t}=this.viewModel,{_activeMenuItemIndex:s,activeMenu:r,sourceMenuId:i,sourceMenuButtonId:n}=this,o="source"===r&&s>-1?this._buildId("source-item",s):null;return e.length>1?S("ul",{"aria-activedescendant":o,"aria-labelledby":n,id:i,role:"menu",bind:this,afterCreate:p,onkeydown:this._handleSourceMenuKeydown,onkeyup:this._handleSourceMenuKeyup,"data-node-ref":"_sourceListNode",class:d.menuList,tabIndex:-1},t?this.renderSource(g.ALL_INDEX):null,e.map(((e,t)=>this.renderSource(t))).toArray()):null}renderSourcesMenu(){const{allSources:e}=this.viewModel;return e.length>1?S("div",{key:"esri-search__source-menu",class:this.classes(d.menu,d.sourcesMenu)},this.renderSourcesList()):null}renderLoader(){const{messages:e,messagesCommon:t,disabled:s}=this;return S("div",{class:d.loader,key:"base-loader",tabIndex:s?-1:void 0},S("span",{"aria-hidden":"true",class:d.loaderAnimation}),S("span",{class:d.fallbackText},e.searchButtonTitle),S("span",{class:d.loaderText},t.loading))}renderContainer(){const{allSources:e,state:t}=this.viewModel,{activeMenu:s}=this,r={[d.hasMultipleSources]:e.length>1,[d.isLoading]:"loading"===t,[d.isSearching]:"searching"===t,[d.showWarning]:"warning"===s,[d.showSources]:"source"===s,[d.showSuggestions]:"suggestion"===s};return S("div",{tabIndex:-1,afterCreate:e=>{this._container=e,e.addEventListener("focusout",this._removeActiveMenu)},afterRemoved:e=>{e.removeEventListener("focusout",this._removeActiveMenu)},class:this.classes(r,d.container),key:"base-container"},this.renderSourceMenuButton(),this.renderSourcesMenu(),this.renderInputContainer(),this.renderSubmitButton(),this.renderWarningMenu())}renderClearButton(){return this.searchTerm?S("button",{bind:this,disabled:this.disabled,class:this.classes(d.clearButton,d.button),key:"esri-search__clear-button",onclick:this._handleClearButtonClick,onfocus:this._clearActiveMenu,title:this.messages.clearButtonTitle,type:"button"},S("span",{"aria-hidden":"true",class:d.clearIcon})):null}renderLocationGroup(){const{messages:e,locationEnabled:t,displayedSearchTerm:s}=this,r=t&&!s,i="suggestion"===this.activeMenu&&0===this._activeMenuItemIndex;return r?S("ul",{role:"group",key:"esri-search__suggestion-list-current-location",class:this.classes(d.menuList,d.suggestionList,d.suggestionListCurrentLocation)},S("li",{bind:this,"data-current-location-item":!0,onclick:this._handleUseCurrentLocationClick,id:this._buildId("suggestion-item",0),"aria-selected":("suggestion"===this.activeMenu&&0===this._activeMenuItemIndex).toString(),role:"option",class:this.classes(d.menuItem,i?d.menuItemFocus:null)},S("span",{"aria-hidden":"true",class:d.locate})," ",e.useCurrentLocation)):null}renderInput(){const{activeMenu:e,locationEnabled:t,displayedSearchTerm:s,messages:r,suggestionsMenuId:i,inputId:n,_activeMenuItemIndex:o,disabled:a}=this,{maxInputLength:l,placeholder:u,searchTerm:c,suggestionCount:h}=this.viewModel,g=!(!(t&&!s)&&!h),m="suggestion"===e&&o>-1?this._buildId("suggestion-item",o):null;return S("input",{"aria-activedescendant":m,"aria-autocomplete":"list","aria-expanded":(g&&"suggestion"===e).toString(),"aria-controls":g?i:null,"aria-haspopup":"listbox","aria-label":r.searchButtonTitle,bind:this,disabled:a,placeholder:u,maxlength:l,autocomplete:"off",type:"text",class:this.classes(d.esriInput,d.input),value:c,id:n,role:"combobox",onkeyup:this._handleInputKeyup,onclick:this._openSuggestionMenu,oninput:this._handleInputPaste,onpaste:this._handleInputPaste,afterCreate:p,"data-node-ref":"_inputNode",onfocus:this.focus,onblur:this.blur,title:c?"":u})}renderForm(){return S("form",{key:"esri-search__form",bind:this,disabled:this.disabled,class:d.form,onsubmit:this._formSubmit,role:"search"},this.renderInput())}renderSuggestList(e){const{sourceIndex:t}=e,{results:s}=e,r=s?.length;return r?S("ul",{role:"group",key:`esri-search__suggestion-list-${t}`,class:this.classes(d.menuList,d.suggestionList)},s?.map((e=>this.renderSuggestion(e,this._menuItemCount++)))):null}renderSuggestionsGroup(){const{suggestions:e}=this.viewModel;return e?e.map((e=>[this.renderSuggestionHeader(e),this.renderSuggestList(e)])):[]}renderSuggestionsMenu(){const{displayedSearchTerm:e,locationEnabled:t,suggestionsMenuId:s,inputId:r}=this,{suggestionCount:i}=this.viewModel,n=t&&!e||i;return this._menuItemCount=0,n?S("div",{id:s,key:"esri-search__suggestions-menu",class:this.classes(d.menu,d.suggestionsMenu),role:"listbox","aria-labelledby":r,bind:this,afterCreate:p,"data-node-ref":"_suggestionListNode"},this.renderLocationGroup(),this.renderSuggestionsGroup()):null}renderInputContainer(){return S("div",{key:"esri-search__input-container",class:d.inputContainer},this.renderForm(),this.renderSuggestionsMenu(),this.renderClearButton())}renderSuggestionHeader(e){const{allSources:t,activeSourceIndex:s}=this.viewModel,{sourceIndex:r}=e,i=e.results?.length,n=t.length>1&&s===g.ALL_INDEX;return i&&n?S("div",{key:`esri-search__suggestion-header-${r}`,class:d.menuHeader},this._getSourceName(r)):null}renderSuggestion(e,t){const{_activeMenuItemIndex:s,messages:r}=this,{searchTerm:i}=this.viewModel;if(!i)return;const{text:n}=e,o=n||r.untitledResult,a=w.test(o),l=[];a?l.push(S("div",{innerHTML:o})):i.split(" ").forEach((e=>{const t=this._splitResult(o,e),s=e.toLowerCase();t.forEach(((e,t)=>{e?.length&&(e.toLowerCase()===s?l.push(S("strong",{key:t},e)):l.push(e))}))}));const u="suggestion"===this.activeMenu&&s===t;return S("li",{bind:this,id:this._buildId("suggestion-item",t),"aria-selected":("suggestion"===this.activeMenu&&this._activeMenuItemIndex===t).toString(),onclick:this._handleSuggestionClick,key:`esri-search__suggestion_${t}`,"data-suggestion":e,role:"option",class:this.classes(d.menuItem,u?d.menuItemFocus:null)},l)}renderSource(e){const{activeSourceIndex:t,searchAllEnabled:s}=this.viewModel,r={[d.menuItemActive]:e===t,[d.menuItemFocus]:"source"===this.activeMenu&&e===(s?this._activeMenuItemIndex-1:this._activeMenuItemIndex)},i=s?e+1:e;return S("li",{bind:this,key:`esri-search__source-${e}`,id:this._buildId("source-item",i),"aria-checked":(e===t).toString(),onclick:this._handleSourceClick,"data-source-index":e,role:"menuitemradio",class:this.classes(d.source,d.menuItem,r)},this._getSourceName(e))}renderNoResultsWarning(e){const{messages:t}=this,s=e?I(t.noResultsFoundForValue,{value:`"${e}"`}):t.noResultsFound;return S("div",{key:"esri-search__no_results"},S("div",{class:d.warningMenuHeader},t.noResults),S("div",{class:d.warningMenuText},s))}renderEmptySearchWarning(){const{messages:e}=this;return S("div",{key:"esri-search__empty-search"},S("span",{"aria-hidden":"true",class:d.noticeIcon}),S("span",{class:d.noValueText},e.emptyValue))}renderLocateWarning(){const{messages:e}=this;return S("div",{key:"esri-search__locate-error"},S("span",{"aria-hidden":"true",class:d.noticeIcon}),S("span",{class:d.noValueText},e.locateError))}renderWarning(){const{displayedSearchTerm:e,_locateFailed:t}=this,{viewModel:s}=this;return t?this.renderLocateWarning():s.selectedSuggestion?.location||e?this.renderNoResultsWarning(e):this.renderEmptySearchWarning()}_resetActiveMenuItemIndex(){this._activeMenuItemIndex=-1}_buildId(e,t){return`${this.id}-${e}${void 0===t?"":`-${t}`}`}_watchSourceChanges(){const{viewModel:{allSources:e}}=this,t="sources";this.removeHandles(t),e.forEach((e=>this.addHandles(i((()=>e.name),(()=>this.scheduleRender())),t)))}_handleSourcesMenuToggleFocus(){"source"!==this.activeMenu&&this._clearActiveMenu()}_handleSourcesMenuToggleClick(){const e="source"===this.activeMenu;this.activeMenu=e?"none":"source",this.renderNow(),"source"===this.activeMenu&&this._sourceListNode?.focus()}_handleClearButtonClick(){this.viewModel.clear(),this._focus()}_handleSearchButtonClick(){this.search()}_handleSuggestionClick(e){const t=e.currentTarget["data-suggestion"];t&&(this._focus(),this.search(t))}_handleUseCurrentLocationClick(){this._useCurrentLocation()}_useCurrentLocation(){this._focus("none"),this._cancelSuggest(),this._cancelSearch();const e=new AbortController,{signal:t}=e;this._searchController=e;(async()=>{try{const e=await this.viewModel.searchNearby({signal:t});this.activeMenu=e?.numResults?"none":"warning"}catch(e){this._locateFailed=!0,this.activeMenu="warning"}finally{this._searchController=null}})()}_handleSourceClick(e){this._setSourceFromMenuItem(e.currentTarget)}_setSourceFromMenuItem(e){if(!e)return;const t=e["data-source-index"];this.viewModel.activeSourceIndex=t,this._clearActiveMenu(),this._sourceMenuButtonNode?.focus()}_cancelSuggest(){this._suggestController=r(this._suggestController)}_cancelSearch(){this._searchController=r(this._searchController),this._locateFailed=!1}_handleInputKeyup(e){const s=t(e);if(e.ctrlKey||e.metaKey||"Copy"===s||"ArrowLeft"===s||"ArrowRight"===s||"Shift"===s)return;if("Tab"===s||"Escape"===s||e.shiftKey&&"Tab"===s)return this._cancelSuggest(),void("Escape"===s&&this._clearActiveMenu());const r="Home"===s||"End"===s||"ArrowUp"===s||"ArrowDown"===s;if("Enter"===s&&this._activeMenuItemIndex<0)return void this._cancelSuggest();const i=this._suggestionListNode?.getElementsByTagName("li");if(i?.length){if("suggestion"!==this.activeMenu&&this._openSuggestionMenu(),r)return e.preventDefault(),this._cancelSuggest(),void this._handleItemNavigation(s,i,this._suggestionListNode);const t=i[this._activeMenuItemIndex];if("Enter"===s&&t){const e=t["data-suggestion"];return void(e?(this._focus(),this.search(e)):t["data-current-location-item"]&&this._useCurrentLocation())}}this.viewModel.searchTerm&&this.suggest()}_handleItemNavigation(e,t,s){const r=this._activeMenuItemIndex;"Home"===e&&(this._activeMenuItemIndex=0),"End"===e&&(this._activeMenuItemIndex=t.length-1),"ArrowUp"===e&&(this._activeMenuItemIndex=this._activeMenuItemIndex<=0?t.length-1:this._activeMenuItemIndex-1),"ArrowDown"===e&&(this._activeMenuItemIndex=this._activeMenuItemIndex===t.length-1?0:this._activeMenuItemIndex+1),r!==this._activeMenuItemIndex&&s&&m(t[this._activeMenuItemIndex],s)}_scrollToTopSuggestion(){this._suggestionListNode&&(this._suggestionListNode.scrollTop=0)}_openSuggestionMenu(){this.activeMenu="suggestion"}_handleInputPaste(e){const t=e.target;this.viewModel.searchTerm!==t.value&&(this.viewModel.searchTerm=t.value),this.viewModel.searchTerm&&this.suggest()}_handleSourceMenuKeydown(e){const s=t(e);if(v(s)){e.preventDefault();const t=this._sourceListNode?.getElementsByTagName("li"),s=t?.[this._activeMenuItemIndex];this._setSourceFromMenuItem(s)}else"ArrowUp"!==s&&"ArrowDown"!==s&&"End"!==s&&"Home"!==s||e.preventDefault()}_handleSourceMenuKeyup(e){const s=t(e),r="ArrowUp"===s||"ArrowDown"===s||"End"===s||"Home"===s;if(r&&e.preventDefault(),"Escape"===s)return this._clearActiveMenu(),void this._sourceMenuButtonNode?.focus();const i=this._sourceListNode?.getElementsByTagName("li");return i&&0!==i.length&&r?("source"!==this.activeMenu&&(this.activeMenu="source"),void this._handleItemNavigation(s,i,this._sourceListNode?.parentElement)):void 0}_focus(e){this.focus(),e&&(this.activeMenu=e)}_formSubmit(e){e.preventDefault(),-1===this._activeMenuItemIndex&&this.search()}_getSourceName(e){const{messages:t}=this,s=this.viewModel,{allSources:r}=s,i=r.getItemAt(e);return e===g.ALL_INDEX?t.all:i&&i.name||t.untitledSource}_splitResult(e,t){const s=a(t);return e.replace(new RegExp(`(^|)(${s})(|$)`,"ig"),"$1|$2|$3").split("|")}_renderSearchResultsContent(){return this._searchResultRenderer.showMoreResultsOpen=!1,this._searchResultRenderer.viewModel=this.viewModel,this._searchResultRenderer}};e([l()],b.prototype,"_activeMenuItemIndex",void 0),e([l()],b.prototype,"displayedSearchTerm",null),e([l({readOnly:!0})],b.prototype,"inputId",null),e([l({readOnly:!0})],b.prototype,"suggestionsMenuId",null),e([l({readOnly:!0})],b.prototype,"sourceMenuId",null),e([l({readOnly:!0})],b.prototype,"sourceMenuButtonId",null),e([l()],b.prototype,"activeMenu",void 0),e([l({readOnly:!0})],b.prototype,"activeSource",null),e([l()],b.prototype,"activeSourceIndex",null),e([l()],b.prototype,"allPlaceholder",null),e([l({readOnly:!0})],b.prototype,"allSources",null),e([l()],b.prototype,"autoNavigate",null),e([l()],b.prototype,"autoSelect",null),e([l({readOnly:!0})],b.prototype,"defaultSources",null),e([l()],b.prototype,"disabled",void 0),e([l()],b.prototype,"goToOverride",null),e([l()],b.prototype,"iconClass",void 0),e([l()],b.prototype,"icon",void 0),e([l()],b.prototype,"includeDefaultSources",null),e([l()],b.prototype,"label",null),e([l()],b.prototype,"locationEnabled",null),e([l()],b.prototype,"maxResults",null),e([l()],b.prototype,"maxSuggestions",null),e([l(),_("esri/widgets/Search/t9n/Search")],b.prototype,"messages",void 0),e([l(),_("esri/t9n/common")],b.prototype,"messagesCommon",void 0),e([l()],b.prototype,"minSuggestCharacters",null),e([l()],b.prototype,"popupEnabled",null),e([l()],b.prototype,"popupTemplate",null),e([l()],b.prototype,"portal",null),e([l()],b.prototype,"resultGraphic",null),e([l()],b.prototype,"resultGraphicEnabled",null),e([l({readOnly:!0})],b.prototype,"results",null),e([l()],b.prototype,"searchAllEnabled",null),e([l()],b.prototype,"searchTerm",null),e([l({readOnly:!0})],b.prototype,"selectedResult",null),e([l()],b.prototype,"sources",null),e([l({readOnly:!0})],b.prototype,"suggestions",null),e([l()],b.prototype,"suggestionsEnabled",null),e([l()],b.prototype,"view",null),e([M(["search-complete","search-clear","search-start","select-result","suggest-start","suggest-complete"]),l({type:g})],b.prototype,"viewModel",void 0),b=e([u("esri.widgets.Search")],b);const y=b;export{y as default};
|