@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,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap baseMap to Honua sources and layers.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { warnUnknownProperties } from "./warnings.js";
|
|
7
|
+
export function convertBasemap(baseMap, warn) {
|
|
8
|
+
const result = { sources: {}, layers: [] };
|
|
9
|
+
if (!baseMap?.baseMapLayers)
|
|
10
|
+
return result;
|
|
11
|
+
warnUnknownProperties(baseMap, BASEMAP_PROPERTIES, warn);
|
|
12
|
+
const bmLayers = baseMap.baseMapLayers;
|
|
13
|
+
for (let i = 0; i < bmLayers.length; i++) {
|
|
14
|
+
const bml = bmLayers[i];
|
|
15
|
+
const bmlWarn = warn.child(`baseMapLayers[${i}]`);
|
|
16
|
+
warnUnknownProperties(bml, BASEMAP_LAYER_PROPERTIES, bmlWarn);
|
|
17
|
+
const sourceId = bml.id ?? `basemap-${i}`;
|
|
18
|
+
const layerId = `${sourceId}-layer`;
|
|
19
|
+
const layerType = bml.layerType ?? "";
|
|
20
|
+
if (layerType === "ArcGISTiledMapServiceLayer" && bml.url) {
|
|
21
|
+
result.sources[sourceId] = {
|
|
22
|
+
type: "honua-map-service",
|
|
23
|
+
url: bml.url,
|
|
24
|
+
};
|
|
25
|
+
const layer = {
|
|
26
|
+
id: layerId,
|
|
27
|
+
type: "raster",
|
|
28
|
+
source: sourceId,
|
|
29
|
+
layout: {},
|
|
30
|
+
paint: {},
|
|
31
|
+
};
|
|
32
|
+
if (bml.visibility === false) {
|
|
33
|
+
layer.layout = { visibility: "none" };
|
|
34
|
+
}
|
|
35
|
+
if (bml.opacity != null && bml.opacity < 1) {
|
|
36
|
+
layer.paint["raster-opacity"] = bml.opacity;
|
|
37
|
+
}
|
|
38
|
+
result.layers.push(layer);
|
|
39
|
+
}
|
|
40
|
+
else if (layerType === "VectorTileLayer") {
|
|
41
|
+
// Partial support: note styleUrl in metadata
|
|
42
|
+
if (bml.url) {
|
|
43
|
+
result.sources[sourceId] = {
|
|
44
|
+
type: "vector",
|
|
45
|
+
url: bml.url,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
bmlWarn.warn("missing-url", "VectorTileLayer missing url");
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const layer = {
|
|
53
|
+
id: layerId,
|
|
54
|
+
type: "background",
|
|
55
|
+
source: sourceId,
|
|
56
|
+
layout: {},
|
|
57
|
+
paint: {},
|
|
58
|
+
metadata: {
|
|
59
|
+
...(bml.styleUrl ? { esriStyleUrl: bml.styleUrl } : {}),
|
|
60
|
+
note: "VectorTileLayer requires style resolution; using placeholder background layer",
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
if (bml.visibility === false) {
|
|
64
|
+
layer.layout = { visibility: "none" };
|
|
65
|
+
}
|
|
66
|
+
bmlWarn.warn("vector-tile-partial", "VectorTileLayer support is partial; style must be resolved separately", {
|
|
67
|
+
styleUrl: bml.styleUrl,
|
|
68
|
+
});
|
|
69
|
+
result.layers.push(layer);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
bmlWarn.warn("unsupported-basemap-type", `Unsupported basemap layer type: ${layerType}`, { layerType });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
const BASEMAP_PROPERTIES = ["title", "baseMapLayers"];
|
|
78
|
+
const BASEMAP_LAYER_PROPERTIES = ["id", "title", "url", "layerType", "visibility", "opacity", "styleUrl"];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap extents/viewpoints to MapLibre center/zoom.
|
|
3
|
+
*
|
|
4
|
+
* Supports Web Mercator (WKID 3857 / 102100) and geographic (4326).
|
|
5
|
+
* Unsupported spatial references emit warnings and are skipped.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { WebMapExtent, WebMapViewpoint } from "./types.js";
|
|
10
|
+
import type { WarningCollector } from "./warnings.js";
|
|
11
|
+
export interface ExtentConversionResult {
|
|
12
|
+
center: [number, number];
|
|
13
|
+
zoom: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function convertInitialViewpoint(viewpoint: WebMapViewpoint | undefined, warn: WarningCollector): ExtentConversionResult | undefined;
|
|
16
|
+
export declare function convertExtent(extent: WebMapExtent | undefined, warn: WarningCollector): ExtentConversionResult | undefined;
|
|
17
|
+
//# sourceMappingURL=convert-extent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-extent.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-extent.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAe,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,IAAI,EAAE,gBAAgB,GACrB,sBAAsB,GAAG,SAAS,CAsBpC;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,YAAY,GAAG,SAAS,EAChC,IAAI,EAAE,gBAAgB,GACrB,sBAAsB,GAAG,SAAS,CAyBpC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri WebMap extents/viewpoints to MapLibre center/zoom.
|
|
3
|
+
*
|
|
4
|
+
* Supports Web Mercator (WKID 3857 / 102100) and geographic (4326).
|
|
5
|
+
* Unsupported spatial references emit warnings and are skipped.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
const WEB_MERCATOR_WKIDS = new Set([3857, 102100, 102113]);
|
|
10
|
+
const EARTH_RADIUS = 6378137;
|
|
11
|
+
const ORIGIN_SHIFT = Math.PI * EARTH_RADIUS; // ~20037508.34
|
|
12
|
+
export function convertInitialViewpoint(viewpoint, warn) {
|
|
13
|
+
if (!viewpoint?.targetGeometry)
|
|
14
|
+
return undefined;
|
|
15
|
+
const target = viewpoint.targetGeometry;
|
|
16
|
+
if (isExtent(target)) {
|
|
17
|
+
const extentResult = convertExtent(target, warn.child("targetGeometry"));
|
|
18
|
+
if (!extentResult)
|
|
19
|
+
return undefined;
|
|
20
|
+
if (viewpoint.scale != null) {
|
|
21
|
+
return {
|
|
22
|
+
center: extentResult.center,
|
|
23
|
+
zoom: scaleToZoom(viewpoint.scale),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return extentResult;
|
|
27
|
+
}
|
|
28
|
+
if (isPoint(target)) {
|
|
29
|
+
return convertPointViewpoint(target, viewpoint.scale, warn.child("targetGeometry"));
|
|
30
|
+
}
|
|
31
|
+
warn.warn("unsupported-viewpoint-geometry", "initialViewpoint.targetGeometry must be a point or extent");
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
export function convertExtent(extent, warn) {
|
|
35
|
+
if (!extent)
|
|
36
|
+
return undefined;
|
|
37
|
+
const wkid = extent.spatialReference?.latestWkid ?? extent.spatialReference?.wkid;
|
|
38
|
+
if (wkid && !WEB_MERCATOR_WKIDS.has(wkid)) {
|
|
39
|
+
// Check if it looks like geographic (4326)
|
|
40
|
+
if (wkid === 4326) {
|
|
41
|
+
return convertGeographicExtent(extent);
|
|
42
|
+
}
|
|
43
|
+
warn.warn("unsupported-spatial-reference", `Spatial reference WKID ${wkid} not supported; expected Web Mercator (3857)`, { wkid });
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
// Default assumption: if no SR specified and values are small, treat as geographic
|
|
47
|
+
if (!wkid && Math.abs(extent.xmin) <= 180 && Math.abs(extent.xmax) <= 180) {
|
|
48
|
+
return convertGeographicExtent(extent);
|
|
49
|
+
}
|
|
50
|
+
// Web Mercator → geographic
|
|
51
|
+
return convertMercatorExtent(extent);
|
|
52
|
+
}
|
|
53
|
+
function convertPointViewpoint(point, scale, warn) {
|
|
54
|
+
const wkid = point.spatialReference?.latestWkid ?? point.spatialReference?.wkid;
|
|
55
|
+
if (wkid && !WEB_MERCATOR_WKIDS.has(wkid) && wkid !== 4326) {
|
|
56
|
+
warn.warn("unsupported-spatial-reference", `Spatial reference WKID ${wkid} not supported; expected Web Mercator (3857) or WGS84 (4326)`, { wkid });
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const isGeographic = wkid === 4326 || (!wkid && Math.abs(point.x) <= 180 && Math.abs(point.y) <= 90);
|
|
60
|
+
const center = isGeographic
|
|
61
|
+
? [point.x, point.y]
|
|
62
|
+
: [round6(mercatorXToLng(point.x)), round6(mercatorYToLat(point.y))];
|
|
63
|
+
return {
|
|
64
|
+
center,
|
|
65
|
+
zoom: scale != null ? scaleToZoom(scale) : 10,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function convertGeographicExtent(extent) {
|
|
69
|
+
const centerLng = (extent.xmin + extent.xmax) / 2;
|
|
70
|
+
const centerLat = (extent.ymin + extent.ymax) / 2;
|
|
71
|
+
const lngSpan = extent.xmax - extent.xmin;
|
|
72
|
+
// Approximate zoom from longitude span: 360/2^zoom ≈ lngSpan
|
|
73
|
+
const zoom = lngSpan > 0 ? Math.round(Math.log2(360 / lngSpan) * 100) / 100 : 2;
|
|
74
|
+
return { center: [centerLng, centerLat], zoom };
|
|
75
|
+
}
|
|
76
|
+
function convertMercatorExtent(extent) {
|
|
77
|
+
const centerX = (extent.xmin + extent.xmax) / 2;
|
|
78
|
+
const centerY = (extent.ymin + extent.ymax) / 2;
|
|
79
|
+
const centerLng = mercatorXToLng(centerX);
|
|
80
|
+
const centerLat = mercatorYToLat(centerY);
|
|
81
|
+
// Zoom from mercator extent width
|
|
82
|
+
const xSpan = extent.xmax - extent.xmin;
|
|
83
|
+
const fullWidth = ORIGIN_SHIFT * 2;
|
|
84
|
+
const zoom = xSpan > 0 ? Math.round(Math.log2(fullWidth / xSpan) * 100) / 100 : 2;
|
|
85
|
+
return {
|
|
86
|
+
center: [round6(centerLng), round6(centerLat)],
|
|
87
|
+
zoom,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function scaleToZoom(scale) {
|
|
91
|
+
if (scale <= 0)
|
|
92
|
+
return 0;
|
|
93
|
+
return Math.round(Math.log2(559082264 / scale) * 100) / 100;
|
|
94
|
+
}
|
|
95
|
+
function round6(value) {
|
|
96
|
+
return Math.round(value * 1e6) / 1e6;
|
|
97
|
+
}
|
|
98
|
+
function isExtent(value) {
|
|
99
|
+
return (typeof value.xmin === "number" &&
|
|
100
|
+
typeof value.ymin === "number" &&
|
|
101
|
+
typeof value.xmax === "number" &&
|
|
102
|
+
typeof value.ymax === "number");
|
|
103
|
+
}
|
|
104
|
+
function isPoint(value) {
|
|
105
|
+
return typeof value.x === "number" && typeof value.y === "number";
|
|
106
|
+
}
|
|
107
|
+
function mercatorXToLng(x) {
|
|
108
|
+
return (x / ORIGIN_SHIFT) * 180;
|
|
109
|
+
}
|
|
110
|
+
function mercatorYToLat(y) {
|
|
111
|
+
let lat = (y / ORIGIN_SHIFT) * 180;
|
|
112
|
+
lat = (180 / Math.PI) * (2 * Math.atan(Math.exp((lat * Math.PI) / 180)) - Math.PI / 2);
|
|
113
|
+
return lat;
|
|
114
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri labelingInfo to MapLibre symbol layers.
|
|
3
|
+
*
|
|
4
|
+
* Supports basic Arcade expressions like `$feature.FIELD_NAME`.
|
|
5
|
+
* Complex Arcade expressions emit a warning and are skipped.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { HonuaLayerSpecification } from "../style/specification.js";
|
|
10
|
+
import type { WebMapLabelClass } from "./types.js";
|
|
11
|
+
import type { WarningCollector } from "./warnings.js";
|
|
12
|
+
export declare function convertLabelingInfo(labelClasses: WebMapLabelClass[] | undefined, sourceId: string, baseLayerId: string, warn: WarningCollector): HonuaLayerSpecification[];
|
|
13
|
+
//# sourceMappingURL=convert-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-label.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-label.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,EAAE,CAyC3B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri labelingInfo to MapLibre symbol layers.
|
|
3
|
+
*
|
|
4
|
+
* Supports basic Arcade expressions like `$feature.FIELD_NAME`.
|
|
5
|
+
* Complex Arcade expressions emit a warning and are skipped.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { esriColorToCss } from "./convert-symbol.js";
|
|
10
|
+
export function convertLabelingInfo(labelClasses, sourceId, baseLayerId, warn) {
|
|
11
|
+
if (!labelClasses || labelClasses.length === 0)
|
|
12
|
+
return [];
|
|
13
|
+
const layers = [];
|
|
14
|
+
for (let i = 0; i < labelClasses.length; i++) {
|
|
15
|
+
const lc = labelClasses[i];
|
|
16
|
+
const lcWarn = warn.child(`labelingInfo[${i}]`);
|
|
17
|
+
const textExpr = parseLabelExpression(lc, lcWarn);
|
|
18
|
+
if (!textExpr)
|
|
19
|
+
continue;
|
|
20
|
+
const layer = {
|
|
21
|
+
id: `${baseLayerId}-label-${i}`,
|
|
22
|
+
type: "symbol",
|
|
23
|
+
source: sourceId,
|
|
24
|
+
layout: {
|
|
25
|
+
"text-field": textExpr,
|
|
26
|
+
"text-size": 12,
|
|
27
|
+
},
|
|
28
|
+
paint: {},
|
|
29
|
+
};
|
|
30
|
+
// Apply symbol styling
|
|
31
|
+
if (lc.symbol) {
|
|
32
|
+
applyTextSymbolStyle(lc.symbol, layer);
|
|
33
|
+
}
|
|
34
|
+
// Apply scale constraints
|
|
35
|
+
if (lc.minScale)
|
|
36
|
+
layer.maxzoom = scaleToZoom(lc.minScale);
|
|
37
|
+
if (lc.maxScale)
|
|
38
|
+
layer.minzoom = scaleToZoom(lc.maxScale);
|
|
39
|
+
// Apply where clause as filter
|
|
40
|
+
if (lc.where) {
|
|
41
|
+
layer.metadata = { ...layer.metadata, esriWhere: lc.where };
|
|
42
|
+
}
|
|
43
|
+
layers.push(layer);
|
|
44
|
+
}
|
|
45
|
+
return layers;
|
|
46
|
+
}
|
|
47
|
+
const FEATURE_FIELD_RE = /^\$feature\.(\w+)$/;
|
|
48
|
+
const FEATURE_FIELD_GLOBAL_RE = /\$feature\.(\w+)/g;
|
|
49
|
+
function parseLabelExpression(lc, warn) {
|
|
50
|
+
// Prefer labelExpressionInfo (Arcade-based)
|
|
51
|
+
if (lc.labelExpressionInfo?.expression) {
|
|
52
|
+
const expr = lc.labelExpressionInfo.expression;
|
|
53
|
+
// Simple: $feature.FIELD_NAME
|
|
54
|
+
const simple = expr.match(FEATURE_FIELD_RE);
|
|
55
|
+
if (simple) {
|
|
56
|
+
return ["get", simple[1]];
|
|
57
|
+
}
|
|
58
|
+
// Try concatenation patterns: $feature.A + " " + $feature.B
|
|
59
|
+
if (expr.includes("$feature.") && !expr.includes("(")) {
|
|
60
|
+
return parseSimpleConcatExpression(expr, warn);
|
|
61
|
+
}
|
|
62
|
+
warn.warn("complex-arcade", `Complex Arcade expression not supported: ${expr}`);
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
// Fallback: labelExpression (e.g., "[FIELD_NAME]")
|
|
66
|
+
if (lc.labelExpression) {
|
|
67
|
+
const bracketMatch = lc.labelExpression.match(/^\[(\w+)\]$/);
|
|
68
|
+
if (bracketMatch) {
|
|
69
|
+
return ["get", bracketMatch[1]];
|
|
70
|
+
}
|
|
71
|
+
warn.warn("complex-label-expression", `Complex label expression not supported: ${lc.labelExpression}`);
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
// Fallback: value template
|
|
75
|
+
if (lc.labelExpressionInfo?.value) {
|
|
76
|
+
const value = lc.labelExpressionInfo.value;
|
|
77
|
+
const fieldMatch = value.match(/^\{(\w+)\}$/);
|
|
78
|
+
if (fieldMatch) {
|
|
79
|
+
return ["get", fieldMatch[1]];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
function parseSimpleConcatExpression(expr, warn) {
|
|
85
|
+
// Handle: $feature.A + " " + $feature.B
|
|
86
|
+
const parts = expr.split("+").map((p) => p.trim());
|
|
87
|
+
const concatArgs = [];
|
|
88
|
+
for (const part of parts) {
|
|
89
|
+
const fieldMatch = part.match(FEATURE_FIELD_RE);
|
|
90
|
+
if (fieldMatch) {
|
|
91
|
+
concatArgs.push(["get", fieldMatch[1]]);
|
|
92
|
+
}
|
|
93
|
+
else if ((part.startsWith('"') && part.endsWith('"')) || (part.startsWith("'") && part.endsWith("'"))) {
|
|
94
|
+
concatArgs.push(part.slice(1, -1));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
warn.warn("complex-arcade", `Cannot parse Arcade expression part: ${part}`);
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (concatArgs.length === 1)
|
|
102
|
+
return concatArgs[0];
|
|
103
|
+
return ["concat", ...concatArgs];
|
|
104
|
+
}
|
|
105
|
+
function applyTextSymbolStyle(symbol, layer) {
|
|
106
|
+
if (symbol.color) {
|
|
107
|
+
const color = esriColorToCss(symbol.color);
|
|
108
|
+
if (color)
|
|
109
|
+
layer.paint["text-color"] = color;
|
|
110
|
+
}
|
|
111
|
+
if (symbol.font) {
|
|
112
|
+
const layout = layer.layout;
|
|
113
|
+
if (symbol.font.size != null)
|
|
114
|
+
layout["text-size"] = symbol.font.size;
|
|
115
|
+
if (symbol.font.family)
|
|
116
|
+
layout["text-font"] = [symbol.font.family];
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** Approximate Esri scale denominator to MapLibre zoom level. */
|
|
120
|
+
function scaleToZoom(scale) {
|
|
121
|
+
if (scale <= 0)
|
|
122
|
+
return 0;
|
|
123
|
+
// Esri uses 96 DPI; at zoom 0, scale ≈ 559082264
|
|
124
|
+
return Math.round(Math.log2(559082264 / scale) * 100) / 100;
|
|
125
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a single WebMap operational layer to Honua source(s) and layer(s).
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates per-layer conversion: determines source type from layerType/url,
|
|
5
|
+
* calls renderer/popup/label converters, applies opacity/visibility/min-maxScale.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { HonuaLayerSpecification, HonuaSourceSpecification } from "../style/specification.js";
|
|
10
|
+
import { type HonuaPopupConfig } from "./convert-popup.js";
|
|
11
|
+
import type { WebMapOperationalLayer } from "./types.js";
|
|
12
|
+
import { type WarningCollector } from "./warnings.js";
|
|
13
|
+
export interface LayerConversionResult {
|
|
14
|
+
sources: Record<string, HonuaSourceSpecification | {
|
|
15
|
+
type: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}>;
|
|
18
|
+
layers: HonuaLayerSpecification[];
|
|
19
|
+
popup?: HonuaPopupConfig;
|
|
20
|
+
}
|
|
21
|
+
export declare function convertOperationalLayer(opLayer: WebMapOperationalLayer, index: number, warn: WarningCollector): LayerConversionResult;
|
|
22
|
+
//# sourceMappingURL=convert-layer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-layer.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-layer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,uBAAuB,EAEvB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,gBAAgB,GACrB,qBAAqB,CAmHvB"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a single WebMap operational layer to Honua source(s) and layer(s).
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates per-layer conversion: determines source type from layerType/url,
|
|
5
|
+
* calls renderer/popup/label converters, applies opacity/visibility/min-maxScale.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { convertLabelingInfo } from "./convert-label.js";
|
|
10
|
+
import { convertPopupInfo } from "./convert-popup.js";
|
|
11
|
+
import { convertRenderer } from "./convert-renderer.js";
|
|
12
|
+
import { warnUnknownProperties } from "./warnings.js";
|
|
13
|
+
export function convertOperationalLayer(opLayer, index, warn) {
|
|
14
|
+
const result = { sources: {}, layers: [] };
|
|
15
|
+
const layerWarn = warn.child(`operationalLayers[${index}]`);
|
|
16
|
+
warnUnknownProperties(opLayer, OPERATIONAL_LAYER_PROPERTIES, layerWarn);
|
|
17
|
+
detectUnsupported3DLayerProperties(opLayer, layerWarn);
|
|
18
|
+
const sourceId = opLayer.id ?? `operational-${index}`;
|
|
19
|
+
const layerId = sourceId;
|
|
20
|
+
// Determine source type
|
|
21
|
+
const layerType = opLayer.layerType ?? "";
|
|
22
|
+
const url = opLayer.url ?? "";
|
|
23
|
+
if (layerType === "ArcGISFeatureLayer" || url.includes("FeatureServer")) {
|
|
24
|
+
const source = {
|
|
25
|
+
type: "honua-feature-service",
|
|
26
|
+
url,
|
|
27
|
+
};
|
|
28
|
+
if (opLayer.layerDefinition?.definitionExpression) {
|
|
29
|
+
source.definitionExpression = opLayer.layerDefinition.definitionExpression;
|
|
30
|
+
}
|
|
31
|
+
result.sources[sourceId] = source;
|
|
32
|
+
}
|
|
33
|
+
else if (layerType === "ArcGISMapServiceLayer" || url.includes("MapServer")) {
|
|
34
|
+
const source = {
|
|
35
|
+
type: "honua-map-service",
|
|
36
|
+
url,
|
|
37
|
+
};
|
|
38
|
+
result.sources[sourceId] = source;
|
|
39
|
+
}
|
|
40
|
+
else if (opLayer.featureCollection) {
|
|
41
|
+
layerWarn.warn("unsupported-feature-collection", "Inline feature collections are not supported");
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
layerWarn.warn("unsupported-layer-type", `Unsupported layer type: ${layerType}`, { layerType, url });
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
warnUnknownProperties(opLayer.layerDefinition, LAYER_DEFINITION_PROPERTIES, layerWarn.child("layerDefinition"));
|
|
49
|
+
warnUnknownProperties(opLayer.layerDefinition?.drawingInfo, DRAWING_INFO_PROPERTIES, layerWarn.child("layerDefinition.drawingInfo"));
|
|
50
|
+
// Convert renderer
|
|
51
|
+
const renderer = opLayer.layerDefinition?.drawingInfo?.renderer;
|
|
52
|
+
const rendererResult = convertRenderer(renderer, layerWarn.child("layerDefinition.drawingInfo.renderer"));
|
|
53
|
+
if (rendererResult) {
|
|
54
|
+
const layer = {
|
|
55
|
+
id: layerId,
|
|
56
|
+
type: rendererResult.layerType,
|
|
57
|
+
source: sourceId,
|
|
58
|
+
paint: { ...rendererResult.paint },
|
|
59
|
+
layout: { ...rendererResult.layout },
|
|
60
|
+
};
|
|
61
|
+
// Apply transparency from drawingInfo
|
|
62
|
+
const transparency = opLayer.layerDefinition?.drawingInfo?.transparency;
|
|
63
|
+
if (transparency != null && transparency > 0) {
|
|
64
|
+
applyTransparency(layer, transparency);
|
|
65
|
+
}
|
|
66
|
+
// Apply layer-level opacity
|
|
67
|
+
if (opLayer.opacity != null && opLayer.opacity < 1) {
|
|
68
|
+
applyOpacity(layer, opLayer.opacity);
|
|
69
|
+
}
|
|
70
|
+
// Apply visibility
|
|
71
|
+
if (opLayer.visibility === false) {
|
|
72
|
+
layer.layout = { ...layer.layout, visibility: "none" };
|
|
73
|
+
}
|
|
74
|
+
// Apply scale constraints
|
|
75
|
+
if (opLayer.minScale)
|
|
76
|
+
layer.maxzoom = scaleToZoom(opLayer.minScale);
|
|
77
|
+
if (opLayer.maxScale)
|
|
78
|
+
layer.minzoom = scaleToZoom(opLayer.maxScale);
|
|
79
|
+
// Store title in metadata
|
|
80
|
+
if (opLayer.title) {
|
|
81
|
+
layer.metadata = { ...layer.metadata, title: opLayer.title };
|
|
82
|
+
}
|
|
83
|
+
result.layers.push(layer);
|
|
84
|
+
}
|
|
85
|
+
else if (!renderer) {
|
|
86
|
+
// No renderer — create a default layer so the source is referenced
|
|
87
|
+
const layer = {
|
|
88
|
+
id: layerId,
|
|
89
|
+
type: "circle",
|
|
90
|
+
source: sourceId,
|
|
91
|
+
paint: { "circle-radius": 4, "circle-color": "#007cbf" },
|
|
92
|
+
layout: {},
|
|
93
|
+
};
|
|
94
|
+
if (opLayer.visibility === false) {
|
|
95
|
+
layer.layout = { visibility: "none" };
|
|
96
|
+
}
|
|
97
|
+
if (opLayer.minScale)
|
|
98
|
+
layer.maxzoom = scaleToZoom(opLayer.minScale);
|
|
99
|
+
if (opLayer.maxScale)
|
|
100
|
+
layer.minzoom = scaleToZoom(opLayer.maxScale);
|
|
101
|
+
if (opLayer.title)
|
|
102
|
+
layer.metadata = { title: opLayer.title };
|
|
103
|
+
result.layers.push(layer);
|
|
104
|
+
}
|
|
105
|
+
// Convert labels
|
|
106
|
+
const labelLayers = convertLabelingInfo(opLayer.layerDefinition?.drawingInfo?.labelingInfo, sourceId, layerId, layerWarn.child("layerDefinition.drawingInfo"));
|
|
107
|
+
result.layers.push(...labelLayers);
|
|
108
|
+
// Convert popup
|
|
109
|
+
result.popup = convertPopupInfo(opLayer.popupInfo, layerWarn.child("popupInfo"));
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
function applyTransparency(layer, transparency) {
|
|
113
|
+
const opacity = 1 - transparency / 100;
|
|
114
|
+
applyOpacity(layer, opacity);
|
|
115
|
+
}
|
|
116
|
+
function applyOpacity(layer, opacity) {
|
|
117
|
+
const paint = layer.paint;
|
|
118
|
+
switch (layer.type) {
|
|
119
|
+
case "fill":
|
|
120
|
+
paint["fill-opacity"] = opacity;
|
|
121
|
+
break;
|
|
122
|
+
case "line":
|
|
123
|
+
paint["line-opacity"] = opacity;
|
|
124
|
+
break;
|
|
125
|
+
case "circle":
|
|
126
|
+
paint["circle-opacity"] = opacity;
|
|
127
|
+
break;
|
|
128
|
+
case "symbol":
|
|
129
|
+
paint["icon-opacity"] = opacity;
|
|
130
|
+
paint["text-opacity"] = opacity;
|
|
131
|
+
break;
|
|
132
|
+
case "raster":
|
|
133
|
+
paint["raster-opacity"] = opacity;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function scaleToZoom(scale) {
|
|
138
|
+
if (scale <= 0)
|
|
139
|
+
return 0;
|
|
140
|
+
return Math.round(Math.log2(559082264 / scale) * 100) / 100;
|
|
141
|
+
}
|
|
142
|
+
const OPERATIONAL_LAYER_PROPERTIES = [
|
|
143
|
+
"id",
|
|
144
|
+
"title",
|
|
145
|
+
"url",
|
|
146
|
+
"layerType",
|
|
147
|
+
"itemId",
|
|
148
|
+
"visibility",
|
|
149
|
+
"opacity",
|
|
150
|
+
"minScale",
|
|
151
|
+
"maxScale",
|
|
152
|
+
"layerDefinition",
|
|
153
|
+
"popupInfo",
|
|
154
|
+
"featureCollection",
|
|
155
|
+
"layers",
|
|
156
|
+
"mode",
|
|
157
|
+
];
|
|
158
|
+
const LAYER_DEFINITION_PROPERTIES = ["drawingInfo", "definitionExpression", "minScale", "maxScale"];
|
|
159
|
+
const DRAWING_INFO_PROPERTIES = ["renderer", "labelingInfo", "transparency"];
|
|
160
|
+
const LAYER_3D_PROPERTIES = ["elevationInfo", "heightInfo", "sceneProperties"];
|
|
161
|
+
function detectUnsupported3DLayerProperties(opLayer, warn) {
|
|
162
|
+
const layerType = typeof opLayer.layerType === "string" ? opLayer.layerType : "";
|
|
163
|
+
if (layerType.toLowerCase().includes("scene")) {
|
|
164
|
+
warn.warn("unsupported-3d-property", `Layer type '${layerType}' requires a scene renderer adapter`, {
|
|
165
|
+
layerType,
|
|
166
|
+
status: "unsupported",
|
|
167
|
+
fallback: "Preserve the service URL as scene-layer metadata or model-layer primitives; omit it from the 2D style.",
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
for (const key of LAYER_3D_PROPERTIES) {
|
|
171
|
+
if (Object.prototype.hasOwnProperty.call(opLayer, key)) {
|
|
172
|
+
warn.warn("unsupported-3d-property", `Layer property '${key}' is not supported by the 2D WebMap style path`, {
|
|
173
|
+
property: key,
|
|
174
|
+
status: key === "elevationInfo" || key === "heightInfo" ? "degraded" : "unsupported",
|
|
175
|
+
fallback: key === "elevationInfo" || key === "heightInfo"
|
|
176
|
+
? "MapLibre extrusion/terrain primitives can represent simple height and elevation behavior."
|
|
177
|
+
: "Preserve this property for a scene renderer adapter.",
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri popupInfo to Honua popup configuration.
|
|
3
|
+
*
|
|
4
|
+
* Since MapLibre has no popup specification, popup configuration is
|
|
5
|
+
* stored outside the style as metadata.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { WebMapPopupInfo } from "./types.js";
|
|
10
|
+
import { type WarningCollector } from "./warnings.js";
|
|
11
|
+
export interface HonuaPopupFieldInfo {
|
|
12
|
+
fieldName: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
visible: boolean;
|
|
15
|
+
format?: {
|
|
16
|
+
places?: number;
|
|
17
|
+
digitSeparator?: boolean;
|
|
18
|
+
dateFormat?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface HonuaPopupMediaInfo {
|
|
22
|
+
type: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
caption?: string;
|
|
25
|
+
value?: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
export interface HonuaPopupConfig {
|
|
28
|
+
title?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
fieldInfos: HonuaPopupFieldInfo[];
|
|
31
|
+
mediaInfos: HonuaPopupMediaInfo[];
|
|
32
|
+
}
|
|
33
|
+
export declare function convertPopupInfo(popupInfo: WebMapPopupInfo | undefined, warn?: WarningCollector): HonuaPopupConfig | undefined;
|
|
34
|
+
//# sourceMappingURL=convert-popup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-popup.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-popup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,IAAI,CAAC,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAyB9B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri popupInfo to Honua popup configuration.
|
|
3
|
+
*
|
|
4
|
+
* Since MapLibre has no popup specification, popup configuration is
|
|
5
|
+
* stored outside the style as metadata.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { warnUnknownProperties } from "./warnings.js";
|
|
10
|
+
export function convertPopupInfo(popupInfo, warn) {
|
|
11
|
+
if (!popupInfo)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (warn) {
|
|
14
|
+
warnUnknownProperties(popupInfo, POPUP_INFO_PROPERTIES, warn);
|
|
15
|
+
const expressionInfos = popupInfo.expressionInfos;
|
|
16
|
+
if (Array.isArray(expressionInfos) && expressionInfos.length > 0) {
|
|
17
|
+
warn.warn("unsupported-arcade-expression", "popupInfo.expressionInfos is not supported; Arcade expressions require manual intervention", { count: expressionInfos.length });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
title: popupInfo.title,
|
|
22
|
+
description: popupInfo.description,
|
|
23
|
+
fieldInfos: (popupInfo.fieldInfos ?? []).map((fieldInfo, index) => convertFieldInfo(fieldInfo, warn?.child(`fieldInfos[${index}]`))),
|
|
24
|
+
mediaInfos: (popupInfo.mediaInfos ?? []).map((mediaInfo, index) => convertMediaInfo(mediaInfo, warn?.child(`mediaInfos[${index}]`))),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function convertFieldInfo(info, warn) {
|
|
28
|
+
if (warn) {
|
|
29
|
+
warnUnknownProperties(info, POPUP_FIELD_INFO_PROPERTIES, warn);
|
|
30
|
+
warnUnknownProperties(info.format, POPUP_FIELD_FORMAT_PROPERTIES, warn.child("format"));
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
fieldName: info.fieldName ?? "",
|
|
34
|
+
label: info.label,
|
|
35
|
+
visible: info.visible !== false,
|
|
36
|
+
...(info.format
|
|
37
|
+
? {
|
|
38
|
+
format: {
|
|
39
|
+
...(info.format.places != null ? { places: info.format.places } : {}),
|
|
40
|
+
...(info.format.digitSeparator != null ? { digitSeparator: info.format.digitSeparator } : {}),
|
|
41
|
+
...(info.format.dateFormat ? { dateFormat: info.format.dateFormat } : {}),
|
|
42
|
+
},
|
|
43
|
+
}
|
|
44
|
+
: {}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function convertMediaInfo(info, warn) {
|
|
48
|
+
if (warn) {
|
|
49
|
+
warnUnknownProperties(info, POPUP_MEDIA_INFO_PROPERTIES, warn);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
type: info.type ?? "unknown",
|
|
53
|
+
...(info.title ? { title: info.title } : {}),
|
|
54
|
+
...(info.caption ? { caption: info.caption } : {}),
|
|
55
|
+
...(info.value ? { value: info.value } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const POPUP_INFO_PROPERTIES = [
|
|
59
|
+
"title",
|
|
60
|
+
"description",
|
|
61
|
+
"fieldInfos",
|
|
62
|
+
"mediaInfos",
|
|
63
|
+
"showAttachments",
|
|
64
|
+
"expressionInfos",
|
|
65
|
+
];
|
|
66
|
+
const POPUP_FIELD_INFO_PROPERTIES = ["fieldName", "label", "tooltip", "visible", "isEditable", "format"];
|
|
67
|
+
const POPUP_FIELD_FORMAT_PROPERTIES = ["places", "digitSeparator", "dateFormat"];
|
|
68
|
+
const POPUP_MEDIA_INFO_PROPERTIES = ["type", "title", "caption", "value"];
|