@honua/app-platform 0.1.12 → 0.1.13
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/columnar/apache-arrow.d.ts +17 -0
- package/columnar/apache-arrow.d.ts.map +1 -0
- package/columnar/apache-arrow.js +1036 -0
- package/columnar/batch-cache-conformance.d.ts +66 -0
- package/columnar/batch-cache-conformance.d.ts.map +1 -0
- package/columnar/batch-cache-conformance.js +317 -0
- package/columnar/batch-cache-indexeddb.d.ts +31 -0
- package/columnar/batch-cache-indexeddb.d.ts.map +1 -0
- package/columnar/batch-cache-indexeddb.js +148 -0
- package/columnar/batch-cache.d.ts +298 -0
- package/columnar/batch-cache.d.ts.map +1 -0
- package/columnar/batch-cache.js +757 -0
- package/columnar/geoarrow-aggregate.d.ts +178 -0
- package/columnar/geoarrow-aggregate.d.ts.map +1 -0
- package/columnar/geoarrow-aggregate.js +976 -0
- package/columnar/geoarrow-patch.d.ts +382 -0
- package/columnar/geoarrow-patch.d.ts.map +1 -0
- package/columnar/geoarrow-patch.js +1656 -0
- package/columnar/geoarrow-reproject.d.ts +22 -0
- package/columnar/geoarrow-reproject.d.ts.map +1 -0
- package/columnar/geoarrow-reproject.js +119 -0
- package/columnar/geoarrow-serialization.d.ts +68 -0
- package/columnar/geoarrow-serialization.d.ts.map +1 -0
- package/columnar/geoarrow-serialization.js +331 -0
- package/columnar/geoarrow-types.d.ts +271 -0
- package/columnar/geoarrow-types.d.ts.map +1 -0
- package/columnar/geoarrow-types.js +15 -0
- package/columnar/geoarrow.d.ts +52 -0
- package/columnar/geoarrow.d.ts.map +1 -0
- package/columnar/geoarrow.js +1469 -0
- package/columnar/index.d.ts +43 -0
- package/columnar/index.d.ts.map +1 -0
- package/columnar/index.js +29 -0
- package/columnar/operators.d.ts +70 -0
- package/columnar/operators.d.ts.map +1 -0
- package/columnar/operators.js +307 -0
- package/columnar/result.d.ts +369 -0
- package/columnar/result.d.ts.map +1 -0
- package/columnar/result.js +815 -0
- package/columnar/telemetry.d.ts +152 -0
- package/columnar/telemetry.d.ts.map +1 -0
- package/columnar/telemetry.js +265 -0
- package/columnar/transfer.d.ts +28 -0
- package/columnar/transfer.d.ts.map +1 -0
- package/columnar/transfer.js +669 -0
- package/columnar/types.d.ts +175 -0
- package/columnar/types.d.ts.map +1 -0
- package/columnar/types.js +22 -0
- package/columnar/worker.d.ts +157 -0
- package/columnar/worker.d.ts.map +1 -0
- package/columnar/worker.js +1059 -0
- package/contract/pmtiles.d.ts +6 -5
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +30 -5
- package/controls/catalog.d.ts.map +1 -1
- package/controls/catalog.js +110 -0
- package/controls/index.d.ts +1 -1
- package/controls/index.js +1 -1
- package/controls/types.d.ts +1 -1
- package/controls/types.js +1 -1
- package/core/client.d.ts.map +1 -1
- package/core/client.js +87 -19
- package/core/deprecation-notice.d.ts +28 -0
- package/core/deprecation-notice.d.ts.map +1 -0
- package/core/deprecation-notice.js +22 -0
- package/core/esri-geojson.d.ts.map +1 -1
- package/core/esri-geojson.js +10 -6
- package/core/optional-grpc-peer.d.ts +15 -0
- package/core/optional-grpc-peer.d.ts.map +1 -0
- package/core/optional-grpc-peer.js +60 -0
- package/esri-compat/basemap-gallery.d.ts +2 -0
- package/esri-compat/basemap-gallery.d.ts.map +1 -1
- package/esri-compat/basemap-gallery.js +12 -0
- package/esri-compat/basemap.d.ts +4 -0
- package/esri-compat/basemap.d.ts.map +1 -1
- package/esri-compat/basemap.js +70 -0
- package/esri-compat/bookmarks.d.ts +2 -0
- package/esri-compat/bookmarks.d.ts.map +1 -1
- package/esri-compat/bookmarks.js +12 -0
- package/esri-compat/controls.d.ts +18 -0
- package/esri-compat/controls.d.ts.map +1 -1
- package/esri-compat/controls.js +120 -57
- package/esri-compat/directions.d.ts +4 -0
- package/esri-compat/directions.d.ts.map +1 -1
- package/esri-compat/directions.js +30 -20
- package/esri-compat/editor.d.ts +4 -0
- package/esri-compat/editor.d.ts.map +1 -1
- package/esri-compat/editor.js +16 -0
- package/esri-compat/esri-config.d.ts +2 -1
- package/esri-compat/esri-config.d.ts.map +1 -1
- package/esri-compat/feature-effect.d.ts +23 -0
- package/esri-compat/feature-effect.d.ts.map +1 -0
- package/esri-compat/feature-effect.js +12 -0
- package/esri-compat/feature-form.d.ts +6 -0
- package/esri-compat/feature-form.d.ts.map +1 -1
- package/esri-compat/feature-form.js +63 -0
- package/esri-compat/feature-layer.d.ts +21 -2
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +172 -1
- package/esri-compat/feature-table.d.ts +5 -0
- package/esri-compat/feature-table.d.ts.map +1 -1
- package/esri-compat/feature-table.js +23 -0
- package/esri-compat/identity-manager.d.ts +1 -1
- package/esri-compat/identity-manager.js +1 -1
- package/esri-compat/legend.d.ts +2 -0
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +98 -0
- package/esri-compat/locator.d.ts +1 -1
- package/esri-compat/locator.js +1 -1
- package/esri-compat/map-view-mount.d.ts +1 -0
- package/esri-compat/map-view-mount.d.ts.map +1 -1
- package/esri-compat/map-view-mount.js +46 -25
- package/esri-compat/map-view.d.ts +13 -0
- package/esri-compat/map-view.d.ts.map +1 -1
- package/esri-compat/map-view.js +94 -8
- package/esri-compat/map.d.ts +5 -1
- package/esri-compat/map.d.ts.map +1 -1
- package/esri-compat/map.js +10 -0
- package/esri-compat/measurement.d.ts +2 -0
- package/esri-compat/measurement.d.ts.map +1 -1
- package/esri-compat/measurement.js +14 -0
- package/esri-compat/point.d.ts +7 -0
- package/esri-compat/point.d.ts.map +1 -1
- package/esri-compat/point.js +33 -3
- package/esri-compat/popup.d.ts +2 -0
- package/esri-compat/popup.d.ts.map +1 -1
- package/esri-compat/popup.js +12 -0
- package/esri-compat/portal.d.ts +1 -1
- package/esri-compat/portal.js +1 -1
- package/esri-compat/print.d.ts +3 -0
- package/esri-compat/print.d.ts.map +1 -1
- package/esri-compat/print.js +15 -0
- package/esri-compat/search.d.ts +4 -0
- package/esri-compat/search.d.ts.map +1 -1
- package/esri-compat/search.js +25 -28
- package/esri-compat/sketch.d.ts +2 -0
- package/esri-compat/sketch.d.ts.map +1 -1
- package/esri-compat/sketch.js +12 -0
- package/esri-compat/widget-host.d.ts +46 -17
- package/esri-compat/widget-host.d.ts.map +1 -1
- package/esri-compat/widget-host.js +84 -20
- package/esri-compat/widget-shell-hosts.d.ts +61 -0
- package/esri-compat/widget-shell-hosts.d.ts.map +1 -0
- package/esri-compat/widget-shell-hosts.js +76 -0
- package/kernel/renderer.d.ts +82 -0
- package/kernel/renderer.js +1 -0
- package/offline/conflict-resolution.d.ts +183 -0
- package/offline/conflict-resolution.d.ts.map +1 -0
- package/offline/conflict-resolution.js +286 -0
- package/offline/credential-screen.d.ts +34 -0
- package/offline/credential-screen.d.ts.map +1 -0
- package/offline/credential-screen.js +78 -0
- package/offline/digest.d.ts +15 -0
- package/offline/digest.d.ts.map +1 -0
- package/offline/digest.js +58 -0
- package/offline/edit-queue.d.ts +403 -0
- package/offline/edit-queue.d.ts.map +1 -0
- package/offline/edit-queue.js +1807 -0
- package/offline/edit-replay.d.ts +116 -0
- package/offline/edit-replay.d.ts.map +1 -0
- package/offline/edit-replay.js +392 -0
- package/offline/fetch-handler.d.ts +12 -0
- package/offline/fetch-handler.d.ts.map +1 -0
- package/offline/fetch-handler.js +65 -0
- package/offline/index.d.ts +52 -0
- package/offline/index.d.ts.map +1 -0
- package/offline/index.js +34 -0
- package/offline/indexeddb.d.ts +135 -0
- package/offline/indexeddb.d.ts.map +1 -0
- package/offline/indexeddb.js +888 -0
- package/offline/memory-store.d.ts +17 -0
- package/offline/memory-store.d.ts.map +1 -0
- package/offline/memory-store.js +183 -0
- package/offline/quota.d.ts +161 -0
- package/offline/quota.d.ts.map +1 -0
- package/offline/quota.js +370 -0
- package/offline/read-gate.d.ts +175 -0
- package/offline/read-gate.d.ts.map +1 -0
- package/offline/read-gate.js +252 -0
- package/offline/read-resource.d.ts +99 -0
- package/offline/read-resource.d.ts.map +1 -0
- package/offline/read-resource.js +156 -0
- package/offline/read.d.ts +50 -0
- package/offline/read.d.ts.map +1 -0
- package/offline/read.js +65 -0
- package/offline/region.d.ts +29 -0
- package/offline/region.d.ts.map +1 -0
- package/offline/region.js +1007 -0
- package/offline/replay-conflict.d.ts +183 -0
- package/offline/replay-conflict.d.ts.map +1 -0
- package/offline/replay-conflict.js +482 -0
- package/offline/selection.d.ts +140 -0
- package/offline/selection.d.ts.map +1 -0
- package/offline/selection.js +391 -0
- package/offline/snapshot.d.ts +132 -0
- package/offline/snapshot.d.ts.map +1 -0
- package/offline/snapshot.js +312 -0
- package/offline/status.d.ts +136 -0
- package/offline/status.d.ts.map +1 -0
- package/offline/status.js +479 -0
- package/offline/store-conformance.d.ts +48 -0
- package/offline/store-conformance.d.ts.map +1 -0
- package/offline/store-conformance.js +233 -0
- package/offline/tile-protocol.d.ts +81 -0
- package/offline/tile-protocol.d.ts.map +1 -0
- package/offline/tile-protocol.js +119 -0
- package/offline/types.d.ts +349 -0
- package/offline/types.d.ts.map +1 -0
- package/offline/types.js +75 -0
- package/package.json +14 -2
- package/scene-workspace/index.d.ts +2 -2
- package/scene-workspace/index.d.ts.map +1 -1
- package/scene-workspace/index.js +1 -1
- package/scene-workspace/scene-discovery.d.ts +111 -91
- package/scene-workspace/scene-discovery.d.ts.map +1 -1
- package/scene-workspace/scene-discovery.js +340 -92
- package/scene-workspace/scene-view.d.ts +6 -6
- package/scene-workspace/scene-view.d.ts.map +1 -1
- package/scene-workspace/scene-view.js +32 -6
- package/web-components/elements.d.ts +34 -0
- package/web-components/elements.d.ts.map +1 -1
- package/web-components/elements.js +82 -8
- package/web-components/index.d.ts +2 -0
- package/web-components/index.d.ts.map +1 -1
- package/web-components/index.js +3 -1
- package/web-components/map-chrome.d.ts +103 -0
- package/web-components/map-chrome.d.ts.map +1 -0
- package/web-components/map-chrome.js +325 -0
- package/web-components/widget-shell.d.ts +68 -0
- package/web-components/widget-shell.d.ts.map +1 -0
- package/web-components/widget-shell.js +224 -0
- package/widget-capabilities.d.ts +67 -0
- package/widget-capabilities.js +152 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional gRPC-Web peers are not part of a REST install. Resolution failures
|
|
3
|
+
* for those packages become an actionable error only after `transport:
|
|
4
|
+
* "grpc-web"` has actually loaded them. Connect/RPC failures are returned
|
|
5
|
+
* unchanged so a real gRPC error is not relabeled as a missing install.
|
|
6
|
+
*/
|
|
7
|
+
const OPTIONAL_GRPC_PACKAGES = ["@connectrpc/connect-web", "@connectrpc/connect", "@bufbuild/protobuf"];
|
|
8
|
+
const RESOLUTION_FAILURE = /ERR_MODULE_NOT_FOUND|ERR_PACKAGE_PATH_NOT_EXPORTED|Failed to resolve module specifier|Failed to fetch dynamically imported module|Cannot find package|Cannot find module/;
|
|
9
|
+
export class HonuaOptionalGrpcPeerError extends Error {
|
|
10
|
+
peer;
|
|
11
|
+
constructor(peer, cause) {
|
|
12
|
+
const message = [
|
|
13
|
+
`HonuaClient transport "grpc-web" could not load the optional peer "${peer}".`,
|
|
14
|
+
"Install @bufbuild/protobuf, @connectrpc/connect, and @connectrpc/connect-web.",
|
|
15
|
+
"REST, including createHonua, does not load them.",
|
|
16
|
+
].join(" ");
|
|
17
|
+
super(message, cause instanceof Error ? { cause } : undefined);
|
|
18
|
+
this.name = "HonuaOptionalGrpcPeerError";
|
|
19
|
+
this.peer = peer;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function isRecord(value) {
|
|
23
|
+
return typeof value === "object" && value !== null;
|
|
24
|
+
}
|
|
25
|
+
function isGenuineGrpcFailure(error) {
|
|
26
|
+
if (!isRecord(error))
|
|
27
|
+
return false;
|
|
28
|
+
if (error instanceof Error && error.name === "HonuaGrpcError")
|
|
29
|
+
return true;
|
|
30
|
+
return typeof error.code === "number";
|
|
31
|
+
}
|
|
32
|
+
function peerNamedByResolutionFailure(error) {
|
|
33
|
+
if (!(error instanceof Error))
|
|
34
|
+
return undefined;
|
|
35
|
+
const code = "code" in error && (typeof error.code === "string" || typeof error.code === "number") ? String(error.code) : "";
|
|
36
|
+
const message = `${code}\n${error.message}`;
|
|
37
|
+
if (!RESOLUTION_FAILURE.test(message))
|
|
38
|
+
return undefined;
|
|
39
|
+
return OPTIONAL_GRPC_PACKAGES.find((name) => message.includes(name));
|
|
40
|
+
}
|
|
41
|
+
function missingOptionalGrpcPeer(error) {
|
|
42
|
+
const seen = new Set();
|
|
43
|
+
let current = error;
|
|
44
|
+
while (isRecord(current) && !seen.has(current)) {
|
|
45
|
+
seen.add(current);
|
|
46
|
+
if (isGenuineGrpcFailure(current))
|
|
47
|
+
return undefined;
|
|
48
|
+
const peer = peerNamedByResolutionFailure(current);
|
|
49
|
+
if (peer)
|
|
50
|
+
return peer;
|
|
51
|
+
current = current.cause;
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
export function explainOptionalGrpcLoadFailure(error) {
|
|
56
|
+
const peer = missingOptionalGrpcPeer(error);
|
|
57
|
+
if (!peer)
|
|
58
|
+
return error;
|
|
59
|
+
return new HonuaOptionalGrpcPeerError(peer, error);
|
|
60
|
+
}
|
|
@@ -23,6 +23,7 @@ export declare class BasemapGalleryCompat {
|
|
|
23
23
|
activeBasemap: unknown;
|
|
24
24
|
private readonly subscriptions;
|
|
25
25
|
private readonly watchListeners;
|
|
26
|
+
private readonly widgetHost;
|
|
26
27
|
constructor(options?: BasemapGalleryCompatOptions);
|
|
27
28
|
load(): Promise<BasemapGalleryCompat>;
|
|
28
29
|
when(callback?: (widget: BasemapGalleryCompat) => void): Promise<BasemapGalleryCompat>;
|
|
@@ -33,6 +34,7 @@ export declare class BasemapGalleryCompat {
|
|
|
33
34
|
refresh(): unknown;
|
|
34
35
|
destroy(): void;
|
|
35
36
|
private resolveBasemap;
|
|
37
|
+
private pushWidgetHost;
|
|
36
38
|
private notifyWatchers;
|
|
37
39
|
}
|
|
38
40
|
//# sourceMappingURL=basemap-gallery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basemap-gallery.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/basemap-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"basemap-gallery.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/basemap-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,8BAA8B,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjF,MAAM,WAAW,0BAA0B;IACzC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,oBAAoB;IAC/B,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,WAAW,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,8BAA8B,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,2BAAgC;IA0B/C,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAiBrC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQ5F,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,0BAA0B;IAelG,IAAW,QAAQ,IAAI,SAAS,OAAO,EAAE,CAExC;IAEM,WAAW,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAO/C,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAcrC,OAAO,IAAI,OAAO;IAOlB,OAAO,IAAI,IAAI;IAOtB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;CAUvB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener, } from "./event-bus.js";
|
|
2
|
+
import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
|
|
2
3
|
export class BasemapGalleryCompat {
|
|
3
4
|
view;
|
|
4
5
|
map;
|
|
@@ -11,6 +12,7 @@ export class BasemapGalleryCompat {
|
|
|
11
12
|
activeBasemap;
|
|
12
13
|
subscriptions;
|
|
13
14
|
watchListeners;
|
|
15
|
+
widgetHost;
|
|
14
16
|
constructor(options = {}) {
|
|
15
17
|
this.view = options.view;
|
|
16
18
|
this.map = options.map ?? extractViewMap(options.view);
|
|
@@ -23,6 +25,8 @@ export class BasemapGalleryCompat {
|
|
|
23
25
|
this.activeBasemap = extractMapBasemap(this.map);
|
|
24
26
|
this.subscriptions = [];
|
|
25
27
|
this.watchListeners = new Map();
|
|
28
|
+
this.widgetHost = bindHonuaWidgetHost("honua-basemap-control", this.container, this.eventBus);
|
|
29
|
+
this.pushWidgetHost();
|
|
26
30
|
if (this.autoRefresh) {
|
|
27
31
|
this.subscriptions.push(this.eventBus.on("map.basemap-changed", (event) => {
|
|
28
32
|
this.activeBasemap = extractPayloadBasemap(event.payload);
|
|
@@ -73,6 +77,7 @@ export class BasemapGalleryCompat {
|
|
|
73
77
|
this.source = [...basemaps];
|
|
74
78
|
this.notifyWatchers("source", this.source);
|
|
75
79
|
this.eventBus.emit("basemap-gallery.updated", { basemapCount: this.source.length }, this);
|
|
80
|
+
this.pushWidgetHost();
|
|
76
81
|
}
|
|
77
82
|
select(basemapOrId) {
|
|
78
83
|
const basemap = this.resolveBasemap(basemapOrId);
|
|
@@ -112,6 +117,13 @@ export class BasemapGalleryCompat {
|
|
|
112
117
|
}
|
|
113
118
|
return undefined;
|
|
114
119
|
}
|
|
120
|
+
pushWidgetHost() {
|
|
121
|
+
pushWidgetHostState(this.widgetHost, {
|
|
122
|
+
view: this.view,
|
|
123
|
+
mode: "gallery",
|
|
124
|
+
basemaps: this.source,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
115
127
|
notifyWatchers(propertyName, value) {
|
|
116
128
|
const listeners = this.watchListeners.get(propertyName);
|
|
117
129
|
if (!listeners) {
|
package/esri-compat/basemap.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface BasemapCompatOptions {
|
|
|
4
4
|
title?: string;
|
|
5
5
|
baseLayers?: readonly unknown[];
|
|
6
6
|
referenceLayers?: readonly unknown[];
|
|
7
|
+
/** ArcGIS portal item, `{ id }` or a portal item id string. `load` fills the tiled layers from its data. */
|
|
8
|
+
portalItem?: unknown;
|
|
7
9
|
eventBus?: CompatEventBus;
|
|
8
10
|
}
|
|
9
11
|
export type BasemapLoadStatusCompat = "not-loaded" | "loading" | "loaded";
|
|
@@ -14,6 +16,7 @@ export declare class BasemapCompat {
|
|
|
14
16
|
readonly eventBus: CompatEventBus;
|
|
15
17
|
id: string | undefined;
|
|
16
18
|
title: string | undefined;
|
|
19
|
+
portalItem: unknown;
|
|
17
20
|
baseLayers: unknown[];
|
|
18
21
|
referenceLayers: unknown[];
|
|
19
22
|
loaded: boolean;
|
|
@@ -27,6 +30,7 @@ export declare class BasemapCompat {
|
|
|
27
30
|
when(callback?: (basemap: BasemapCompat) => void): Promise<BasemapCompat>;
|
|
28
31
|
watch(propertyName: string, listener: (value: unknown) => void): BasemapHandleCompat;
|
|
29
32
|
destroy(): void;
|
|
33
|
+
private populateFromPortalItem;
|
|
30
34
|
private notifyWatchers;
|
|
31
35
|
}
|
|
32
36
|
//# sourceMappingURL=basemap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basemap.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/basemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"basemap.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/basemap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AAGjG,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IACrC,4GAA4G;IAC5G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,SAAgB,QAAQ,EAAE,cAAc,CAAC;IAClC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,uBAAuB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,oBAAyB;WAavC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa;IAOxC,aAAa,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAM/C,kBAAkB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAM9C,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;IAiB9B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ/E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,mBAAmB;IAepF,OAAO,IAAI,IAAI;YAIR,sBAAsB;IA2BpC,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/basemap.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
|
+
import { PortalCompat } from "./portal.js";
|
|
2
3
|
export class BasemapCompat {
|
|
3
4
|
eventBus;
|
|
4
5
|
id;
|
|
5
6
|
title;
|
|
7
|
+
portalItem;
|
|
6
8
|
baseLayers;
|
|
7
9
|
referenceLayers;
|
|
8
10
|
loaded;
|
|
@@ -13,6 +15,7 @@ export class BasemapCompat {
|
|
|
13
15
|
options.eventBus ?? resolveCompatEventBus(options.baseLayers, options.referenceLayers) ?? new CompatEventBus();
|
|
14
16
|
this.id = options.id;
|
|
15
17
|
this.title = options.title ?? options.id;
|
|
18
|
+
this.portalItem = options.portalItem;
|
|
16
19
|
this.baseLayers = options.baseLayers ? [...options.baseLayers] : [];
|
|
17
20
|
this.referenceLayers = options.referenceLayers ? [...options.referenceLayers] : [];
|
|
18
21
|
this.loaded = false;
|
|
@@ -42,6 +45,7 @@ export class BasemapCompat {
|
|
|
42
45
|
this.loadStatus = "loading";
|
|
43
46
|
this.notifyWatchers("loadStatus", this.loadStatus);
|
|
44
47
|
this.eventBus.emit("basemap.loading", { id: this.id }, this);
|
|
48
|
+
await this.populateFromPortalItem();
|
|
45
49
|
this.loaded = true;
|
|
46
50
|
this.notifyWatchers("loaded", this.loaded);
|
|
47
51
|
this.loadStatus = "loaded";
|
|
@@ -72,6 +76,33 @@ export class BasemapCompat {
|
|
|
72
76
|
destroy() {
|
|
73
77
|
this.watchListeners.clear();
|
|
74
78
|
}
|
|
79
|
+
async populateFromPortalItem() {
|
|
80
|
+
if (this.baseLayers.length > 0 || this.portalItem === undefined || this.portalItem === null) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const portalItem = readPortalItem(this.portalItem);
|
|
84
|
+
if (!portalItem) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const portal = new PortalCompat({ portalUrl: portalItem.portalUrl });
|
|
88
|
+
try {
|
|
89
|
+
const data = await portal.getItemData(portalItem.id);
|
|
90
|
+
const layers = tiledLayersFromPortalData(data);
|
|
91
|
+
if (layers.title && (this.title === undefined || this.title === this.id)) {
|
|
92
|
+
this.title = layers.title;
|
|
93
|
+
this.notifyWatchers("title", this.title);
|
|
94
|
+
}
|
|
95
|
+
if (layers.base.length > 0) {
|
|
96
|
+
this.setBaseLayers(layers.base);
|
|
97
|
+
}
|
|
98
|
+
if (layers.reference.length > 0) {
|
|
99
|
+
this.setReferenceLayers(layers.reference);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// A private item or a missing data document leaves the basemap without tiles.
|
|
104
|
+
}
|
|
105
|
+
}
|
|
75
106
|
notifyWatchers(propertyName, value) {
|
|
76
107
|
const listeners = this.watchListeners.get(propertyName);
|
|
77
108
|
if (!listeners) {
|
|
@@ -82,3 +113,42 @@ export class BasemapCompat {
|
|
|
82
113
|
}
|
|
83
114
|
}
|
|
84
115
|
}
|
|
116
|
+
function readPortalItem(value) {
|
|
117
|
+
if (typeof value === "string" && value.length > 0) {
|
|
118
|
+
return { id: value };
|
|
119
|
+
}
|
|
120
|
+
if (!value || typeof value !== "object") {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
const record = value;
|
|
124
|
+
if (typeof record.id !== "string" || record.id.length === 0) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const portalUrl = typeof record.portal?.url === "string" ? record.portal.url : undefined;
|
|
128
|
+
return { id: record.id, portalUrl };
|
|
129
|
+
}
|
|
130
|
+
function tiledLayersFromPortalData(data) {
|
|
131
|
+
if (!data || typeof data !== "object") {
|
|
132
|
+
return { base: [], reference: [] };
|
|
133
|
+
}
|
|
134
|
+
const record = data;
|
|
135
|
+
const basemap = record.baseMap ?? record.basemap;
|
|
136
|
+
if (!basemap || typeof basemap !== "object") {
|
|
137
|
+
return { base: [], reference: [] };
|
|
138
|
+
}
|
|
139
|
+
const source = basemap;
|
|
140
|
+
const title = typeof source.title === "string" ? source.title : typeof record.title === "string" ? record.title : undefined;
|
|
141
|
+
return {
|
|
142
|
+
title,
|
|
143
|
+
base: portalLayers(source.baseMapLayers ?? source.baseLayers),
|
|
144
|
+
reference: portalLayers(source.referenceLayers),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function portalLayers(value) {
|
|
148
|
+
if (!Array.isArray(value)) {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
return value.filter((layer) => {
|
|
152
|
+
return Boolean(layer) && typeof layer === "object" && typeof layer.url === "string";
|
|
153
|
+
});
|
|
154
|
+
}
|
|
@@ -23,6 +23,7 @@ export declare class BookmarksCompat {
|
|
|
23
23
|
bookmarks: BookmarkCompatItem[];
|
|
24
24
|
activeBookmark: BookmarkCompatItem | undefined;
|
|
25
25
|
private readonly watchListeners;
|
|
26
|
+
private readonly widgetHost;
|
|
26
27
|
constructor(options?: BookmarksCompatOptions);
|
|
27
28
|
load(): Promise<BookmarksCompat>;
|
|
28
29
|
when(callback?: (widget: BookmarksCompat) => void): Promise<BookmarksCompat>;
|
|
@@ -31,6 +32,7 @@ export declare class BookmarksCompat {
|
|
|
31
32
|
remove(nameOrBookmark: string | BookmarkCompatItem): boolean;
|
|
32
33
|
goTo(nameOrBookmark: string | BookmarkCompatItem): Promise<BookmarkCompatItem | undefined>;
|
|
33
34
|
destroy(): void;
|
|
35
|
+
private pushWidgetHost;
|
|
34
36
|
private notifyWatchers;
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=bookmarks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/bookmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"bookmarks.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/bookmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AAGjG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,eAAe;IAC1B,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,yBAAyB,CAAC;IACtC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,cAAc,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,sBAA2B;IAa1C,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAgBhC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAQlF,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,qBAAqB;IAetF,GAAG,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAOvC,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO;IAmBtD,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAiBhG,OAAO,IAAI,IAAI;IAKtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/bookmarks.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
|
+
import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
|
|
2
3
|
export class BookmarksCompat {
|
|
3
4
|
view;
|
|
4
5
|
container;
|
|
@@ -8,6 +9,7 @@ export class BookmarksCompat {
|
|
|
8
9
|
bookmarks;
|
|
9
10
|
activeBookmark;
|
|
10
11
|
watchListeners;
|
|
12
|
+
widgetHost;
|
|
11
13
|
constructor(options = {}) {
|
|
12
14
|
this.view = options.view;
|
|
13
15
|
this.container = options.container;
|
|
@@ -17,6 +19,8 @@ export class BookmarksCompat {
|
|
|
17
19
|
this.bookmarks = options.bookmarks ? [...options.bookmarks] : [];
|
|
18
20
|
this.activeBookmark = undefined;
|
|
19
21
|
this.watchListeners = new Map();
|
|
22
|
+
this.widgetHost = bindHonuaWidgetHost("honua-bookmarks", this.container, this.eventBus);
|
|
23
|
+
this.pushWidgetHost();
|
|
20
24
|
}
|
|
21
25
|
async load() {
|
|
22
26
|
if (this.loaded) {
|
|
@@ -56,6 +60,7 @@ export class BookmarksCompat {
|
|
|
56
60
|
this.bookmarks.push(bookmark);
|
|
57
61
|
this.notifyWatchers("bookmarks", this.bookmarks);
|
|
58
62
|
this.eventBus.emit("bookmarks.updated", { bookmarkCount: this.bookmarks.length }, this);
|
|
63
|
+
this.pushWidgetHost();
|
|
59
64
|
}
|
|
60
65
|
remove(nameOrBookmark) {
|
|
61
66
|
const index = typeof nameOrBookmark === "string"
|
|
@@ -89,6 +94,13 @@ export class BookmarksCompat {
|
|
|
89
94
|
}
|
|
90
95
|
destroy() {
|
|
91
96
|
this.watchListeners.clear();
|
|
97
|
+
this.widgetHost?.destroy();
|
|
98
|
+
}
|
|
99
|
+
pushWidgetHost() {
|
|
100
|
+
pushWidgetHostState(this.widgetHost, {
|
|
101
|
+
view: this.view,
|
|
102
|
+
bookmarkList: this.bookmarks,
|
|
103
|
+
});
|
|
92
104
|
}
|
|
93
105
|
notifyWatchers(propertyName, value) {
|
|
94
106
|
const listeners = this.watchListeners.get(propertyName);
|
|
@@ -53,10 +53,12 @@ export declare class BaseControlCompat {
|
|
|
53
53
|
}
|
|
54
54
|
export declare class HomeCompat extends BaseControlCompat {
|
|
55
55
|
viewpoint: HomeViewpointCompat;
|
|
56
|
+
private widgetHost;
|
|
56
57
|
protected get controlName(): string;
|
|
57
58
|
constructor(options?: HomeCompatOptions);
|
|
58
59
|
go(): Promise<void>;
|
|
59
60
|
reset(): void;
|
|
61
|
+
private pushWidgetHost;
|
|
60
62
|
}
|
|
61
63
|
export interface BasemapToggleCompatOptions {
|
|
62
64
|
view?: unknown;
|
|
@@ -69,9 +71,11 @@ export declare class BasemapToggleCompat extends BaseControlCompat {
|
|
|
69
71
|
readonly map: unknown;
|
|
70
72
|
activeBasemap: unknown;
|
|
71
73
|
nextBasemap: unknown;
|
|
74
|
+
private widgetHost;
|
|
72
75
|
protected get controlName(): string;
|
|
73
76
|
constructor(options?: BasemapToggleCompatOptions);
|
|
74
77
|
toggle(): unknown;
|
|
78
|
+
private pushWidgetHost;
|
|
75
79
|
}
|
|
76
80
|
export type ScaleBarUnitCompat = "metric" | "imperial" | "dual";
|
|
77
81
|
export interface ScaleBarCompatOptions {
|
|
@@ -84,10 +88,12 @@ export declare class ScaleBarCompat extends BaseControlCompat {
|
|
|
84
88
|
unit: ScaleBarUnitCompat;
|
|
85
89
|
scale: number | undefined;
|
|
86
90
|
text: string;
|
|
91
|
+
private widgetHost;
|
|
87
92
|
protected get controlName(): string;
|
|
88
93
|
constructor(options?: ScaleBarCompatOptions);
|
|
89
94
|
protected onLoad(): void;
|
|
90
95
|
refresh(): string;
|
|
96
|
+
private pushWidgetHost;
|
|
91
97
|
}
|
|
92
98
|
export interface LocateCompatOptions {
|
|
93
99
|
view?: unknown;
|
|
@@ -113,10 +119,12 @@ export declare class LocateCompat extends BaseControlCompat {
|
|
|
113
119
|
/** The latest locate result, so a directions stop can clone it. */
|
|
114
120
|
graphic: GraphicCompat | undefined;
|
|
115
121
|
private readonly locateProvider;
|
|
122
|
+
private widgetHost;
|
|
116
123
|
protected get controlName(): string;
|
|
117
124
|
constructor(options?: LocateCompatOptions);
|
|
118
125
|
attachContainer(element: HTMLElement): void;
|
|
119
126
|
locate(): Promise<LocatePositionCompat>;
|
|
127
|
+
private pushWidgetHost;
|
|
120
128
|
}
|
|
121
129
|
export interface CompassCompatOptions {
|
|
122
130
|
view?: unknown;
|
|
@@ -125,9 +133,12 @@ export interface CompassCompatOptions {
|
|
|
125
133
|
}
|
|
126
134
|
export declare class CompassCompat extends BaseControlCompat {
|
|
127
135
|
orientation: number;
|
|
136
|
+
private widgetHost;
|
|
128
137
|
protected get controlName(): string;
|
|
129
138
|
constructor(options?: CompassCompatOptions);
|
|
139
|
+
attachContainer(element: HTMLElement): void;
|
|
130
140
|
rotateTo(rotation: number): number;
|
|
141
|
+
private pushWidgetHost;
|
|
131
142
|
reset(): number;
|
|
132
143
|
goToNorth(): number;
|
|
133
144
|
}
|
|
@@ -139,12 +150,14 @@ export interface ZoomCompatOptions {
|
|
|
139
150
|
}
|
|
140
151
|
export declare class ZoomCompat extends BaseControlCompat {
|
|
141
152
|
readonly layout: "vertical" | "horizontal";
|
|
153
|
+
private widgetHost;
|
|
142
154
|
protected get controlName(): string;
|
|
143
155
|
constructor(options?: ZoomCompatOptions);
|
|
144
156
|
attachContainer(element: HTMLElement): void;
|
|
145
157
|
zoomIn(step?: number): number | undefined;
|
|
146
158
|
zoomOut(step?: number): number | undefined;
|
|
147
159
|
private adjustZoom;
|
|
160
|
+
private pushWidgetHost;
|
|
148
161
|
}
|
|
149
162
|
export interface FullscreenCompatOptions {
|
|
150
163
|
view?: unknown;
|
|
@@ -155,10 +168,12 @@ export interface FullscreenCompatOptions {
|
|
|
155
168
|
export declare class FullscreenCompat extends BaseControlCompat {
|
|
156
169
|
readonly element: HTMLElement | null;
|
|
157
170
|
active: boolean;
|
|
171
|
+
private widgetHost;
|
|
158
172
|
protected get controlName(): string;
|
|
159
173
|
constructor(options?: FullscreenCompatOptions);
|
|
160
174
|
enter(): void;
|
|
161
175
|
exit(): void;
|
|
176
|
+
private pushWidgetHost;
|
|
162
177
|
toggle(force?: boolean): boolean;
|
|
163
178
|
}
|
|
164
179
|
export interface AttributionCompatOptions {
|
|
@@ -173,10 +188,13 @@ export declare class AttributionCompat extends BaseControlCompat {
|
|
|
173
188
|
readonly map: unknown;
|
|
174
189
|
itemDelimiter: string;
|
|
175
190
|
attributions: string[];
|
|
191
|
+
private widgetHost;
|
|
176
192
|
protected get controlName(): string;
|
|
177
193
|
constructor(options?: AttributionCompatOptions);
|
|
194
|
+
attachContainer(element: HTMLElement): void;
|
|
178
195
|
addAttribution(value: string): void;
|
|
179
196
|
removeAttribution(value: string): boolean;
|
|
197
|
+
private pushWidgetHost;
|
|
180
198
|
getText(): string;
|
|
181
199
|
}
|
|
182
200
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/controls.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,uBAAuB,EAG7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/controls.ts"],"names":[],"mappings":"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"}
|