@honua/react 0.1.11-beta.0 → 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/connect-url-safety.d.ts +53 -0
- package/connect-url-safety.js +189 -0
- package/contract/pmtiles.d.ts +6 -5
- package/contract/pmtiles.d.ts.map +1 -1
- package/contract/pmtiles.js +30 -5
- package/control-plane/generated/admin-operations.d.ts +3 -3
- package/control-plane/generated/admin-operations.d.ts.map +1 -1
- package/control-plane/generated/admin-operations.js +3 -3
- 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/geocoding/index.d.ts +114 -0
- package/geocoding/index.d.ts.map +1 -0
- package/geocoding/index.js +293 -0
- package/geocoding/provider-http.d.ts +37 -0
- package/geocoding/provider-http.d.ts.map +1 -0
- package/geocoding/provider-http.js +93 -0
- package/geocoding/provider.d.ts +145 -0
- package/geocoding/provider.d.ts.map +1 -0
- package/geocoding/provider.js +41 -0
- package/geocoding/providers/honua.d.ts +28 -0
- package/geocoding/providers/honua.d.ts.map +1 -0
- package/geocoding/providers/honua.js +68 -0
- package/geocoding/providers/nominatim.d.ts +47 -0
- package/geocoding/providers/nominatim.d.ts.map +1 -0
- package/geocoding/providers/nominatim.js +105 -0
- package/geocoding/providers/pelias.d.ts +40 -0
- package/geocoding/providers/pelias.d.ts.map +1 -0
- package/geocoding/providers/pelias.js +115 -0
- package/geocoding/providers/photon.d.ts +39 -0
- package/geocoding/providers/photon.d.ts.map +1 -0
- package/geocoding/providers/photon.js +107 -0
- package/geometry/convert.d.ts +13 -0
- package/geometry/convert.d.ts.map +1 -0
- package/geometry/convert.js +12 -0
- package/geometry/index.d.ts +17 -0
- package/geometry/index.d.ts.map +1 -0
- package/geometry/index.js +15 -0
- package/geometry/internal.d.ts +25 -0
- package/geometry/internal.d.ts.map +1 -0
- package/geometry/internal.js +40 -0
- package/geometry/ops.d.ts +71 -0
- package/geometry/ops.d.ts.map +1 -0
- package/geometry/ops.js +147 -0
- package/geometry/project.d.ts +40 -0
- package/geometry/project.d.ts.map +1 -0
- package/geometry/project.js +88 -0
- package/geometry/types.d.ts +36 -0
- package/geometry/types.d.ts.map +1 -0
- package/geometry/types.js +12 -0
- package/kernel/renderer.d.ts +82 -0
- package/kernel/renderer.js +1 -0
- package/offline/digest.d.ts +15 -0
- package/offline/digest.js +58 -0
- package/offline/quota.d.ts +161 -0
- package/offline/quota.js +370 -0
- package/offline/types.d.ts +349 -0
- package/offline/types.js +75 -0
- package/package.json +14 -2
- package/widget-capabilities.d.ts +67 -0
- package/widget-capabilities.js +152 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAmD,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,KAAK,qBAAqB,EAAmC,MAAM,eAAe,CAAC;AAG5F,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,wBAAwB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,cAAc,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChD,eAAe,EAAE,qBAAqB,CAAC;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,mBAAwB;IAiBpD,4DAA4D;IAC5D,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED,sEAAsE;IAC/D,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAO/D,sEAAsE;IAC/D,cAAc,IAAI,cAAc;IAI1B,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAgB7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,kBAAkB;IAenF,yCAAyC,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO;IAoBnE,qCAAqC,IAAI,OAAO;IAiBhD,gCAAgC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAY3E,yBAAyB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IA0BrD,YAAY,IAAI,IAAI;IAapB,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;CAUvB"}
|
package/esri-compat/editor.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
|
|
2
2
|
import { snappingOptionsToSnappingConfig } from "./snapping.js";
|
|
3
|
+
import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
|
|
3
4
|
export class EditorCompat {
|
|
4
5
|
view;
|
|
5
6
|
container;
|
|
@@ -13,6 +14,7 @@ export class EditorCompat {
|
|
|
13
14
|
selectedFeature;
|
|
14
15
|
snappingOptions;
|
|
15
16
|
watchListeners;
|
|
17
|
+
widgetHost;
|
|
16
18
|
constructor(options = {}) {
|
|
17
19
|
this.view = options.view;
|
|
18
20
|
this.container = options.container;
|
|
@@ -26,12 +28,19 @@ export class EditorCompat {
|
|
|
26
28
|
this.selectedFeature = null;
|
|
27
29
|
this.snappingOptions = { ...(options.snappingOptions ?? {}) };
|
|
28
30
|
this.watchListeners = new Map();
|
|
31
|
+
this.widgetHost = bindHonuaWidgetHost("honua-editor", this.container, this.eventBus);
|
|
32
|
+
this.pushWidgetHost();
|
|
33
|
+
}
|
|
34
|
+
/** First configured layer, pushed into `<honua-editor>`. */
|
|
35
|
+
get layer() {
|
|
36
|
+
return this.layerInfos.find((info) => info.layer != null)?.layer;
|
|
29
37
|
}
|
|
30
38
|
/** Replace the ArcGIS-shaped snapping options and notify watchers. */
|
|
31
39
|
setSnappingOptions(options) {
|
|
32
40
|
this.snappingOptions = { ...options };
|
|
33
41
|
this.notifyWatchers("snappingOptions", this.snappingOptions);
|
|
34
42
|
this.eventBus.emit("editor.snapping-options-changed", { options: this.snappingOptions }, this);
|
|
43
|
+
this.pushWidgetHost();
|
|
35
44
|
}
|
|
36
45
|
/** The snapping options mapped onto the contract `SnappingConfig`. */
|
|
37
46
|
snappingConfig() {
|
|
@@ -143,6 +152,13 @@ export class EditorCompat {
|
|
|
143
152
|
destroy() {
|
|
144
153
|
this.watchListeners.clear();
|
|
145
154
|
}
|
|
155
|
+
pushWidgetHost() {
|
|
156
|
+
pushWidgetHostState(this.widgetHost, {
|
|
157
|
+
view: this.view,
|
|
158
|
+
layer: this.layer,
|
|
159
|
+
snappingOptions: this.snappingOptions,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
146
162
|
notifyWatchers(propertyName, value) {
|
|
147
163
|
const listeners = this.watchListeners.get(propertyName);
|
|
148
164
|
if (!listeners) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HonuaRequestInterceptor } from "../core/types.js";
|
|
1
2
|
import { type EsriRequestInterceptorCompat } from "./request.js";
|
|
2
3
|
export interface EsriConfigRequestCompat {
|
|
3
4
|
timeout: number;
|
|
@@ -12,5 +13,5 @@ export interface EsriConfigCompat {
|
|
|
12
13
|
}
|
|
13
14
|
export declare const esriConfig: EsriConfigCompat;
|
|
14
15
|
export declare function resetEsriConfig(): void;
|
|
15
|
-
export declare function getEsriConfigHonuaInterceptors():
|
|
16
|
+
export declare function getEsriConfigHonuaInterceptors(): HonuaRequestInterceptor[];
|
|
16
17
|
//# sourceMappingURL=esri-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esri-config.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/esri-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,4BAA4B,EAAiC,MAAM,cAAc,CAAC;AAEhG,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,4BAA4B,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAID,eAAO,MAAM,UAAU,EAAE,gBASxB,CAAC;AAEF,wBAAgB,eAAe,IAAI,IAAI,CAOtC;AAED,wBAAgB,8BAA8B,
|
|
1
|
+
{"version":3,"file":"esri-config.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/esri-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,KAAK,4BAA4B,EAAiC,MAAM,cAAc,CAAC;AAEhG,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,4BAA4B,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAID,eAAO,MAAM,UAAU,EAAE,gBASxB,CAAC;AAEF,wBAAgB,eAAe,IAAI,IAAI,CAOtC;AAED,wBAAgB,8BAA8B,IAAI,uBAAuB,EAAE,CAE1E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArcGIS `FeatureEffect` shim.
|
|
3
|
+
*
|
|
4
|
+
* Included features keep the layer symbol. `includedEffect` (bloom, and other
|
|
5
|
+
* CSS filter strings) is stored and is not a second paint pass. Excluded
|
|
6
|
+
* features are repainted from `excludedEffect`: `grayscale(...)` draws them
|
|
7
|
+
* gray, and `opacity(N%)` sets that gray's alpha. The filter `where` is the
|
|
8
|
+
* same clause an in-memory feature layer already evaluates.
|
|
9
|
+
*/
|
|
10
|
+
export interface FeatureEffectCompatOptions {
|
|
11
|
+
filter?: unknown;
|
|
12
|
+
includedEffect?: string;
|
|
13
|
+
excludedEffect?: string;
|
|
14
|
+
excludedLabelsVisible?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class FeatureEffectCompat {
|
|
17
|
+
filter: unknown;
|
|
18
|
+
includedEffect: string | undefined;
|
|
19
|
+
excludedEffect: string | undefined;
|
|
20
|
+
excludedLabelsVisible: boolean;
|
|
21
|
+
constructor(options?: FeatureEffectCompatOptions);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=feature-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-effect.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/feature-effect.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,mBAAmB;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,qBAAqB,EAAE,OAAO,CAAC;gBAEnB,OAAO,GAAE,0BAA+B;CAM5D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class FeatureEffectCompat {
|
|
2
|
+
filter;
|
|
3
|
+
includedEffect;
|
|
4
|
+
excludedEffect;
|
|
5
|
+
excludedLabelsVisible;
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
this.filter = options.filter;
|
|
8
|
+
this.includedEffect = options.includedEffect;
|
|
9
|
+
this.excludedEffect = options.excludedEffect;
|
|
10
|
+
this.excludedLabelsVisible = options.excludedLabelsVisible ?? true;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -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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"}
|