@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
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { type FormExpressionResult } from "../widget-capabilities.js";
|
|
1
2
|
import { CompatEventBus } from "./event-bus.js";
|
|
2
3
|
export interface FeatureFormCompatOptions {
|
|
3
4
|
view?: unknown;
|
|
4
5
|
layer?: unknown;
|
|
5
6
|
container?: unknown;
|
|
6
7
|
feature?: unknown;
|
|
8
|
+
formTemplate?: unknown;
|
|
7
9
|
fieldConfig?: readonly unknown[];
|
|
8
10
|
groupDisplay?: string;
|
|
9
11
|
headingLevel?: number;
|
|
@@ -35,17 +37,21 @@ export declare class FeatureFormCompat {
|
|
|
35
37
|
loaded: boolean;
|
|
36
38
|
loadStatus: FeatureFormLoadStatusCompat;
|
|
37
39
|
feature: unknown;
|
|
40
|
+
formTemplate: unknown;
|
|
41
|
+
expressionResult: FormExpressionResult | undefined;
|
|
38
42
|
fieldConfig: readonly unknown[];
|
|
39
43
|
groupDisplay: string | undefined;
|
|
40
44
|
headingLevel: number | undefined;
|
|
41
45
|
visibleElements: unknown;
|
|
42
46
|
validationFunction: FeatureFormValidationFn | undefined;
|
|
43
47
|
private readonly watchListeners;
|
|
48
|
+
private readonly widgetHost;
|
|
44
49
|
constructor(options?: FeatureFormCompatOptions);
|
|
45
50
|
load(): Promise<FeatureFormCompat>;
|
|
46
51
|
when(callback?: (widget: FeatureFormCompat) => void): Promise<FeatureFormCompat>;
|
|
47
52
|
watch(propertyName: string, listener: (value: unknown) => void): FeatureFormHandleCompat;
|
|
48
53
|
setFeature(feature: unknown): void;
|
|
54
|
+
private pushWidgetHost;
|
|
49
55
|
submit(values?: Readonly<Record<string, unknown>>): Promise<FeatureFormSubmitResultCompat>;
|
|
50
56
|
/**
|
|
51
57
|
* Runs validation against the provided values (or empty object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-form.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-form.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-form.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { evaluateFormExpressions, } from "../widget-capabilities.js";
|
|
1
2
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
3
|
+
import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
|
|
2
4
|
export class FeatureFormCompat {
|
|
3
5
|
view;
|
|
4
6
|
layer;
|
|
@@ -7,12 +9,15 @@ export class FeatureFormCompat {
|
|
|
7
9
|
loaded;
|
|
8
10
|
loadStatus;
|
|
9
11
|
feature;
|
|
12
|
+
formTemplate;
|
|
13
|
+
expressionResult;
|
|
10
14
|
fieldConfig;
|
|
11
15
|
groupDisplay;
|
|
12
16
|
headingLevel;
|
|
13
17
|
visibleElements;
|
|
14
18
|
validationFunction;
|
|
15
19
|
watchListeners;
|
|
20
|
+
widgetHost;
|
|
16
21
|
constructor(options = {}) {
|
|
17
22
|
this.view = options.view;
|
|
18
23
|
this.layer = options.layer;
|
|
@@ -21,12 +26,16 @@ export class FeatureFormCompat {
|
|
|
21
26
|
this.loaded = false;
|
|
22
27
|
this.loadStatus = "not-loaded";
|
|
23
28
|
this.feature = options.feature;
|
|
29
|
+
this.formTemplate = options.formTemplate;
|
|
24
30
|
this.fieldConfig = options.fieldConfig ? [...options.fieldConfig] : [];
|
|
25
31
|
this.groupDisplay = options.groupDisplay;
|
|
26
32
|
this.headingLevel = options.headingLevel;
|
|
27
33
|
this.visibleElements = options.visibleElements;
|
|
28
34
|
this.validationFunction = options.validationFunction;
|
|
35
|
+
this.expressionResult = evaluateStoredForm(this.formTemplate, this.feature);
|
|
29
36
|
this.watchListeners = new Map();
|
|
37
|
+
this.widgetHost = bindHonuaWidgetHost("honua-feature-editor", this.container, this.eventBus);
|
|
38
|
+
this.pushWidgetHost();
|
|
30
39
|
}
|
|
31
40
|
async load() {
|
|
32
41
|
if (this.loaded) {
|
|
@@ -64,8 +73,19 @@ export class FeatureFormCompat {
|
|
|
64
73
|
}
|
|
65
74
|
setFeature(feature) {
|
|
66
75
|
this.feature = feature;
|
|
76
|
+
this.expressionResult = evaluateStoredForm(this.formTemplate, this.feature);
|
|
67
77
|
this.notifyWatchers("feature", this.feature);
|
|
78
|
+
this.notifyWatchers("expressionResult", this.expressionResult);
|
|
68
79
|
this.eventBus.emit("feature-form.feature-changed", { feature }, this);
|
|
80
|
+
this.pushWidgetHost();
|
|
81
|
+
}
|
|
82
|
+
pushWidgetHost() {
|
|
83
|
+
pushWidgetHostState(this.widgetHost, {
|
|
84
|
+
feature: this.feature,
|
|
85
|
+
layer: this.layer,
|
|
86
|
+
formTemplate: this.formTemplate,
|
|
87
|
+
expressionResult: this.expressionResult,
|
|
88
|
+
});
|
|
69
89
|
}
|
|
70
90
|
async submit(values = {}) {
|
|
71
91
|
const errors = this.validate(values);
|
|
@@ -135,3 +155,46 @@ export class FeatureFormCompat {
|
|
|
135
155
|
}
|
|
136
156
|
}
|
|
137
157
|
}
|
|
158
|
+
function evaluateStoredForm(formTemplate, feature) {
|
|
159
|
+
return evaluateFormExpressions(formFields(formTemplate), { attributes: featureAttributes(feature) });
|
|
160
|
+
}
|
|
161
|
+
function featureAttributes(feature) {
|
|
162
|
+
if (!feature || typeof feature !== "object")
|
|
163
|
+
return {};
|
|
164
|
+
const attributes = feature.attributes;
|
|
165
|
+
return attributes && typeof attributes === "object" ? attributes : {};
|
|
166
|
+
}
|
|
167
|
+
function formFields(formTemplate) {
|
|
168
|
+
if (!formTemplate || typeof formTemplate !== "object")
|
|
169
|
+
return [];
|
|
170
|
+
const fields = formTemplate.fields;
|
|
171
|
+
if (!Array.isArray(fields))
|
|
172
|
+
return [];
|
|
173
|
+
return fields.flatMap((field) => {
|
|
174
|
+
if (!field || typeof field !== "object")
|
|
175
|
+
return [];
|
|
176
|
+
const record = field;
|
|
177
|
+
const name = typeof record.name === "string"
|
|
178
|
+
? record.name
|
|
179
|
+
: typeof record.fieldName === "string"
|
|
180
|
+
? record.fieldName
|
|
181
|
+
: undefined;
|
|
182
|
+
if (!name)
|
|
183
|
+
return [];
|
|
184
|
+
return [
|
|
185
|
+
{
|
|
186
|
+
name,
|
|
187
|
+
visibleExpression: expressionText(record.visibleExpression) ?? expressionText(record.visibilityExpression),
|
|
188
|
+
valueExpression: expressionText(record.valueExpression) ?? expressionText(record.valueExpressionInfo),
|
|
189
|
+
},
|
|
190
|
+
];
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function expressionText(value) {
|
|
194
|
+
if (typeof value === "string")
|
|
195
|
+
return value;
|
|
196
|
+
if (!value || typeof value !== "object")
|
|
197
|
+
return undefined;
|
|
198
|
+
const expression = value.expression;
|
|
199
|
+
return typeof expression === "string" ? expression : undefined;
|
|
200
|
+
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
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
|
+
import { applyToFeatures as applyFeatureEdits } from "../widget-capabilities.js";
|
|
3
4
|
import { CompatEventBus } from "./event-bus.js";
|
|
4
5
|
export interface FeatureLayerCompatOptions {
|
|
5
6
|
/** Service layer URL. Omit when {@link source} holds the features in memory. */
|
|
6
7
|
url?: string;
|
|
7
|
-
/**
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* In-memory graphics. When set without {@link url}, the layer does not call
|
|
10
|
+
* a service. A non-iterable value such as `{}` is an empty client collection,
|
|
11
|
+
* which is how some ArcGIS apps start a layer before `applyEdits`.
|
|
12
|
+
*/
|
|
13
|
+
source?: readonly unknown[] | object;
|
|
9
14
|
fields?: readonly unknown[];
|
|
10
15
|
objectIdField?: string;
|
|
11
16
|
geometryType?: string;
|
|
@@ -23,6 +28,7 @@ export interface FeatureLayerCompatOptions {
|
|
|
23
28
|
maxScale?: number;
|
|
24
29
|
legendEnabled?: boolean;
|
|
25
30
|
listMode?: string;
|
|
31
|
+
featureEffect?: unknown;
|
|
26
32
|
maxAttachmentBytes?: number;
|
|
27
33
|
client?: HonuaClient;
|
|
28
34
|
eventBus?: CompatEventBus;
|
|
@@ -128,6 +134,7 @@ export declare class FeatureLayerCompat {
|
|
|
128
134
|
definitionExpression: string | undefined;
|
|
129
135
|
renderer: unknown;
|
|
130
136
|
popupTemplate: unknown;
|
|
137
|
+
private featureEffectValue;
|
|
131
138
|
labelingInfo: unknown[];
|
|
132
139
|
labelsVisible: boolean;
|
|
133
140
|
opacity: number;
|
|
@@ -151,6 +158,14 @@ export declare class FeatureLayerCompat {
|
|
|
151
158
|
private readonly eventListeners;
|
|
152
159
|
private readonly maxAttachmentBytes;
|
|
153
160
|
constructor(options: FeatureLayerCompatOptions);
|
|
161
|
+
get featureEffect(): unknown;
|
|
162
|
+
set featureEffect(value: unknown);
|
|
163
|
+
/**
|
|
164
|
+
* Symbol the view should paint for one feature. A feature's own symbol wins.
|
|
165
|
+
* Otherwise the renderer supplies it, and an excluded feature effect replaces
|
|
166
|
+
* the color.
|
|
167
|
+
*/
|
|
168
|
+
symbolForFeature(feature: unknown): unknown | undefined;
|
|
154
169
|
load(): Promise<FeatureLayerCompat>;
|
|
155
170
|
when(callback?: (layer: FeatureLayerCompat) => void): Promise<FeatureLayerCompat>;
|
|
156
171
|
refresh(): void;
|
|
@@ -188,6 +203,10 @@ export declare class FeatureLayerCompat {
|
|
|
188
203
|
queryFeatureCount(options?: FeatureLayerQueryCountOptions): Promise<number>;
|
|
189
204
|
queryExtent(options?: FeatureLayerQueryCountOptions): Promise<FeatureLayerQueryExtentResult>;
|
|
190
205
|
applyEdits(options: FeatureLayerEditsOptions): Promise<HonuaApplyEditsResponse>;
|
|
206
|
+
/** Applies one attribute change to each feature through {@link applyEdits}. A named edit error rejects that feature only. */
|
|
207
|
+
applyToFeatures(features: readonly {
|
|
208
|
+
attributes?: Record<string, unknown>;
|
|
209
|
+
}[], change: Record<string, unknown>): ReturnType<typeof applyFeatureEdits>;
|
|
191
210
|
queryRelatedFeatures(options: FeatureLayerQueryRelatedFeaturesOptions): Promise<HonuaRelatedRecordsResponse>;
|
|
192
211
|
queryRelatedRecords(options: FeatureLayerQueryRelatedFeaturesOptions): Promise<HonuaRelatedRecordsResponse>;
|
|
193
212
|
queryAttachments(options?: FeatureLayerQueryAttachmentsOptions): Promise<HonuaQueryAttachmentsResponse>;
|
|
@@ -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;AAGhD,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,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb
|
|
1
|
+
{"version":3,"file":"feature-layer.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { HonuaClient } from "../core/client.js";
|
|
|
2
2
|
import { HonuaCapabilityNotSupportedError } from "../core/errors.js";
|
|
3
3
|
import { encodeServiceIdPath } from "../core/path-utils.js";
|
|
4
4
|
import { responseExceededTransferLimit } from "../core/wire-shared.js";
|
|
5
|
+
import { applyToFeatures as applyFeatureEdits } from "../widget-capabilities.js";
|
|
5
6
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
6
7
|
import { parseFeatureLayerUrl } from "./url.js";
|
|
7
8
|
const DEFAULT_MAX_ATTACHMENT_BYTES = 25 * 1024 * 1024;
|
|
@@ -19,6 +20,7 @@ export class FeatureLayerCompat {
|
|
|
19
20
|
definitionExpression;
|
|
20
21
|
renderer;
|
|
21
22
|
popupTemplate;
|
|
23
|
+
featureEffectValue;
|
|
22
24
|
labelingInfo;
|
|
23
25
|
labelsVisible;
|
|
24
26
|
opacity;
|
|
@@ -42,7 +44,7 @@ export class FeatureLayerCompat {
|
|
|
42
44
|
const inMemory = options.source !== undefined && options.url === undefined;
|
|
43
45
|
const parsed = inMemory ? undefined : parseFeatureLayerUrl(options.url ?? "");
|
|
44
46
|
this.url = options.url;
|
|
45
|
-
this.source = options.source
|
|
47
|
+
this.source = normalizeFeatureSource(options.source);
|
|
46
48
|
this.fields = options.fields === undefined ? undefined : [...options.fields];
|
|
47
49
|
this.objectIdField = options.objectIdField;
|
|
48
50
|
this.geometryType = options.geometryType;
|
|
@@ -58,6 +60,7 @@ export class FeatureLayerCompat {
|
|
|
58
60
|
: [options.outFields];
|
|
59
61
|
this.definitionExpression = options.definitionExpression;
|
|
60
62
|
this.renderer = options.renderer;
|
|
63
|
+
this.featureEffectValue = options.featureEffect;
|
|
61
64
|
this.popupTemplate = options.popupTemplate;
|
|
62
65
|
this.labelingInfo = Array.isArray(options.labelingInfo)
|
|
63
66
|
? [...options.labelingInfo]
|
|
@@ -82,6 +85,31 @@ export class FeatureLayerCompat {
|
|
|
82
85
|
this.eventListeners = new Map();
|
|
83
86
|
this.maxAttachmentBytes = normalizeAttachmentSizeLimit(options.maxAttachmentBytes);
|
|
84
87
|
}
|
|
88
|
+
get featureEffect() {
|
|
89
|
+
return this.featureEffectValue;
|
|
90
|
+
}
|
|
91
|
+
set featureEffect(value) {
|
|
92
|
+
this.featureEffectValue = value;
|
|
93
|
+
this.notifyWatchers("featureEffect", value);
|
|
94
|
+
this.eventBus.emit("feature-layer.feature-effect-changed", { featureEffect: value }, this);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Symbol the view should paint for one feature. A feature's own symbol wins.
|
|
98
|
+
* Otherwise the renderer supplies it, and an excluded feature effect replaces
|
|
99
|
+
* the color.
|
|
100
|
+
*/
|
|
101
|
+
symbolForFeature(feature) {
|
|
102
|
+
if (feature && typeof feature === "object" && feature.symbol) {
|
|
103
|
+
return feature.symbol;
|
|
104
|
+
}
|
|
105
|
+
const base = symbolFromRenderer(this.renderer, feature);
|
|
106
|
+
const where = effectWhere(this.featureEffectValue);
|
|
107
|
+
const excludedEffect = effectString(this.featureEffectValue, "excludedEffect");
|
|
108
|
+
if (where && !featureMatchesWhere(feature, where) && excludedEffect) {
|
|
109
|
+
return excludedSymbol(base, excludedEffect);
|
|
110
|
+
}
|
|
111
|
+
return base;
|
|
112
|
+
}
|
|
85
113
|
async load() {
|
|
86
114
|
if (!this.loaded) {
|
|
87
115
|
this.loadStatus = "loading";
|
|
@@ -496,6 +524,18 @@ export class FeatureLayerCompat {
|
|
|
496
524
|
this.eventBus.emit("feature-layer.edits", { result, layerId: this.id }, this);
|
|
497
525
|
return result;
|
|
498
526
|
}
|
|
527
|
+
/** Applies one attribute change to each feature through {@link applyEdits}. A named edit error rejects that feature only. */
|
|
528
|
+
applyToFeatures(features, change) {
|
|
529
|
+
return applyFeatureEdits(features, change, async (edit) => {
|
|
530
|
+
const result = await this.applyEdits({ updates: [edit.update] });
|
|
531
|
+
const updates = result.updateFeatureResults ?? result.updateResults ?? [];
|
|
532
|
+
const failed = updates.find((item) => item.success === false || item.error);
|
|
533
|
+
if (!failed)
|
|
534
|
+
return {};
|
|
535
|
+
const reason = failed.error?.description ?? "rejected";
|
|
536
|
+
return { error: reason, reason };
|
|
537
|
+
});
|
|
538
|
+
}
|
|
499
539
|
queryRelatedFeatures(options) {
|
|
500
540
|
return this.client.queryRelatedRecords({
|
|
501
541
|
serviceId: this.serviceId,
|
|
@@ -814,6 +854,137 @@ function copyToArrayBuffer(chunk) {
|
|
|
814
854
|
copy.set(chunk);
|
|
815
855
|
return copy.buffer;
|
|
816
856
|
}
|
|
857
|
+
function normalizeFeatureSource(source) {
|
|
858
|
+
if (source === undefined) {
|
|
859
|
+
return undefined;
|
|
860
|
+
}
|
|
861
|
+
if (Array.isArray(source)) {
|
|
862
|
+
return [...source];
|
|
863
|
+
}
|
|
864
|
+
if (source && typeof source === "object") {
|
|
865
|
+
const record = source;
|
|
866
|
+
if (typeof record.toArray === "function") {
|
|
867
|
+
const items = record.toArray();
|
|
868
|
+
return Array.isArray(items) ? [...items] : [];
|
|
869
|
+
}
|
|
870
|
+
if (Array.isArray(record.items)) {
|
|
871
|
+
return [...record.items];
|
|
872
|
+
}
|
|
873
|
+
if (typeof record.length === "number" && Number.isFinite(record.length)) {
|
|
874
|
+
return Array.from(source);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
return [];
|
|
878
|
+
}
|
|
879
|
+
function symbolFromRenderer(renderer, feature) {
|
|
880
|
+
if (!renderer || typeof renderer !== "object") {
|
|
881
|
+
return undefined;
|
|
882
|
+
}
|
|
883
|
+
const record = renderer;
|
|
884
|
+
const type = typeof record.type === "string" ? record.type : record.symbol ? "simple" : "";
|
|
885
|
+
if (type === "simple") {
|
|
886
|
+
return record.symbol;
|
|
887
|
+
}
|
|
888
|
+
if (type === "unique-value" && Array.isArray(record.uniqueValueInfos)) {
|
|
889
|
+
const field = typeof record.field === "string" ? record.field : undefined;
|
|
890
|
+
const value = field ? featureAttributes(feature)[field] : undefined;
|
|
891
|
+
for (const info of record.uniqueValueInfos) {
|
|
892
|
+
if (!info || typeof info !== "object") {
|
|
893
|
+
continue;
|
|
894
|
+
}
|
|
895
|
+
const entry = info;
|
|
896
|
+
if (entry.value === value || String(entry.value) === String(value)) {
|
|
897
|
+
return entry.symbol ?? record.defaultSymbol;
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
return record.defaultSymbol ?? record.symbol;
|
|
901
|
+
}
|
|
902
|
+
if (type === "class-breaks" && Array.isArray(record.classBreakInfos)) {
|
|
903
|
+
const field = typeof record.field === "string" ? record.field : undefined;
|
|
904
|
+
const raw = field ? featureAttributes(feature)[field] : undefined;
|
|
905
|
+
const value = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : Number.NaN;
|
|
906
|
+
if (!Number.isFinite(value)) {
|
|
907
|
+
return record.defaultSymbol ?? record.symbol;
|
|
908
|
+
}
|
|
909
|
+
for (const info of record.classBreakInfos) {
|
|
910
|
+
if (!info || typeof info !== "object") {
|
|
911
|
+
continue;
|
|
912
|
+
}
|
|
913
|
+
const entry = info;
|
|
914
|
+
const min = typeof entry.minValue === "number" ? entry.minValue : Number.NEGATIVE_INFINITY;
|
|
915
|
+
const max = typeof entry.maxValue === "number" ? entry.maxValue : Number.POSITIVE_INFINITY;
|
|
916
|
+
if (value >= min && value <= max) {
|
|
917
|
+
return entry.symbol ?? record.defaultSymbol;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
return record.defaultSymbol ?? record.symbol;
|
|
921
|
+
}
|
|
922
|
+
return record.symbol;
|
|
923
|
+
}
|
|
924
|
+
function effectWhere(effect) {
|
|
925
|
+
if (!effect || typeof effect !== "object") {
|
|
926
|
+
return undefined;
|
|
927
|
+
}
|
|
928
|
+
const filter = effect.filter;
|
|
929
|
+
if (!filter || typeof filter !== "object") {
|
|
930
|
+
return undefined;
|
|
931
|
+
}
|
|
932
|
+
const where = filter.where;
|
|
933
|
+
return typeof where === "string" ? where : undefined;
|
|
934
|
+
}
|
|
935
|
+
function effectString(effect, key) {
|
|
936
|
+
if (!effect || typeof effect !== "object") {
|
|
937
|
+
return undefined;
|
|
938
|
+
}
|
|
939
|
+
const value = effect[key];
|
|
940
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
941
|
+
}
|
|
942
|
+
function excludedSymbol(base, excludedEffect) {
|
|
943
|
+
const opacity = opacityFromEffect(excludedEffect);
|
|
944
|
+
const grayscale = /grayscale\(/i.test(excludedEffect);
|
|
945
|
+
const alpha = Math.round((opacity ?? 1) * 255);
|
|
946
|
+
const color = grayscale || opacity !== undefined ? [158, 158, 158, alpha] : undefined;
|
|
947
|
+
if (!color) {
|
|
948
|
+
return base;
|
|
949
|
+
}
|
|
950
|
+
if (grayscale) {
|
|
951
|
+
const symbol = base && typeof base === "object" ? { ...base } : { type: "simple-marker", size: 12 };
|
|
952
|
+
return { ...symbol, color: [158, 158, 158, alpha] };
|
|
953
|
+
}
|
|
954
|
+
const rgb = rgbFromColor(base && typeof base === "object" ? base.color : undefined);
|
|
955
|
+
const next = rgb ? [rgb[0], rgb[1], rgb[2], alpha] : [158, 158, 158, alpha];
|
|
956
|
+
const symbol = base && typeof base === "object" ? { ...base } : { type: "simple-marker", size: 12 };
|
|
957
|
+
return { ...symbol, color: next };
|
|
958
|
+
}
|
|
959
|
+
function opacityFromEffect(effect) {
|
|
960
|
+
const match = /opacity\(\s*(\d+(?:\.\d+)?)\s*(%?)\s*\)/i.exec(effect);
|
|
961
|
+
if (!match) {
|
|
962
|
+
return undefined;
|
|
963
|
+
}
|
|
964
|
+
const amount = Number(match[1]);
|
|
965
|
+
if (!Number.isFinite(amount)) {
|
|
966
|
+
return undefined;
|
|
967
|
+
}
|
|
968
|
+
const ratio = match[2] === "%" || amount > 1 ? amount / 100 : amount;
|
|
969
|
+
return Math.min(1, Math.max(0, ratio));
|
|
970
|
+
}
|
|
971
|
+
function rgbFromColor(value) {
|
|
972
|
+
if (Array.isArray(value) && value.length >= 3 && value.every((part) => typeof part === "number")) {
|
|
973
|
+
return [value[0], value[1], value[2]];
|
|
974
|
+
}
|
|
975
|
+
if (typeof value !== "string") {
|
|
976
|
+
return undefined;
|
|
977
|
+
}
|
|
978
|
+
const hex = /^#?([0-9a-f]{6})$/i.exec(value.trim());
|
|
979
|
+
if (!hex?.[1]) {
|
|
980
|
+
return undefined;
|
|
981
|
+
}
|
|
982
|
+
return [
|
|
983
|
+
Number.parseInt(hex[1].slice(0, 2), 16),
|
|
984
|
+
Number.parseInt(hex[1].slice(2, 4), 16),
|
|
985
|
+
Number.parseInt(hex[1].slice(4, 6), 16),
|
|
986
|
+
];
|
|
987
|
+
}
|
|
817
988
|
function featureAttributes(feature) {
|
|
818
989
|
if (!feature || typeof feature !== "object") {
|
|
819
990
|
return {};
|
|
@@ -103,8 +103,11 @@ export declare class FeatureTableCompat {
|
|
|
103
103
|
private readonly watchListeners;
|
|
104
104
|
private refreshRevision;
|
|
105
105
|
private layerInternal;
|
|
106
|
+
private readonly widgetHost;
|
|
106
107
|
get size(): number;
|
|
107
108
|
get layer(): FeatureLayerCompat | undefined;
|
|
109
|
+
/** Field names the host pushes into `<honua-feature-table>`. */
|
|
110
|
+
get visibleFields(): readonly string[];
|
|
108
111
|
set layer(layer: FeatureLayerCompat | undefined);
|
|
109
112
|
get loaded(): boolean;
|
|
110
113
|
constructor(options?: FeatureTableCompatOptions);
|
|
@@ -113,6 +116,7 @@ export declare class FeatureTableCompat {
|
|
|
113
116
|
watch(propertyName: string, listener: (value: unknown) => void): FeatureTableHandleCompat;
|
|
114
117
|
refresh(): Promise<readonly FeatureTableRowCompat[]>;
|
|
115
118
|
setLayer(layer: FeatureLayerCompat | undefined): void;
|
|
119
|
+
setVisibleFields(fields: readonly string[]): void;
|
|
116
120
|
setWhere(where: string): void;
|
|
117
121
|
setFilterGeometry(filterGeometry: Record<string, unknown> | null): void;
|
|
118
122
|
selectRows(objectIds: readonly number[]): void;
|
|
@@ -135,6 +139,7 @@ export declare class FeatureTableCompat {
|
|
|
135
139
|
findRowByObjectId(objectId: number): FeatureTableRowCompat | undefined;
|
|
136
140
|
destroy(): void;
|
|
137
141
|
queryRelatedRecords(options: FeatureTableQueryRelatedRecordsOptions): Promise<HonuaRelatedRecordsResponse>;
|
|
142
|
+
private pushWidgetHost;
|
|
138
143
|
private notifyWatchers;
|
|
139
144
|
private nextRefreshRevision;
|
|
140
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-table.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AACjG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"feature-table.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 FeatureTableHighlightIdsCompat {
|
|
3
4
|
values;
|
|
4
5
|
listeners;
|
|
@@ -151,12 +152,20 @@ export class FeatureTableCompat {
|
|
|
151
152
|
watchListeners;
|
|
152
153
|
refreshRevision;
|
|
153
154
|
layerInternal;
|
|
155
|
+
widgetHost;
|
|
154
156
|
get size() {
|
|
155
157
|
return this.rows.length;
|
|
156
158
|
}
|
|
157
159
|
get layer() {
|
|
158
160
|
return this.layerInternal;
|
|
159
161
|
}
|
|
162
|
+
/** Field names the host pushes into `<honua-feature-table>`. */
|
|
163
|
+
get visibleFields() {
|
|
164
|
+
return (this.fieldConfigs ?? []).flatMap((config) => {
|
|
165
|
+
const name = config.name ?? config.field ?? config.fieldName;
|
|
166
|
+
return typeof name === "string" ? [name] : [];
|
|
167
|
+
});
|
|
168
|
+
}
|
|
160
169
|
set layer(layer) {
|
|
161
170
|
this.setLayer(layer);
|
|
162
171
|
}
|
|
@@ -197,6 +206,8 @@ export class FeatureTableCompat {
|
|
|
197
206
|
this.rows = [];
|
|
198
207
|
this.watchListeners = new Map();
|
|
199
208
|
this.refreshRevision = 0;
|
|
209
|
+
this.widgetHost = bindHonuaWidgetHost("honua-feature-table", this.container, this.eventBus);
|
|
210
|
+
this.pushWidgetHost();
|
|
200
211
|
this.highlightIds.on("change", (event) => {
|
|
201
212
|
this.notifyWatchers("highlightIds", this.highlightIds.toArray());
|
|
202
213
|
this.eventBus.emit("feature-table.selection-changed", {
|
|
@@ -303,6 +314,12 @@ export class FeatureTableCompat {
|
|
|
303
314
|
this.layerInternal = layer;
|
|
304
315
|
this.notifyWatchers("layer", this.layerInternal);
|
|
305
316
|
this.eventBus.emit("feature-table.layer-changed", { hasLayer: Boolean(layer) }, this);
|
|
317
|
+
this.pushWidgetHost();
|
|
318
|
+
}
|
|
319
|
+
setVisibleFields(fields) {
|
|
320
|
+
this.fieldConfigs = fields.map((name) => ({ name }));
|
|
321
|
+
this.notifyWatchers("fieldConfigs", this.fieldConfigs);
|
|
322
|
+
this.pushWidgetHost();
|
|
306
323
|
}
|
|
307
324
|
setWhere(where) {
|
|
308
325
|
this.where = where;
|
|
@@ -395,6 +412,12 @@ export class FeatureTableCompat {
|
|
|
395
412
|
extraParams: options.extraParams,
|
|
396
413
|
});
|
|
397
414
|
}
|
|
415
|
+
pushWidgetHost() {
|
|
416
|
+
pushWidgetHostState(this.widgetHost, {
|
|
417
|
+
layer: this.layer,
|
|
418
|
+
visibleFields: this.visibleFields,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
398
421
|
notifyWatchers(propertyName, value) {
|
|
399
422
|
const listeners = this.watchListeners.get(propertyName);
|
|
400
423
|
if (!listeners) {
|
|
@@ -44,7 +44,7 @@ declare class IdentityManagerCompatStore {
|
|
|
44
44
|
* @example
|
|
45
45
|
* ```ts
|
|
46
46
|
* import { oauth2 } from "@honua/sdk-js/auth";
|
|
47
|
-
* import { identityManager, OAuthInfoCompat } from "@honua/sdk-js/
|
|
47
|
+
* import { identityManager, OAuthInfoCompat } from "@honua/sdk-js/client-compat";
|
|
48
48
|
*
|
|
49
49
|
* const info = new OAuthInfoCompat({ appId: "app", portalUrl: "https://portal.example" });
|
|
50
50
|
* identityManager.registerOAuthInfos([info]);
|
|
@@ -71,7 +71,7 @@ class IdentityManagerCompatStore {
|
|
|
71
71
|
* @example
|
|
72
72
|
* ```ts
|
|
73
73
|
* import { oauth2 } from "@honua/sdk-js/auth";
|
|
74
|
-
* import { identityManager, OAuthInfoCompat } from "@honua/sdk-js/
|
|
74
|
+
* import { identityManager, OAuthInfoCompat } from "@honua/sdk-js/client-compat";
|
|
75
75
|
*
|
|
76
76
|
* const info = new OAuthInfoCompat({ appId: "app", portalUrl: "https://portal.example" });
|
|
77
77
|
* identityManager.registerOAuthInfos([info]);
|
package/esri-compat/legend.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface LegendItemCompat {
|
|
|
16
16
|
contentType: string | undefined;
|
|
17
17
|
width: number | undefined;
|
|
18
18
|
height: number | undefined;
|
|
19
|
+
/** CSS color for a renderer swatch when the layer has no legend image. */
|
|
20
|
+
color?: string;
|
|
19
21
|
}
|
|
20
22
|
export interface LegendLayerGroupCompat {
|
|
21
23
|
layer: unknown;
|
|
@@ -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;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;
|
|
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;IAC3B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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;IACtB,SAAS,EAAE,OAAO,CAAC;IAC1B,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;IAyCvC,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,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAS3C,OAAO,IAAI,IAAI;IAQtB,4EAA4E;YAC9D,gBAAgB;IAgB9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,cAAc;CAUvB"}
|