@honua/app-platform 0.0.20-alpha.0
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/LICENSE +201 -0
- package/README.md +11 -0
- package/app/index.d.ts +164 -0
- package/app/index.d.ts.map +1 -0
- package/app/index.js +424 -0
- package/app-controller/controller.d.ts +425 -0
- package/app-controller/controller.d.ts.map +1 -0
- package/app-controller/controller.js +1173 -0
- package/app-controller/index.d.ts +14 -0
- package/app-controller/index.d.ts.map +1 -0
- package/app-controller/index.js +12 -0
- package/app-workspace/index.d.ts +421 -0
- package/app-workspace/index.d.ts.map +1 -0
- package/app-workspace/index.js +722 -0
- package/collaboration/client.d.ts +40 -0
- package/collaboration/client.d.ts.map +1 -0
- package/collaboration/client.js +299 -0
- package/collaboration/errors.d.ts +15 -0
- package/collaboration/errors.d.ts.map +1 -0
- package/collaboration/errors.js +17 -0
- package/collaboration/fixture.d.ts +41 -0
- package/collaboration/fixture.d.ts.map +1 -0
- package/collaboration/fixture.js +362 -0
- package/collaboration/index.d.ts +18 -0
- package/collaboration/index.d.ts.map +1 -0
- package/collaboration/index.js +14 -0
- package/collaboration/types.d.ts +240 -0
- package/collaboration/types.d.ts.map +1 -0
- package/collaboration/types.js +1 -0
- package/contract/analytics-sources.d.ts +149 -0
- package/contract/analytics-sources.d.ts.map +1 -0
- package/contract/analytics-sources.js +235 -0
- package/contract/edit-session.d.ts +203 -0
- package/contract/edit-session.d.ts.map +1 -0
- package/contract/edit-session.js +760 -0
- package/contract/edit-sketch.d.ts +91 -0
- package/contract/edit-sketch.d.ts.map +1 -0
- package/contract/edit-sketch.js +281 -0
- package/contract/index.d.ts +63 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +52 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/pmtiles.d.ts +162 -0
- package/contract/pmtiles.d.ts.map +1 -0
- package/contract/pmtiles.js +155 -0
- package/contract/source.d.ts +447 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3909 -0
- package/contract/spatial-aggregation.d.ts +336 -0
- package/contract/spatial-aggregation.d.ts.map +1 -0
- package/contract/spatial-aggregation.js +298 -0
- package/contract/temporal.d.ts +455 -0
- package/contract/temporal.d.ts.map +1 -0
- package/contract/temporal.js +146 -0
- package/contract/tiles.d.ts +370 -0
- package/contract/tiles.d.ts.map +1 -0
- package/contract/tiles.js +519 -0
- package/contract/types.d.ts +694 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +183 -0
- package/contract/widget-source.d.ts +205 -0
- package/contract/widget-source.d.ts.map +1 -0
- package/contract/widget-source.js +1473 -0
- package/control-plane/client.d.ts +95 -0
- package/control-plane/client.d.ts.map +1 -0
- package/control-plane/client.js +374 -0
- package/control-plane/index.d.ts +18 -0
- package/control-plane/index.d.ts.map +1 -0
- package/control-plane/index.js +14 -0
- package/control-plane/types.d.ts +233 -0
- package/control-plane/types.d.ts.map +1 -0
- package/control-plane/types.js +7 -0
- package/controls/basemap-style-binding.d.ts +54 -0
- package/controls/basemap-style-binding.d.ts.map +1 -0
- package/controls/basemap-style-binding.js +199 -0
- package/controls/basemap-switcher.d.ts +95 -0
- package/controls/basemap-switcher.d.ts.map +1 -0
- package/controls/basemap-switcher.js +379 -0
- package/controls/element-utils.d.ts +48 -0
- package/controls/element-utils.d.ts.map +1 -0
- package/controls/element-utils.js +78 -0
- package/controls/index.d.ts +33 -0
- package/controls/index.d.ts.map +1 -0
- package/controls/index.js +30 -0
- package/controls/layer-list.d.ts +98 -0
- package/controls/layer-list.d.ts.map +1 -0
- package/controls/layer-list.js +375 -0
- package/controls/legend-derive.d.ts +53 -0
- package/controls/legend-derive.d.ts.map +1 -0
- package/controls/legend-derive.js +196 -0
- package/controls/legend.d.ts +104 -0
- package/controls/legend.d.ts.map +1 -0
- package/controls/legend.js +381 -0
- package/controls/swipe-control.d.ts +80 -0
- package/controls/swipe-control.d.ts.map +1 -0
- package/controls/swipe-control.js +368 -0
- package/controls/types.d.ts +227 -0
- package/controls/types.d.ts.map +1 -0
- package/controls/types.js +11 -0
- package/core/auth/client-credentials-provider.d.ts +51 -0
- package/core/auth/client-credentials-provider.d.ts.map +1 -0
- package/core/auth/client-credentials-provider.js +115 -0
- package/core/auth/credential-store.d.ts +52 -0
- package/core/auth/credential-store.d.ts.map +1 -0
- package/core/auth/credential-store.js +82 -0
- package/core/auth/index.d.ts +23 -0
- package/core/auth/index.d.ts.map +1 -0
- package/core/auth/index.js +20 -0
- package/core/auth/oauth2-provider.d.ts +114 -0
- package/core/auth/oauth2-provider.d.ts.map +1 -0
- package/core/auth/oauth2-provider.js +408 -0
- package/core/auth/pkce.d.ts +25 -0
- package/core/auth/pkce.d.ts.map +1 -0
- package/core/auth/pkce.js +46 -0
- package/core/auth/static-providers.d.ts +20 -0
- package/core/auth/static-providers.d.ts.map +1 -0
- package/core/auth/static-providers.js +26 -0
- package/core/auth/token-endpoint.d.ts +40 -0
- package/core/auth/token-endpoint.d.ts.map +1 -0
- package/core/auth/token-endpoint.js +133 -0
- package/core/auth/types.d.ts +144 -0
- package/core/auth/types.d.ts.map +1 -0
- package/core/auth/types.js +8 -0
- package/core/batch.d.ts +37 -0
- package/core/batch.d.ts.map +1 -0
- package/core/batch.js +79 -0
- package/core/cache-state.d.ts +79 -0
- package/core/cache-state.d.ts.map +1 -0
- package/core/cache-state.js +87 -0
- package/core/client.d.ts +607 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1716 -0
- package/core/compatibility.d.ts +18 -0
- package/core/compatibility.d.ts.map +1 -0
- package/core/compatibility.js +245 -0
- package/core/errors.d.ts +139 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +176 -0
- package/core/esri-geojson.d.ts +66 -0
- package/core/esri-geojson.d.ts.map +1 -0
- package/core/esri-geojson.js +363 -0
- package/core/geoparquet-sql.d.ts +162 -0
- package/core/geoparquet-sql.d.ts.map +1 -0
- package/core/geoparquet-sql.js +333 -0
- package/core/geoservices.d.ts +34 -0
- package/core/geoservices.d.ts.map +1 -0
- package/core/geoservices.js +434 -0
- package/core/grpc-adapter.d.ts +23 -0
- package/core/grpc-adapter.d.ts.map +1 -0
- package/core/grpc-adapter.js +688 -0
- package/core/odata.d.ts +347 -0
- package/core/odata.d.ts.map +1 -0
- package/core/odata.js +913 -0
- package/core/ogc-conformance.d.ts +35 -0
- package/core/ogc-conformance.d.ts.map +1 -0
- package/core/ogc-conformance.js +134 -0
- package/core/ogc-endpoint-layout.d.ts +70 -0
- package/core/ogc-endpoint-layout.d.ts.map +1 -0
- package/core/ogc-endpoint-layout.js +173 -0
- package/core/ogc-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +129 -0
- package/core/ogc-maps.d.ts +49 -0
- package/core/ogc-maps.d.ts.map +1 -0
- package/core/ogc-maps.js +126 -0
- package/core/ogc-processes.d.ts +118 -0
- package/core/ogc-processes.d.ts.map +1 -0
- package/core/ogc-processes.js +423 -0
- package/core/ogc-records.d.ts +75 -0
- package/core/ogc-records.d.ts.map +1 -0
- package/core/ogc-records.js +251 -0
- package/core/ogc-tiles.d.ts +125 -0
- package/core/ogc-tiles.d.ts.map +1 -0
- package/core/ogc-tiles.js +183 -0
- package/core/path-utils.d.ts +69 -0
- package/core/path-utils.d.ts.map +1 -0
- package/core/path-utils.js +123 -0
- package/core/pbf-decoder.d.ts +39 -0
- package/core/pbf-decoder.d.ts.map +1 -0
- package/core/pbf-decoder.js +702 -0
- package/core/process-runner.d.ts +104 -0
- package/core/process-runner.d.ts.map +1 -0
- package/core/process-runner.js +315 -0
- package/core/protocol-transport.d.ts +76 -0
- package/core/protocol-transport.d.ts.map +1 -0
- package/core/protocol-transport.js +15 -0
- package/core/query-builder.d.ts +261 -0
- package/core/query-builder.d.ts.map +1 -0
- package/core/query-builder.js +538 -0
- package/core/request-pipeline.d.ts +88 -0
- package/core/request-pipeline.d.ts.map +1 -0
- package/core/request-pipeline.js +273 -0
- package/core/spatial-filter.d.ts +93 -0
- package/core/spatial-filter.d.ts.map +1 -0
- package/core/spatial-filter.js +153 -0
- package/core/stac-static.d.ts +51 -0
- package/core/stac-static.d.ts.map +1 -0
- package/core/stac-static.js +195 -0
- package/core/stac.d.ts +67 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +259 -0
- package/core/surfaces.d.ts +540 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1964 -0
- package/core/terrain-elevation.d.ts +114 -0
- package/core/terrain-elevation.d.ts.map +1 -0
- package/core/terrain-elevation.js +150 -0
- package/core/types.d.ts +1404 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +153 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +490 -0
- package/core/wfs-filter.d.ts +118 -0
- package/core/wfs-filter.d.ts.map +1 -0
- package/core/wfs-filter.js +634 -0
- package/core/wfs.d.ts +232 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +426 -0
- package/core/wire-shared.d.ts +32 -0
- package/core/wire-shared.d.ts.map +1 -0
- package/core/wire-shared.js +76 -0
- package/core/wms-axis.d.ts +36 -0
- package/core/wms-axis.d.ts.map +1 -0
- package/core/wms-axis.js +73 -0
- package/core/wms-capabilities.d.ts +110 -0
- package/core/wms-capabilities.d.ts.map +1 -0
- package/core/wms-capabilities.js +559 -0
- package/core/wms-types.d.ts +128 -0
- package/core/wms-types.d.ts.map +1 -0
- package/core/wms-types.js +32 -0
- package/core/wms.d.ts +144 -0
- package/core/wms.d.ts.map +1 -0
- package/core/wms.js +338 -0
- package/core/wmts-capabilities.d.ts +82 -0
- package/core/wmts-capabilities.d.ts.map +1 -0
- package/core/wmts-capabilities.js +402 -0
- package/core/wmts.d.ts +103 -0
- package/core/wmts.d.ts.map +1 -0
- package/core/wmts.js +332 -0
- package/core/xml-text.d.ts +20 -0
- package/core/xml-text.d.ts.map +1 -0
- package/core/xml-text.js +85 -0
- package/esri-compat/basemap-gallery.d.ts +38 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -0
- package/esri-compat/basemap-gallery.js +159 -0
- package/esri-compat/basemap-layer-list.d.ts +35 -0
- package/esri-compat/basemap-layer-list.d.ts.map +1 -0
- package/esri-compat/basemap-layer-list.js +139 -0
- package/esri-compat/basemap.d.ts +32 -0
- package/esri-compat/basemap.d.ts.map +1 -0
- package/esri-compat/basemap.js +84 -0
- package/esri-compat/bookmarks.d.ts +36 -0
- package/esri-compat/bookmarks.d.ts.map +1 -0
- package/esri-compat/bookmarks.js +108 -0
- package/esri-compat/class-breaks-renderer.d.ts +50 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
- package/esri-compat/class-breaks-renderer.js +164 -0
- package/esri-compat/color.d.ts +22 -0
- package/esri-compat/color.d.ts.map +1 -0
- package/esri-compat/color.js +106 -0
- package/esri-compat/controls.d.ts +174 -0
- package/esri-compat/controls.d.ts.map +1 -0
- package/esri-compat/controls.js +479 -0
- package/esri-compat/coordinate-conversion.d.ts +41 -0
- package/esri-compat/coordinate-conversion.d.ts.map +1 -0
- package/esri-compat/coordinate-conversion.js +125 -0
- package/esri-compat/directions.d.ts +45 -0
- package/esri-compat/directions.d.ts.map +1 -0
- package/esri-compat/directions.js +123 -0
- package/esri-compat/editor.d.ts +47 -0
- package/esri-compat/editor.d.ts.map +1 -0
- package/esri-compat/editor.js +170 -0
- package/esri-compat/esri-config.d.ts +16 -0
- package/esri-compat/esri-config.d.ts.map +1 -0
- package/esri-compat/esri-config.js +23 -0
- package/esri-compat/esri-request.d.ts +17 -0
- package/esri-compat/esri-request.d.ts.map +1 -0
- package/esri-compat/esri-request.js +127 -0
- package/esri-compat/event-bus.d.ts +106 -0
- package/esri-compat/event-bus.d.ts.map +1 -0
- package/esri-compat/event-bus.js +90 -0
- package/esri-compat/expand.d.ts +36 -0
- package/esri-compat/expand.d.ts.map +1 -0
- package/esri-compat/expand.js +97 -0
- package/esri-compat/extent.d.ts +43 -0
- package/esri-compat/extent.d.ts.map +1 -0
- package/esri-compat/extent.js +140 -0
- package/esri-compat/feature-filter.d.ts +55 -0
- package/esri-compat/feature-filter.d.ts.map +1 -0
- package/esri-compat/feature-filter.js +109 -0
- package/esri-compat/feature-form.d.ts +64 -0
- package/esri-compat/feature-form.d.ts.map +1 -0
- package/esri-compat/feature-form.js +137 -0
- package/esri-compat/feature-layer.d.ts +173 -0
- package/esri-compat/feature-layer.d.ts.map +1 -0
- package/esri-compat/feature-layer.js +661 -0
- package/esri-compat/feature-set.d.ts +32 -0
- package/esri-compat/feature-set.d.ts.map +1 -0
- package/esri-compat/feature-set.js +80 -0
- package/esri-compat/feature-table.d.ts +141 -0
- package/esri-compat/feature-table.d.ts.map +1 -0
- package/esri-compat/feature-table.js +500 -0
- package/esri-compat/feature-templates.d.ts +41 -0
- package/esri-compat/feature-templates.d.ts.map +1 -0
- package/esri-compat/feature-templates.js +97 -0
- package/esri-compat/feature.d.ts +33 -0
- package/esri-compat/feature.d.ts.map +1 -0
- package/esri-compat/feature.js +83 -0
- package/esri-compat/geojson-layer.d.ts +86 -0
- package/esri-compat/geojson-layer.d.ts.map +1 -0
- package/esri-compat/geojson-layer.js +191 -0
- package/esri-compat/geometry-engine.d.ts +107 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -0
- package/esri-compat/geometry-engine.js +266 -0
- package/esri-compat/graphic.d.ts +46 -0
- package/esri-compat/graphic.d.ts.map +1 -0
- package/esri-compat/graphic.js +103 -0
- package/esri-compat/graphics-layer.d.ts +49 -0
- package/esri-compat/graphics-layer.d.ts.map +1 -0
- package/esri-compat/graphics-layer.js +185 -0
- package/esri-compat/group-layer.d.ts +48 -0
- package/esri-compat/group-layer.d.ts.map +1 -0
- package/esri-compat/group-layer.js +212 -0
- package/esri-compat/identify.d.ts +71 -0
- package/esri-compat/identify.d.ts.map +1 -0
- package/esri-compat/identify.js +299 -0
- package/esri-compat/identity-manager.d.ts +74 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +245 -0
- package/esri-compat/imagery-layer.d.ts +78 -0
- package/esri-compat/imagery-layer.d.ts.map +1 -0
- package/esri-compat/imagery-layer.js +167 -0
- package/esri-compat/label-class.d.ts +31 -0
- package/esri-compat/label-class.d.ts.map +1 -0
- package/esri-compat/label-class.js +102 -0
- package/esri-compat/layer-list.d.ts +77 -0
- package/esri-compat/layer-list.d.ts.map +1 -0
- package/esri-compat/layer-list.js +342 -0
- package/esri-compat/legend.d.ts +53 -0
- package/esri-compat/legend.d.ts.map +1 -0
- package/esri-compat/legend.js +254 -0
- package/esri-compat/map-image-layer.d.ts +162 -0
- package/esri-compat/map-image-layer.d.ts.map +1 -0
- package/esri-compat/map-image-layer.js +709 -0
- package/esri-compat/map-view.d.ts +323 -0
- package/esri-compat/map-view.d.ts.map +1 -0
- package/esri-compat/map-view.js +1175 -0
- package/esri-compat/map.d.ts +47 -0
- package/esri-compat/map.d.ts.map +1 -0
- package/esri-compat/map.js +209 -0
- package/esri-compat/measurement-2d.d.ts +61 -0
- package/esri-compat/measurement-2d.d.ts.map +1 -0
- package/esri-compat/measurement-2d.js +184 -0
- package/esri-compat/measurement.d.ts +45 -0
- package/esri-compat/measurement.d.ts.map +1 -0
- package/esri-compat/measurement.js +193 -0
- package/esri-compat/oauth-info.d.ts +50 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +142 -0
- package/esri-compat/picture-marker-symbol.d.ts +35 -0
- package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
- package/esri-compat/picture-marker-symbol.js +126 -0
- package/esri-compat/point.d.ts +31 -0
- package/esri-compat/point.d.ts.map +1 -0
- package/esri-compat/point.js +102 -0
- package/esri-compat/polygon.d.ts +31 -0
- package/esri-compat/polygon.d.ts.map +1 -0
- package/esri-compat/polygon.js +107 -0
- package/esri-compat/polyline.d.ts +31 -0
- package/esri-compat/polyline.d.ts.map +1 -0
- package/esri-compat/polyline.js +107 -0
- package/esri-compat/popup-template.d.ts +55 -0
- package/esri-compat/popup-template.d.ts.map +1 -0
- package/esri-compat/popup-template.js +128 -0
- package/esri-compat/popup.d.ts +54 -0
- package/esri-compat/popup.d.ts.map +1 -0
- package/esri-compat/popup.js +312 -0
- package/esri-compat/print.d.ts +47 -0
- package/esri-compat/print.d.ts.map +1 -0
- package/esri-compat/print.js +105 -0
- package/esri-compat/query.d.ts +58 -0
- package/esri-compat/query.d.ts.map +1 -0
- package/esri-compat/query.js +128 -0
- package/esri-compat/reactive-utils.d.ts +24 -0
- package/esri-compat/reactive-utils.d.ts.map +1 -0
- package/esri-compat/reactive-utils.js +193 -0
- package/esri-compat/request.d.ts +41 -0
- package/esri-compat/request.d.ts.map +1 -0
- package/esri-compat/request.js +253 -0
- package/esri-compat/route-layer.d.ts +59 -0
- package/esri-compat/route-layer.d.ts.map +1 -0
- package/esri-compat/route-layer.js +223 -0
- package/esri-compat/route-task.d.ts +88 -0
- package/esri-compat/route-task.d.ts.map +1 -0
- package/esri-compat/route-task.js +225 -0
- package/esri-compat/scene-view.d.ts +41 -0
- package/esri-compat/scene-view.d.ts.map +1 -0
- package/esri-compat/scene-view.js +68 -0
- package/esri-compat/search.d.ts +112 -0
- package/esri-compat/search.d.ts.map +1 -0
- package/esri-compat/search.js +820 -0
- package/esri-compat/simple-fill-symbol.d.ts +27 -0
- package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
- package/esri-compat/simple-fill-symbol.js +85 -0
- package/esri-compat/simple-line-symbol.d.ts +27 -0
- package/esri-compat/simple-line-symbol.d.ts.map +1 -0
- package/esri-compat/simple-line-symbol.js +85 -0
- package/esri-compat/simple-marker-symbol.d.ts +29 -0
- package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
- package/esri-compat/simple-marker-symbol.js +92 -0
- package/esri-compat/simple-renderer.d.ts +29 -0
- package/esri-compat/simple-renderer.d.ts.map +1 -0
- package/esri-compat/simple-renderer.js +92 -0
- package/esri-compat/sketch.d.ts +64 -0
- package/esri-compat/sketch.d.ts.map +1 -0
- package/esri-compat/sketch.js +227 -0
- package/esri-compat/spatial-reference.d.ts +31 -0
- package/esri-compat/spatial-reference.d.ts.map +1 -0
- package/esri-compat/spatial-reference.js +102 -0
- package/esri-compat/swipe.d.ts +34 -0
- package/esri-compat/swipe.d.ts.map +1 -0
- package/esri-compat/swipe.js +93 -0
- package/esri-compat/table-list.d.ts +36 -0
- package/esri-compat/table-list.d.ts.map +1 -0
- package/esri-compat/table-list.js +126 -0
- package/esri-compat/text-symbol.d.ts +37 -0
- package/esri-compat/text-symbol.d.ts.map +1 -0
- package/esri-compat/text-symbol.js +123 -0
- package/esri-compat/tile-layer.d.ts +52 -0
- package/esri-compat/tile-layer.d.ts.map +1 -0
- package/esri-compat/tile-layer.js +168 -0
- package/esri-compat/time-slider.d.ts +70 -0
- package/esri-compat/time-slider.d.ts.map +1 -0
- package/esri-compat/time-slider.js +208 -0
- package/esri-compat/track.d.ts +51 -0
- package/esri-compat/track.d.ts.map +1 -0
- package/esri-compat/track.js +174 -0
- package/esri-compat/unique-value-renderer.d.ts +41 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -0
- package/esri-compat/unique-value-renderer.js +127 -0
- package/esri-compat/url.d.ts +13 -0
- package/esri-compat/url.d.ts.map +1 -0
- package/esri-compat/url.js +68 -0
- package/esri-compat/vector-tile-layer.d.ts +47 -0
- package/esri-compat/vector-tile-layer.d.ts.map +1 -0
- package/esri-compat/vector-tile-layer.js +130 -0
- package/esri-compat/web-map.d.ts +14 -0
- package/esri-compat/web-map.d.ts.map +1 -0
- package/esri-compat/web-map.js +24 -0
- package/esri-compat/wfs-layer.d.ts +64 -0
- package/esri-compat/wfs-layer.d.ts.map +1 -0
- package/esri-compat/wfs-layer.js +145 -0
- package/esri-compat/wms-layer.d.ts +76 -0
- package/esri-compat/wms-layer.d.ts.map +1 -0
- package/esri-compat/wms-layer.js +157 -0
- package/exploration/context.d.ts +25 -0
- package/exploration/context.d.ts.map +1 -0
- package/exploration/context.js +396 -0
- package/exploration/index.d.ts +27 -0
- package/exploration/index.d.ts.map +1 -0
- package/exploration/index.js +24 -0
- package/exploration/presets.d.ts +27 -0
- package/exploration/presets.d.ts.map +1 -0
- package/exploration/presets.js +114 -0
- package/exploration/reducer.d.ts +23 -0
- package/exploration/reducer.d.ts.map +1 -0
- package/exploration/reducer.js +332 -0
- package/exploration/selection.d.ts +25 -0
- package/exploration/selection.d.ts.map +1 -0
- package/exploration/selection.js +34 -0
- package/exploration/selectors.d.ts +56 -0
- package/exploration/selectors.d.ts.map +1 -0
- package/exploration/selectors.js +110 -0
- package/exploration/types.d.ts +294 -0
- package/exploration/types.d.ts.map +1 -0
- package/exploration/types.js +33 -0
- package/expr/expression.d.ts +457 -0
- package/expr/expression.d.ts.map +1 -0
- package/expr/expression.js +663 -0
- package/expr/index.d.ts +32 -0
- package/expr/index.d.ts.map +1 -0
- package/expr/index.js +30 -0
- package/filter-registry/index.d.ts +145 -0
- package/filter-registry/index.d.ts.map +1 -0
- package/filter-registry/index.js +531 -0
- package/gen/honua/v1/feature_service_pb.d.ts +918 -0
- package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/honua/v1/feature_service_pb.js +375 -0
- package/generated-app/errors.d.ts +41 -0
- package/generated-app/errors.d.ts.map +1 -0
- package/generated-app/errors.js +41 -0
- package/generated-app/index.d.ts +17 -0
- package/generated-app/index.d.ts.map +1 -0
- package/generated-app/index.js +12 -0
- package/generated-app/manifest.d.ts +183 -0
- package/generated-app/manifest.d.ts.map +1 -0
- package/generated-app/manifest.js +14 -0
- package/generated-app/projection.d.ts +44 -0
- package/generated-app/projection.d.ts.map +1 -0
- package/generated-app/projection.js +234 -0
- package/generated-app/runtime.d.ts +215 -0
- package/generated-app/runtime.d.ts.map +1 -0
- package/generated-app/runtime.js +1196 -0
- package/geocoding/index.d.ts +106 -0
- package/geocoding/index.d.ts.map +1 -0
- package/geocoding/index.js +278 -0
- package/interactions/detail-model.d.ts +54 -0
- package/interactions/detail-model.d.ts.map +1 -0
- package/interactions/detail-model.js +105 -0
- package/interactions/exploration-bindings.d.ts +120 -0
- package/interactions/exploration-bindings.d.ts.map +1 -0
- package/interactions/exploration-bindings.js +218 -0
- package/interactions/feature-state.d.ts +144 -0
- package/interactions/feature-state.d.ts.map +1 -0
- package/interactions/feature-state.js +169 -0
- package/interactions/hit-test.d.ts +112 -0
- package/interactions/hit-test.d.ts.map +1 -0
- package/interactions/hit-test.js +291 -0
- package/interactions/index.d.ts +31 -0
- package/interactions/index.d.ts.map +1 -0
- package/interactions/index.js +24 -0
- package/interactions/share-state.d.ts +36 -0
- package/interactions/share-state.d.ts.map +1 -0
- package/interactions/share-state.js +123 -0
- package/map/feature-service-adapter.d.ts +138 -0
- package/map/feature-service-adapter.d.ts.map +1 -0
- package/map/feature-service-adapter.js +279 -0
- package/map/honua-map.d.ts +203 -0
- package/map/honua-map.d.ts.map +1 -0
- package/map/honua-map.js +347 -0
- package/map/index.d.ts +27 -0
- package/map/index.d.ts.map +1 -0
- package/map/index.js +22 -0
- package/map/maplibre-target.d.ts +103 -0
- package/map/maplibre-target.d.ts.map +1 -0
- package/map/maplibre-target.js +164 -0
- package/map/webmap-maplibre.d.ts +60 -0
- package/map/webmap-maplibre.d.ts.map +1 -0
- package/map/webmap-maplibre.js +212 -0
- package/operate/client.d.ts +94 -0
- package/operate/client.d.ts.map +1 -0
- package/operate/client.js +361 -0
- package/operate/index.d.ts +22 -0
- package/operate/index.d.ts.map +1 -0
- package/operate/index.js +19 -0
- package/operate/types.d.ts +397 -0
- package/operate/types.d.ts.map +1 -0
- package/operate/types.js +17 -0
- package/operator/client.d.ts +60 -0
- package/operator/client.d.ts.map +1 -0
- package/operator/client.js +20 -0
- package/operator/controllers/approval.d.ts +52 -0
- package/operator/controllers/approval.d.ts.map +1 -0
- package/operator/controllers/approval.js +123 -0
- package/operator/controllers/base.d.ts +27 -0
- package/operator/controllers/base.d.ts.map +1 -0
- package/operator/controllers/base.js +53 -0
- package/operator/controllers/builder-workspace.d.ts +55 -0
- package/operator/controllers/builder-workspace.d.ts.map +1 -0
- package/operator/controllers/builder-workspace.js +108 -0
- package/operator/controllers/chat.d.ts +61 -0
- package/operator/controllers/chat.d.ts.map +1 -0
- package/operator/controllers/chat.js +154 -0
- package/operator/controllers/clarification.d.ts +52 -0
- package/operator/controllers/clarification.d.ts.map +1 -0
- package/operator/controllers/clarification.js +121 -0
- package/operator/controllers/execution.d.ts +60 -0
- package/operator/controllers/execution.d.ts.map +1 -0
- package/operator/controllers/execution.js +286 -0
- package/operator/controllers/index.d.ts +23 -0
- package/operator/controllers/index.d.ts.map +1 -0
- package/operator/controllers/index.js +15 -0
- package/operator/controllers/map-workspace.d.ts +85 -0
- package/operator/controllers/map-workspace.d.ts.map +1 -0
- package/operator/controllers/map-workspace.js +296 -0
- package/operator/controllers/plan-review.d.ts +66 -0
- package/operator/controllers/plan-review.d.ts.map +1 -0
- package/operator/controllers/plan-review.js +124 -0
- package/operator/errors.d.ts +62 -0
- package/operator/errors.d.ts.map +1 -0
- package/operator/errors.js +75 -0
- package/operator/i18n/index.d.ts +10 -0
- package/operator/i18n/index.d.ts.map +1 -0
- package/operator/i18n/index.js +8 -0
- package/operator/i18n/messages.d.ts +19 -0
- package/operator/i18n/messages.d.ts.map +1 -0
- package/operator/i18n/messages.js +54 -0
- package/operator/index.d.ts +19 -0
- package/operator/index.d.ts.map +1 -0
- package/operator/index.js +15 -0
- package/operator/telemetry.d.ts +26 -0
- package/operator/telemetry.d.ts.map +1 -0
- package/operator/telemetry.js +9 -0
- package/operator/theming/index.d.ts +12 -0
- package/operator/theming/index.d.ts.map +1 -0
- package/operator/theming/index.js +9 -0
- package/operator/theming/provider.d.ts +27 -0
- package/operator/theming/provider.d.ts.map +1 -0
- package/operator/theming/provider.js +26 -0
- package/operator/theming/tokens.d.ts +28 -0
- package/operator/theming/tokens.d.ts.map +1 -0
- package/operator/theming/tokens.js +65 -0
- package/operator/workspace/events.d.ts +70 -0
- package/operator/workspace/events.d.ts.map +1 -0
- package/operator/workspace/events.js +9 -0
- package/operator/workspace/index.d.ts +12 -0
- package/operator/workspace/index.d.ts.map +1 -0
- package/operator/workspace/index.js +8 -0
- package/operator/workspace/types.d.ts +178 -0
- package/operator/workspace/types.d.ts.map +1 -0
- package/operator/workspace/types.js +47 -0
- package/operator/workspace/workspace.d.ts +58 -0
- package/operator/workspace/workspace.d.ts.map +1 -0
- package/operator/workspace/workspace.js +339 -0
- package/package.json +105 -0
- package/realtime/exploration.d.ts +16 -0
- package/realtime/exploration.d.ts.map +1 -0
- package/realtime/exploration.js +32 -0
- package/realtime/honua-server.d.ts +123 -0
- package/realtime/honua-server.d.ts.map +1 -0
- package/realtime/honua-server.js +188 -0
- package/realtime/index.d.ts +20 -0
- package/realtime/index.d.ts.map +1 -0
- package/realtime/index.js +14 -0
- package/realtime/projections.d.ts +30 -0
- package/realtime/projections.d.ts.map +1 -0
- package/realtime/projections.js +51 -0
- package/realtime/reducer.d.ts +14 -0
- package/realtime/reducer.d.ts.map +1 -0
- package/realtime/reducer.js +351 -0
- package/realtime/sse.d.ts +23 -0
- package/realtime/sse.d.ts.map +1 -0
- package/realtime/sse.js +143 -0
- package/realtime/store.d.ts +18 -0
- package/realtime/store.d.ts.map +1 -0
- package/realtime/store.js +63 -0
- package/realtime/types.d.ts +190 -0
- package/realtime/types.d.ts.map +1 -0
- package/realtime/types.js +10 -0
- package/replica-sync/client.d.ts +32 -0
- package/replica-sync/client.d.ts.map +1 -0
- package/replica-sync/client.js +52 -0
- package/replica-sync/errors.d.ts +22 -0
- package/replica-sync/errors.d.ts.map +1 -0
- package/replica-sync/errors.js +29 -0
- package/replica-sync/fixture.d.ts +40 -0
- package/replica-sync/fixture.d.ts.map +1 -0
- package/replica-sync/fixture.js +364 -0
- package/replica-sync/index.d.ts +22 -0
- package/replica-sync/index.d.ts.map +1 -0
- package/replica-sync/index.js +17 -0
- package/replica-sync/types.d.ts +270 -0
- package/replica-sync/types.d.ts.map +1 -0
- package/replica-sync/types.js +13 -0
- package/runtime/diff.d.ts +31 -0
- package/runtime/diff.d.ts.map +1 -0
- package/runtime/diff.js +143 -0
- package/runtime/errors.d.ts +40 -0
- package/runtime/errors.d.ts.map +1 -0
- package/runtime/errors.js +35 -0
- package/runtime/index.d.ts +59 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +40 -0
- package/runtime/legend.d.ts +23 -0
- package/runtime/legend.d.ts.map +1 -0
- package/runtime/legend.js +38 -0
- package/runtime/load-package.d.ts +125 -0
- package/runtime/load-package.d.ts.map +1 -0
- package/runtime/load-package.js +272 -0
- package/runtime/map-package-fetch.d.ts +107 -0
- package/runtime/map-package-fetch.d.ts.map +1 -0
- package/runtime/map-package-fetch.js +336 -0
- package/runtime/map-package-realtime.d.ts +169 -0
- package/runtime/map-package-realtime.d.ts.map +1 -0
- package/runtime/map-package-realtime.js +350 -0
- package/runtime/map-package-validation.d.ts +30 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +257 -0
- package/runtime/map-package-watch.d.ts +78 -0
- package/runtime/map-package-watch.d.ts.map +1 -0
- package/runtime/map-package-watch.js +695 -0
- package/runtime/map-package.d.ts +167 -0
- package/runtime/map-package.d.ts.map +1 -0
- package/runtime/map-package.js +15 -0
- package/runtime/ogc-styles.d.ts +110 -0
- package/runtime/ogc-styles.d.ts.map +1 -0
- package/runtime/ogc-styles.js +195 -0
- package/runtime/pmtiles-protocol.d.ts +77 -0
- package/runtime/pmtiles-protocol.d.ts.map +1 -0
- package/runtime/pmtiles-protocol.js +120 -0
- package/runtime/popups.d.ts +62 -0
- package/runtime/popups.d.ts.map +1 -0
- package/runtime/popups.js +95 -0
- package/runtime/query-tiles.d.ts +217 -0
- package/runtime/query-tiles.d.ts.map +1 -0
- package/runtime/query-tiles.js +801 -0
- package/runtime/runtime.d.ts +243 -0
- package/runtime/runtime.d.ts.map +1 -0
- package/runtime/runtime.js +1147 -0
- package/runtime/source-bridge.d.ts +99 -0
- package/runtime/source-bridge.d.ts.map +1 -0
- package/runtime/source-bridge.js +428 -0
- package/runtime/style-compose.d.ts +46 -0
- package/runtime/style-compose.d.ts.map +1 -0
- package/runtime/style-compose.js +144 -0
- package/runtime/style-interactions.d.ts +141 -0
- package/runtime/style-interactions.d.ts.map +1 -0
- package/runtime/style-interactions.js +574 -0
- package/runtime/style-spec-validation.d.ts +23 -0
- package/runtime/style-spec-validation.d.ts.map +1 -0
- package/runtime/style-spec-validation.js +357 -0
- package/scene-workspace/analysis-widgets.d.ts +334 -0
- package/scene-workspace/analysis-widgets.d.ts.map +1 -0
- package/scene-workspace/analysis-widgets.js +424 -0
- package/scene-workspace/cesium-adapter.d.ts +438 -0
- package/scene-workspace/cesium-adapter.d.ts.map +1 -0
- package/scene-workspace/cesium-adapter.js +493 -0
- package/scene-workspace/index.d.ts +21 -0
- package/scene-workspace/index.d.ts.map +1 -0
- package/scene-workspace/index.js +14 -0
- package/scene-workspace/primitives.d.ts +162 -0
- package/scene-workspace/primitives.d.ts.map +1 -0
- package/scene-workspace/primitives.js +255 -0
- package/scene-workspace/scene-discovery.d.ts +196 -0
- package/scene-workspace/scene-discovery.d.ts.map +1 -0
- package/scene-workspace/scene-discovery.js +228 -0
- package/scene-workspace/scene-view.d.ts +209 -0
- package/scene-workspace/scene-view.d.ts.map +1 -0
- package/scene-workspace/scene-view.js +267 -0
- package/scene-workspace/types.d.ts +229 -0
- package/scene-workspace/types.d.ts.map +1 -0
- package/scene-workspace/types.js +23 -0
- package/scene-workspace/workspace.d.ts +13 -0
- package/scene-workspace/workspace.d.ts.map +1 -0
- package/scene-workspace/workspace.js +391 -0
- package/share/denial.d.ts +78 -0
- package/share/denial.d.ts.map +1 -0
- package/share/denial.js +61 -0
- package/share/embed-token.d.ts +71 -0
- package/share/embed-token.d.ts.map +1 -0
- package/share/embed-token.js +99 -0
- package/share/index.d.ts +35 -0
- package/share/index.d.ts.map +1 -0
- package/share/index.js +30 -0
- package/share/open-data.d.ts +114 -0
- package/share/open-data.d.ts.map +1 -0
- package/share/open-data.js +81 -0
- package/share/types.d.ts +163 -0
- package/share/types.d.ts.map +1 -0
- package/share/types.js +17 -0
- package/studio/capability-manifest.d.ts +285 -0
- package/studio/capability-manifest.d.ts.map +1 -0
- package/studio/capability-manifest.js +59 -0
- package/studio/chart-spec.d.ts +85 -0
- package/studio/chart-spec.d.ts.map +1 -0
- package/studio/chart-spec.js +106 -0
- package/studio/index.d.ts +34 -0
- package/studio/index.d.ts.map +1 -0
- package/studio/index.js +27 -0
- package/studio/provenance.d.ts +131 -0
- package/studio/provenance.d.ts.map +1 -0
- package/studio/provenance.js +39 -0
- package/studio/publish.d.ts +64 -0
- package/studio/publish.d.ts.map +1 -0
- package/studio/publish.js +13 -0
- package/studio/types.d.ts +278 -0
- package/studio/types.d.ts.map +1 -0
- package/studio/types.js +71 -0
- package/studio/validate.d.ts +45 -0
- package/studio/validate.d.ts.map +1 -0
- package/studio/validate.js +255 -0
- package/studio/validation.d.ts +112 -0
- package/studio/validation.d.ts.map +1 -0
- package/studio/validation.js +42 -0
- package/style/factory.d.ts +30 -0
- package/style/factory.d.ts.map +1 -0
- package/style/factory.js +61 -0
- package/style/index.d.ts +25 -0
- package/style/index.d.ts.map +1 -0
- package/style/index.js +24 -0
- package/style/specification.d.ts +203 -0
- package/style/specification.d.ts.map +1 -0
- package/style/specification.js +178 -0
- package/style/wms-wmts-resolvers.d.ts +38 -0
- package/style/wms-wmts-resolvers.d.ts.map +1 -0
- package/style/wms-wmts-resolvers.js +92 -0
- package/web-components/controller.d.ts +39 -0
- package/web-components/controller.d.ts.map +1 -0
- package/web-components/controller.js +640 -0
- package/web-components/elements.d.ts +210 -0
- package/web-components/elements.d.ts.map +1 -0
- package/web-components/elements.js +1651 -0
- package/web-components/index.d.ts +24 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +22 -0
- package/web-components/maplibre-renderer.d.ts +22 -0
- package/web-components/maplibre-renderer.d.ts.map +1 -0
- package/web-components/maplibre-renderer.js +474 -0
- package/web-components/types.d.ts +397 -0
- package/web-components/types.d.ts.map +1 -0
- package/web-components/types.js +1 -0
- package/webmap/contract.d.ts +28 -0
- package/webmap/contract.d.ts.map +1 -0
- package/webmap/contract.js +130 -0
- package/webmap/convert-basemap.d.ts +17 -0
- package/webmap/convert-basemap.d.ts.map +1 -0
- package/webmap/convert-basemap.js +78 -0
- package/webmap/convert-extent.d.ts +17 -0
- package/webmap/convert-extent.d.ts.map +1 -0
- package/webmap/convert-extent.js +114 -0
- package/webmap/convert-label.d.ts +13 -0
- package/webmap/convert-label.d.ts.map +1 -0
- package/webmap/convert-label.js +125 -0
- package/webmap/convert-layer.d.ts +22 -0
- package/webmap/convert-layer.d.ts.map +1 -0
- package/webmap/convert-layer.js +181 -0
- package/webmap/convert-popup.d.ts +34 -0
- package/webmap/convert-popup.d.ts.map +1 -0
- package/webmap/convert-popup.js +68 -0
- package/webmap/convert-renderer.d.ts +17 -0
- package/webmap/convert-renderer.d.ts.map +1 -0
- package/webmap/convert-renderer.js +161 -0
- package/webmap/convert-symbol.d.ts +17 -0
- package/webmap/convert-symbol.d.ts.map +1 -0
- package/webmap/convert-symbol.js +122 -0
- package/webmap/index.d.ts +44 -0
- package/webmap/index.d.ts.map +1 -0
- package/webmap/index.js +33 -0
- package/webmap/parse.d.ts +25 -0
- package/webmap/parse.d.ts.map +1 -0
- package/webmap/parse.js +83 -0
- package/webmap/types.d.ts +264 -0
- package/webmap/types.d.ts.map +1 -0
- package/webmap/types.js +13 -0
- package/webmap/warnings.d.ts +30 -0
- package/webmap/warnings.d.ts.map +1 -0
- package/webmap/warnings.js +37 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<honua-basemap-switcher>` — framework-free custom element that switches a
|
|
3
|
+
* MapLibre map between exclusive basemap definitions (issue #274).
|
|
4
|
+
*
|
|
5
|
+
* The element renders an accessible radio group (one radio per base) inside
|
|
6
|
+
* shadow DOM with structural-only CSS and `::part()` hooks, and delegates all
|
|
7
|
+
* style mutations to {@link HonuaBasemapStyleBinding}. It never imports
|
|
8
|
+
* `maplibre-gl` or the SDK core, so the `@honua/sdk-js/controls` entry stays
|
|
9
|
+
* independent of the core bundle.
|
|
10
|
+
*
|
|
11
|
+
* ## Wiring
|
|
12
|
+
* - `element.map = map` (any MapLibre `Map`) or `element.connect(map)`;
|
|
13
|
+
* - declaratively via `for="<honua-map id>"` — the element resolves the map
|
|
14
|
+
* from a sibling element exposing a `.map` property (e.g. `<honua-map>`)
|
|
15
|
+
* and also listens for the `honua-map-ready` event, matching the idiom of
|
|
16
|
+
* the `web-components` entry.
|
|
17
|
+
*
|
|
18
|
+
* ## Attributes
|
|
19
|
+
* - `bases` — JSON array of {@link HonuaBasemapDefinition} (property `bases`
|
|
20
|
+
* is preferred for non-trivial configs).
|
|
21
|
+
* - `value` — id of the base to activate; reflected on selection changes.
|
|
22
|
+
* - `for` — id of the map-providing element, see Wiring.
|
|
23
|
+
* - `label` — accessible name of the radio group (default "Basemaps").
|
|
24
|
+
*
|
|
25
|
+
* ## Events
|
|
26
|
+
* - `change` — `CustomEvent<HonuaBasemapSwitcherChangeDetail>` (bubbles,
|
|
27
|
+
* composed) whenever the active base changes: user interaction,
|
|
28
|
+
* programmatic `value` assignment, or the initial/default activation.
|
|
29
|
+
*
|
|
30
|
+
* ## CSS parts
|
|
31
|
+
* - `group` — the radio-group container (button-group layout).
|
|
32
|
+
* - `radio` — each base button.
|
|
33
|
+
* - `radio-active` — additionally present on the active base's button.
|
|
34
|
+
*
|
|
35
|
+
* ## Accessibility
|
|
36
|
+
* Radio-group semantics (`role="radiogroup"` / `role="radio"`,
|
|
37
|
+
* `aria-checked`) with roving tabindex; ArrowLeft/ArrowUp and
|
|
38
|
+
* ArrowRight/ArrowDown move and select, Home/End jump to the first/last
|
|
39
|
+
* base, Space/Enter select the focused base.
|
|
40
|
+
*/
|
|
41
|
+
import { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
|
|
42
|
+
import { HTMLElementBase, escapeAttribute, escapeHtml, globalDom, listenForHonuaMapReady, resolveHonuaMapFromContext, } from "./element-utils.js";
|
|
43
|
+
import { HonuaLegendElement } from "./legend.js";
|
|
44
|
+
import { HonuaSwipeControlElement } from "./swipe-control.js";
|
|
45
|
+
/**
|
|
46
|
+
* Custom element implementing the exclusive basemap switcher. Registered as
|
|
47
|
+
* `honua-basemap-switcher` by {@link defineHonuaControls} (which runs
|
|
48
|
+
* automatically on import when a `customElements` registry exists).
|
|
49
|
+
*/
|
|
50
|
+
export class HonuaBasemapSwitcherElement extends HTMLElementBase {
|
|
51
|
+
static get observedAttributes() {
|
|
52
|
+
return ["bases", "value", "for", "label"];
|
|
53
|
+
}
|
|
54
|
+
#binding = new HonuaBasemapStyleBinding();
|
|
55
|
+
#requestedValue;
|
|
56
|
+
#disposeMapReadyListener;
|
|
57
|
+
#rendered = false;
|
|
58
|
+
/**
|
|
59
|
+
* The MapLibre map driven by this control. Assigning a map applies the
|
|
60
|
+
* current selection to it; assigning `undefined` detaches and removes every
|
|
61
|
+
* layer/source the control added.
|
|
62
|
+
*/
|
|
63
|
+
get map() {
|
|
64
|
+
return this.#binding.map;
|
|
65
|
+
}
|
|
66
|
+
set map(map) {
|
|
67
|
+
this.#binding.setMap(map);
|
|
68
|
+
if (map)
|
|
69
|
+
this.#ensureActive();
|
|
70
|
+
}
|
|
71
|
+
/** Wires the control to a MapLibre map. Equivalent to setting `.map`. */
|
|
72
|
+
connect(map) {
|
|
73
|
+
this.map = map;
|
|
74
|
+
}
|
|
75
|
+
/** The registered base definitions. */
|
|
76
|
+
get bases() {
|
|
77
|
+
return this.#binding.bases;
|
|
78
|
+
}
|
|
79
|
+
set bases(bases) {
|
|
80
|
+
const previousActive = this.#binding.activeId;
|
|
81
|
+
this.#binding.setBases(bases);
|
|
82
|
+
this.#rendered = false;
|
|
83
|
+
this.render();
|
|
84
|
+
if (previousActive !== undefined && this.#binding.activeId === undefined) {
|
|
85
|
+
// The previously active base was removed; fall back to a valid base.
|
|
86
|
+
this.#ensureActive(previousActive);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.#ensureActive();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Id of the active base. Assigning a registered base id activates it (and
|
|
94
|
+
* dispatches `change` when the selection actually changes); assignments
|
|
95
|
+
* are remembered and honored once matching bases arrive.
|
|
96
|
+
*/
|
|
97
|
+
get value() {
|
|
98
|
+
return this.#binding.activeId ?? this.#requestedValue;
|
|
99
|
+
}
|
|
100
|
+
set value(value) {
|
|
101
|
+
if (value === undefined)
|
|
102
|
+
return;
|
|
103
|
+
this.select(value);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Activates the base with the given id. Returns `true` when the id matched
|
|
107
|
+
* a registered base. Dispatches `change` when the active base changed.
|
|
108
|
+
*/
|
|
109
|
+
select(baseId) {
|
|
110
|
+
const previous = this.#binding.activeId;
|
|
111
|
+
if (previous === baseId) {
|
|
112
|
+
this.#requestedValue = undefined;
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
const base = this.bases.find((candidate) => candidate.id === baseId);
|
|
116
|
+
if (!base || !this.#binding.activate(baseId)) {
|
|
117
|
+
this.#requestedValue = baseId;
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
this.#requestedValue = undefined;
|
|
121
|
+
this.#reflectValue(baseId);
|
|
122
|
+
this.#updateSelectionDom();
|
|
123
|
+
this.#dispatchChange({
|
|
124
|
+
value: baseId,
|
|
125
|
+
...(previous !== undefined ? { previousValue: previous } : {}),
|
|
126
|
+
kind: base.kind,
|
|
127
|
+
});
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
131
|
+
if (name === "bases") {
|
|
132
|
+
const parsed = parseBases(newValue);
|
|
133
|
+
if (parsed)
|
|
134
|
+
this.bases = parsed;
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (name === "value") {
|
|
138
|
+
if (newValue !== null && newValue !== this.#binding.activeId)
|
|
139
|
+
this.select(newValue);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (name === "for") {
|
|
143
|
+
this.#resolveMapFromContext();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (name === "label") {
|
|
147
|
+
this.#rendered = false;
|
|
148
|
+
this.render();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
connectedCallback() {
|
|
152
|
+
this.#ensureShadowRoot();
|
|
153
|
+
this.#listenForMapReady();
|
|
154
|
+
this.#resolveMapFromContext();
|
|
155
|
+
this.render();
|
|
156
|
+
this.#ensureActive();
|
|
157
|
+
}
|
|
158
|
+
disconnectedCallback() {
|
|
159
|
+
this.#disposeMapReadyListener?.();
|
|
160
|
+
this.#disposeMapReadyListener = undefined;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Applies the pending `value` (attribute or property assignment made before
|
|
164
|
+
* bases were registered), falling back to the first base so the map is
|
|
165
|
+
* never left without an active base once wiring completes.
|
|
166
|
+
*/
|
|
167
|
+
#ensureActive(removedActiveId) {
|
|
168
|
+
if (this.#binding.activeId !== undefined || this.bases.length === 0)
|
|
169
|
+
return;
|
|
170
|
+
const requested = this.#requestedValue ?? (typeof this.getAttribute === "function" ? this.getAttribute("value") : null);
|
|
171
|
+
if (requested !== null && requested !== undefined && requested !== removedActiveId && this.select(requested))
|
|
172
|
+
return;
|
|
173
|
+
const first = this.bases[0];
|
|
174
|
+
if (first)
|
|
175
|
+
this.select(first.id);
|
|
176
|
+
}
|
|
177
|
+
// ── map wiring (matches the web-components `for` + ready-event idiom) ──
|
|
178
|
+
#listenForMapReady() {
|
|
179
|
+
if (this.#disposeMapReadyListener)
|
|
180
|
+
return;
|
|
181
|
+
this.#disposeMapReadyListener = listenForHonuaMapReady(this, (map) => {
|
|
182
|
+
const forId = typeof this.getAttribute === "function" ? this.getAttribute("for") : null;
|
|
183
|
+
if (!forId && this.map)
|
|
184
|
+
return;
|
|
185
|
+
this.map = map;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
#resolveMapFromContext() {
|
|
189
|
+
if (this.map)
|
|
190
|
+
return;
|
|
191
|
+
const map = resolveHonuaMapFromContext(this);
|
|
192
|
+
if (map)
|
|
193
|
+
this.map = map;
|
|
194
|
+
}
|
|
195
|
+
// ── rendering ──────────────────────────────────────────────
|
|
196
|
+
#ensureShadowRoot() {
|
|
197
|
+
if (!this.shadowRoot && typeof this.attachShadow === "function") {
|
|
198
|
+
this.attachShadow({ mode: "open" });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
render() {
|
|
202
|
+
const root = this.shadowRoot;
|
|
203
|
+
if (!root)
|
|
204
|
+
return;
|
|
205
|
+
if (this.#rendered) {
|
|
206
|
+
this.#updateSelectionDom();
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const label = (typeof this.getAttribute === "function" ? this.getAttribute("label") : null) ?? "Basemaps";
|
|
210
|
+
root.innerHTML = `
|
|
211
|
+
<style>${structuralStyles()}</style>
|
|
212
|
+
<div part="group" class="group" role="radiogroup" aria-label="${escapeAttribute(label)}">
|
|
213
|
+
${this.bases
|
|
214
|
+
.map((base) => `
|
|
215
|
+
<button
|
|
216
|
+
type="button"
|
|
217
|
+
part="radio"
|
|
218
|
+
class="radio"
|
|
219
|
+
role="radio"
|
|
220
|
+
aria-checked="false"
|
|
221
|
+
tabindex="-1"
|
|
222
|
+
data-base-id="${escapeAttribute(base.id)}"
|
|
223
|
+
data-kind="${escapeAttribute(base.kind)}"
|
|
224
|
+
>${escapeHtml(base.label)}</button>
|
|
225
|
+
`)
|
|
226
|
+
.join("")}
|
|
227
|
+
</div>
|
|
228
|
+
`;
|
|
229
|
+
this.#rendered = true;
|
|
230
|
+
this.#bindGroup(root);
|
|
231
|
+
this.#updateSelectionDom();
|
|
232
|
+
}
|
|
233
|
+
#bindGroup(root) {
|
|
234
|
+
root.querySelectorAll("button[data-base-id]").forEach((button) => {
|
|
235
|
+
button.addEventListener("click", () => {
|
|
236
|
+
const baseId = button.dataset.baseId;
|
|
237
|
+
if (baseId)
|
|
238
|
+
this.select(baseId);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
root.querySelector(".group")?.addEventListener("keydown", (event) => {
|
|
242
|
+
this.#onGroupKeydown(event);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
#onGroupKeydown(event) {
|
|
246
|
+
const radios = this.#radios();
|
|
247
|
+
if (radios.length === 0)
|
|
248
|
+
return;
|
|
249
|
+
const activeIndex = Math.max(0, radios.findIndex((radio) => radio.dataset.baseId === this.#binding.activeId));
|
|
250
|
+
let nextIndex;
|
|
251
|
+
switch (event.key) {
|
|
252
|
+
case "ArrowRight":
|
|
253
|
+
case "ArrowDown":
|
|
254
|
+
nextIndex = (activeIndex + 1) % radios.length;
|
|
255
|
+
break;
|
|
256
|
+
case "ArrowLeft":
|
|
257
|
+
case "ArrowUp":
|
|
258
|
+
nextIndex = (activeIndex - 1 + radios.length) % radios.length;
|
|
259
|
+
break;
|
|
260
|
+
case "Home":
|
|
261
|
+
nextIndex = 0;
|
|
262
|
+
break;
|
|
263
|
+
case "End":
|
|
264
|
+
nextIndex = radios.length - 1;
|
|
265
|
+
break;
|
|
266
|
+
default:
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
event.preventDefault();
|
|
270
|
+
const next = radios[nextIndex];
|
|
271
|
+
const baseId = next?.dataset.baseId;
|
|
272
|
+
if (!baseId)
|
|
273
|
+
return;
|
|
274
|
+
this.select(baseId);
|
|
275
|
+
next.focus();
|
|
276
|
+
}
|
|
277
|
+
/** Roving tabindex + checked state, updated in place to preserve focus. */
|
|
278
|
+
#updateSelectionDom() {
|
|
279
|
+
const radios = this.#radios();
|
|
280
|
+
if (radios.length === 0)
|
|
281
|
+
return;
|
|
282
|
+
const activeId = this.#binding.activeId;
|
|
283
|
+
const fallbackTabStop = radios.some((radio) => radio.dataset.baseId === activeId) ? undefined : radios[0];
|
|
284
|
+
for (const radio of radios) {
|
|
285
|
+
const isActive = radio.dataset.baseId === activeId;
|
|
286
|
+
radio.setAttribute("aria-checked", String(isActive));
|
|
287
|
+
radio.setAttribute("part", isActive ? "radio radio-active" : "radio");
|
|
288
|
+
radio.tabIndex = isActive || radio === fallbackTabStop ? 0 : -1;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
#radios() {
|
|
292
|
+
const root = this.shadowRoot;
|
|
293
|
+
if (!root || typeof root.querySelectorAll !== "function")
|
|
294
|
+
return [];
|
|
295
|
+
return [...root.querySelectorAll("button[data-base-id]")];
|
|
296
|
+
}
|
|
297
|
+
#reflectValue(baseId) {
|
|
298
|
+
if (typeof this.setAttribute !== "function" || typeof this.getAttribute !== "function")
|
|
299
|
+
return;
|
|
300
|
+
if (this.getAttribute("value") !== baseId)
|
|
301
|
+
this.setAttribute("value", baseId);
|
|
302
|
+
}
|
|
303
|
+
#dispatchChange(detail) {
|
|
304
|
+
if (!globalDom.CustomEvent || typeof this.dispatchEvent !== "function")
|
|
305
|
+
return;
|
|
306
|
+
this.dispatchEvent(new globalDom.CustomEvent("change", { bubbles: true, composed: true, detail }));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Registers the controls-entry custom elements (`honua-basemap-switcher`,
|
|
311
|
+
* `honua-legend`, `honua-swipe-control`). Invoked automatically on import when
|
|
312
|
+
* a global `customElements` registry is present; call explicitly when using a
|
|
313
|
+
* scoped registry.
|
|
314
|
+
*
|
|
315
|
+
* Registrations are skipped for tag names that are already defined. In
|
|
316
|
+
* particular the `web-components` entry registers its own (controller-driven)
|
|
317
|
+
* `honua-legend`; whichever entry is imported first owns that tag.
|
|
318
|
+
*
|
|
319
|
+
* `honua-layer-list` is intentionally NOT registered here — it collides with
|
|
320
|
+
* the `web-components` kit's own controller-driven `honua-layer-list`, so it is
|
|
321
|
+
* opt-in via {@link defineHonuaLayerList}.
|
|
322
|
+
*/
|
|
323
|
+
export function defineHonuaControls(registry = globalDom.customElements) {
|
|
324
|
+
if (!registry)
|
|
325
|
+
return;
|
|
326
|
+
if (!registry.get("honua-basemap-switcher")) {
|
|
327
|
+
registry.define("honua-basemap-switcher", HonuaBasemapSwitcherElement);
|
|
328
|
+
}
|
|
329
|
+
if (!registry.get("honua-legend")) {
|
|
330
|
+
registry.define("honua-legend", HonuaLegendElement);
|
|
331
|
+
}
|
|
332
|
+
if (!registry.get("honua-swipe-control")) {
|
|
333
|
+
registry.define("honua-swipe-control", HonuaSwipeControlElement);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (globalDom.customElements) {
|
|
337
|
+
defineHonuaControls(globalDom.customElements);
|
|
338
|
+
}
|
|
339
|
+
function parseBases(value) {
|
|
340
|
+
if (!value)
|
|
341
|
+
return undefined;
|
|
342
|
+
try {
|
|
343
|
+
const parsed = JSON.parse(value);
|
|
344
|
+
if (!Array.isArray(parsed))
|
|
345
|
+
return undefined;
|
|
346
|
+
return parsed.flatMap((item) => {
|
|
347
|
+
if (!item || typeof item !== "object")
|
|
348
|
+
return [];
|
|
349
|
+
const candidate = item;
|
|
350
|
+
if (typeof candidate.id !== "string" || typeof candidate.label !== "string")
|
|
351
|
+
return [];
|
|
352
|
+
return [
|
|
353
|
+
{
|
|
354
|
+
id: candidate.id,
|
|
355
|
+
label: candidate.label,
|
|
356
|
+
kind: isBasemapKind(candidate.kind) ? candidate.kind : "vector",
|
|
357
|
+
sources: candidate.sources && typeof candidate.sources === "object" ? candidate.sources : {},
|
|
358
|
+
layers: Array.isArray(candidate.layers)
|
|
359
|
+
? candidate.layers.filter((layer) => typeof layer?.id === "string")
|
|
360
|
+
: [],
|
|
361
|
+
},
|
|
362
|
+
];
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
function isBasemapKind(value) {
|
|
370
|
+
return value === "vector" || value === "raster" || value === "raster-dem-composite";
|
|
371
|
+
}
|
|
372
|
+
/** Structural-only styles; theme via `::part(group)` / `::part(radio)` / `::part(radio-active)`. */
|
|
373
|
+
function structuralStyles() {
|
|
374
|
+
return `
|
|
375
|
+
:host { display: inline-block; }
|
|
376
|
+
.group { display: inline-flex; flex-wrap: wrap; }
|
|
377
|
+
.radio { font: inherit; cursor: pointer; }
|
|
378
|
+
`;
|
|
379
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal helpers shared by the controls-entry custom elements.
|
|
3
|
+
*
|
|
4
|
+
* Controls never import `maplibre-gl` or the SDK core, and they must load
|
|
5
|
+
* safely under Node (no DOM): `globalDom` exposes the optional browser
|
|
6
|
+
* globals, and `HTMLElementBase` substitutes an empty class when
|
|
7
|
+
* `HTMLElement` is unavailable so element classes can still be unit-tested
|
|
8
|
+
* headlessly.
|
|
9
|
+
*
|
|
10
|
+
* The map-wiring helpers implement the `for="<honua-map id>"` idiom shared by
|
|
11
|
+
* every control: resolve the map from a sibling element exposing a `.map`
|
|
12
|
+
* property, and listen for the `honua-map-ready` event (matching the
|
|
13
|
+
* `web-components` entry).
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
export declare const globalDom: typeof globalThis & {
|
|
18
|
+
HTMLElement?: typeof HTMLElement;
|
|
19
|
+
CustomEvent?: typeof CustomEvent;
|
|
20
|
+
customElements?: CustomElementRegistry;
|
|
21
|
+
};
|
|
22
|
+
export declare const HTMLElementBase: typeof HTMLElement;
|
|
23
|
+
/**
|
|
24
|
+
* Minimal element surface required by the wiring helpers. Real elements
|
|
25
|
+
* always satisfy it; headless test stubs only need `getAttribute`.
|
|
26
|
+
*/
|
|
27
|
+
export interface HostElementLike {
|
|
28
|
+
getAttribute?(name: string): string | null;
|
|
29
|
+
getRootNode?(): Node;
|
|
30
|
+
}
|
|
31
|
+
/** Event target used for `honua-map-ready` listening: the element's root (document or shadow root), falling back to `document`. */
|
|
32
|
+
export declare function rootEventTarget(element: HostElementLike): EventTarget | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Subscribes to `honua-map-ready` events on the element's root and invokes
|
|
35
|
+
* `assign` with the announced map. When the element has a `for` attribute,
|
|
36
|
+
* only events from the element with that id are honored. Returns a dispose
|
|
37
|
+
* function, or `undefined` when no event target exists (e.g. under Node).
|
|
38
|
+
*/
|
|
39
|
+
export declare function listenForHonuaMapReady(element: HostElementLike, assign: (map: unknown) => void): (() => void) | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Resolves the map from the element referenced by the `for` attribute (an
|
|
42
|
+
* element exposing a `.map` property, e.g. `<honua-map>`), or `undefined`
|
|
43
|
+
* when the attribute is absent or the host has no map yet.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveHonuaMapFromContext(element: HostElementLike): unknown;
|
|
46
|
+
export declare function escapeHtml(value: string): string;
|
|
47
|
+
export declare function escapeAttribute(value: string): string;
|
|
48
|
+
//# sourceMappingURL=element-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-utils.d.ts","sourceRoot":"","sources":["../../../src/controls/element-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,SAAS,EAAiB,OAAO,UAAU,GAAG;IACzD,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IACjC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAO,WAAkF,CAAC;AAExH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,IAAI,IAAI,CAAC;CACtB;AAED,mIAAmI;AACnI,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAIjF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAC7B,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAY1B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAY5E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal helpers shared by the controls-entry custom elements.
|
|
3
|
+
*
|
|
4
|
+
* Controls never import `maplibre-gl` or the SDK core, and they must load
|
|
5
|
+
* safely under Node (no DOM): `globalDom` exposes the optional browser
|
|
6
|
+
* globals, and `HTMLElementBase` substitutes an empty class when
|
|
7
|
+
* `HTMLElement` is unavailable so element classes can still be unit-tested
|
|
8
|
+
* headlessly.
|
|
9
|
+
*
|
|
10
|
+
* The map-wiring helpers implement the `for="<honua-map id>"` idiom shared by
|
|
11
|
+
* every control: resolve the map from a sibling element exposing a `.map`
|
|
12
|
+
* property, and listen for the `honua-map-ready` event (matching the
|
|
13
|
+
* `web-components` entry).
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
export const globalDom = globalThis;
|
|
18
|
+
export const HTMLElementBase = globalDom.HTMLElement ?? class {
|
|
19
|
+
};
|
|
20
|
+
/** Event target used for `honua-map-ready` listening: the element's root (document or shadow root), falling back to `document`. */
|
|
21
|
+
export function rootEventTarget(element) {
|
|
22
|
+
const root = element.getRootNode?.();
|
|
23
|
+
if (root && "addEventListener" in root)
|
|
24
|
+
return root;
|
|
25
|
+
return typeof document !== "undefined" ? document : undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Subscribes to `honua-map-ready` events on the element's root and invokes
|
|
29
|
+
* `assign` with the announced map. When the element has a `for` attribute,
|
|
30
|
+
* only events from the element with that id are honored. Returns a dispose
|
|
31
|
+
* function, or `undefined` when no event target exists (e.g. under Node).
|
|
32
|
+
*/
|
|
33
|
+
export function listenForHonuaMapReady(element, assign) {
|
|
34
|
+
const target = rootEventTarget(element);
|
|
35
|
+
if (!target)
|
|
36
|
+
return undefined;
|
|
37
|
+
const listener = (event) => {
|
|
38
|
+
const detail = event.detail;
|
|
39
|
+
if (!detail?.map)
|
|
40
|
+
return;
|
|
41
|
+
const forId = typeof element.getAttribute === "function" ? element.getAttribute("for") : null;
|
|
42
|
+
if (forId && event.target?.id !== forId)
|
|
43
|
+
return;
|
|
44
|
+
assign(detail.map);
|
|
45
|
+
};
|
|
46
|
+
target.addEventListener("honua-map-ready", listener);
|
|
47
|
+
return () => target.removeEventListener("honua-map-ready", listener);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolves the map from the element referenced by the `for` attribute (an
|
|
51
|
+
* element exposing a `.map` property, e.g. `<honua-map>`), or `undefined`
|
|
52
|
+
* when the attribute is absent or the host has no map yet.
|
|
53
|
+
*/
|
|
54
|
+
export function resolveHonuaMapFromContext(element) {
|
|
55
|
+
if (typeof element.getAttribute !== "function")
|
|
56
|
+
return undefined;
|
|
57
|
+
const forId = element.getAttribute("for");
|
|
58
|
+
if (!forId)
|
|
59
|
+
return undefined;
|
|
60
|
+
const root = element.getRootNode?.();
|
|
61
|
+
const host = root && "getElementById" in root
|
|
62
|
+
? root.getElementById(forId)
|
|
63
|
+
: typeof document !== "undefined"
|
|
64
|
+
? document.getElementById(forId)
|
|
65
|
+
: null;
|
|
66
|
+
return host?.map;
|
|
67
|
+
}
|
|
68
|
+
export function escapeHtml(value) {
|
|
69
|
+
return value
|
|
70
|
+
.replaceAll("&", "&")
|
|
71
|
+
.replaceAll("<", "<")
|
|
72
|
+
.replaceAll(">", ">")
|
|
73
|
+
.replaceAll('"', """)
|
|
74
|
+
.replaceAll("'", "'");
|
|
75
|
+
}
|
|
76
|
+
export function escapeAttribute(value) {
|
|
77
|
+
return escapeHtml(value);
|
|
78
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
|
|
3
|
+
* framework-free custom elements for apps built on the native lane
|
|
4
|
+
* (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
|
|
5
|
+
* switcher, the legend, and the layer list.
|
|
6
|
+
*
|
|
7
|
+
* This entry is intentionally independent of the SDK core bundle (the same
|
|
8
|
+
* posture as `@honua/sdk-js/esri-compat`): it imports nothing from
|
|
9
|
+
* `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
|
|
10
|
+
* drive any MapLibre `Map` through a duck-typed interface.
|
|
11
|
+
*
|
|
12
|
+
* Importing this module registers the basemap switcher, legend, and swipe
|
|
13
|
+
* control when a browser `customElements` registry is present. Node imports are
|
|
14
|
+
* safe; call `defineHonuaControls()` explicitly when using a scoped registry.
|
|
15
|
+
* The layer list is opt-in via {@link defineHonuaLayerList} because its tag
|
|
16
|
+
* (`honua-layer-list`) collides with the `web-components` kit's own
|
|
17
|
+
* controller-driven element.
|
|
18
|
+
*
|
|
19
|
+
* @experimental This entrypoint is not yet covered by the SDK's semver
|
|
20
|
+
* contract — the surface may change in any minor release prior to `1.0.0`.
|
|
21
|
+
* @module
|
|
22
|
+
*/
|
|
23
|
+
import "./basemap-switcher.js";
|
|
24
|
+
import "./swipe-control.js";
|
|
25
|
+
export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
|
|
26
|
+
export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
|
|
27
|
+
export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
|
|
28
|
+
export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
|
|
29
|
+
export type { HonuaLegendDeriveErrorCode } from "./legend-derive.js";
|
|
30
|
+
export { HonuaLegendElement } from "./legend.js";
|
|
31
|
+
export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
|
|
32
|
+
export type { HonuaBasemapDefinition, HonuaBasemapKind, HonuaBasemapLayerSpecification, HonuaBasemapSwitcherChangeDetail, HonuaBasemapSwitcherMap, HonuaLayerListChangeDetail, HonuaLayerListMap, HonuaLayerListOverlay, HonuaLegendEntry, HonuaLegendMap, HonuaLegendSection, HonuaLegendSwatchColor, HonuaLegendSwatchShape, HonuaSwipeChangeDetail, HonuaSwipeMap, HonuaSwipeOrientation, } from "./types.js";
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACvF,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,8BAA8B,EAC9B,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
|
|
3
|
+
* framework-free custom elements for apps built on the native lane
|
|
4
|
+
* (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
|
|
5
|
+
* switcher, the legend, and the layer list.
|
|
6
|
+
*
|
|
7
|
+
* This entry is intentionally independent of the SDK core bundle (the same
|
|
8
|
+
* posture as `@honua/sdk-js/esri-compat`): it imports nothing from
|
|
9
|
+
* `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
|
|
10
|
+
* drive any MapLibre `Map` through a duck-typed interface.
|
|
11
|
+
*
|
|
12
|
+
* Importing this module registers the basemap switcher, legend, and swipe
|
|
13
|
+
* control when a browser `customElements` registry is present. Node imports are
|
|
14
|
+
* safe; call `defineHonuaControls()` explicitly when using a scoped registry.
|
|
15
|
+
* The layer list is opt-in via {@link defineHonuaLayerList} because its tag
|
|
16
|
+
* (`honua-layer-list`) collides with the `web-components` kit's own
|
|
17
|
+
* controller-driven element.
|
|
18
|
+
*
|
|
19
|
+
* @experimental This entrypoint is not yet covered by the SDK's semver
|
|
20
|
+
* contract — the surface may change in any minor release prior to `1.0.0`.
|
|
21
|
+
* @module
|
|
22
|
+
*/
|
|
23
|
+
import "./basemap-switcher.js";
|
|
24
|
+
import "./swipe-control.js";
|
|
25
|
+
export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
|
|
26
|
+
export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
|
|
27
|
+
export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
|
|
28
|
+
export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
|
|
29
|
+
export { HonuaLegendElement } from "./legend.js";
|
|
30
|
+
export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<honua-layer-list>` — framework-free custom element rendering a checkbox
|
|
3
|
+
* row per overlay so users can toggle MapLibre overlay layers on and off
|
|
4
|
+
* (issue #280, closing umbrella #274).
|
|
5
|
+
*
|
|
6
|
+
* Each overlay groups one or more style layer ids; toggling a row writes each
|
|
7
|
+
* layer's `visibility` layout property (`"visible"` / `"none"`) on the map.
|
|
8
|
+
* The element never imports `maplibre-gl` or the SDK core — it drives any
|
|
9
|
+
* MapLibre `Map` through the duck-typed {@link HonuaLayerListMap} interface,
|
|
10
|
+
* keeping the `@honua/sdk-js/controls` entry independent of the core bundle.
|
|
11
|
+
*
|
|
12
|
+
* ## Input modes
|
|
13
|
+
* - **Property** (preferred) — assign the `overlays` property a
|
|
14
|
+
* {@link HonuaLayerListOverlay} array.
|
|
15
|
+
* - **Attribute** — set the `overlays` attribute to a JSON array of the same
|
|
16
|
+
* shape (matching how `<honua-basemap-switcher>` accepts `bases` JSON).
|
|
17
|
+
*
|
|
18
|
+
* ## Wiring
|
|
19
|
+
* - `element.map = map` (any MapLibre `Map`) or `element.connect(map)`;
|
|
20
|
+
* - declaratively via `for="<honua-map id>"` — same idiom as
|
|
21
|
+
* `<honua-basemap-switcher>` / `<honua-legend>` (resolves `.map` from the
|
|
22
|
+
* referenced element and listens for `honua-map-ready`).
|
|
23
|
+
*
|
|
24
|
+
* ## Reactivity
|
|
25
|
+
* - With the `auto-refresh` attribute the element subscribes to the map's
|
|
26
|
+
* `styledata` event while connected and re-syncs each checkbox's checked
|
|
27
|
+
* state from the map's current `visibility` (external style edits,
|
|
28
|
+
* visibility toggled elsewhere, layers seeded later).
|
|
29
|
+
*
|
|
30
|
+
* ## Attributes
|
|
31
|
+
* - `overlays` — JSON array of {@link HonuaLayerListOverlay} (the `overlays`
|
|
32
|
+
* property is preferred for non-trivial configs).
|
|
33
|
+
* - `for` — id of the map-providing element, see Wiring.
|
|
34
|
+
* - `label` — accessible name of the list (default "Layers").
|
|
35
|
+
* - `auto-refresh` — boolean; see Reactivity.
|
|
36
|
+
*
|
|
37
|
+
* ## CSS parts
|
|
38
|
+
* `root`, `row`, `checkbox`, `label`, and `badge` (the "not seeded" hint
|
|
39
|
+
* shown on a disabled row whose style layers are all missing). Structural CSS
|
|
40
|
+
* only — theme via `::part()`.
|
|
41
|
+
*
|
|
42
|
+
* ## Accessibility
|
|
43
|
+
* Rows are real `<label>` + `<input type="checkbox">` pairs; an overlay whose
|
|
44
|
+
* style layers are all missing renders disabled with a `badge` part/slot.
|
|
45
|
+
*/
|
|
46
|
+
import { HTMLElementBase } from "./element-utils.js";
|
|
47
|
+
import type { HonuaLayerListMap, HonuaLayerListOverlay } from "./types.js";
|
|
48
|
+
/**
|
|
49
|
+
* Custom element implementing the overlay layer list. Registered as
|
|
50
|
+
* `honua-layer-list` by `defineHonuaControls` (which runs automatically on
|
|
51
|
+
* import of the controls entry when a `customElements` registry exists).
|
|
52
|
+
*/
|
|
53
|
+
export declare class HonuaLayerListElement extends HTMLElementBase {
|
|
54
|
+
#private;
|
|
55
|
+
static get observedAttributes(): string[];
|
|
56
|
+
/** The MapLibre map this list toggles overlay visibility on. */
|
|
57
|
+
get map(): HonuaLayerListMap | undefined;
|
|
58
|
+
set map(map: HonuaLayerListMap | undefined);
|
|
59
|
+
/** Wires the list to a MapLibre map. Equivalent to setting `.map`. */
|
|
60
|
+
connect(map: HonuaLayerListMap): void;
|
|
61
|
+
/** The registered overlay definitions. */
|
|
62
|
+
get overlays(): readonly HonuaLayerListOverlay[];
|
|
63
|
+
set overlays(overlays: readonly HonuaLayerListOverlay[]);
|
|
64
|
+
/** Refresh automatically on the map's `styledata` event. Reflects `auto-refresh`. */
|
|
65
|
+
get autoRefresh(): boolean;
|
|
66
|
+
set autoRefresh(value: boolean);
|
|
67
|
+
/** Re-syncs checkbox state from the map and re-renders. */
|
|
68
|
+
refresh(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Shows or hides the overlay with the given id, writing each of its style
|
|
71
|
+
* layers' `visibility`. Returns `true` when the overlay was found and at
|
|
72
|
+
* least one of its layers exists on the map. Dispatches `change`.
|
|
73
|
+
*/
|
|
74
|
+
setVisible(overlayId: string, visible: boolean): boolean;
|
|
75
|
+
attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void;
|
|
76
|
+
connectedCallback(): void;
|
|
77
|
+
disconnectedCallback(): void;
|
|
78
|
+
protected render(): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Registers the layer-list custom element (`honua-layer-list`). Skips the
|
|
82
|
+
* registration when the tag is already defined.
|
|
83
|
+
*
|
|
84
|
+
* Unlike the other controls-kit elements, this is **opt-in** and is NOT run by
|
|
85
|
+
* the blanket `defineHonuaControls()` / module-load auto-registration. The
|
|
86
|
+
* `web-components` entry ships its own (controller-driven) `honua-layer-list`
|
|
87
|
+
* under the same tag, and that kit auto-registers on import. Auto-registering
|
|
88
|
+
* the controls variant too would let it silently win the tag in apps that load
|
|
89
|
+
* both kits (the order is import-dependent), so callers who want the native,
|
|
90
|
+
* overlay-definition-driven layer list register it explicitly:
|
|
91
|
+
*
|
|
92
|
+
* ```ts
|
|
93
|
+
* import { defineHonuaLayerList } from "@honua/sdk-js/controls";
|
|
94
|
+
* defineHonuaLayerList();
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function defineHonuaLayerList(registry?: CustomElementRegistry): void;
|
|
98
|
+
//# sourceMappingURL=layer-list.d.ts.map
|