@honua/react 0.1.0-beta.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 +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
package/esri-compat/editor.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { SnappingConfig } from "../contract/edit-snapping.js";
|
|
1
2
|
import { CompatEventBus } from "./event-bus.js";
|
|
3
|
+
import { type SnappingOptionsCompat } from "./snapping.js";
|
|
2
4
|
export type EditorWorkflowCompat = "create" | "update";
|
|
3
5
|
export interface EditorLayerInfoCompat {
|
|
4
6
|
layer?: unknown;
|
|
@@ -15,6 +17,7 @@ export interface EditorCompatOptions {
|
|
|
15
17
|
layerInfos?: readonly EditorLayerInfoCompat[];
|
|
16
18
|
allowedWorkflows?: readonly EditorWorkflowCompat[];
|
|
17
19
|
supportingWidgetDefaults?: Record<string, unknown>;
|
|
20
|
+
snappingOptions?: SnappingOptionsCompat;
|
|
18
21
|
}
|
|
19
22
|
export type EditorLoadStatusCompat = "not-loaded" | "loading" | "loaded";
|
|
20
23
|
export interface EditorHandleCompat {
|
|
@@ -31,8 +34,13 @@ export declare class EditorCompat {
|
|
|
31
34
|
supportingWidgetDefaults: Record<string, unknown>;
|
|
32
35
|
activeWorkflow: EditorWorkflowCompat | undefined;
|
|
33
36
|
selectedFeature: Record<string, unknown> | null;
|
|
37
|
+
snappingOptions: SnappingOptionsCompat;
|
|
34
38
|
private readonly watchListeners;
|
|
35
39
|
constructor(options?: EditorCompatOptions);
|
|
40
|
+
/** Replace the ArcGIS-shaped snapping options and notify watchers. */
|
|
41
|
+
setSnappingOptions(options: SnappingOptionsCompat): void;
|
|
42
|
+
/** The snapping options mapped onto the contract `SnappingConfig`. */
|
|
43
|
+
snappingConfig(): SnappingConfig;
|
|
36
44
|
load(): Promise<EditorCompat>;
|
|
37
45
|
when(callback?: (widget: EditorCompat) => void): Promise<EditorCompat>;
|
|
38
46
|
watch(propertyName: string, listener: (value: unknown) => void): EditorHandleCompat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,eAAe,CAAC;AAE5F,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,cAAc,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,qBAAqB,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,mBAAwB;IAepD,sEAAsE;IAC/D,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAM/D,sEAAsE;IAC/D,cAAc,IAAI,cAAc;IAI1B,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAgB7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,kBAAkB;IAenF,yCAAyC,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAoBnE,qCAAqC,IAAI,OAAO;IAiBhD,gCAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAY3E,yBAAyB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IA0BrD,YAAY,IAAI,IAAI;IAapB,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/editor.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
|
+
import { snappingOptionsToSnappingConfig } from "./snapping.js";
|
|
2
3
|
export class EditorCompat {
|
|
3
4
|
view;
|
|
4
5
|
container;
|
|
@@ -10,6 +11,7 @@ export class EditorCompat {
|
|
|
10
11
|
supportingWidgetDefaults;
|
|
11
12
|
activeWorkflow;
|
|
12
13
|
selectedFeature;
|
|
14
|
+
snappingOptions;
|
|
13
15
|
watchListeners;
|
|
14
16
|
constructor(options = {}) {
|
|
15
17
|
this.view = options.view;
|
|
@@ -22,8 +24,19 @@ export class EditorCompat {
|
|
|
22
24
|
this.supportingWidgetDefaults = { ...(options.supportingWidgetDefaults ?? {}) };
|
|
23
25
|
this.activeWorkflow = undefined;
|
|
24
26
|
this.selectedFeature = null;
|
|
27
|
+
this.snappingOptions = { ...(options.snappingOptions ?? {}) };
|
|
25
28
|
this.watchListeners = new Map();
|
|
26
29
|
}
|
|
30
|
+
/** Replace the ArcGIS-shaped snapping options and notify watchers. */
|
|
31
|
+
setSnappingOptions(options) {
|
|
32
|
+
this.snappingOptions = { ...options };
|
|
33
|
+
this.notifyWatchers("snappingOptions", this.snappingOptions);
|
|
34
|
+
this.eventBus.emit("editor.snapping-options-changed", { options: this.snappingOptions }, this);
|
|
35
|
+
}
|
|
36
|
+
/** The snapping options mapped onto the contract `SnappingConfig`. */
|
|
37
|
+
snappingConfig() {
|
|
38
|
+
return snappingOptionsToSnappingConfig(this.snappingOptions);
|
|
39
|
+
}
|
|
27
40
|
async load() {
|
|
28
41
|
if (this.loaded) {
|
|
29
42
|
return this;
|
|
@@ -27,6 +27,8 @@ export interface FeatureLayerQueryOptions {
|
|
|
27
27
|
returnGeometry?: boolean;
|
|
28
28
|
method?: QueryMethod;
|
|
29
29
|
extraParams?: Record<string, string | number | boolean>;
|
|
30
|
+
/** Abort the in-flight query when the owning view or workflow is disposed. */
|
|
31
|
+
signal?: AbortSignal;
|
|
30
32
|
}
|
|
31
33
|
export type FeatureLayerQueryAllOptions = FeatureLayerQueryOptions & {
|
|
32
34
|
pageSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-layer.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-layer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAEV,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,WAAW,EACX,YAAY,EACZ,cAAc,EACd,6BAA6B,EAC7B,kBAAkB,EAClB,2BAA2B,EAC3B,6BAA6B,EAC7B,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AAKjG,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-layer.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -234,6 +234,7 @@ export class FeatureLayerCompat {
|
|
|
234
234
|
outFields: options.outFields ?? this.outFields,
|
|
235
235
|
returnGeometry: options.returnGeometry,
|
|
236
236
|
method: options.method,
|
|
237
|
+
signal: options.signal,
|
|
237
238
|
extraParams: timeParam ? { ...(options.extraParams ?? {}), time: timeParam } : options.extraParams,
|
|
238
239
|
});
|
|
239
240
|
}
|
|
@@ -58,6 +58,15 @@ export declare class LayerListCompat {
|
|
|
58
58
|
private readonly listenersByType;
|
|
59
59
|
private readonly watchListeners;
|
|
60
60
|
private subscriptions;
|
|
61
|
+
/**
|
|
62
|
+
* When a `container` is supplied and a DOM is present, the shim delegates
|
|
63
|
+
* its rendering to the app-platform `<honua-layer-list>` component through
|
|
64
|
+
* {@link HonuaWidgetHost} (issue #493 REQ-004): rows come from the shim's
|
|
65
|
+
* item model, and checkbox toggles route back through {@link toggle}.
|
|
66
|
+
* Headless usage keeps the state-model-only behavior.
|
|
67
|
+
*/
|
|
68
|
+
private readonly widgetHost;
|
|
69
|
+
private widgetHostBound;
|
|
61
70
|
constructor(options?: LayerListCompatOptions);
|
|
62
71
|
load(): Promise<LayerListCompat>;
|
|
63
72
|
when(callback?: (widget: LayerListCompat) => void): Promise<LayerListCompat>;
|
|
@@ -68,6 +77,8 @@ export declare class LayerListCompat {
|
|
|
68
77
|
triggerAction(actionId: string, layerOrId?: unknown | string | number): boolean;
|
|
69
78
|
on<TType extends LayerListEventTypeCompat>(type: TType, listener: (event: LayerListEventPayloadByType[TType]) => void): LayerListHandleCompat;
|
|
70
79
|
destroy(): void;
|
|
80
|
+
/** Pushes the current items into the delegated `<honua-layer-list>` element. */
|
|
81
|
+
private renderWidgetHost;
|
|
71
82
|
private findLayer;
|
|
72
83
|
private findItem;
|
|
73
84
|
private emit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/layer-list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/layer-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener, } from "./event-bus.js";
|
|
2
|
+
import { HonuaWidgetHost } from "./widget-host.js";
|
|
2
3
|
export class LayerListCompat {
|
|
3
4
|
view;
|
|
4
5
|
map;
|
|
@@ -13,6 +14,15 @@ export class LayerListCompat {
|
|
|
13
14
|
listenersByType;
|
|
14
15
|
watchListeners;
|
|
15
16
|
subscriptions;
|
|
17
|
+
/**
|
|
18
|
+
* When a `container` is supplied and a DOM is present, the shim delegates
|
|
19
|
+
* its rendering to the app-platform `<honua-layer-list>` component through
|
|
20
|
+
* {@link HonuaWidgetHost} (issue #493 REQ-004): rows come from the shim's
|
|
21
|
+
* item model, and checkbox toggles route back through {@link toggle}.
|
|
22
|
+
* Headless usage keeps the state-model-only behavior.
|
|
23
|
+
*/
|
|
24
|
+
widgetHost;
|
|
25
|
+
widgetHostBound = false;
|
|
16
26
|
constructor(options = {}) {
|
|
17
27
|
this.view = options.view;
|
|
18
28
|
this.map = options.map ?? extractMapFromView(options.view);
|
|
@@ -27,6 +37,8 @@ export class LayerListCompat {
|
|
|
27
37
|
this.listenersByType = new Map();
|
|
28
38
|
this.watchListeners = new Map();
|
|
29
39
|
this.subscriptions = [];
|
|
40
|
+
const widgetHost = options.container != null ? new HonuaWidgetHost("honua-layer-list", options.container) : undefined;
|
|
41
|
+
this.widgetHost = widgetHost?.available ? widgetHost : undefined;
|
|
30
42
|
if (this.autoRefresh) {
|
|
31
43
|
this.subscriptions.push(this.eventBus.on("map.layer-added", () => this.refresh()));
|
|
32
44
|
this.subscriptions.push(this.eventBus.on("map.layer-removed", () => this.refresh()));
|
|
@@ -89,6 +101,7 @@ export class LayerListCompat {
|
|
|
89
101
|
const updateEvent = { itemCount: this.items.length };
|
|
90
102
|
this.eventBus.emit("layer-list.updated", updateEvent, this);
|
|
91
103
|
this.emit("updated", updateEvent);
|
|
104
|
+
void this.renderWidgetHost();
|
|
92
105
|
return this.items;
|
|
93
106
|
}
|
|
94
107
|
toggle(layerOrId, visible) {
|
|
@@ -158,6 +171,26 @@ export class LayerListCompat {
|
|
|
158
171
|
}
|
|
159
172
|
this.listenersByType.clear();
|
|
160
173
|
this.watchListeners.clear();
|
|
174
|
+
this.widgetHost?.destroy();
|
|
175
|
+
}
|
|
176
|
+
/** Pushes the current items into the delegated `<honua-layer-list>` element. */
|
|
177
|
+
async renderWidgetHost() {
|
|
178
|
+
const host = this.widgetHost;
|
|
179
|
+
if (!host)
|
|
180
|
+
return;
|
|
181
|
+
const rows = flattenLayerListItems(this.items);
|
|
182
|
+
await host.update((element) => {
|
|
183
|
+
if (!this.widgetHostBound) {
|
|
184
|
+
this.widgetHostBound = true;
|
|
185
|
+
element.addEventListener("honua-layer-visibility-change", (event) => {
|
|
186
|
+
const detail = event.detail;
|
|
187
|
+
if (detail?.layerId === undefined || typeof detail.visible !== "boolean")
|
|
188
|
+
return;
|
|
189
|
+
this.toggle(detail.layerId, detail.visible);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
element.layers = rows;
|
|
193
|
+
});
|
|
161
194
|
}
|
|
162
195
|
findLayer(layerOrId) {
|
|
163
196
|
const rootLayers = getRootLayers(this.map);
|
|
@@ -196,6 +229,22 @@ export class LayerListCompat {
|
|
|
196
229
|
}
|
|
197
230
|
}
|
|
198
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Flattens the compat item tree (depth-first) into the flat row model the
|
|
234
|
+
* `<honua-layer-list>` component renders; child rows are indented in their
|
|
235
|
+
* title. Layer ids are stringified so `toggle(detail.layerId, ...)` resolves
|
|
236
|
+
* them again via {@link findLayerById}.
|
|
237
|
+
*/
|
|
238
|
+
function flattenLayerListItems(items, depth = 0) {
|
|
239
|
+
return items.flatMap((item, index) => [
|
|
240
|
+
{
|
|
241
|
+
id: item.id !== undefined ? String(item.id) : `layer-${depth}-${index}`,
|
|
242
|
+
title: `${" ".repeat(depth)}${item.title}`,
|
|
243
|
+
visible: item.visible,
|
|
244
|
+
},
|
|
245
|
+
...flattenLayerListItems(item.children, depth + 1),
|
|
246
|
+
]);
|
|
247
|
+
}
|
|
199
248
|
function extractMapFromView(view) {
|
|
200
249
|
if (!isRecord(view)) {
|
|
201
250
|
return undefined;
|
package/esri-compat/legend.d.ts
CHANGED
|
@@ -40,12 +40,22 @@ export declare class LegendCompat {
|
|
|
40
40
|
private readonly watchListeners;
|
|
41
41
|
private subscriptions;
|
|
42
42
|
private refreshRevision;
|
|
43
|
+
/**
|
|
44
|
+
* When a `container` is supplied and a DOM is present, the shim delegates
|
|
45
|
+
* its rendering to the app-platform `<honua-legend>` component through
|
|
46
|
+
* {@link HonuaWidgetHost} (issue #493 REQ-004). Headless usage (no
|
|
47
|
+
* container / no DOM / the standalone esri-compat split package) keeps the
|
|
48
|
+
* state-model-only behavior.
|
|
49
|
+
*/
|
|
50
|
+
private readonly widgetHost;
|
|
43
51
|
constructor(options?: LegendCompatOptions);
|
|
44
52
|
load(): Promise<LegendCompat>;
|
|
45
53
|
when(callback?: (widget: LegendCompat) => void): Promise<LegendCompat>;
|
|
46
54
|
watch(propertyName: string, listener: (value: unknown) => void): LegendHandleCompat;
|
|
47
55
|
refresh(): Promise<readonly LegendLayerGroupCompat[]>;
|
|
48
56
|
destroy(): void;
|
|
57
|
+
/** Pushes the current items into the delegated `<honua-legend>` element. */
|
|
58
|
+
private renderWidgetHost;
|
|
49
59
|
private resolveLegendLayers;
|
|
50
60
|
private nextRefreshRevision;
|
|
51
61
|
private notifyWatchers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/legend.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/legend.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,GAAG,EAAE,OAAO,CAAC;IAC7B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,aAAa,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,mBAAwB;IAiCvC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAiB7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,kBAAkB;IAe7E,OAAO,IAAI,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC;IAqC3D,OAAO,IAAI,IAAI;IAQtB,4EAA4E;YAC9D,gBAAgB;IAe9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/legend.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener, } from "./event-bus.js";
|
|
2
|
+
import { HonuaWidgetHost } from "./widget-host.js";
|
|
2
3
|
export class LegendCompat {
|
|
3
4
|
view;
|
|
4
5
|
map;
|
|
@@ -13,6 +14,14 @@ export class LegendCompat {
|
|
|
13
14
|
watchListeners;
|
|
14
15
|
subscriptions;
|
|
15
16
|
refreshRevision;
|
|
17
|
+
/**
|
|
18
|
+
* When a `container` is supplied and a DOM is present, the shim delegates
|
|
19
|
+
* its rendering to the app-platform `<honua-legend>` component through
|
|
20
|
+
* {@link HonuaWidgetHost} (issue #493 REQ-004). Headless usage (no
|
|
21
|
+
* container / no DOM / the standalone esri-compat split package) keeps the
|
|
22
|
+
* state-model-only behavior.
|
|
23
|
+
*/
|
|
24
|
+
widgetHost;
|
|
16
25
|
constructor(options = {}) {
|
|
17
26
|
this.view = options.view;
|
|
18
27
|
this.map = options.map ?? extractMapFromView(options.view);
|
|
@@ -28,6 +37,8 @@ export class LegendCompat {
|
|
|
28
37
|
this.watchListeners = new Map();
|
|
29
38
|
this.subscriptions = [];
|
|
30
39
|
this.refreshRevision = 0;
|
|
40
|
+
const widgetHost = options.container != null ? new HonuaWidgetHost("honua-legend", options.container) : undefined;
|
|
41
|
+
this.widgetHost = widgetHost?.available ? widgetHost : undefined;
|
|
31
42
|
if (this.autoRefresh) {
|
|
32
43
|
this.subscriptions.push(this.eventBus.on("map.layer-added", () => void this.refresh()));
|
|
33
44
|
this.subscriptions.push(this.eventBus.on("map.layer-removed", () => void this.refresh()));
|
|
@@ -108,6 +119,7 @@ export class LegendCompat {
|
|
|
108
119
|
this.items = groups;
|
|
109
120
|
this.notifyWatchers("items", this.items);
|
|
110
121
|
this.eventBus.emit("legend.updated", { layerCount: groups.length }, this);
|
|
122
|
+
void this.renderWidgetHost();
|
|
111
123
|
return this.items;
|
|
112
124
|
}
|
|
113
125
|
destroy() {
|
|
@@ -115,6 +127,21 @@ export class LegendCompat {
|
|
|
115
127
|
subscription.remove();
|
|
116
128
|
}
|
|
117
129
|
this.watchListeners.clear();
|
|
130
|
+
this.widgetHost?.destroy();
|
|
131
|
+
}
|
|
132
|
+
/** Pushes the current items into the delegated `<honua-legend>` element. */
|
|
133
|
+
async renderWidgetHost() {
|
|
134
|
+
const host = this.widgetHost;
|
|
135
|
+
if (!host)
|
|
136
|
+
return;
|
|
137
|
+
const items = this.items.flatMap((group, groupIndex) => group.entries.map((entry, entryIndex) => ({
|
|
138
|
+
id: `${groupIndex}-${entryIndex}`,
|
|
139
|
+
label: entry.label,
|
|
140
|
+
...(entry.imageData ? { iconUrl: `data:${entry.contentType ?? "image/png"};base64,${entry.imageData}` } : {}),
|
|
141
|
+
})));
|
|
142
|
+
await host.update((element) => {
|
|
143
|
+
element.items = items;
|
|
144
|
+
});
|
|
118
145
|
}
|
|
119
146
|
resolveLegendLayers() {
|
|
120
147
|
if (this.explicitLayers) {
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { HonuaClient } from "../core/client.js";
|
|
2
|
+
import { FeatureLayerCompat } from "./feature-layer.js";
|
|
3
|
+
/**
|
|
4
|
+
* A single item as returned by the Honua Portal facade
|
|
5
|
+
* (`/sharing/rest/search` and `/sharing/rest/content/items/{id}`). Mirrors the
|
|
6
|
+
* ArcGIS Portal item shape so a repointed app reads the same fields.
|
|
7
|
+
*/
|
|
8
|
+
export interface PortalItem {
|
|
9
|
+
id: string;
|
|
10
|
+
owner: string;
|
|
11
|
+
created: number;
|
|
12
|
+
modified: number;
|
|
13
|
+
type: string;
|
|
14
|
+
typeKeywords: string[];
|
|
15
|
+
title: string;
|
|
16
|
+
snippet: string | null;
|
|
17
|
+
description: string | null;
|
|
18
|
+
tags: string[];
|
|
19
|
+
/** Absolute service URL, e.g. `.../rest/services/{name}/FeatureServer`. */
|
|
20
|
+
url: string | null;
|
|
21
|
+
access: "public" | "org" | "private" | string;
|
|
22
|
+
extent: number[][] | null;
|
|
23
|
+
spatialReference: string | null;
|
|
24
|
+
culture: string | null;
|
|
25
|
+
numComments: number;
|
|
26
|
+
numViews: number;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
/** Parsed `/sharing/rest/search` response. */
|
|
30
|
+
export interface PortalSearchResult {
|
|
31
|
+
query: string;
|
|
32
|
+
total: number;
|
|
33
|
+
/** 1-based index of the first result in this page. */
|
|
34
|
+
start: number;
|
|
35
|
+
num: number;
|
|
36
|
+
/** Index of the next page's first result, or `-1` on the last page. */
|
|
37
|
+
nextStart: number;
|
|
38
|
+
results: PortalItem[];
|
|
39
|
+
}
|
|
40
|
+
/** `/sharing/rest/info` response (subset the client relies on). */
|
|
41
|
+
export interface PortalInfo {
|
|
42
|
+
authInfo?: {
|
|
43
|
+
isTokenBasedSecurity?: boolean;
|
|
44
|
+
tokenServicesUrl?: string;
|
|
45
|
+
};
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}
|
|
48
|
+
/** `/sharing/rest/portals/self` response (subset the client relies on). */
|
|
49
|
+
export interface PortalSelf {
|
|
50
|
+
id?: string;
|
|
51
|
+
isPortal?: boolean;
|
|
52
|
+
name?: string;
|
|
53
|
+
portalName?: string;
|
|
54
|
+
user?: {
|
|
55
|
+
username: string;
|
|
56
|
+
fullName?: string;
|
|
57
|
+
role?: string;
|
|
58
|
+
} | null;
|
|
59
|
+
[key: string]: unknown;
|
|
60
|
+
}
|
|
61
|
+
/** Options accepted by {@link PortalCompat}. */
|
|
62
|
+
export interface PortalCompatOptions {
|
|
63
|
+
/**
|
|
64
|
+
* Portal base URL. Accepts either a portal root (`https://portal.example`) or
|
|
65
|
+
* a `/sharing/rest` base; both normalize to the `.../sharing/rest` endpoint
|
|
66
|
+
* base. Defaults to {@link esriConfig.portalUrl}.
|
|
67
|
+
*/
|
|
68
|
+
portalUrl?: string;
|
|
69
|
+
/** Pre-obtained token to attach to authenticated calls. */
|
|
70
|
+
token?: string;
|
|
71
|
+
/** Static API key (falls back to {@link esriConfig.apiKey}). */
|
|
72
|
+
apiKey?: string;
|
|
73
|
+
/** Override the global `fetch` implementation (useful in tests). */
|
|
74
|
+
fetchFn?: typeof fetch;
|
|
75
|
+
}
|
|
76
|
+
/** Options for {@link PortalCompat.generateToken}. */
|
|
77
|
+
export interface PortalGenerateTokenOptions {
|
|
78
|
+
username: string;
|
|
79
|
+
password: string;
|
|
80
|
+
/** Referer registered with the token. Defaults to the portal origin. */
|
|
81
|
+
referer?: string;
|
|
82
|
+
/** Esri `client` param (`"referer"` | `"requestip"` | `"ip"`). Defaults to `"referer"`. */
|
|
83
|
+
client?: string;
|
|
84
|
+
/** Token lifetime in minutes. */
|
|
85
|
+
expirationMinutes?: number;
|
|
86
|
+
}
|
|
87
|
+
/** Result of {@link PortalCompat.generateToken}. */
|
|
88
|
+
export interface PortalTokenCredential {
|
|
89
|
+
token: string;
|
|
90
|
+
/** Absolute expiry as a unix-millisecond timestamp. */
|
|
91
|
+
expiresAtMs: number;
|
|
92
|
+
ssl: boolean;
|
|
93
|
+
}
|
|
94
|
+
/** Options for {@link PortalCompat.search}. */
|
|
95
|
+
export interface PortalSearchOptions {
|
|
96
|
+
q?: string;
|
|
97
|
+
start?: number;
|
|
98
|
+
num?: number;
|
|
99
|
+
token?: string;
|
|
100
|
+
}
|
|
101
|
+
/** Options for {@link PortalCompat.getItem}. */
|
|
102
|
+
export interface PortalGetItemOptions {
|
|
103
|
+
token?: string;
|
|
104
|
+
}
|
|
105
|
+
/** Options for {@link PortalCompat.openFeatureLayer}. */
|
|
106
|
+
export interface PortalOpenOptions {
|
|
107
|
+
/** Layer id to open for Feature Service items. Defaults to the service's first advertised layer. */
|
|
108
|
+
layerId?: number;
|
|
109
|
+
}
|
|
110
|
+
interface PortalOpenResultBase {
|
|
111
|
+
/** Resolved portal item. */
|
|
112
|
+
item: PortalItem;
|
|
113
|
+
/** Service base (`.../rest/services`-prefixed origin/prefix) without the service segment. */
|
|
114
|
+
baseUrl: string;
|
|
115
|
+
/** Service (folder/name) id parsed from the item URL. */
|
|
116
|
+
serviceId: string;
|
|
117
|
+
/** Authenticated client bound to `baseUrl`, carrying the portal credential. */
|
|
118
|
+
client: HonuaClient;
|
|
119
|
+
}
|
|
120
|
+
/** Feature Service open result: includes a ready-to-use {@link FeatureLayerCompat}. */
|
|
121
|
+
export interface PortalFeatureServiceOpenResult extends PortalOpenResultBase {
|
|
122
|
+
type: "feature-service";
|
|
123
|
+
layerId: number;
|
|
124
|
+
layer: FeatureLayerCompat;
|
|
125
|
+
}
|
|
126
|
+
/** Map/Image Service open result: the resolved, authenticated service handle. */
|
|
127
|
+
export interface PortalServiceOpenResult extends PortalOpenResultBase {
|
|
128
|
+
type: "map-service" | "image-service";
|
|
129
|
+
}
|
|
130
|
+
export type PortalOpenResult = PortalFeatureServiceOpenResult | PortalServiceOpenResult;
|
|
131
|
+
/** Error thrown when the Portal facade returns an Esri error envelope. */
|
|
132
|
+
export declare class PortalError extends Error {
|
|
133
|
+
readonly code: number | string | undefined;
|
|
134
|
+
readonly details: unknown;
|
|
135
|
+
constructor(message: string, code?: number | string, details?: unknown);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Client for a Honua `/sharing/rest` Portal facade. Lets a repointed ArcGIS app
|
|
139
|
+
* authenticate, search for items, and open an item that resolves to a
|
|
140
|
+
* `/rest/services` URL — carrying the portal token through to the opened layer
|
|
141
|
+
* so the whole flow authenticates end to end.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* import { PortalCompat } from "@honua/sdk-js/esri-compat";
|
|
146
|
+
*
|
|
147
|
+
* const portal = new PortalCompat({ portalUrl: "https://honua.example" });
|
|
148
|
+
* await portal.generateToken({ username: "u", password: "p" });
|
|
149
|
+
* const { results } = await portal.search({ q: "roads" });
|
|
150
|
+
* const opened = await portal.openFeatureLayer(results[0]);
|
|
151
|
+
* if (opened.type === "feature-service") {
|
|
152
|
+
* await opened.layer.queryFeatures({ where: "1=1" });
|
|
153
|
+
* }
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export declare class PortalCompat {
|
|
157
|
+
/** Normalized `.../sharing/rest` base for this portal. */
|
|
158
|
+
readonly sharingRestBase: string;
|
|
159
|
+
private token;
|
|
160
|
+
private tokenExpiresAtMs;
|
|
161
|
+
private readonly apiKey;
|
|
162
|
+
private readonly fetchFn;
|
|
163
|
+
constructor(options?: PortalCompatOptions);
|
|
164
|
+
/** The currently held portal token, if any. */
|
|
165
|
+
getToken(): string | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Exchange username/password for a portal token via
|
|
168
|
+
* `POST /sharing/rest/generateToken`. Stores the token on this instance and
|
|
169
|
+
* returns the credential (`expires` ms → `expiresAtMs`).
|
|
170
|
+
*/
|
|
171
|
+
generateToken(options: PortalGenerateTokenOptions): Promise<PortalTokenCredential>;
|
|
172
|
+
/** `GET /sharing/rest/info`. */
|
|
173
|
+
getInfo(): Promise<PortalInfo>;
|
|
174
|
+
/** `GET /sharing/rest/portals/self` (attaches the token when present). */
|
|
175
|
+
getPortalSelf(): Promise<PortalSelf>;
|
|
176
|
+
/** `GET /sharing/rest/search`. */
|
|
177
|
+
search(options?: PortalSearchOptions): Promise<PortalSearchResult>;
|
|
178
|
+
/** `GET /sharing/rest/content/items/{id}`. */
|
|
179
|
+
getItem(itemId: string, options?: PortalGetItemOptions): Promise<PortalItem>;
|
|
180
|
+
/**
|
|
181
|
+
* Resolve an item (fetching it when given an id), parse its service `url`, and
|
|
182
|
+
* return an authenticated handle. Feature Service items yield a
|
|
183
|
+
* {@link FeatureLayerCompat} bound to a client carrying the portal token;
|
|
184
|
+
* Map/Image Service items yield the resolved `{ baseUrl, serviceId, client }`.
|
|
185
|
+
*/
|
|
186
|
+
openFeatureLayer(itemOrId: string | PortalItem, options?: PortalOpenOptions): Promise<PortalOpenResult>;
|
|
187
|
+
/**
|
|
188
|
+
* Register the currently held token with the shared {@link identityManager}
|
|
189
|
+
* under this portal's `/sharing/rest` server, so subsequent esri-compat calls
|
|
190
|
+
* resolve the same credential.
|
|
191
|
+
*/
|
|
192
|
+
registerWithIdentityManager(): void;
|
|
193
|
+
private buildAuthenticatedClient;
|
|
194
|
+
private getJson;
|
|
195
|
+
}
|
|
196
|
+
export {};
|
|
197
|
+
//# sourceMappingURL=portal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/portal.ts"],"names":[],"mappings":"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"}
|