@honua/react 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 +9 -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 +61 -0
- package/contract/index.d.ts.map +1 -0
- package/contract/index.js +51 -0
- package/contract/jobs.d.ts +149 -0
- package/contract/jobs.d.ts.map +1 -0
- package/contract/jobs.js +40 -0
- package/contract/source.d.ts +423 -0
- package/contract/source.d.ts.map +1 -0
- package/contract/source.js +3802 -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 +665 -0
- package/contract/types.d.ts.map +1 -0
- package/contract/types.js +175 -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/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 +577 -0
- package/core/client.d.ts.map +1 -0
- package/core/client.js +1664 -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 +107 -0
- package/core/errors.d.ts.map +1 -0
- package/core/errors.js +156 -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/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-features.d.ts +23 -0
- package/core/ogc-features.d.ts.map +1 -0
- package/core/ogc-features.js +114 -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.d.ts +55 -0
- package/core/stac.d.ts.map +1 -0
- package/core/stac.js +229 -0
- package/core/surfaces.d.ts +527 -0
- package/core/surfaces.d.ts.map +1 -0
- package/core/surfaces.js +1917 -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 +1355 -0
- package/core/types.d.ts.map +1 -0
- package/core/types.js +13 -0
- package/core/wfs-capabilities.d.ts +143 -0
- package/core/wfs-capabilities.d.ts.map +1 -0
- package/core/wfs-capabilities.js +478 -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 +219 -0
- package/core/wfs.d.ts.map +1 -0
- package/core/wfs.js +406 -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 +31 -0
- package/esri-compat/identity-manager.d.ts.map +1 -0
- package/esri-compat/identity-manager.js +115 -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 +35 -0
- package/esri-compat/oauth-info.d.ts.map +1 -0
- package/esri-compat/oauth-info.js +115 -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/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/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/package.json +37 -0
- package/react/context.d.ts +32 -0
- package/react/context.d.ts.map +1 -0
- package/react/context.js +19 -0
- package/react/honua-layer.d.ts +35 -0
- package/react/honua-layer.d.ts.map +1 -0
- package/react/honua-layer.js +47 -0
- package/react/honua-map.d.ts +83 -0
- package/react/honua-map.d.ts.map +1 -0
- package/react/honua-map.js +109 -0
- package/react/honua-popup.d.ts +26 -0
- package/react/honua-popup.d.ts.map +1 -0
- package/react/honua-popup.js +34 -0
- package/react/hooks.d.ts +127 -0
- package/react/hooks.d.ts.map +1 -0
- package/react/hooks.js +206 -0
- package/react/index.d.ts +42 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +34 -0
- package/react/provider.d.ts +36 -0
- package/react/provider.d.ts.map +1 -0
- package/react/provider.js +35 -0
- package/react/query-cache.d.ts +76 -0
- package/react/query-cache.d.ts.map +1 -0
- package/react/query-cache.js +188 -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 +43 -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 +264 -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 +43 -0
- package/runtime/map-package-validation.d.ts.map +1 -0
- package/runtime/map-package-validation.js +269 -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/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 +401 -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/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/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,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"];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Esri renderer JSON to MapLibre paint/layout properties.
|
|
3
|
+
*
|
|
4
|
+
* Handles simple, uniqueValue, and classBreaks renderers. Produces
|
|
5
|
+
* data-driven expressions (match, step) for categorized/graduated renderers.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import type { WebMapRenderer } from "./types.js";
|
|
10
|
+
import type { WarningCollector } from "./warnings.js";
|
|
11
|
+
export interface RendererConversionResult {
|
|
12
|
+
layerType: string;
|
|
13
|
+
paint: Record<string, unknown>;
|
|
14
|
+
layout: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
export declare function convertRenderer(renderer: WebMapRenderer | undefined, warn: WarningCollector): RendererConversionResult | undefined;
|
|
17
|
+
//# sourceMappingURL=convert-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-renderer.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAA6B,cAAc,EAA2C,MAAM,YAAY,CAAC;AACrH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,IAAI,EAAE,gBAAgB,GACrB,wBAAwB,GAAG,SAAS,CActC"}
|