@honua/react 0.0.20-alpha.0 → 0.1.1-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 +12 -1
- package/contract/index.d.ts.map +1 -1
- package/contract/index.js +4 -0
- package/contract/pmtiles.d.ts +193 -0
- package/contract/pmtiles.d.ts.map +1 -0
- package/contract/pmtiles.js +195 -0
- 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 +57 -15
- package/contract/source.d.ts.map +1 -1
- package/contract/source.js +368 -65
- package/contract/types.d.ts +171 -6
- package/contract/types.d.ts.map +1 -1
- package/contract/types.js +14 -14
- 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/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 +35 -2
- package/core/client.d.ts.map +1 -1
- package/core/client.js +167 -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 +73 -25
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +113 -46
- package/core/geoparquet-sql.d.ts +190 -0
- package/core/geoparquet-sql.d.ts.map +1 -0
- package/core/geoparquet-sql.js +368 -0
- 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-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.map +1 -1
- package/core/ogc-features.js +35 -17
- 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 +55 -0
- package/core/stac-static.d.ts.map +1 -0
- package/core/stac-static.js +386 -0
- package/core/stac.d.ts +12 -0
- package/core/stac.d.ts.map +1 -1
- package/core/stac.js +45 -15
- package/core/surfaces.d.ts +13 -0
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +127 -16
- package/core/types.d.ts +174 -7
- package/core/types.d.ts.map +1 -1
- package/core/wfs-capabilities.d.ts +12 -0
- package/core/wfs-capabilities.d.ts.map +1 -1
- package/core/wfs-capabilities.js +22 -3
- package/core/wfs.d.ts +13 -0
- package/core/wfs.d.ts.map +1 -1
- package/core/wfs.js +35 -5
- 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/identity-manager.d.ts +43 -0
- package/esri-compat/identity-manager.d.ts.map +1 -1
- package/esri-compat/identity-manager.js +131 -1
- 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/oauth-info.d.ts +15 -0
- package/esri-compat/oauth-info.d.ts.map +1 -1
- package/esri-compat/oauth-info.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 +19 -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 +8 -2
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +4 -4
- package/runtime/load-package.d.ts.map +1 -1
- package/runtime/load-package.js +8 -0
- package/runtime/map-package-validation.d.ts +0 -13
- package/runtime/map-package-validation.d.ts.map +1 -1
- package/runtime/map-package-validation.js +0 -12
- package/runtime/map-package.d.ts +1 -1
- package/runtime/map-package.d.ts.map +1 -1
- 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/pmtiles-protocol.d.ts +77 -0
- package/runtime/pmtiles-protocol.d.ts.map +1 -0
- package/runtime/pmtiles-protocol.js +120 -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 +36 -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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/sketch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/sketch.ts"],"names":[],"mappings":"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"}
|
package/esri-compat/sketch.js
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
|
+
import { snappingOptionsToSnappingConfig } from "./snapping.js";
|
|
3
|
+
const SKETCH_COMPAT_TOOL_TO_EDIT_TOOL = Object.freeze({
|
|
4
|
+
point: "point",
|
|
5
|
+
polyline: "line",
|
|
6
|
+
polygon: "polygon",
|
|
7
|
+
rectangle: "rectangle",
|
|
8
|
+
circle: "circle",
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Feature-detect a terra-draw sketch binding: any object exposing a callable
|
|
12
|
+
* `setTool` qualifies; anything else (including `undefined` when terra-draw
|
|
13
|
+
* is not installed) resolves to `undefined` and the shim keeps its current
|
|
14
|
+
* headless behavior.
|
|
15
|
+
*
|
|
16
|
+
* @experimental
|
|
17
|
+
*/
|
|
18
|
+
export function resolveSketchToolBindingCompat(value) {
|
|
19
|
+
if (value !== null && typeof value === "object" && typeof value.setTool === "function") {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
2
24
|
export class SketchCompat {
|
|
3
25
|
view;
|
|
4
26
|
layer;
|
|
@@ -15,7 +37,9 @@ export class SketchCompat {
|
|
|
15
37
|
activeCreateOptions;
|
|
16
38
|
activeUpdateGraphics;
|
|
17
39
|
activeUpdateOptions;
|
|
40
|
+
snappingOptions;
|
|
18
41
|
watchListeners;
|
|
42
|
+
sketchBinding;
|
|
19
43
|
constructor(options = {}) {
|
|
20
44
|
this.view = options.view;
|
|
21
45
|
this.layer = options.layer;
|
|
@@ -32,7 +56,23 @@ export class SketchCompat {
|
|
|
32
56
|
this.activeCreateOptions = undefined;
|
|
33
57
|
this.activeUpdateGraphics = [];
|
|
34
58
|
this.activeUpdateOptions = undefined;
|
|
59
|
+
this.snappingOptions = { ...(options.snappingOptions ?? {}) };
|
|
35
60
|
this.watchListeners = new Map();
|
|
61
|
+
this.sketchBinding = resolveSketchToolBindingCompat(options.sketchBinding);
|
|
62
|
+
}
|
|
63
|
+
/** Whether tool modes delegate to a terra-draw sketch binding. @experimental */
|
|
64
|
+
delegatesToSketchBinding() {
|
|
65
|
+
return this.sketchBinding !== undefined;
|
|
66
|
+
}
|
|
67
|
+
/** Replace the ArcGIS-shaped snapping options and notify watchers. */
|
|
68
|
+
setSnappingOptions(options) {
|
|
69
|
+
this.snappingOptions = { ...options };
|
|
70
|
+
this.notifyWatchers("snappingOptions", this.snappingOptions);
|
|
71
|
+
this.eventBus.emit("sketch.snapping-options-changed", { options: this.snappingOptions }, this);
|
|
72
|
+
}
|
|
73
|
+
/** The snapping options mapped onto the contract `SnappingConfig`. */
|
|
74
|
+
snappingConfig() {
|
|
75
|
+
return snappingOptionsToSnappingConfig(this.snappingOptions);
|
|
36
76
|
}
|
|
37
77
|
async load() {
|
|
38
78
|
if (this.loaded) {
|
|
@@ -83,6 +123,7 @@ export class SketchCompat {
|
|
|
83
123
|
creationMode: this.creationMode,
|
|
84
124
|
options: this.activeCreateOptions,
|
|
85
125
|
}, this);
|
|
126
|
+
this.sketchBinding?.setTool(SKETCH_COMPAT_TOOL_TO_EDIT_TOOL[tool]);
|
|
86
127
|
}
|
|
87
128
|
complete(graphic) {
|
|
88
129
|
if (this.state !== "active" || !this.activeTool) {
|
|
@@ -97,6 +138,8 @@ export class SketchCompat {
|
|
|
97
138
|
graphic: createdGraphic,
|
|
98
139
|
layerGraphicCount: getLayerGraphics(this.layer).length,
|
|
99
140
|
}, this);
|
|
141
|
+
if (this.creationMode !== "continuous")
|
|
142
|
+
this.sketchBinding?.cancel?.();
|
|
100
143
|
return {
|
|
101
144
|
state: "complete",
|
|
102
145
|
tool,
|
|
@@ -110,6 +153,7 @@ export class SketchCompat {
|
|
|
110
153
|
const tool = this.activeTool;
|
|
111
154
|
this.clearActiveState();
|
|
112
155
|
this.eventBus.emit("sketch.create-cancelled", { tool }, this);
|
|
156
|
+
this.sketchBinding?.cancel?.();
|
|
113
157
|
return {
|
|
114
158
|
state: "cancel",
|
|
115
159
|
tool,
|
|
@@ -128,6 +172,7 @@ export class SketchCompat {
|
|
|
128
172
|
count: normalizedGraphics.length,
|
|
129
173
|
options: this.activeUpdateOptions,
|
|
130
174
|
}, this);
|
|
175
|
+
this.sketchBinding?.select?.();
|
|
131
176
|
return this.activeUpdateGraphics;
|
|
132
177
|
}
|
|
133
178
|
delete(graphics) {
|
|
@@ -157,6 +202,7 @@ export class SketchCompat {
|
|
|
157
202
|
this.activeUpdateOptions = undefined;
|
|
158
203
|
this.notifyWatchers("activeUpdateOptions", this.activeUpdateOptions);
|
|
159
204
|
this.eventBus.emit("sketch.reset", undefined, this);
|
|
205
|
+
this.sketchBinding?.cancel?.();
|
|
160
206
|
}
|
|
161
207
|
clearActiveState() {
|
|
162
208
|
this.state = "ready";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArcGIS `SnappingOptions`-shaped compat surface, mapped onto the
|
|
3
|
+
* renderer-neutral `SnappingConfig` from `contract/edit-snapping.ts`.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { type SnappingConfig } from "../contract/edit-snapping.js";
|
|
8
|
+
/** ArcGIS `FeatureSnappingLayerSource`-shaped entry. */
|
|
9
|
+
export interface SnappingFeatureSourceCompat {
|
|
10
|
+
/** Layer (or layer-like object) providing snap features. */
|
|
11
|
+
layer?: unknown;
|
|
12
|
+
/** Explicit Honua source id when no layer id is derivable. */
|
|
13
|
+
id?: string;
|
|
14
|
+
/** @default true */
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** ArcGIS `SnappingOptions`-shaped configuration accepted by the shims. */
|
|
18
|
+
export interface SnappingOptionsCompat {
|
|
19
|
+
/** Master switch. ArcGIS defaults snapping off. @default false */
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
/** Snap distance in pixels; maps to `SnappingConfig.tolerance`. */
|
|
22
|
+
distance?: number;
|
|
23
|
+
/** Snap to features from `featureSources`. @default true */
|
|
24
|
+
featureEnabled?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Snap to the geometry being drawn. Stored for parity; self snapping is a
|
|
27
|
+
* runtime concern (index the active sketch source to approximate it).
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
selfEnabled?: boolean;
|
|
31
|
+
featureSources?: readonly SnappingFeatureSourceCompat[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Map ArcGIS-shaped snapping options to the contract `SnappingConfig`.
|
|
35
|
+
*
|
|
36
|
+
* `distance` maps to pixel tolerance; `featureSources` map to per-source
|
|
37
|
+
* enablement keyed by `source.id` (falling back to a duck-typed `layer.id` /
|
|
38
|
+
* `layer.sourceId`); `featureEnabled: false` disables every listed source.
|
|
39
|
+
* Vertex and edge candidates are enabled — matching ArcGIS 2D snapping,
|
|
40
|
+
* which always resolves both.
|
|
41
|
+
*/
|
|
42
|
+
export declare function snappingOptionsToSnappingConfig(options?: SnappingOptionsCompat): SnappingConfig;
|
|
43
|
+
//# sourceMappingURL=snapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapping.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/snapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,8BAA8B,CAAC;AAEtC,wDAAwD;AACxD,MAAM,WAAW,2BAA2B;IAC1C,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAcnG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArcGIS `SnappingOptions`-shaped compat surface, mapped onto the
|
|
3
|
+
* renderer-neutral `SnappingConfig` from `contract/edit-snapping.ts`.
|
|
4
|
+
*
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { DEFAULT_SNAPPING_CONFIG, resolveSnappingConfig, } from "../contract/edit-snapping.js";
|
|
8
|
+
/**
|
|
9
|
+
* Map ArcGIS-shaped snapping options to the contract `SnappingConfig`.
|
|
10
|
+
*
|
|
11
|
+
* `distance` maps to pixel tolerance; `featureSources` map to per-source
|
|
12
|
+
* enablement keyed by `source.id` (falling back to a duck-typed `layer.id` /
|
|
13
|
+
* `layer.sourceId`); `featureEnabled: false` disables every listed source.
|
|
14
|
+
* Vertex and edge candidates are enabled — matching ArcGIS 2D snapping,
|
|
15
|
+
* which always resolves both.
|
|
16
|
+
*/
|
|
17
|
+
export function snappingOptionsToSnappingConfig(options = {}) {
|
|
18
|
+
const kinds = ["vertex", "edge"];
|
|
19
|
+
const sources = {};
|
|
20
|
+
for (const featureSource of options.featureSources ?? []) {
|
|
21
|
+
const sourceId = featureSourceId(featureSource);
|
|
22
|
+
if (sourceId === undefined)
|
|
23
|
+
continue;
|
|
24
|
+
sources[sourceId] = options.featureEnabled === false ? false : (featureSource.enabled ?? true);
|
|
25
|
+
}
|
|
26
|
+
return resolveSnappingConfig({
|
|
27
|
+
enabled: options.enabled ?? false,
|
|
28
|
+
tolerance: options.distance ?? DEFAULT_SNAPPING_CONFIG.tolerance,
|
|
29
|
+
kinds,
|
|
30
|
+
sources,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function featureSourceId(featureSource) {
|
|
34
|
+
if (featureSource.id !== undefined)
|
|
35
|
+
return featureSource.id;
|
|
36
|
+
const layer = featureSource.layer;
|
|
37
|
+
if (layer && typeof layer === "object") {
|
|
38
|
+
const candidate = layer;
|
|
39
|
+
if (typeof candidate.id === "string")
|
|
40
|
+
return candidate.id;
|
|
41
|
+
if (typeof candidate.sourceId === "string")
|
|
42
|
+
return candidate.sourceId;
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
package/esri-compat/url.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAkBvE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAanE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAarE"}
|
package/esri-compat/url.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const ABSOLUTE_URL_RE = /^[A-Za-z][A-Za-z\d+.-]*:\/\//;
|
|
2
2
|
const PROTOCOL_RELATIVE_URL_RE = /^\/\//;
|
|
3
3
|
const RELATIVE_URL_BASE = "https://honua.invalid";
|
|
4
|
-
const FEATURE_LAYER_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/FeatureServer\/(?<layerId>\d+)\/?$/;
|
|
4
|
+
const FEATURE_LAYER_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+(?:\/[^/]+)*)\/FeatureServer\/(?<layerId>\d+)\/?$/;
|
|
5
5
|
const MAP_SERVICE_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/MapServer(?:\/\d+)?\/?$/;
|
|
6
6
|
const IMAGE_SERVICE_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/ImageServer(?:\/\d+)?\/?$/;
|
|
7
7
|
export function parseFeatureLayerUrl(url) {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `HonuaWidgetHost` — mounts the app-platform survival-tier web components
|
|
3
|
+
* (`@honua/sdk-js/web-components`, moving to `@honua/app-platform`) into the
|
|
4
|
+
* `container` an esri-compat widget shim was constructed with, so shim UI
|
|
5
|
+
* renders through the shared component set instead of shim-only markup
|
|
6
|
+
* (issue #493, REQ-004).
|
|
7
|
+
*
|
|
8
|
+
* The host **never imports the web-component kit** — not even dynamically:
|
|
9
|
+
* the `/esri-compat` entrypoint is bundle-budgeted, and any intra-package
|
|
10
|
+
* import (static or `import()`) would pull the whole kit plus its geometry
|
|
11
|
+
* closure into every compat bundle. Instead the application injects the kit
|
|
12
|
+
* once via {@link registerHonuaWidgetKit}:
|
|
13
|
+
*
|
|
14
|
+
* ```ts doc-test=skip reason="wiring snippet requires an application host"
|
|
15
|
+
* import { registerHonuaWidgetKit } from "@honua/sdk-esri-compat";
|
|
16
|
+
*
|
|
17
|
+
* // Eager (module object) or lazy (loader) — both work:
|
|
18
|
+
* registerHonuaWidgetKit(() => import("@honua/sdk-js/web-components"));
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* The host is deliberately defensive:
|
|
22
|
+
*
|
|
23
|
+
* - It resolves the ArcGIS-style `container` option (an `HTMLElement` or an
|
|
24
|
+
* element id) only when a DOM is present; headless (Node) shim usage keeps
|
|
25
|
+
* working with no DOM side effects.
|
|
26
|
+
* - Without a registered kit — the default, and the only possibility in the
|
|
27
|
+
* standalone `@honua/sdk-esri-compat` split package unless the app installs
|
|
28
|
+
* the kit — mounting quietly no-ops and the shims stay state-model-only,
|
|
29
|
+
* exactly their pre-delegation behavior.
|
|
30
|
+
* - The delegation tag must be owned by the kit's own element class; a
|
|
31
|
+
* foreign registrant (e.g. the controls kit's `honua-legend`, which has a
|
|
32
|
+
* different `entries` API) also falls back to the headless behavior.
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
*/
|
|
36
|
+
/** Element surface the host hands back to shim update callbacks. */
|
|
37
|
+
export interface HonuaWidgetHostElement extends HTMLElement {
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Structural slice of the `@honua/sdk-js/web-components` module the host
|
|
42
|
+
* needs: the element classes (to verify tag ownership) and the registration
|
|
43
|
+
* helper. Passing the whole module object satisfies this interface.
|
|
44
|
+
*/
|
|
45
|
+
export interface HonuaWidgetKitLike {
|
|
46
|
+
HonuaLegendElement?: CustomElementConstructor;
|
|
47
|
+
HonuaLayerListElement?: CustomElementConstructor;
|
|
48
|
+
HonuaSearchElement?: CustomElementConstructor;
|
|
49
|
+
HonuaMeasurementElement?: CustomElementConstructor;
|
|
50
|
+
defineHonuaWebComponents?: (registry?: CustomElementRegistry) => void;
|
|
51
|
+
}
|
|
52
|
+
/** A kit module object, or a (possibly async) loader for one. */
|
|
53
|
+
export type HonuaWidgetKitSource = HonuaWidgetKitLike | (() => HonuaWidgetKitLike | Promise<HonuaWidgetKitLike>);
|
|
54
|
+
/**
|
|
55
|
+
* Injects the web-component kit that {@link HonuaWidgetHost} delegates to.
|
|
56
|
+
* Call once from application code with the `@honua/sdk-js/web-components`
|
|
57
|
+
* (or `@honua/app-platform/web-components`) module — eagerly or as a lazy
|
|
58
|
+
* loader. Pass `undefined` to unregister (shims return to headless mode).
|
|
59
|
+
*/
|
|
60
|
+
export declare function registerHonuaWidgetKit(source: HonuaWidgetKitSource | undefined): void;
|
|
61
|
+
export declare class HonuaWidgetHost {
|
|
62
|
+
#private;
|
|
63
|
+
constructor(tagName: string, container: unknown);
|
|
64
|
+
/** Whether a usable container was resolved (requires a DOM). */
|
|
65
|
+
get available(): boolean;
|
|
66
|
+
/** The mounted element, when {@link mount} has completed. */
|
|
67
|
+
get element(): HonuaWidgetHostElement | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Ensures the injected web-component kit is registered and the element is
|
|
70
|
+
* mounted into the container. Returns the element, or `undefined` when no
|
|
71
|
+
* DOM / container / kit is available (headless shims, or an application
|
|
72
|
+
* that never called {@link registerHonuaWidgetKit}).
|
|
73
|
+
*/
|
|
74
|
+
mount(): Promise<HonuaWidgetHostElement | undefined>;
|
|
75
|
+
/**
|
|
76
|
+
* Mounts (when needed) and applies `assign` to the element. Fire-and-forget
|
|
77
|
+
* friendly: shims call `void host.update(...)` from synchronous refresh
|
|
78
|
+
* paths.
|
|
79
|
+
*/
|
|
80
|
+
update(assign: (element: HonuaWidgetHostElement) => void): Promise<void>;
|
|
81
|
+
/** Removes the mounted element from the container. */
|
|
82
|
+
destroy(): void;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=widget-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-host.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/widget-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AASH,oEAAoE;AACpE,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,wBAAwB,CAAC;IACjD,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,wBAAwB,CAAC;IACnD,wBAAwB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACvE;AAED,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAIjH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAErF;AAED,qBAAa,eAAe;;gBAOP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAKtD,gEAAgE;IAChE,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,6DAA6D;IAC7D,IAAW,OAAO,IAAI,sBAAsB,GAAG,SAAS,CAEvD;IAED;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAYjE;;;;OAIG;IACU,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrF,sDAAsD;IAC/C,OAAO,IAAI,IAAI;CAmCvB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `HonuaWidgetHost` — mounts the app-platform survival-tier web components
|
|
3
|
+
* (`@honua/sdk-js/web-components`, moving to `@honua/app-platform`) into the
|
|
4
|
+
* `container` an esri-compat widget shim was constructed with, so shim UI
|
|
5
|
+
* renders through the shared component set instead of shim-only markup
|
|
6
|
+
* (issue #493, REQ-004).
|
|
7
|
+
*
|
|
8
|
+
* The host **never imports the web-component kit** — not even dynamically:
|
|
9
|
+
* the `/esri-compat` entrypoint is bundle-budgeted, and any intra-package
|
|
10
|
+
* import (static or `import()`) would pull the whole kit plus its geometry
|
|
11
|
+
* closure into every compat bundle. Instead the application injects the kit
|
|
12
|
+
* once via {@link registerHonuaWidgetKit}:
|
|
13
|
+
*
|
|
14
|
+
* ```ts doc-test=skip reason="wiring snippet requires an application host"
|
|
15
|
+
* import { registerHonuaWidgetKit } from "@honua/sdk-esri-compat";
|
|
16
|
+
*
|
|
17
|
+
* // Eager (module object) or lazy (loader) — both work:
|
|
18
|
+
* registerHonuaWidgetKit(() => import("@honua/sdk-js/web-components"));
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* The host is deliberately defensive:
|
|
22
|
+
*
|
|
23
|
+
* - It resolves the ArcGIS-style `container` option (an `HTMLElement` or an
|
|
24
|
+
* element id) only when a DOM is present; headless (Node) shim usage keeps
|
|
25
|
+
* working with no DOM side effects.
|
|
26
|
+
* - Without a registered kit — the default, and the only possibility in the
|
|
27
|
+
* standalone `@honua/sdk-esri-compat` split package unless the app installs
|
|
28
|
+
* the kit — mounting quietly no-ops and the shims stay state-model-only,
|
|
29
|
+
* exactly their pre-delegation behavior.
|
|
30
|
+
* - The delegation tag must be owned by the kit's own element class; a
|
|
31
|
+
* foreign registrant (e.g. the controls kit's `honua-legend`, which has a
|
|
32
|
+
* different `entries` API) also falls back to the headless behavior.
|
|
33
|
+
*
|
|
34
|
+
* @module
|
|
35
|
+
*/
|
|
36
|
+
const globalDom = globalThis;
|
|
37
|
+
let widgetKitSource;
|
|
38
|
+
/**
|
|
39
|
+
* Injects the web-component kit that {@link HonuaWidgetHost} delegates to.
|
|
40
|
+
* Call once from application code with the `@honua/sdk-js/web-components`
|
|
41
|
+
* (or `@honua/app-platform/web-components`) module — eagerly or as a lazy
|
|
42
|
+
* loader. Pass `undefined` to unregister (shims return to headless mode).
|
|
43
|
+
*/
|
|
44
|
+
export function registerHonuaWidgetKit(source) {
|
|
45
|
+
widgetKitSource = source;
|
|
46
|
+
}
|
|
47
|
+
export class HonuaWidgetHost {
|
|
48
|
+
#tagName;
|
|
49
|
+
#container;
|
|
50
|
+
#element;
|
|
51
|
+
#kitLoad;
|
|
52
|
+
#kitLoadSource;
|
|
53
|
+
constructor(tagName, container) {
|
|
54
|
+
this.#tagName = tagName;
|
|
55
|
+
this.#container = resolveContainer(container);
|
|
56
|
+
}
|
|
57
|
+
/** Whether a usable container was resolved (requires a DOM). */
|
|
58
|
+
get available() {
|
|
59
|
+
return this.#container !== undefined;
|
|
60
|
+
}
|
|
61
|
+
/** The mounted element, when {@link mount} has completed. */
|
|
62
|
+
get element() {
|
|
63
|
+
return this.#element;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Ensures the injected web-component kit is registered and the element is
|
|
67
|
+
* mounted into the container. Returns the element, or `undefined` when no
|
|
68
|
+
* DOM / container / kit is available (headless shims, or an application
|
|
69
|
+
* that never called {@link registerHonuaWidgetKit}).
|
|
70
|
+
*/
|
|
71
|
+
async mount() {
|
|
72
|
+
const container = this.#container;
|
|
73
|
+
if (!container || !globalDom.document)
|
|
74
|
+
return undefined;
|
|
75
|
+
if (!(await this.#loadKit()))
|
|
76
|
+
return undefined;
|
|
77
|
+
if (!this.#element || !this.#element.isConnected) {
|
|
78
|
+
const element = globalDom.document.createElement(this.#tagName);
|
|
79
|
+
container.replaceChildren(element);
|
|
80
|
+
this.#element = element;
|
|
81
|
+
}
|
|
82
|
+
return this.#element;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Mounts (when needed) and applies `assign` to the element. Fire-and-forget
|
|
86
|
+
* friendly: shims call `void host.update(...)` from synchronous refresh
|
|
87
|
+
* paths.
|
|
88
|
+
*/
|
|
89
|
+
async update(assign) {
|
|
90
|
+
const element = await this.mount();
|
|
91
|
+
if (element)
|
|
92
|
+
assign(element);
|
|
93
|
+
}
|
|
94
|
+
/** Removes the mounted element from the container. */
|
|
95
|
+
destroy() {
|
|
96
|
+
this.#element?.remove();
|
|
97
|
+
this.#element = undefined;
|
|
98
|
+
}
|
|
99
|
+
#loadKit() {
|
|
100
|
+
const source = widgetKitSource;
|
|
101
|
+
// No kit injected (yet): stay headless without caching, so a later
|
|
102
|
+
// registerHonuaWidgetKit call is picked up by the next refresh.
|
|
103
|
+
if (!source)
|
|
104
|
+
return Promise.resolve(false);
|
|
105
|
+
if (!this.#kitLoad || this.#kitLoadSource !== source) {
|
|
106
|
+
this.#kitLoadSource = source;
|
|
107
|
+
this.#kitLoad = (async () => {
|
|
108
|
+
let kit;
|
|
109
|
+
try {
|
|
110
|
+
kit = typeof source === "function" ? await source() : source;
|
|
111
|
+
// Importing the kit module registers the elements as a side effect;
|
|
112
|
+
// calling the helper again is an if-missing no-op, but covers kits
|
|
113
|
+
// handed over as plain objects in scoped-registry setups.
|
|
114
|
+
kit.defineHonuaWebComponents?.();
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// The tag must be owned by the kit's own class. Another registrant
|
|
120
|
+
// can win the tag (e.g. the controls kit registers its own
|
|
121
|
+
// `honua-legend` with a different `entries` API when imported first);
|
|
122
|
+
// mounting that element and assigning the web-components properties
|
|
123
|
+
// would render nothing, so fall back to the headless shim behavior.
|
|
124
|
+
const expected = expectedKitConstructor(kit, this.#tagName);
|
|
125
|
+
const registered = globalDom.customElements?.get(this.#tagName);
|
|
126
|
+
return expected !== undefined && registered === expected;
|
|
127
|
+
})();
|
|
128
|
+
}
|
|
129
|
+
return this.#kitLoad;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Resolves the web-components kit class that must own `tagName` for delegation. */
|
|
133
|
+
function expectedKitConstructor(kit, tagName) {
|
|
134
|
+
switch (tagName) {
|
|
135
|
+
case "honua-legend":
|
|
136
|
+
return kit.HonuaLegendElement;
|
|
137
|
+
case "honua-layer-list":
|
|
138
|
+
return kit.HonuaLayerListElement;
|
|
139
|
+
case "honua-search":
|
|
140
|
+
return kit.HonuaSearchElement;
|
|
141
|
+
case "honua-measurement":
|
|
142
|
+
return kit.HonuaMeasurementElement;
|
|
143
|
+
default:
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function resolveContainer(container) {
|
|
148
|
+
if (!globalDom.document)
|
|
149
|
+
return undefined;
|
|
150
|
+
if (typeof container === "string") {
|
|
151
|
+
return globalDom.document.getElementById(container) ?? undefined;
|
|
152
|
+
}
|
|
153
|
+
if (typeof container === "object" &&
|
|
154
|
+
container !== null &&
|
|
155
|
+
typeof container.appendChild === "function") {
|
|
156
|
+
return container;
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@honua/sdk-js/filter-registry` — shared filter / crossfilter registry.
|
|
3
|
+
*
|
|
4
|
+
* Protocol-neutral state container for map, chart, table, search, and control
|
|
5
|
+
* filters. Projection helpers translate active clauses into existing SDK
|
|
6
|
+
* query, linked-view, widget, runtime-style, and URL state.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { createFilterRegistry, projectFilterRegistryToQuery } from "@honua/sdk-js/filter-registry";
|
|
11
|
+
*
|
|
12
|
+
* const registry = createFilterRegistry();
|
|
13
|
+
* registry.set("status", { field: "STATUS", op: "=", value: "ACTIVE" });
|
|
14
|
+
* registry.set("severity", { field: "SEVERITY", op: ">=", value: 3 });
|
|
15
|
+
*
|
|
16
|
+
* const query = projectFilterRegistryToQuery(registry, { sourceId: "incidents" });
|
|
17
|
+
* const { features } = await dataset.source("incidents")!.queryAll(query);
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @packageDocumentation
|
|
21
|
+
*/
|
|
22
|
+
import type { DegradedReason, Query, SourceDescriptor, SourceId } from "../contract/types.js";
|
|
23
|
+
import type { WidgetSourceProjection } from "../contract/widget-source.js";
|
|
24
|
+
import type { SpatialFilter } from "../core/spatial-filter.js";
|
|
25
|
+
import type { HonuaExtent } from "../core/types.js";
|
|
26
|
+
import type { LinkedViewQueryProjection } from "../exploration/selectors.js";
|
|
27
|
+
import type { FilterOperator } from "../exploration/types.js";
|
|
28
|
+
export type FilterRegistryOwner = {
|
|
29
|
+
readonly kind: "map";
|
|
30
|
+
readonly id: string;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "chart";
|
|
33
|
+
readonly id: string;
|
|
34
|
+
} | {
|
|
35
|
+
readonly kind: "table";
|
|
36
|
+
readonly id: string;
|
|
37
|
+
} | {
|
|
38
|
+
readonly kind: "search";
|
|
39
|
+
readonly id: string;
|
|
40
|
+
} | {
|
|
41
|
+
readonly kind: "control";
|
|
42
|
+
readonly id: string;
|
|
43
|
+
} | {
|
|
44
|
+
readonly kind: "component";
|
|
45
|
+
readonly id: string;
|
|
46
|
+
};
|
|
47
|
+
export type FilterLifecycle = "persistent" | "session" | "transient";
|
|
48
|
+
export type FilterEffect = "filter" | "crossfilter" | "selection" | "search" | "spatial-mask";
|
|
49
|
+
export type FilterSourceScope = "all" | readonly SourceId[];
|
|
50
|
+
export type FilterRuntimeApplyMode = "server" | "runtime" | "client";
|
|
51
|
+
export type RuntimeStyleFilterExpression = readonly unknown[];
|
|
52
|
+
export interface FilterValuePolicy {
|
|
53
|
+
/** Omit this value from URL/share serialization. */
|
|
54
|
+
readonly secret?: boolean;
|
|
55
|
+
/** Omit values whose stable JSON representation exceeds this size. @default 2048 */
|
|
56
|
+
readonly maxSerializedBytes?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface RegistrySpatialScope {
|
|
59
|
+
readonly filter?: SpatialFilter;
|
|
60
|
+
readonly extent?: HonuaExtent;
|
|
61
|
+
}
|
|
62
|
+
export interface FilterClause {
|
|
63
|
+
readonly id: string;
|
|
64
|
+
readonly owner: FilterRegistryOwner;
|
|
65
|
+
readonly sourceScope?: FilterSourceScope;
|
|
66
|
+
readonly field?: string;
|
|
67
|
+
readonly operator?: FilterOperator;
|
|
68
|
+
readonly value?: unknown;
|
|
69
|
+
readonly spatialScope?: RegistrySpatialScope;
|
|
70
|
+
readonly lifecycle?: FilterLifecycle;
|
|
71
|
+
readonly effect?: FilterEffect;
|
|
72
|
+
readonly enabled?: boolean;
|
|
73
|
+
readonly cacheable?: boolean;
|
|
74
|
+
readonly valuePolicy?: FilterValuePolicy;
|
|
75
|
+
}
|
|
76
|
+
export interface FilterRegistrySnapshot {
|
|
77
|
+
readonly version: 1;
|
|
78
|
+
readonly clauses: readonly FilterClause[];
|
|
79
|
+
}
|
|
80
|
+
export interface ShareableFilterRegistryState {
|
|
81
|
+
readonly version: 1;
|
|
82
|
+
readonly clauses: readonly FilterClause[];
|
|
83
|
+
}
|
|
84
|
+
export interface FilterRegistryChangeEvent {
|
|
85
|
+
readonly snapshot: FilterRegistrySnapshot;
|
|
86
|
+
readonly previous: FilterRegistrySnapshot;
|
|
87
|
+
readonly changedIds: ReadonlySet<string>;
|
|
88
|
+
}
|
|
89
|
+
export type FilterRegistryListener = (event: FilterRegistryChangeEvent) => void;
|
|
90
|
+
export type FilterRegistrySelector<T> = (snapshot: FilterRegistrySnapshot) => T;
|
|
91
|
+
export type FilterRegistrySelectorListener<T> = (value: T, event: FilterRegistryChangeEvent | undefined) => void;
|
|
92
|
+
export type FilterRegistryUnsubscribe = () => void;
|
|
93
|
+
export interface FilterRegistrySelectorOptions<T> {
|
|
94
|
+
readonly fireImmediately?: boolean;
|
|
95
|
+
readonly equals?: (left: T, right: T) => boolean;
|
|
96
|
+
}
|
|
97
|
+
export interface FilterRegistry {
|
|
98
|
+
readonly snapshot: FilterRegistrySnapshot;
|
|
99
|
+
upsert(clause: FilterClause): void;
|
|
100
|
+
remove(id: string): void;
|
|
101
|
+
clearOwner(owner: FilterRegistryOwner): void;
|
|
102
|
+
clearSource(sourceId: SourceId): void;
|
|
103
|
+
setEnabled(id: string, enabled: boolean): void;
|
|
104
|
+
replace(snapshot: FilterRegistrySnapshot): void;
|
|
105
|
+
subscribe(listener: FilterRegistryListener): FilterRegistryUnsubscribe;
|
|
106
|
+
select<T>(selector: FilterRegistrySelector<T>, listener: FilterRegistrySelectorListener<T>, options?: FilterRegistrySelectorOptions<T>): FilterRegistryUnsubscribe;
|
|
107
|
+
}
|
|
108
|
+
export interface CreateFilterRegistryOptions {
|
|
109
|
+
readonly initialClauses?: readonly FilterClause[];
|
|
110
|
+
}
|
|
111
|
+
export interface FilterRegistryProjectionOptions {
|
|
112
|
+
readonly sourceId?: SourceId;
|
|
113
|
+
readonly includeDisabled?: boolean;
|
|
114
|
+
}
|
|
115
|
+
export interface FilterRegistryQueryProjectionOptions extends FilterRegistryProjectionOptions {
|
|
116
|
+
readonly baseQuery?: Query;
|
|
117
|
+
readonly source?: Pick<SourceDescriptor, "id" | "protocol" | "capabilities">;
|
|
118
|
+
}
|
|
119
|
+
export interface FilterRegistryQueryProjection {
|
|
120
|
+
readonly query: Query;
|
|
121
|
+
readonly where?: string;
|
|
122
|
+
readonly projection: WidgetSourceProjection;
|
|
123
|
+
readonly linkedView: LinkedViewQueryProjection;
|
|
124
|
+
readonly runtimeFilter?: RuntimeStyleFilterExpression;
|
|
125
|
+
readonly degraded?: readonly DegradedReason[];
|
|
126
|
+
readonly cacheKey: string;
|
|
127
|
+
readonly cacheable: boolean;
|
|
128
|
+
}
|
|
129
|
+
/** Create an in-memory filter registry with owner-scoped mutation helpers. */
|
|
130
|
+
export declare function createFilterRegistry(options?: CreateFilterRegistryOptions): FilterRegistry;
|
|
131
|
+
/** Return active clauses in deterministic id order, optionally source-scoped. */
|
|
132
|
+
export declare function selectActiveFilterClauses(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): readonly FilterClause[];
|
|
133
|
+
/** Project active registry clauses into query/widget/linked-view/runtime state. */
|
|
134
|
+
export declare function projectFilterRegistryToQuery(snapshot: FilterRegistrySnapshot, options?: FilterRegistryQueryProjectionOptions): FilterRegistryQueryProjection;
|
|
135
|
+
/** Project active clauses directly into a `WidgetSourceProjection`. */
|
|
136
|
+
export declare function projectFilterRegistryToWidgetProjection(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): WidgetSourceProjection;
|
|
137
|
+
/** Project active clauses into the linked-view projection consumed by existing helpers. */
|
|
138
|
+
export declare function projectFilterRegistryToLinkedView(snapshot: FilterRegistrySnapshot, options?: FilterRegistryQueryProjectionOptions): LinkedViewQueryProjection;
|
|
139
|
+
/** Compile active field clauses into a MapLibre-compatible expression tree. */
|
|
140
|
+
export declare function compileRuntimeStyleFilter(clauses: readonly FilterClause[]): RuntimeStyleFilterExpression | undefined;
|
|
141
|
+
/** Deterministic URL/cache serialization. Secret or large values are omitted. */
|
|
142
|
+
export declare function serializeFilterRegistry(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): string;
|
|
143
|
+
/** Parse a registry serialization produced by `serializeFilterRegistry`. */
|
|
144
|
+
export declare function parseFilterRegistry(value: string | null | undefined): FilterRegistrySnapshot;
|
|
145
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filter-registry/index.ts"],"names":[],"mappings":"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"}
|