@honua/react 0.1.7-beta.0 → 0.1.10-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/control-plane/admin-client.d.ts +89 -0
- package/control-plane/admin-client.d.ts.map +1 -0
- package/control-plane/admin-client.js +200 -0
- package/control-plane/client.d.ts +1 -1
- package/control-plane/client.d.ts.map +1 -1
- package/control-plane/client.js +145 -11
- package/control-plane/commands/catalog.d.ts +133 -0
- package/control-plane/commands/catalog.d.ts.map +1 -0
- package/control-plane/commands/catalog.js +365 -0
- package/control-plane/commands/errors.d.ts +96 -0
- package/control-plane/commands/errors.d.ts.map +1 -0
- package/control-plane/commands/errors.js +130 -0
- package/control-plane/commands/identity.d.ts +71 -0
- package/control-plane/commands/identity.d.ts.map +1 -0
- package/control-plane/commands/identity.js +0 -0
- package/control-plane/commands/index.d.ts +39 -0
- package/control-plane/commands/index.d.ts.map +1 -0
- package/control-plane/commands/index.js +34 -0
- package/control-plane/commands/runtime.d.ts +146 -0
- package/control-plane/commands/runtime.d.ts.map +1 -0
- package/control-plane/commands/runtime.js +330 -0
- package/control-plane/commands/types.d.ts +228 -0
- package/control-plane/commands/types.d.ts.map +1 -0
- package/control-plane/commands/types.js +30 -0
- package/control-plane/commands/validate.d.ts +27 -0
- package/control-plane/commands/validate.d.ts.map +1 -0
- package/control-plane/commands/validate.js +132 -0
- package/control-plane/generated/admin-api.d.ts +30265 -0
- package/control-plane/generated/admin-api.d.ts.map +1 -0
- package/control-plane/generated/admin-api.js +5 -0
- package/control-plane/generated/admin-operations.d.ts +4053 -0
- package/control-plane/generated/admin-operations.d.ts.map +1 -0
- package/control-plane/generated/admin-operations.js +820 -0
- package/control-plane/index.d.ts +11 -0
- package/control-plane/index.d.ts.map +1 -1
- package/control-plane/index.js +8 -0
- package/control-plane/types.d.ts +14 -0
- package/control-plane/types.d.ts.map +1 -1
- package/core/client.d.ts.map +1 -1
- package/core/client.js +29 -31
- package/core/credential-redaction.d.ts +163 -0
- package/core/credential-redaction.d.ts.map +1 -0
- package/core/credential-redaction.js +389 -0
- package/core/error-classifications.d.ts +15 -0
- package/core/error-classifications.d.ts.map +1 -1
- package/core/error-classifications.js +15 -0
- package/core/error-code-registry.d.ts +15 -0
- package/core/error-code-registry.d.ts.map +1 -1
- package/core/error-code-registry.js +15 -0
- package/core/error-envelope.d.ts +31 -0
- package/core/error-envelope.d.ts.map +1 -1
- package/core/error-envelope.js +11 -0
- package/core/errors.d.ts +15 -3
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +254 -2
- package/core/geometry-input-sr.d.ts +3 -0
- package/core/geometry-input-sr.d.ts.map +1 -0
- package/core/geometry-input-sr.js +28 -0
- package/core/geoservices.d.ts.map +1 -1
- package/core/geoservices.js +33 -6
- package/core/grpc-adapter.d.ts +2 -2
- package/core/grpc-adapter.d.ts.map +1 -1
- package/core/grpc-adapter.js +41 -9
- package/core/job-run-errors.d.ts +10 -0
- package/core/job-run-errors.d.ts.map +1 -0
- package/core/job-run-errors.js +14 -0
- package/core/job-run-lifecycle.d.ts +34 -0
- package/core/job-run-lifecycle.d.ts.map +1 -0
- package/core/job-run-lifecycle.js +193 -0
- package/core/ogc-processes.d.ts +38 -31
- package/core/ogc-processes.d.ts.map +1 -1
- package/core/ogc-processes.js +123 -173
- package/core/pbf-decoder.d.ts.map +1 -1
- package/core/pbf-decoder.js +16 -4
- package/core/process-runner.js +15 -100
- package/core/protocol-transport.d.ts +6 -1
- package/core/protocol-transport.d.ts.map +1 -1
- package/core/request-pipeline.d.ts +6 -3
- package/core/request-pipeline.d.ts.map +1 -1
- package/core/request-pipeline.js +28 -11
- package/core/spatial-filter.d.ts +4 -4
- package/core/spatial-filter.d.ts.map +1 -1
- package/core/spatial-filter.js +7 -7
- package/core/surfaces.d.ts +2 -8
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +21 -112
- package/core/types.d.ts +21 -9
- package/core/types.d.ts.map +1 -1
- package/esri-compat/class-breaks-renderer.d.ts +2 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -1
- package/esri-compat/class-breaks-renderer.js +7 -0
- package/esri-compat/controls.d.ts +10 -1
- package/esri-compat/controls.d.ts.map +1 -1
- package/esri-compat/controls.js +86 -2
- package/esri-compat/directions.d.ts +35 -0
- package/esri-compat/directions.d.ts.map +1 -1
- package/esri-compat/directions.js +153 -2
- package/esri-compat/expand.d.ts +1 -0
- package/esri-compat/expand.d.ts.map +1 -1
- package/esri-compat/expand.js +61 -0
- package/esri-compat/feature-layer.d.ts +29 -4
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +335 -13
- package/esri-compat/geometry-engine.d.ts +4 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -1
- package/esri-compat/geometry-engine.js +8 -1
- package/esri-compat/graphic.d.ts +7 -4
- package/esri-compat/graphic.d.ts.map +1 -1
- package/esri-compat/legend.d.ts +2 -1
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +15 -0
- package/esri-compat/map-view-mount.d.ts +48 -0
- package/esri-compat/map-view-mount.d.ts.map +1 -0
- package/esri-compat/map-view-mount.js +344 -0
- package/esri-compat/map-view.d.ts +38 -6
- package/esri-compat/map-view.d.ts.map +1 -1
- package/esri-compat/map-view.js +467 -33
- package/esri-compat/portal.d.ts +2 -0
- package/esri-compat/portal.d.ts.map +1 -1
- package/esri-compat/portal.js +7 -2
- package/esri-compat/renderer-objects.d.ts +7 -2
- package/esri-compat/renderer-objects.d.ts.map +1 -1
- package/esri-compat/renderer-objects.js +16 -5
- package/esri-compat/route-layer.d.ts +8 -0
- package/esri-compat/route-layer.d.ts.map +1 -1
- package/esri-compat/route-layer.js +24 -4
- package/esri-compat/route-task.d.ts +5 -1
- package/esri-compat/route-task.d.ts.map +1 -1
- package/esri-compat/route-task.js +119 -7
- package/esri-compat/scene-view.d.ts.map +1 -1
- package/esri-compat/scene-view.js +1 -0
- package/esri-compat/search.d.ts +2 -1
- package/esri-compat/search.d.ts.map +1 -1
- package/esri-compat/search.js +52 -2
- package/esri-compat/unique-value-renderer.d.ts +2 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -1
- package/esri-compat/unique-value-renderer.js +7 -0
- package/esri-compat/web-map.d.ts +10 -0
- package/esri-compat/web-map.d.ts.map +1 -1
- package/esri-compat/web-map.js +102 -0
- package/gen/geospatial/v1/common_pb.d.ts +514 -0
- package/gen/geospatial/v1/common_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/common_pb.js +335 -0
- package/gen/geospatial/v1/execution_types_pb.d.ts +1186 -0
- package/gen/geospatial/v1/execution_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/execution_types_pb.js +396 -0
- package/gen/geospatial/v1/feature_service_pb.d.ts +403 -0
- package/gen/geospatial/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/feature_service_pb.js +47 -0
- package/gen/geospatial/v1/index.d.ts +5 -0
- package/gen/geospatial/v1/index.d.ts.map +1 -0
- package/gen/geospatial/v1/index.js +9 -0
- package/gen/geospatial/v1/spatial_types_pb.d.ts +285 -0
- package/gen/geospatial/v1/spatial_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/spatial_types_pb.js +58 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts +379 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.js +151 -0
- package/generated-app/projection.d.ts.map +1 -1
- package/generated-app/projection.js +10 -1
- package/map/webmap-maplibre.d.ts +2 -1
- package/map/webmap-maplibre.d.ts.map +1 -1
- package/map/webmap-maplibre.js +3 -0
- package/package.json +3 -3
- package/query-planner/geoservices.d.ts.map +1 -1
- package/query-planner/geoservices.js +2 -0
- package/query-planner/grpc.d.ts +4 -4
- package/query-planner/grpc.d.ts.map +1 -1
- package/query-planner/grpc.js +11 -11
- package/query-planner/types.d.ts +6 -4
- package/query-planner/types.d.ts.map +1 -1
- package/realtime/honua-server.d.ts +4 -0
- package/realtime/honua-server.d.ts.map +1 -1
- package/realtime/honua-server.js +10 -0
- package/realtime/resumable.js +9 -0
- package/realtime/types.d.ts +8 -0
- package/realtime/types.d.ts.map +1 -1
- package/runtime/errors.d.ts +1 -1
- package/runtime/errors.d.ts.map +1 -1
- package/runtime/errors.js +2 -0
- package/runtime/generated/map-package-schema-meta.d.ts +11 -0
- package/runtime/generated/map-package-schema-meta.d.ts.map +1 -0
- package/runtime/generated/map-package-schema-meta.js +12 -0
- package/runtime/generated/map-package-schema-validator.d.ts +16 -0
- package/runtime/generated/map-package-schema-validator.d.ts.map +1 -0
- package/runtime/generated/map-package-schema-validator.js +1422 -0
- package/runtime/index.d.ts +5 -1
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +6 -0
- package/runtime/map-package-export.d.ts +151 -0
- package/runtime/map-package-export.d.ts.map +1 -0
- package/runtime/map-package-export.js +636 -0
- package/runtime/map-package-validation.d.ts +21 -1
- package/runtime/map-package-validation.d.ts.map +1 -1
- package/runtime/map-package-validation.js +132 -95
- package/runtime/map-package.d.ts +80 -0
- package/runtime/map-package.d.ts.map +1 -1
- package/studio/capability-manifest.d.ts +10 -0
- package/studio/capability-manifest.d.ts.map +1 -1
- package/studio/capability-manifest.js +38 -0
- package/studio/chart-spec.d.ts +6 -6
- package/studio/chart-spec.d.ts.map +1 -1
- package/studio/chart-spec.js +6 -6
- package/studio/command-adapter.d.ts +35 -0
- package/studio/command-adapter.d.ts.map +1 -0
- package/studio/command-adapter.js +36 -0
- package/studio/generated/studio-api.d.ts +1062 -0
- package/studio/generated/studio-api.d.ts.map +1 -0
- package/studio/generated/studio-api.js +4 -0
- package/studio/index.d.ts +25 -13
- package/studio/index.d.ts.map +1 -1
- package/studio/index.js +21 -10
- package/studio/lifecycle-client.d.ts +262 -22
- package/studio/lifecycle-client.d.ts.map +1 -1
- package/studio/lifecycle-client.js +543 -24
- package/studio/lifecycle-errors.d.ts +8 -2
- package/studio/lifecycle-errors.d.ts.map +1 -1
- package/studio/lifecycle-errors.js +6 -1
- package/studio/lifecycle-types.d.ts +237 -38
- package/studio/lifecycle-types.d.ts.map +1 -1
- package/studio/lifecycle-types.js +5 -12
- package/studio/publication-status.d.ts +55 -0
- package/studio/publication-status.d.ts.map +1 -0
- package/studio/publication-status.js +103 -0
- package/studio/types.d.ts +37 -7
- package/studio/types.d.ts.map +1 -1
- package/studio/types.js +5 -3
- package/studio/validate.d.ts.map +1 -1
- package/studio/validate.js +104 -7
- package/style/renderers.d.ts +6 -1
- package/style/renderers.d.ts.map +1 -1
- package/style/renderers.js +11 -6
- package/style/visual-variables.d.ts +43 -0
- package/style/visual-variables.d.ts.map +1 -0
- package/style/visual-variables.js +183 -0
- package/webmap/convert-layer.d.ts +2 -1
- package/webmap/convert-layer.d.ts.map +1 -1
- package/webmap/convert-layer.js +20 -3
- package/webmap/convert-renderer.d.ts +10 -3
- package/webmap/convert-renderer.d.ts.map +1 -1
- package/webmap/convert-renderer.js +190 -36
- package/webmap/index.d.ts +1 -0
- package/webmap/index.d.ts.map +1 -1
- package/webmap/parse.d.ts +2 -1
- package/webmap/parse.d.ts.map +1 -1
- package/webmap/parse.js +1 -1
- package/gen/honua/v1/feature_service_pb.d.ts +0 -918
- package/gen/honua/v1/feature_service_pb.d.ts.map +0 -1
- package/gen/honua/v1/feature_service_pb.js +0 -375
package/esri-compat/controls.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener, } from "./event-bus.js";
|
|
2
|
+
import { GraphicCompat } from "./graphic.js";
|
|
2
3
|
export class BaseControlCompat {
|
|
3
4
|
view;
|
|
4
5
|
container;
|
|
@@ -193,6 +194,10 @@ export class ScaleBarCompat extends BaseControlCompat {
|
|
|
193
194
|
export class LocateCompat extends BaseControlCompat {
|
|
194
195
|
zoom;
|
|
195
196
|
lastPosition;
|
|
197
|
+
/** Mirrors the Esri Locate view model state watched by `watchUtils.init`. */
|
|
198
|
+
viewModel;
|
|
199
|
+
/** The latest locate result, so a directions stop can clone it. */
|
|
200
|
+
graphic;
|
|
196
201
|
locateProvider;
|
|
197
202
|
get controlName() {
|
|
198
203
|
return "locate";
|
|
@@ -201,14 +206,26 @@ export class LocateCompat extends BaseControlCompat {
|
|
|
201
206
|
super(options);
|
|
202
207
|
this.zoom = options.zoom;
|
|
203
208
|
this.lastPosition = undefined;
|
|
209
|
+
this.graphic = undefined;
|
|
210
|
+
this.viewModel = { state: "ready" };
|
|
204
211
|
this.locateProvider = options.locateProvider ?? getDefaultLocateProvider();
|
|
212
|
+
mountLocateButton(this);
|
|
213
|
+
}
|
|
214
|
+
attachContainer(element) {
|
|
215
|
+
this.container = element;
|
|
216
|
+
mountLocateButton(this);
|
|
205
217
|
}
|
|
206
218
|
async locate() {
|
|
219
|
+
this.viewModel.state = "disabled";
|
|
207
220
|
this.eventBus.emit("locate.start", undefined, this);
|
|
208
221
|
try {
|
|
209
222
|
const position = await this.locateProvider();
|
|
210
223
|
this.lastPosition = position;
|
|
224
|
+
this.graphic = new GraphicCompat({
|
|
225
|
+
geometry: { x: position.coords.longitude, y: position.coords.latitude },
|
|
226
|
+
});
|
|
211
227
|
this.notifyWatchers("lastPosition", this.lastPosition);
|
|
228
|
+
this.notifyWatchers("graphic", this.graphic);
|
|
212
229
|
const center = [position.coords.longitude, position.coords.latitude];
|
|
213
230
|
const target = {
|
|
214
231
|
center,
|
|
@@ -225,9 +242,11 @@ export class LocateCompat extends BaseControlCompat {
|
|
|
225
242
|
center,
|
|
226
243
|
zoom: this.zoom,
|
|
227
244
|
}, this);
|
|
245
|
+
this.viewModel.state = "ready";
|
|
228
246
|
return position;
|
|
229
247
|
}
|
|
230
248
|
catch (error) {
|
|
249
|
+
this.viewModel.state = "ready";
|
|
231
250
|
this.eventBus.emit("locate.error", { error }, this);
|
|
232
251
|
throw error;
|
|
233
252
|
}
|
|
@@ -269,6 +288,11 @@ export class ZoomCompat extends BaseControlCompat {
|
|
|
269
288
|
constructor(options = {}) {
|
|
270
289
|
super(options);
|
|
271
290
|
this.layout = options.layout ?? "vertical";
|
|
291
|
+
mountZoomButtons(this);
|
|
292
|
+
}
|
|
293
|
+
attachContainer(element) {
|
|
294
|
+
this.container = element;
|
|
295
|
+
mountZoomButtons(this);
|
|
272
296
|
}
|
|
273
297
|
zoomIn(step = 1) {
|
|
274
298
|
return this.adjustZoom(Math.abs(step));
|
|
@@ -277,16 +301,76 @@ export class ZoomCompat extends BaseControlCompat {
|
|
|
277
301
|
return this.adjustZoom(-Math.abs(step));
|
|
278
302
|
}
|
|
279
303
|
adjustZoom(delta) {
|
|
280
|
-
if (!isRecord(this.view)
|
|
304
|
+
if (!isRecord(this.view)) {
|
|
281
305
|
return undefined;
|
|
282
306
|
}
|
|
283
|
-
const
|
|
307
|
+
const current = typeof this.view.zoom === "number" && Number.isFinite(this.view.zoom) ? this.view.zoom : 2;
|
|
308
|
+
const next = current + delta;
|
|
284
309
|
this.view.zoom = next;
|
|
310
|
+
const goTo = this.view.goTo;
|
|
311
|
+
if (typeof goTo === "function") {
|
|
312
|
+
void goTo.call(this.view, { zoom: next });
|
|
313
|
+
}
|
|
285
314
|
this.notifyWatchers("zoom", next);
|
|
286
315
|
this.eventBus.emit("zoom.changed", { zoom: next, delta }, this);
|
|
287
316
|
return next;
|
|
288
317
|
}
|
|
289
318
|
}
|
|
319
|
+
function mountZoomButtons(zoom) {
|
|
320
|
+
const container = zoom.container;
|
|
321
|
+
const element = typeof HTMLElement !== "undefined" && container instanceof HTMLElement
|
|
322
|
+
? container
|
|
323
|
+
: typeof container === "string" && typeof document !== "undefined"
|
|
324
|
+
? document.getElementById(container)
|
|
325
|
+
: null;
|
|
326
|
+
if (!element) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
element.querySelector(":scope > .honua-zoom")?.remove();
|
|
330
|
+
const bar = document.createElement("div");
|
|
331
|
+
bar.className = "honua-zoom";
|
|
332
|
+
bar.style.display = "flex";
|
|
333
|
+
bar.style.flexDirection = zoom.layout === "horizontal" ? "row" : "column";
|
|
334
|
+
bar.style.gap = "4px";
|
|
335
|
+
for (const [label, step] of [
|
|
336
|
+
["+", 1],
|
|
337
|
+
["−", -1],
|
|
338
|
+
]) {
|
|
339
|
+
const button = document.createElement("button");
|
|
340
|
+
button.type = "button";
|
|
341
|
+
button.textContent = label;
|
|
342
|
+
button.addEventListener("click", () => {
|
|
343
|
+
if (step > 0) {
|
|
344
|
+
zoom.zoomIn();
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
zoom.zoomOut();
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
bar.append(button);
|
|
351
|
+
}
|
|
352
|
+
element.append(bar);
|
|
353
|
+
}
|
|
354
|
+
function mountLocateButton(locate) {
|
|
355
|
+
const container = locate.container;
|
|
356
|
+
const element = typeof HTMLElement !== "undefined" && container instanceof HTMLElement
|
|
357
|
+
? container
|
|
358
|
+
: typeof container === "string" && typeof document !== "undefined"
|
|
359
|
+
? document.getElementById(container)
|
|
360
|
+
: null;
|
|
361
|
+
if (!element) {
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
element.querySelector(":scope > .honua-locate")?.remove();
|
|
365
|
+
const button = document.createElement("button");
|
|
366
|
+
button.type = "button";
|
|
367
|
+
button.className = "honua-locate";
|
|
368
|
+
button.textContent = "Locate";
|
|
369
|
+
button.addEventListener("click", () => {
|
|
370
|
+
void locate.locate();
|
|
371
|
+
});
|
|
372
|
+
element.append(button);
|
|
373
|
+
}
|
|
290
374
|
export class FullscreenCompat extends BaseControlCompat {
|
|
291
375
|
element;
|
|
292
376
|
active;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { CompatEventBus } from "./event-bus.js";
|
|
2
2
|
import { RouteLayerCompat, type RouteLayerCompatOptions, type RouteSolveResultCompat, type RouteStopCompat } from "./route-layer.js";
|
|
3
|
+
import { type RouteTaskSolveResultCompat } from "./route-task.js";
|
|
3
4
|
export interface DirectionsCompatOptions {
|
|
4
5
|
view?: unknown;
|
|
5
6
|
container?: unknown;
|
|
6
7
|
layer?: RouteLayerCompat;
|
|
7
8
|
eventBus?: CompatEventBus;
|
|
8
9
|
routeProvider?: RouteLayerCompatOptions["routeProvider"];
|
|
10
|
+
routeServiceUrl?: string;
|
|
11
|
+
apiKey?: string;
|
|
9
12
|
stops?: readonly RouteStopCompat[];
|
|
10
13
|
useDefaultRouteLayer?: boolean;
|
|
11
14
|
showSaveAsButton?: boolean;
|
|
@@ -42,4 +45,36 @@ export declare class DirectionsCompat {
|
|
|
42
45
|
destroy(): void;
|
|
43
46
|
private notifyWatchers;
|
|
44
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* The Esri `DirectionsViewModel` shape used by webpack 4.x apps: a view, a stop
|
|
50
|
+
* collection, `load`, `getDirections`, and `reset`. With no custom route
|
|
51
|
+
* provider, `load` reads travel modes and `getDirections` solves
|
|
52
|
+
* `routeServiceUrl` (the Esri world route service by default).
|
|
53
|
+
*/
|
|
54
|
+
export declare class DirectionsViewModelCompat {
|
|
55
|
+
view: unknown;
|
|
56
|
+
loaded: boolean;
|
|
57
|
+
selectedTravelMode: unknown;
|
|
58
|
+
readonly routeServiceUrl: string;
|
|
59
|
+
/** Filled from the route service during `load`. `find` returns undefined until then. */
|
|
60
|
+
readonly travelModes: Array<{
|
|
61
|
+
name?: string;
|
|
62
|
+
}>;
|
|
63
|
+
readonly layer: RouteLayerCompat;
|
|
64
|
+
readonly stops: {
|
|
65
|
+
removeAll(): void;
|
|
66
|
+
addMany(stops: readonly unknown[]): void;
|
|
67
|
+
};
|
|
68
|
+
private readonly apiKey;
|
|
69
|
+
private readonly routeProvider;
|
|
70
|
+
constructor(options?: {
|
|
71
|
+
view?: unknown;
|
|
72
|
+
routeServiceUrl?: string;
|
|
73
|
+
apiKey?: string;
|
|
74
|
+
routeProvider?: RouteLayerCompatOptions["routeProvider"];
|
|
75
|
+
});
|
|
76
|
+
load(): Promise<this>;
|
|
77
|
+
getDirections(): Promise<RouteTaskSolveResultCompat | undefined>;
|
|
78
|
+
reset(): void;
|
|
79
|
+
}
|
|
45
80
|
//# sourceMappingURL=directions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directions.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/directions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directions.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/directions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { esriConfig } from "./esri-config.js";
|
|
1
2
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
|
-
import {
|
|
3
|
+
import { identityManager } from "./identity-manager.js";
|
|
4
|
+
import { RouteLayerCompat, routeStopFromUnknown, } from "./route-layer.js";
|
|
5
|
+
import { RouteTaskCompat, arcGisRouteServiceProvider } from "./route-task.js";
|
|
6
|
+
/** Default `routeServiceUrl` on Esri `DirectionsViewModel` for the 4.x widget apps. */
|
|
7
|
+
const DEFAULT_ROUTE_SERVICE_URL = "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World";
|
|
3
8
|
export class DirectionsCompat {
|
|
4
9
|
view;
|
|
5
10
|
container;
|
|
@@ -19,13 +24,16 @@ export class DirectionsCompat {
|
|
|
19
24
|
this.loadStatus = "not-loaded";
|
|
20
25
|
this.useDefaultRouteLayer = options.useDefaultRouteLayer ?? true;
|
|
21
26
|
this.showSaveAsButton = options.showSaveAsButton ?? false;
|
|
27
|
+
const routeServiceUrl = options.routeServiceUrl ?? DEFAULT_ROUTE_SERVICE_URL;
|
|
22
28
|
this.layer =
|
|
23
29
|
options.layer ??
|
|
24
30
|
new RouteLayerCompat({
|
|
31
|
+
url: routeServiceUrl,
|
|
25
32
|
stops: options.stops,
|
|
26
|
-
routeProvider: options.routeProvider,
|
|
33
|
+
routeProvider: options.routeProvider ?? arcGisRouteServiceProvider(routeServiceUrl, options.apiKey),
|
|
27
34
|
eventBus: this.eventBus,
|
|
28
35
|
});
|
|
36
|
+
mountDirectionsPanel(this.container);
|
|
29
37
|
this.route = undefined;
|
|
30
38
|
this.watchListeners = new Map();
|
|
31
39
|
}
|
|
@@ -121,3 +129,146 @@ export class DirectionsCompat {
|
|
|
121
129
|
}
|
|
122
130
|
}
|
|
123
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* The Esri `DirectionsViewModel` shape used by webpack 4.x apps: a view, a stop
|
|
134
|
+
* collection, `load`, `getDirections`, and `reset`. With no custom route
|
|
135
|
+
* provider, `load` reads travel modes and `getDirections` solves
|
|
136
|
+
* `routeServiceUrl` (the Esri world route service by default).
|
|
137
|
+
*/
|
|
138
|
+
export class DirectionsViewModelCompat {
|
|
139
|
+
view;
|
|
140
|
+
loaded;
|
|
141
|
+
selectedTravelMode;
|
|
142
|
+
routeServiceUrl;
|
|
143
|
+
/** Filled from the route service during `load`. `find` returns undefined until then. */
|
|
144
|
+
travelModes;
|
|
145
|
+
layer;
|
|
146
|
+
stops;
|
|
147
|
+
apiKey;
|
|
148
|
+
routeProvider;
|
|
149
|
+
constructor(options = {}) {
|
|
150
|
+
this.view = options.view;
|
|
151
|
+
this.loaded = false;
|
|
152
|
+
this.selectedTravelMode = undefined;
|
|
153
|
+
this.routeServiceUrl = options.routeServiceUrl ?? DEFAULT_ROUTE_SERVICE_URL;
|
|
154
|
+
this.apiKey = options.apiKey;
|
|
155
|
+
this.routeProvider = options.routeProvider;
|
|
156
|
+
this.travelModes = [];
|
|
157
|
+
this.layer = new RouteLayerCompat({ url: this.routeServiceUrl, routeProvider: options.routeProvider });
|
|
158
|
+
this.stops = {
|
|
159
|
+
removeAll: () => {
|
|
160
|
+
this.layer.clearStops();
|
|
161
|
+
},
|
|
162
|
+
addMany: (stops) => {
|
|
163
|
+
this.layer.addStops(stops.map((stop) => routeStopFromUnknown(stop)));
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async load() {
|
|
168
|
+
await this.layer.load();
|
|
169
|
+
if (!this.routeProvider) {
|
|
170
|
+
try {
|
|
171
|
+
const modes = await readTravelModes(this.routeServiceUrl, tokenForRouteService(this.routeServiceUrl, this.apiKey));
|
|
172
|
+
this.travelModes.splice(0, this.travelModes.length, ...modes);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// A missing mode catalog still leaves getDirections able to solve.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
this.loaded = true;
|
|
179
|
+
return this;
|
|
180
|
+
}
|
|
181
|
+
async getDirections() {
|
|
182
|
+
if (this.layer.stops.length < 2) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
const routeProvider = this.routeProvider ??
|
|
186
|
+
arcGisRouteServiceProvider(this.routeServiceUrl, tokenForRouteService(this.routeServiceUrl, this.apiKey), this.selectedTravelMode);
|
|
187
|
+
const task = new RouteTaskCompat({
|
|
188
|
+
url: undefined,
|
|
189
|
+
apiKey: tokenForRouteService(this.routeServiceUrl, this.apiKey),
|
|
190
|
+
routeProvider,
|
|
191
|
+
});
|
|
192
|
+
return task.solve({
|
|
193
|
+
stops: [...this.layer.stops],
|
|
194
|
+
returnDirections: true,
|
|
195
|
+
travelMode: this.selectedTravelMode,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
reset() {
|
|
199
|
+
this.layer.clearStops();
|
|
200
|
+
this.selectedTravelMode = undefined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function readTravelModes(url, token) {
|
|
204
|
+
const endpoint = new URL(`${url.replace(/\/$/, "")}/retrieveTravelModes`);
|
|
205
|
+
endpoint.searchParams.set("f", "json");
|
|
206
|
+
if (token) {
|
|
207
|
+
endpoint.searchParams.set("token", token);
|
|
208
|
+
}
|
|
209
|
+
const response = await fetch(endpoint);
|
|
210
|
+
const json = (await response.json());
|
|
211
|
+
if (!response.ok || json.error) {
|
|
212
|
+
throw new Error(json.error?.message ?? `Travel modes failed (${response.status}).`);
|
|
213
|
+
}
|
|
214
|
+
return (json.supportedTravelModes ?? []).filter((mode) => mode && typeof mode === "object");
|
|
215
|
+
}
|
|
216
|
+
function mountDirectionsPanel(container) {
|
|
217
|
+
const element = resolveWidgetElement(container);
|
|
218
|
+
if (!element || typeof document === "undefined") {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const panel = document.createElement("div");
|
|
222
|
+
panel.className = "honua-directions";
|
|
223
|
+
panel.textContent = "Directions";
|
|
224
|
+
element.append(panel);
|
|
225
|
+
}
|
|
226
|
+
function resolveWidgetElement(container) {
|
|
227
|
+
if (typeof HTMLElement !== "undefined" && container instanceof HTMLElement) {
|
|
228
|
+
return container;
|
|
229
|
+
}
|
|
230
|
+
if (typeof container === "string" && typeof document !== "undefined") {
|
|
231
|
+
const element = document.getElementById(container);
|
|
232
|
+
return typeof HTMLElement !== "undefined" && element instanceof HTMLElement ? element : undefined;
|
|
233
|
+
}
|
|
234
|
+
return undefined;
|
|
235
|
+
}
|
|
236
|
+
function tokenForRouteService(url, apiKey) {
|
|
237
|
+
if (apiKey) {
|
|
238
|
+
return apiKey;
|
|
239
|
+
}
|
|
240
|
+
if (esriConfig.apiKey) {
|
|
241
|
+
return esriConfig.apiKey;
|
|
242
|
+
}
|
|
243
|
+
const direct = identityManager.findCredential(url);
|
|
244
|
+
if (direct?.token) {
|
|
245
|
+
return direct.token;
|
|
246
|
+
}
|
|
247
|
+
let host;
|
|
248
|
+
try {
|
|
249
|
+
host = new URL(url).hostname;
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
254
|
+
if (host !== "arcgis.com" && !host.endsWith(".arcgis.com")) {
|
|
255
|
+
return undefined;
|
|
256
|
+
}
|
|
257
|
+
for (let index = identityManager.credentials.length - 1; index >= 0; index -= 1) {
|
|
258
|
+
const credential = identityManager.credentials[index];
|
|
259
|
+
if (!credential) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (typeof credential.expires === "number" && credential.expires <= Date.now()) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
const credentialHost = new URL(credential.server).hostname;
|
|
267
|
+
if (credentialHost === "arcgis.com" || credentialHost.endsWith(".arcgis.com")) {
|
|
268
|
+
return credential.token;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch { }
|
|
272
|
+
}
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
package/esri-compat/expand.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export declare class ExpandCompat {
|
|
|
24
24
|
group: string | undefined;
|
|
25
25
|
private readonly watchListeners;
|
|
26
26
|
constructor(options?: ExpandCompatOptions);
|
|
27
|
+
attachContainer(element: HTMLElement): void;
|
|
27
28
|
load(): Promise<ExpandCompat>;
|
|
28
29
|
when(callback?: (widget: ExpandCompat) => void): Promise<ExpandCompat>;
|
|
29
30
|
watch(propertyName: string, listener: (value: unknown) => void): ExpandHandleCompat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AAEjG,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;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,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,mBAAwB;
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/expand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AAEjG,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;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,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,mBAAwB;IAc7C,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKrC,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,MAAM,IAAI,IAAI;IAUd,QAAQ,IAAI,IAAI;IAUhB,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAUhC,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/expand.js
CHANGED
|
@@ -21,6 +21,11 @@ export class ExpandCompat {
|
|
|
21
21
|
this.mode = options.mode ?? "auto";
|
|
22
22
|
this.group = options.group;
|
|
23
23
|
this.watchListeners = new Map();
|
|
24
|
+
mountExpand(this);
|
|
25
|
+
}
|
|
26
|
+
attachContainer(element) {
|
|
27
|
+
this.container = element;
|
|
28
|
+
mountExpand(this);
|
|
24
29
|
}
|
|
25
30
|
async load() {
|
|
26
31
|
if (this.loaded) {
|
|
@@ -63,6 +68,7 @@ export class ExpandCompat {
|
|
|
63
68
|
this.expanded = true;
|
|
64
69
|
this.notifyWatchers("expanded", this.expanded);
|
|
65
70
|
this.eventBus.emit("expand.changed", { expanded: true }, this);
|
|
71
|
+
syncExpand(this);
|
|
66
72
|
}
|
|
67
73
|
collapse() {
|
|
68
74
|
if (!this.expanded) {
|
|
@@ -71,6 +77,7 @@ export class ExpandCompat {
|
|
|
71
77
|
this.expanded = false;
|
|
72
78
|
this.notifyWatchers("expanded", this.expanded);
|
|
73
79
|
this.eventBus.emit("expand.changed", { expanded: false }, this);
|
|
80
|
+
syncExpand(this);
|
|
74
81
|
}
|
|
75
82
|
toggle(force) {
|
|
76
83
|
const next = force ?? !this.expanded;
|
|
@@ -95,3 +102,57 @@ export class ExpandCompat {
|
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
104
|
}
|
|
105
|
+
function mountExpand(expand) {
|
|
106
|
+
const element = widgetElement(expand.container);
|
|
107
|
+
if (!element || typeof document === "undefined") {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
element.replaceChildren();
|
|
111
|
+
const button = document.createElement("button");
|
|
112
|
+
button.type = "button";
|
|
113
|
+
button.textContent = expand.expanded ? "Collapse" : "Expand";
|
|
114
|
+
const panel = document.createElement("div");
|
|
115
|
+
panel.className = "honua-expand-panel";
|
|
116
|
+
panel.hidden = !expand.expanded;
|
|
117
|
+
appendExpandContent(panel, expand.content);
|
|
118
|
+
button.addEventListener("click", () => {
|
|
119
|
+
expand.toggle();
|
|
120
|
+
});
|
|
121
|
+
element.append(button, panel);
|
|
122
|
+
}
|
|
123
|
+
function syncExpand(expand) {
|
|
124
|
+
const element = widgetElement(expand.container);
|
|
125
|
+
const panel = element?.querySelector(".honua-expand-panel");
|
|
126
|
+
const button = element?.querySelector("button");
|
|
127
|
+
if (typeof HTMLElement !== "undefined" && panel instanceof HTMLElement) {
|
|
128
|
+
panel.hidden = !expand.expanded;
|
|
129
|
+
}
|
|
130
|
+
if (button) {
|
|
131
|
+
button.textContent = expand.expanded ? "Collapse" : "Expand";
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function appendExpandContent(panel, content) {
|
|
135
|
+
if (typeof HTMLElement !== "undefined" && content instanceof HTMLElement) {
|
|
136
|
+
panel.append(content);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const nested = widgetElement(content?.container);
|
|
140
|
+
if (nested) {
|
|
141
|
+
panel.append(nested);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
panel.textContent = "Content";
|
|
145
|
+
}
|
|
146
|
+
function widgetElement(container) {
|
|
147
|
+
if (typeof HTMLElement === "undefined") {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
if (container instanceof HTMLElement) {
|
|
151
|
+
return container;
|
|
152
|
+
}
|
|
153
|
+
if (typeof container === "string" && typeof document !== "undefined") {
|
|
154
|
+
const element = document.getElementById(container);
|
|
155
|
+
return element instanceof HTMLElement ? element : undefined;
|
|
156
|
+
}
|
|
157
|
+
return undefined;
|
|
158
|
+
}
|
|
@@ -2,14 +2,20 @@ import { HonuaClient } from "../core/client.js";
|
|
|
2
2
|
import type { HonuaAddAttachmentResponse, HonuaApplyEditsResponse, HonuaAttachmentListResponse, HonuaDeleteAttachmentsResponse, HonuaExtent, HonuaFeature, HonuaFieldInfo, HonuaQueryAttachmentsResponse, HonuaQueryResponse, HonuaRelatedRecordsResponse, HonuaUpdateAttachmentResponse, QueryMethod } from "../core/types.js";
|
|
3
3
|
import { CompatEventBus } from "./event-bus.js";
|
|
4
4
|
export interface FeatureLayerCompatOptions {
|
|
5
|
-
|
|
5
|
+
/** Service layer URL. Omit when {@link source} holds the features in memory. */
|
|
6
|
+
url?: string;
|
|
7
|
+
/** In-memory graphics. When set without {@link url}, the layer does not call a service. */
|
|
8
|
+
source?: readonly unknown[];
|
|
9
|
+
fields?: readonly unknown[];
|
|
10
|
+
objectIdField?: string;
|
|
11
|
+
geometryType?: string;
|
|
6
12
|
id?: string;
|
|
7
13
|
title?: string;
|
|
8
14
|
outFields?: string | string[];
|
|
9
15
|
definitionExpression?: string;
|
|
10
16
|
renderer?: unknown;
|
|
11
17
|
popupTemplate?: unknown;
|
|
12
|
-
labelingInfo?: unknown[];
|
|
18
|
+
labelingInfo?: unknown[] | unknown;
|
|
13
19
|
labelsVisible?: boolean;
|
|
14
20
|
opacity?: number;
|
|
15
21
|
visible?: boolean;
|
|
@@ -20,6 +26,8 @@ export interface FeatureLayerCompatOptions {
|
|
|
20
26
|
maxAttachmentBytes?: number;
|
|
21
27
|
client?: HonuaClient;
|
|
22
28
|
eventBus?: CompatEventBus;
|
|
29
|
+
/** Esri options the codemod leaves on the constructor, such as fieldConfigurations. */
|
|
30
|
+
[extra: string]: unknown;
|
|
23
31
|
}
|
|
24
32
|
export interface FeatureLayerQueryOptions {
|
|
25
33
|
where?: string;
|
|
@@ -36,8 +44,16 @@ export type FeatureLayerQueryAllOptions = FeatureLayerQueryOptions & {
|
|
|
36
44
|
};
|
|
37
45
|
export interface FeatureLayerEditsOptions {
|
|
38
46
|
adds?: unknown[];
|
|
47
|
+
/** Esri `FeatureLayer.applyEdits` name for {@link adds}. */
|
|
48
|
+
addFeatures?: unknown[];
|
|
39
49
|
updates?: unknown[];
|
|
40
|
-
|
|
50
|
+
/** Esri `FeatureLayer.applyEdits` name for {@link updates}. */
|
|
51
|
+
updateFeatures?: unknown[];
|
|
52
|
+
deletes?: number[] | string | readonly {
|
|
53
|
+
objectId?: number;
|
|
54
|
+
}[];
|
|
55
|
+
/** Esri `FeatureLayer.applyEdits` name for {@link deletes}. */
|
|
56
|
+
deleteFeatures?: readonly unknown[];
|
|
41
57
|
rollbackOnFailure?: boolean;
|
|
42
58
|
}
|
|
43
59
|
export interface FeatureLayerCreateQueryResult {
|
|
@@ -99,7 +115,11 @@ export interface FeatureLayerHandleCompat {
|
|
|
99
115
|
remove(): void;
|
|
100
116
|
}
|
|
101
117
|
export declare class FeatureLayerCompat {
|
|
102
|
-
readonly url: string;
|
|
118
|
+
readonly url: string | undefined;
|
|
119
|
+
readonly source: readonly unknown[] | undefined;
|
|
120
|
+
readonly fields: readonly unknown[] | undefined;
|
|
121
|
+
readonly objectIdField: string | undefined;
|
|
122
|
+
readonly geometryType: string | undefined;
|
|
103
123
|
id: string;
|
|
104
124
|
title: string | undefined;
|
|
105
125
|
readonly serviceId: string;
|
|
@@ -116,6 +136,8 @@ export declare class FeatureLayerCompat {
|
|
|
116
136
|
maxScale: number;
|
|
117
137
|
legendEnabled: boolean;
|
|
118
138
|
listMode: string;
|
|
139
|
+
/** Populated from layer metadata `extent` when {@link load} succeeds. */
|
|
140
|
+
fullExtent: HonuaExtent | undefined;
|
|
119
141
|
loaded: boolean;
|
|
120
142
|
loadStatus: FeatureLayerLoadStatusCompat;
|
|
121
143
|
metadata: unknown;
|
|
@@ -156,6 +178,9 @@ export declare class FeatureLayerCompat {
|
|
|
156
178
|
getField(fieldName: string): HonuaFieldInfo | undefined;
|
|
157
179
|
hasField(fieldName: string): boolean;
|
|
158
180
|
createQuery(): FeatureLayerCreateQueryResult;
|
|
181
|
+
private get isInMemory();
|
|
182
|
+
private assertSupportedMemoryWhere;
|
|
183
|
+
private queryMemory;
|
|
159
184
|
queryFeatures(options?: FeatureLayerQueryOptions): Promise<HonuaQueryResponse>;
|
|
160
185
|
queryFeaturesAll(options?: FeatureLayerQueryAllOptions): Promise<HonuaFeature[]>;
|
|
161
186
|
queryFeaturesStream(options?: FeatureLayerQueryAllOptions): AsyncGenerator<HonuaFeature[], void, undefined>;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"feature-layer.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-layer.ts"],"names":[],"mappings":"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"}
|