@honua/react 0.1.0-beta.0 → 0.1.2-beta.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/contract/discovery.d.ts +231 -0
- package/contract/discovery.d.ts.map +1 -0
- package/contract/discovery.js +554 -0
- package/contract/edit-sketch.d.ts +8 -0
- package/contract/edit-sketch.d.ts.map +1 -1
- package/contract/edit-sketch.js +15 -0
- package/contract/edit-snapping.d.ts +160 -0
- package/contract/edit-snapping.d.ts.map +1 -0
- package/contract/edit-snapping.js +675 -0
- package/contract/generated/projjson-v0.7-crs-validator.d.ts +35 -0
- package/contract/generated/projjson-v0.7-crs-validator.d.ts.map +1 -0
- package/contract/generated/projjson-v0.7-crs-validator.js +3941 -0
- package/contract/index.d.ts +11 -2
- package/contract/index.d.ts.map +1 -1
- package/contract/index.js +4 -1
- package/contract/pmtiles.d.ts +31 -0
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +60 -20
- package/contract/protocol-module.d.ts +70 -0
- package/contract/protocol-module.d.ts.map +1 -0
- package/contract/protocol-module.js +1 -0
- package/contract/schema-envelope.d.ts +26 -0
- package/contract/schema-envelope.d.ts.map +1 -0
- package/contract/schema-envelope.js +25 -0
- package/contract/schema.d.ts +582 -0
- package/contract/schema.d.ts.map +1 -0
- package/contract/schema.js +2483 -0
- package/contract/source-capability-support.d.ts +6 -0
- package/contract/source-capability-support.d.ts.map +1 -0
- package/contract/source-capability-support.js +154 -0
- package/contract/source.d.ts +35 -17
- package/contract/source.d.ts.map +1 -1
- package/contract/source.js +267 -71
- package/contract/types.d.ts +140 -4
- package/contract/types.d.ts.map +1 -1
- package/contract/types.js +6 -14
- package/core/bounded-json.d.ts +4 -0
- package/core/bounded-json.d.ts.map +1 -0
- package/core/bounded-json.js +38 -0
- package/core/cache-state.d.ts +9 -0
- package/core/cache-state.d.ts.map +1 -1
- package/core/cache-state.js +10 -0
- package/core/capabilities-xml.d.ts +33 -0
- package/core/capabilities-xml.d.ts.map +1 -0
- package/core/capabilities-xml.js +331 -0
- package/core/client.d.ts +4 -1
- package/core/client.d.ts.map +1 -1
- package/core/client.js +115 -29
- package/core/error-classifications.d.ts +153 -0
- package/core/error-classifications.d.ts.map +1 -0
- package/core/error-classifications.js +140 -0
- package/core/error-code-registry.d.ts +158 -0
- package/core/error-code-registry.d.ts.map +1 -0
- package/core/error-code-registry.js +143 -0
- package/core/error-envelope.d.ts +68 -0
- package/core/error-envelope.d.ts.map +1 -0
- package/core/error-envelope.js +357 -0
- package/core/errors.d.ts +45 -29
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +97 -50
- package/core/geoparquet-sql.d.ts +30 -2
- package/core/geoparquet-sql.d.ts.map +1 -1
- package/core/geoparquet-sql.js +38 -3
- package/core/odata-key-path.d.ts +12 -0
- package/core/odata-key-path.d.ts.map +1 -0
- package/core/odata-key-path.js +28 -0
- package/core/odata-write-codec.d.ts +66 -0
- package/core/odata-write-codec.d.ts.map +1 -0
- package/core/odata-write-codec.js +1083 -0
- package/core/odata.d.ts +59 -7
- package/core/odata.d.ts.map +1 -1
- package/core/odata.js +431 -99
- package/core/ogc-features.d.ts.map +1 -1
- package/core/ogc-features.js +3 -0
- package/core/ogc-maps.d.ts +7 -0
- package/core/ogc-maps.d.ts.map +1 -1
- package/core/ogc-maps.js +46 -7
- package/core/ogc-processes.d.ts +2 -1
- package/core/ogc-processes.d.ts.map +1 -1
- package/core/ogc-processes.js +33 -5
- package/core/ogc-records.d.ts +9 -0
- package/core/ogc-records.d.ts.map +1 -1
- package/core/ogc-records.js +78 -29
- package/core/ogc-tiles.d.ts +10 -1
- package/core/ogc-tiles.d.ts.map +1 -1
- package/core/ogc-tiles.js +56 -17
- package/core/path-utils.d.ts +9 -0
- package/core/path-utils.d.ts.map +1 -1
- package/core/path-utils.js +19 -0
- package/core/protocol-transport.d.ts +1 -0
- package/core/protocol-transport.d.ts.map +1 -1
- package/core/request-pipeline.d.ts.map +1 -1
- package/core/request-pipeline.js +1 -1
- package/core/spatial-filter.d.ts +8 -4
- package/core/spatial-filter.d.ts.map +1 -1
- package/core/spatial-filter.js +206 -16
- package/core/stac-static.d.ts +6 -2
- package/core/stac-static.d.ts.map +1 -1
- package/core/stac-static.js +260 -69
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +69 -5
- package/core/types.d.ts +125 -7
- package/core/types.d.ts.map +1 -1
- package/core/wfs-capabilities.d.ts +2 -0
- package/core/wfs-capabilities.d.ts.map +1 -1
- package/core/wfs-capabilities.js +8 -1
- package/core/wfs.d.ts.map +1 -1
- package/core/wfs.js +10 -0
- package/core/wms-capabilities.d.ts +56 -84
- package/core/wms-capabilities.d.ts.map +1 -1
- package/core/wms-capabilities.js +212 -509
- package/core/wmts-capabilities.d.ts +62 -62
- package/core/wmts-capabilities.d.ts.map +1 -1
- package/core/wmts-capabilities.js +224 -371
- package/esri-compat/editor.d.ts +8 -0
- package/esri-compat/editor.d.ts.map +1 -1
- package/esri-compat/editor.js +13 -0
- package/esri-compat/feature-layer.d.ts +2 -0
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +1 -0
- package/esri-compat/layer-list.d.ts +11 -0
- package/esri-compat/layer-list.d.ts.map +1 -1
- package/esri-compat/layer-list.js +49 -0
- package/esri-compat/legend.d.ts +10 -0
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +27 -0
- package/esri-compat/portal.d.ts +197 -0
- package/esri-compat/portal.d.ts.map +1 -0
- package/esri-compat/portal.js +251 -0
- package/esri-compat/renderer-objects.d.ts +40 -0
- package/esri-compat/renderer-objects.d.ts.map +1 -0
- package/esri-compat/renderer-objects.js +62 -0
- package/esri-compat/sketch.d.ts +43 -0
- package/esri-compat/sketch.d.ts.map +1 -1
- package/esri-compat/sketch.js +46 -0
- package/esri-compat/snapping.d.ts +43 -0
- package/esri-compat/snapping.d.ts.map +1 -0
- package/esri-compat/snapping.js +45 -0
- package/esri-compat/url.d.ts.map +1 -1
- package/esri-compat/url.js +1 -1
- package/esri-compat/widget-host.d.ts +84 -0
- package/esri-compat/widget-host.d.ts.map +1 -0
- package/esri-compat/widget-host.js +159 -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/generated-app/errors.d.ts +18 -2
- package/generated-app/errors.d.ts.map +1 -1
- package/generated-app/errors.js +44 -11
- package/map/automatic-mount-integration.d.ts +134 -0
- package/map/automatic-mount-integration.d.ts.map +1 -0
- package/map/automatic-mount-integration.js +305 -0
- package/map/automatic-source-strategy.d.ts +125 -0
- package/map/automatic-source-strategy.d.ts.map +1 -0
- package/map/automatic-source-strategy.js +494 -0
- package/map/data-to-map-bridge.d.ts +293 -0
- package/map/data-to-map-bridge.d.ts.map +1 -0
- package/map/data-to-map-bridge.js +817 -0
- package/map/geojson-projection.d.ts +33 -0
- package/map/geojson-projection.d.ts.map +1 -0
- package/map/geojson-projection.js +118 -0
- package/map/index.d.ts +14 -0
- package/map/index.d.ts.map +1 -1
- package/map/index.js +8 -0
- package/map/raster-source-spec.d.ts +30 -0
- package/map/raster-source-spec.d.ts.map +1 -0
- package/map/raster-source-spec.js +190 -0
- package/map/raster-source-strategy.d.ts +65 -0
- package/map/raster-source-strategy.d.ts.map +1 -0
- package/map/raster-source-strategy.js +232 -0
- package/map/source-to-maplibre.d.ts +91 -0
- package/map/source-to-maplibre.d.ts.map +1 -0
- package/map/source-to-maplibre.js +454 -0
- package/map/temporal-playback.d.ts +139 -0
- package/map/temporal-playback.d.ts.map +1 -0
- package/map/temporal-playback.js +247 -0
- package/package.json +14 -1
- package/query-planner/canonical.d.ts +7 -0
- package/query-planner/canonical.d.ts.map +1 -0
- package/query-planner/canonical.js +145 -0
- package/query-planner/cql2-json.d.ts +17 -0
- package/query-planner/cql2-json.d.ts.map +1 -0
- package/query-planner/cql2-json.js +646 -0
- package/query-planner/diagnostics.d.ts +35 -0
- package/query-planner/diagnostics.d.ts.map +1 -0
- package/query-planner/diagnostics.js +373 -0
- package/query-planner/duckdb.d.ts +79 -0
- package/query-planner/duckdb.d.ts.map +1 -0
- package/query-planner/duckdb.js +758 -0
- package/query-planner/execution-context.d.ts +5 -0
- package/query-planner/execution-context.d.ts.map +1 -0
- package/query-planner/execution-context.js +50 -0
- package/query-planner/executor.d.ts +5 -0
- package/query-planner/executor.d.ts.map +1 -0
- package/query-planner/executor.js +223 -0
- package/query-planner/geoservices.d.ts +91 -0
- package/query-planner/geoservices.d.ts.map +1 -0
- package/query-planner/geoservices.js +667 -0
- package/query-planner/grpc.d.ts +100 -0
- package/query-planner/grpc.d.ts.map +1 -0
- package/query-planner/grpc.js +736 -0
- package/query-planner/index.d.ts +44 -0
- package/query-planner/index.d.ts.map +1 -0
- package/query-planner/index.js +30 -0
- package/query-planner/ir.d.ts +20 -0
- package/query-planner/ir.d.ts.map +1 -0
- package/query-planner/ir.js +417 -0
- package/query-planner/local-aggregate.d.ts +5 -0
- package/query-planner/local-aggregate.d.ts.map +1 -0
- package/query-planner/local-aggregate.js +126 -0
- package/query-planner/odata.d.ts +48 -0
- package/query-planner/odata.d.ts.map +1 -0
- package/query-planner/odata.js +662 -0
- package/query-planner/ogc-compiler.d.ts +55 -0
- package/query-planner/ogc-compiler.d.ts.map +1 -0
- package/query-planner/ogc-compiler.js +480 -0
- package/query-planner/ogc-features.d.ts +53 -0
- package/query-planner/ogc-features.d.ts.map +1 -0
- package/query-planner/ogc-features.js +617 -0
- package/query-planner/planner.d.ts +17 -0
- package/query-planner/planner.d.ts.map +1 -0
- package/query-planner/planner.js +818 -0
- package/query-planner/resource.d.ts +94 -0
- package/query-planner/resource.d.ts.map +1 -0
- package/query-planner/resource.js +526 -0
- package/query-planner/semantic-canonical.d.ts +15 -0
- package/query-planner/semantic-canonical.d.ts.map +1 -0
- package/query-planner/semantic-canonical.js +62 -0
- package/query-planner/semantic-compat.d.ts +10 -0
- package/query-planner/semantic-compat.d.ts.map +1 -0
- package/query-planner/semantic-compat.js +35 -0
- package/query-planner/semantic-compiler.d.ts +64 -0
- package/query-planner/semantic-compiler.d.ts.map +1 -0
- package/query-planner/semantic-compiler.js +81 -0
- package/query-planner/semantic-literals.d.ts +30 -0
- package/query-planner/semantic-literals.d.ts.map +1 -0
- package/query-planner/semantic-literals.js +133 -0
- package/query-planner/semantic-types.d.ts +265 -0
- package/query-planner/semantic-types.d.ts.map +1 -0
- package/query-planner/semantic-types.js +1 -0
- package/query-planner/semantic.d.ts +54 -0
- package/query-planner/semantic.d.ts.map +1 -0
- package/query-planner/semantic.js +1421 -0
- package/query-planner/types.d.ts +560 -0
- package/query-planner/types.d.ts.map +1 -0
- package/query-planner/types.js +49 -0
- package/query-planner/wfs-semantic.d.ts +58 -0
- package/query-planner/wfs-semantic.d.ts.map +1 -0
- package/query-planner/wfs-semantic.js +547 -0
- package/query-planner/wfs.d.ts +6 -0
- package/query-planner/wfs.d.ts.map +1 -0
- package/query-planner/wfs.js +71 -0
- package/react/external-map.d.ts +67 -0
- package/react/external-map.d.ts.map +1 -0
- package/react/external-map.js +63 -0
- package/react/honua-map.d.ts.map +1 -1
- package/react/honua-map.js +3 -2
- package/react/honua-source-layer.d.ts +110 -0
- package/react/honua-source-layer.d.ts.map +1 -0
- package/react/honua-source-layer.js +101 -0
- package/react/hooks.d.ts +28 -0
- package/react/hooks.d.ts.map +1 -1
- package/react/hooks.js +26 -4
- package/react/index.d.ts +8 -0
- package/react/index.d.ts.map +1 -1
- package/react/index.js +5 -0
- package/react/query-cache.d.ts +26 -4
- package/react/query-cache.d.ts.map +1 -1
- package/react/query-cache.js +51 -8
- package/react/selection.d.ts +177 -0
- package/react/selection.d.ts.map +1 -0
- package/react/selection.js +0 -0
- package/react/use-mounted-source.d.ts +69 -0
- package/react/use-mounted-source.d.ts.map +1 -0
- package/react/use-mounted-source.js +346 -0
- package/runtime/edit-snapping.d.ts +107 -0
- package/runtime/edit-snapping.d.ts.map +1 -0
- package/runtime/edit-snapping.js +190 -0
- package/runtime/errors.d.ts +3 -2
- package/runtime/errors.d.ts.map +1 -1
- package/runtime/errors.js +19 -2
- package/runtime/index.d.ts +6 -0
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +3 -0
- package/runtime/maplibre-renderer.d.ts +41 -0
- package/runtime/maplibre-renderer.d.ts.map +1 -0
- package/runtime/maplibre-renderer.js +322 -0
- package/runtime/query-tiles.d.ts +2 -1
- package/runtime/query-tiles.d.ts.map +1 -1
- package/runtime/query-tiles.js +6 -2
- package/runtime/source-bridge.d.ts +4 -4
- package/runtime/source-bridge.d.ts.map +1 -1
- package/runtime/source-bridge.js +9 -56
- package/runtime/style-interactions.d.ts +3 -2
- package/runtime/style-interactions.d.ts.map +1 -1
- package/runtime/style-interactions.js +11 -3
- package/runtime/terra-draw-sketch.d.ts +275 -0
- package/runtime/terra-draw-sketch.d.ts.map +1 -0
- package/runtime/terra-draw-sketch.js +404 -0
- package/source-capability-registry.d.ts +1 -0
- package/source-capability-registry.js +1 -0
- package/source-capability-types.d.ts +186 -0
- package/source-capability-types.js +7 -0
- package/style/index.d.ts +2 -0
- package/style/index.d.ts.map +1 -1
- package/style/index.js +2 -0
- package/style/renderers.d.ts +326 -0
- package/style/renderers.d.ts.map +1 -0
- package/style/renderers.js +517 -0
- package/webmap/convert-renderer.d.ts +24 -3
- package/webmap/convert-renderer.d.ts.map +1 -1
- package/webmap/convert-renderer.js +93 -112
- package/webmap/index.d.ts +1 -1
- package/webmap/index.d.ts.map +1 -1
- package/webmap/index.js +1 -1
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone data-to-map bridge: mount any contract `Source` as a live,
|
|
3
|
+
* styled MapLibre layer set — no MapPackage, no Honua server, no
|
|
4
|
+
* app-platform import. This is the `connection.mount(target)` slice of the
|
|
5
|
+
* kernel ADR (`docs/decisions/north-star-sdk-application-kernel.md`) scoped
|
|
6
|
+
* to a caller-owned MapLibre host.
|
|
7
|
+
*
|
|
8
|
+
* The module is peer-injected and safe to import in Node/SSR/worker code:
|
|
9
|
+
* it never imports `maplibre-gl`. The host passes a duck-typed map (any
|
|
10
|
+
* MapLibre GL `Map` instance satisfies {@link DataToMapLibreMap}).
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
import type { QueryTileSourceDescriptor } from "../contract/tiles.js";
|
|
15
|
+
import type { Query, Source } from "../contract/types.js";
|
|
16
|
+
import { type HonuaErrorOptions, HonuaSdkError } from "../core/error-envelope.js";
|
|
17
|
+
import type { PopupFactory, PopupFeature } from "../runtime/popups.js";
|
|
18
|
+
import type { Renderer } from "../style/renderers.js";
|
|
19
|
+
import { type MapLibreGeometryKind } from "./geojson-projection.js";
|
|
20
|
+
import type { SourceToMapLibreMap } from "./source-to-maplibre.js";
|
|
21
|
+
/**
|
|
22
|
+
* Materialization strategy chosen by the bridge.
|
|
23
|
+
*
|
|
24
|
+
* - `"geojson"` — drain the source through `queryAll` into one bounded
|
|
25
|
+
* GeoJSON source; filter changes diff-update through `setData`.
|
|
26
|
+
* - `"query-tiles"` — reuse the existing dynamic query-tile path: the map
|
|
27
|
+
* pulls viewport-bounded vector tiles and the source's own tile cache
|
|
28
|
+
* applies; filter changes rewrite the tile URL template where possible.
|
|
29
|
+
*
|
|
30
|
+
* @experimental
|
|
31
|
+
*/
|
|
32
|
+
export type DataToMapStrategy = "geojson" | "query-tiles";
|
|
33
|
+
/** Machine-readable reason and event codes recorded on {@link MountedSourceDiagnostics}. @experimental */
|
|
34
|
+
export type DataToMapDiagnosticCode = "strategy-override" | "query-capability" | "tiles-capability" | "tile-endpoint-missing" | "count-probe-unavailable" | "count-probe-failed" | "result-size-within-limit" | "result-size-exceeds-limit" | "result-size-unknown" | "overflow-truncated" | "geometry-unsupported" | "source-degraded" | "tile-support" | "filter-applied" | "filter-recreated-source" | "refresh-applied" | "renderer-applied" | "renderer-recreated-layers" | "renderer-recreated-source";
|
|
35
|
+
/** One strategy reason or lifecycle event. @experimental */
|
|
36
|
+
export interface DataToMapDiagnostic {
|
|
37
|
+
readonly code: DataToMapDiagnosticCode;
|
|
38
|
+
readonly severity: "info" | "warning";
|
|
39
|
+
readonly message: string;
|
|
40
|
+
readonly detail?: Readonly<Record<string, unknown>>;
|
|
41
|
+
}
|
|
42
|
+
/** Pagination-truncation report for the bounded GeoJSON path. @experimental */
|
|
43
|
+
export interface DataToMapOverflow {
|
|
44
|
+
/** True when more matching rows exist than were materialized. */
|
|
45
|
+
readonly truncated: boolean;
|
|
46
|
+
/** Rows actually rendered on the map. */
|
|
47
|
+
readonly renderedFeatureCount: number;
|
|
48
|
+
/** The bound that produced the truncation ({@link MountSourceOptions.maxGeoJsonFeatures}). */
|
|
49
|
+
readonly limit: number;
|
|
50
|
+
/** Matching row count when the source reported one. */
|
|
51
|
+
readonly totalCount?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Explain/diagnostics surface returned on the handle: the chosen strategy,
|
|
55
|
+
* why it was chosen, and the current materialization state.
|
|
56
|
+
*
|
|
57
|
+
* @experimental
|
|
58
|
+
*/
|
|
59
|
+
export interface MountedSourceDiagnostics {
|
|
60
|
+
readonly strategy: DataToMapStrategy;
|
|
61
|
+
/** Why the strategy was selected (capabilities, probes, overrides). */
|
|
62
|
+
readonly reasons: readonly DataToMapDiagnostic[];
|
|
63
|
+
/** Lifecycle events appended by `setFilter` / `refresh`. */
|
|
64
|
+
readonly updates: readonly DataToMapDiagnostic[];
|
|
65
|
+
/** Rendered feature count (GeoJSON strategy only). */
|
|
66
|
+
readonly featureCount?: number;
|
|
67
|
+
/** Matching row count when known (GeoJSON strategy only). */
|
|
68
|
+
readonly totalCount?: number;
|
|
69
|
+
/** Set when pagination limits truncated the materialized data. */
|
|
70
|
+
readonly overflow?: DataToMapOverflow;
|
|
71
|
+
/** Geometry kinds present in the materialized data (GeoJSON strategy only). */
|
|
72
|
+
readonly geometryKinds?: readonly MapLibreGeometryKind[];
|
|
73
|
+
}
|
|
74
|
+
/** Strategy selection result from {@link explainDataToMapStrategy}. @experimental */
|
|
75
|
+
export interface DataToMapStrategyExplanation {
|
|
76
|
+
readonly strategy: DataToMapStrategy;
|
|
77
|
+
readonly reasons: readonly DataToMapDiagnostic[];
|
|
78
|
+
/** Matching row count observed by the size probe, when one ran. */
|
|
79
|
+
readonly probedCount?: number;
|
|
80
|
+
}
|
|
81
|
+
/** Error codes raised by the bridge. @experimental */
|
|
82
|
+
export type DataToMapBridgeErrorCode = "invalid-option" | "disposed" | "source-conflict" | "layer-conflict" | "map-mutation-failed" | "interaction-unsupported" | "filter-unsupported";
|
|
83
|
+
/** A stable, machine-readable bridge failure. @experimental */
|
|
84
|
+
export declare class HonuaDataToMapBridgeError extends HonuaSdkError {
|
|
85
|
+
readonly code: DataToMapBridgeErrorCode;
|
|
86
|
+
readonly detail?: Readonly<Record<string, unknown>> | undefined;
|
|
87
|
+
constructor(code: DataToMapBridgeErrorCode, message: string, detail?: Readonly<Record<string, unknown>> | undefined, options?: HonuaErrorOptions);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Minimal injected MapLibre map surface. Source/layer mutation is required;
|
|
91
|
+
* event and feature-state methods are needed only when `popup` / `hover`
|
|
92
|
+
* options are requested, and `fitBounds` only when `fitBounds` is requested.
|
|
93
|
+
* A real `maplibre-gl` `Map` satisfies the whole interface.
|
|
94
|
+
*
|
|
95
|
+
* @experimental
|
|
96
|
+
*/
|
|
97
|
+
export interface DataToMapLibreMap extends SourceToMapLibreMap {
|
|
98
|
+
on?(event: string, layerOrHandler: string | ((...args: unknown[]) => void), handler?: (...args: unknown[]) => void): void;
|
|
99
|
+
off?(event: string, layerOrHandler: string | ((...args: unknown[]) => void), handler?: (...args: unknown[]) => void): void;
|
|
100
|
+
setFeatureState?(target: {
|
|
101
|
+
source: string;
|
|
102
|
+
id: string | number;
|
|
103
|
+
sourceLayer?: string;
|
|
104
|
+
}, state: Record<string, unknown>): void;
|
|
105
|
+
setPaintProperty?(layerId: string, name: string, value: unknown): void;
|
|
106
|
+
setLayoutProperty?(layerId: string, name: string, value: unknown): void;
|
|
107
|
+
setFilter?(layerId: string, filter: unknown): void;
|
|
108
|
+
getFeatureState?(target: {
|
|
109
|
+
source: string;
|
|
110
|
+
id: string | number;
|
|
111
|
+
sourceLayer?: string;
|
|
112
|
+
}): Record<string, unknown>;
|
|
113
|
+
removeFeatureState?(target: {
|
|
114
|
+
source: string;
|
|
115
|
+
id: string | number;
|
|
116
|
+
sourceLayer?: string;
|
|
117
|
+
}, key?: string): void;
|
|
118
|
+
fitBounds?(bounds: [number, number, number, number], options?: Record<string, unknown>): void;
|
|
119
|
+
}
|
|
120
|
+
/** Click-popup configuration. @experimental */
|
|
121
|
+
export interface MountSourcePopupOptions {
|
|
122
|
+
/** Creates one popup handle per click — usually `() => new maplibregl.Popup()`. */
|
|
123
|
+
readonly factory: PopupFactory;
|
|
124
|
+
/** Restrict the default renderer to these properties, in order. */
|
|
125
|
+
readonly fields?: readonly string[];
|
|
126
|
+
/** Custom formatter; return `undefined` to suppress the popup for a click. */
|
|
127
|
+
readonly render?: (context: MountSourcePopupContext) => Node | string | undefined;
|
|
128
|
+
/** Title rendered by the default formatter. */
|
|
129
|
+
readonly title?: string;
|
|
130
|
+
}
|
|
131
|
+
/** Click context passed to a custom popup formatter. @experimental */
|
|
132
|
+
export interface MountSourcePopupContext {
|
|
133
|
+
readonly features: readonly PopupFeature[];
|
|
134
|
+
readonly lngLat: readonly [number, number];
|
|
135
|
+
}
|
|
136
|
+
/** Options for {@link mountSource}. @experimental */
|
|
137
|
+
export interface MountSourceOptions<T = Record<string, unknown>> {
|
|
138
|
+
/**
|
|
139
|
+
* Force a strategy instead of capability + result-size selection.
|
|
140
|
+
* `"query-tiles"` requires {@link MountSourceOptions.queryTiles}.
|
|
141
|
+
*/
|
|
142
|
+
readonly strategy?: DataToMapStrategy;
|
|
143
|
+
/** Initial filter applied to the mounted data. Replaced by `setFilter`. */
|
|
144
|
+
readonly query?: Readonly<Omit<Query<T>, "signal">>;
|
|
145
|
+
/**
|
|
146
|
+
* Bound (and result-size heuristic threshold) for GeoJSON materialization.
|
|
147
|
+
* Truncation is reported through {@link MountedSourceDiagnostics.overflow}.
|
|
148
|
+
* @default 10000
|
|
149
|
+
*/
|
|
150
|
+
readonly maxGeoJsonFeatures?: number;
|
|
151
|
+
/**
|
|
152
|
+
* Dynamic query-tile source descriptor enabling the `"query-tiles"`
|
|
153
|
+
* strategy (see `@honua/sdk-js/runtime` query-tile helpers). Without it the
|
|
154
|
+
* bridge can only materialize GeoJSON, even when the source declares the
|
|
155
|
+
* `tiles` capability.
|
|
156
|
+
*/
|
|
157
|
+
readonly queryTiles?: QueryTileSourceDescriptor<T>;
|
|
158
|
+
/** Vector `source-layer` for the tile strategy. Defaults to the tile descriptor's `sourceId`. */
|
|
159
|
+
readonly sourceLayer?: string;
|
|
160
|
+
/** MapLibre source id. @default `honua-<descriptor id>` */
|
|
161
|
+
readonly sourceId?: string;
|
|
162
|
+
/** Base layer id; geometry suffixes (`-point`, `-line`, …) are appended. Defaults to the source id. */
|
|
163
|
+
readonly layerId?: string;
|
|
164
|
+
/** Existing layer id to insert the bridge layers before. */
|
|
165
|
+
readonly beforeId?: string;
|
|
166
|
+
/**
|
|
167
|
+
* Restrict default styling to one geometry kind, or `"auto"` (default) to
|
|
168
|
+
* install the stable point/line/polygon(+outline) matrix so filter changes
|
|
169
|
+
* can move between geometry kinds without structural layer churn.
|
|
170
|
+
*/
|
|
171
|
+
readonly geometry?: MapLibreGeometryKind | "auto";
|
|
172
|
+
/**
|
|
173
|
+
* Full layer override: the bridge adds these layers verbatim (injecting
|
|
174
|
+
* `source`, and `source-layer` for the tile strategy, when absent) instead
|
|
175
|
+
* of the geometry-appropriate defaults. Each entry must carry a unique `id`.
|
|
176
|
+
*/
|
|
177
|
+
readonly layers?: readonly Readonly<Record<string, unknown>>[];
|
|
178
|
+
/**
|
|
179
|
+
* First-class renderer object from `@honua/sdk-js/style`
|
|
180
|
+
* (`classBreaksRenderer`, `uniqueValueRenderer`, `heatmapRenderer`,
|
|
181
|
+
* `clusterRenderer`). Layers and paint derive from the renderer instead of
|
|
182
|
+
* the geometry defaults; `paint`/`layout` overrides still win per property.
|
|
183
|
+
* A cluster renderer additionally configures GeoJSON-source clustering and
|
|
184
|
+
* requires the `"geojson"` strategy. Mutually exclusive with `layers`.
|
|
185
|
+
* Swap at runtime with {@link MountedSource.setRenderer}.
|
|
186
|
+
*/
|
|
187
|
+
readonly renderer?: Renderer;
|
|
188
|
+
/** Per-geometry paint overrides merged over the defaults. */
|
|
189
|
+
readonly paint?: Partial<Readonly<Record<MapLibreGeometryKind | "polygonOutline", Readonly<Record<string, unknown>>>>>;
|
|
190
|
+
/** Per-geometry layout overrides. */
|
|
191
|
+
readonly layout?: Partial<Readonly<Record<MapLibreGeometryKind | "polygonOutline", Readonly<Record<string, unknown>>>>>;
|
|
192
|
+
/** Attribution override; defaults to the source descriptor's attribution. */
|
|
193
|
+
readonly attribution?: string;
|
|
194
|
+
/** Fit the map to the mounted data (GeoJSON bbox or tile descriptor bounds). */
|
|
195
|
+
readonly fitBounds?: boolean | {
|
|
196
|
+
readonly padding?: number;
|
|
197
|
+
};
|
|
198
|
+
/** Open a popup on layer click. Requires `map.on`/`map.off`. */
|
|
199
|
+
readonly popup?: MountSourcePopupOptions;
|
|
200
|
+
/**
|
|
201
|
+
* Toggle a boolean feature-state key (default `"hover"`) while the pointer
|
|
202
|
+
* is over a feature. Requires event and feature-state map methods, and
|
|
203
|
+
* feature ids (`schema.primaryKey` or GeoJSON feature ids).
|
|
204
|
+
*/
|
|
205
|
+
readonly hover?: boolean | {
|
|
206
|
+
readonly stateKey?: string;
|
|
207
|
+
};
|
|
208
|
+
/** Cancels mounting and any in-flight refresh work. */
|
|
209
|
+
readonly signal?: AbortSignal;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Live handle returned by {@link mountSource}. Owns every MapLibre resource
|
|
213
|
+
* the bridge created (source, layers, event listeners); `dispose()` is
|
|
214
|
+
* idempotent and removes all of them.
|
|
215
|
+
*
|
|
216
|
+
* @experimental
|
|
217
|
+
*/
|
|
218
|
+
export interface MountedSource<T = Record<string, unknown>> extends AsyncDisposable {
|
|
219
|
+
readonly strategy: DataToMapStrategy;
|
|
220
|
+
readonly sourceId: string;
|
|
221
|
+
readonly layerIds: readonly string[];
|
|
222
|
+
/**
|
|
223
|
+
* Resolved vector `source-layer` used by the mounted layers — the explicit
|
|
224
|
+
* option, or the default derived from the query-tile descriptor. Always
|
|
225
|
+
* `undefined` for the GeoJSON strategy. Feature-state operations against a
|
|
226
|
+
* vector tile source must target this same value.
|
|
227
|
+
*/
|
|
228
|
+
readonly sourceLayer?: string;
|
|
229
|
+
readonly state: "ready" | "disposed";
|
|
230
|
+
readonly diagnostics: MountedSourceDiagnostics;
|
|
231
|
+
/**
|
|
232
|
+
* Replace the mounted filter and diff-update in place: `setData` for the
|
|
233
|
+
* GeoJSON strategy, tile URL rewrite (`setTiles`) for the tile strategy.
|
|
234
|
+
* Passing `undefined` clears the filter.
|
|
235
|
+
*/
|
|
236
|
+
setFilter(query: Readonly<Omit<Query<T>, "signal">> | undefined): Promise<MountedSourceDiagnostics>;
|
|
237
|
+
/**
|
|
238
|
+
* Swap the mounted renderer and diff-update in place where MapLibre
|
|
239
|
+
* allows: when the layer structure is unchanged, paint/layout/filter are
|
|
240
|
+
* updated per property (`setPaintProperty`/`setLayoutProperty`/
|
|
241
|
+
* `setFilter`) without layer teardown; a structural change (e.g. to or
|
|
242
|
+
* from a cluster/heatmap renderer) recreates only the owned layers, and
|
|
243
|
+
* changed GeoJSON cluster options recreate the source. Passing
|
|
244
|
+
* `undefined` restores the geometry-default styling.
|
|
245
|
+
*/
|
|
246
|
+
setRenderer(renderer: Renderer | undefined): Promise<MountedSourceDiagnostics>;
|
|
247
|
+
/** Re-execute the current filter and diff-update the mounted data. */
|
|
248
|
+
refresh(): Promise<MountedSourceDiagnostics>;
|
|
249
|
+
/** Remove every owned source, layer, and listener. Safe to call twice. */
|
|
250
|
+
dispose(): void;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Explain which materialization strategy {@link mountSource} would pick for
|
|
254
|
+
* a source, without touching a map. Runs the same capability checks and (when
|
|
255
|
+
* both strategies are viable) the same result-size probe.
|
|
256
|
+
*
|
|
257
|
+
* @experimental
|
|
258
|
+
*/
|
|
259
|
+
export declare function explainDataToMapStrategy<T>(source: Source<T>, options?: MountSourceOptions<T>): Promise<DataToMapStrategyExplanation>;
|
|
260
|
+
/**
|
|
261
|
+
* Mount a contract `Source` onto a caller-owned MapLibre map as a styled,
|
|
262
|
+
* interactive layer set and return a disposable handle that owns everything
|
|
263
|
+
* it created.
|
|
264
|
+
*
|
|
265
|
+
* The bridge selects GeoJSON materialization or the dynamic query-tile path
|
|
266
|
+
* from declared capabilities and a result-size heuristic (override with
|
|
267
|
+
* `options.strategy`), applies geometry-appropriate default styling, and can
|
|
268
|
+
* wire click popups and hover feature-state.
|
|
269
|
+
*
|
|
270
|
+
* @example
|
|
271
|
+
* ```ts
|
|
272
|
+
* import maplibregl from "maplibre-gl";
|
|
273
|
+
* import { connect } from "@honua/sdk-js";
|
|
274
|
+
* import { mountSource } from "@honua/sdk-js/map";
|
|
275
|
+
*
|
|
276
|
+
* const connection = await connect({
|
|
277
|
+
* endpoint: FEATURE_LAYER_URL,
|
|
278
|
+
* protocol: "auto",
|
|
279
|
+
* authorizationScopeFingerprint: "public",
|
|
280
|
+
* });
|
|
281
|
+
* const mounted = await mountSource(map, connection.source(), {
|
|
282
|
+
* popup: { factory: () => new maplibregl.Popup() },
|
|
283
|
+
* hover: true,
|
|
284
|
+
* fitBounds: true,
|
|
285
|
+
* });
|
|
286
|
+
* console.log(mounted.diagnostics.strategy, mounted.diagnostics.reasons);
|
|
287
|
+
* // Later: mounted.dispose(); // or `await using mounted = …`
|
|
288
|
+
* ```
|
|
289
|
+
*
|
|
290
|
+
* @experimental
|
|
291
|
+
*/
|
|
292
|
+
export declare function mountSource<T = Record<string, unknown>>(map: DataToMapLibreMap, source: Source<T>, options?: MountSourceOptions<T>): Promise<MountedSource<T>>;
|
|
293
|
+
//# sourceMappingURL=data-to-map-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-to-map-bridge.d.ts","sourceRoot":"","sources":["../../../src/map/data-to-map-bridge.ts"],"names":[],"mappings":"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"}
|