@honua/react 0.1.1-beta.0 → 0.1.4-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.
Files changed (281) hide show
  1. package/contract/discovery.d.ts +34 -0
  2. package/contract/discovery.d.ts.map +1 -1
  3. package/contract/index.d.ts +7 -5
  4. package/contract/index.d.ts.map +1 -1
  5. package/contract/index.js +3 -2
  6. package/contract/pmtiles.d.ts +10 -1
  7. package/contract/pmtiles.d.ts.map +1 -1
  8. package/contract/pmtiles.js +10 -2
  9. package/contract/protocol-module.d.ts +84 -9
  10. package/contract/protocol-module.d.ts.map +1 -1
  11. package/contract/query-filter-fes.d.ts +18 -0
  12. package/contract/query-filter-fes.d.ts.map +1 -0
  13. package/contract/query-filter-fes.js +122 -0
  14. package/contract/query-filter.d.ts +300 -0
  15. package/contract/query-filter.d.ts.map +1 -0
  16. package/contract/query-filter.js +883 -0
  17. package/contract/schema.d.ts +12 -0
  18. package/contract/schema.d.ts.map +1 -1
  19. package/contract/schema.js +34 -0
  20. package/contract/source-capability-support.d.ts.map +1 -1
  21. package/contract/source-capability-support.js +15 -3
  22. package/contract/source.d.ts +45 -25
  23. package/contract/source.d.ts.map +1 -1
  24. package/contract/source.js +719 -479
  25. package/contract/types.d.ts +87 -18
  26. package/contract/types.d.ts.map +1 -1
  27. package/contract/widget-source.d.ts.map +1 -1
  28. package/core/client.d.ts +45 -21
  29. package/core/client.d.ts.map +1 -1
  30. package/core/client.js +224 -46
  31. package/core/error-classifications.d.ts +6 -0
  32. package/core/error-classifications.d.ts.map +1 -1
  33. package/core/error-classifications.js +6 -0
  34. package/core/error-code-registry.d.ts +6 -0
  35. package/core/error-code-registry.d.ts.map +1 -1
  36. package/core/error-code-registry.js +6 -0
  37. package/core/error-envelope.js +2 -0
  38. package/core/errors.d.ts +1 -1
  39. package/core/errors.js +1 -1
  40. package/core/geoparquet-sql.d.ts +68 -4
  41. package/core/geoparquet-sql.d.ts.map +1 -1
  42. package/core/geoparquet-sql.js +325 -8
  43. package/core/odata-write-codec.d.ts.map +1 -1
  44. package/core/odata-write-codec.js +0 -1
  45. package/core/odata.d.ts +6 -0
  46. package/core/odata.d.ts.map +1 -1
  47. package/core/odata.js +6 -1
  48. package/core/ogc-processes.d.ts +182 -25
  49. package/core/ogc-processes.d.ts.map +1 -1
  50. package/core/ogc-processes.js +602 -30
  51. package/core/process-runner.d.ts +8 -1
  52. package/core/process-runner.d.ts.map +1 -1
  53. package/core/process-runner.js +1 -0
  54. package/core/protocol-transport.d.ts +2 -0
  55. package/core/protocol-transport.d.ts.map +1 -1
  56. package/core/stac.d.ts +31 -0
  57. package/core/stac.d.ts.map +1 -1
  58. package/core/stac.js +136 -19
  59. package/core/surfaces.d.ts.map +1 -1
  60. package/core/surfaces.js +273 -68
  61. package/core/types.d.ts +123 -9
  62. package/core/types.d.ts.map +1 -1
  63. package/core/wfs-axis-order.d.ts +18 -0
  64. package/core/wfs-axis-order.d.ts.map +1 -0
  65. package/core/wfs-axis-order.js +108 -0
  66. package/core/wfs-capabilities.d.ts +65 -24
  67. package/core/wfs-capabilities.d.ts.map +1 -1
  68. package/core/wfs-capabilities.js +237 -27
  69. package/core/wfs-filter.d.ts +26 -3
  70. package/core/wfs-filter.d.ts.map +1 -1
  71. package/core/wfs-filter.js +48 -53
  72. package/core/wfs-protocol-error.d.ts +12 -0
  73. package/core/wfs-protocol-error.d.ts.map +1 -0
  74. package/core/wfs-protocol-error.js +13 -0
  75. package/core/wfs.d.ts +53 -1
  76. package/core/wfs.d.ts.map +1 -1
  77. package/core/wfs.js +251 -29
  78. package/core/wms-feature-info.d.ts +92 -0
  79. package/core/wms-feature-info.d.ts.map +1 -0
  80. package/core/wms-feature-info.js +285 -0
  81. package/core/wms.d.ts +9 -0
  82. package/core/wms.d.ts.map +1 -1
  83. package/core/wms.js +17 -5
  84. package/esri-compat/event-bus.d.ts +20 -0
  85. package/esri-compat/event-bus.d.ts.map +1 -1
  86. package/esri-compat/feature-filter.d.ts +46 -1
  87. package/esri-compat/feature-filter.d.ts.map +1 -1
  88. package/esri-compat/feature-filter.js +49 -0
  89. package/esri-compat/geojson-layer.d.ts +4 -2
  90. package/esri-compat/geojson-layer.d.ts.map +1 -1
  91. package/esri-compat/geojson-layer.js +4 -2
  92. package/esri-compat/identity-manager.js +2 -2
  93. package/esri-compat/imagery-layer.d.ts +2 -1
  94. package/esri-compat/imagery-layer.d.ts.map +1 -1
  95. package/esri-compat/imagery-layer.js +2 -1
  96. package/esri-compat/layer-list.d.ts +8 -1
  97. package/esri-compat/layer-list.d.ts.map +1 -1
  98. package/esri-compat/layer-list.js +11 -4
  99. package/esri-compat/legend.d.ts.map +1 -1
  100. package/esri-compat/legend.js +1 -1
  101. package/esri-compat/locator.d.ts +297 -0
  102. package/esri-compat/locator.d.ts.map +1 -0
  103. package/esri-compat/locator.js +579 -0
  104. package/esri-compat/map-image-layer.d.ts.map +1 -1
  105. package/esri-compat/map-view.d.ts.map +1 -1
  106. package/esri-compat/map-view.js +1 -1
  107. package/esri-compat/scene-view.d.ts.map +1 -1
  108. package/esri-compat/time-slider.d.ts +29 -0
  109. package/esri-compat/time-slider.d.ts.map +1 -1
  110. package/esri-compat/time-slider.js +117 -0
  111. package/esri-compat/wfs-layer.d.ts +2 -1
  112. package/esri-compat/wfs-layer.d.ts.map +1 -1
  113. package/esri-compat/wfs-layer.js +2 -1
  114. package/esri-compat/widget-host.d.ts +42 -6
  115. package/esri-compat/widget-host.d.ts.map +1 -1
  116. package/esri-compat/widget-host.js +99 -10
  117. package/generated-app/projection.d.ts.map +1 -1
  118. package/generated-app/runtime.d.ts.map +1 -1
  119. package/map/data-to-map-bridge.d.ts +1 -1
  120. package/map/data-to-map-bridge.d.ts.map +1 -1
  121. package/map/data-to-map-bridge.js +1 -2
  122. package/map/honua-map.d.ts.map +1 -1
  123. package/map/honua-map.js +1 -1
  124. package/map/index.d.ts +2 -0
  125. package/map/index.d.ts.map +1 -1
  126. package/map/index.js +2 -0
  127. package/map/realtime-reconciliation-adapter.d.ts +98 -0
  128. package/map/realtime-reconciliation-adapter.d.ts.map +1 -0
  129. package/map/realtime-reconciliation-adapter.js +84 -0
  130. package/map/temporal-playback.d.ts +25 -0
  131. package/map/temporal-playback.d.ts.map +1 -1
  132. package/map/temporal-playback.js +29 -1
  133. package/package.json +4 -3
  134. package/query-planner/canonical-filter.d.ts +30 -0
  135. package/query-planner/canonical-filter.d.ts.map +1 -0
  136. package/query-planner/canonical-filter.js +30 -0
  137. package/query-planner/columnar-plan.d.ts +63 -0
  138. package/query-planner/columnar-plan.d.ts.map +1 -0
  139. package/query-planner/columnar-plan.js +94 -0
  140. package/query-planner/diagnostics.d.ts +3 -3
  141. package/query-planner/diagnostics.d.ts.map +1 -1
  142. package/query-planner/diagnostics.js +17 -4
  143. package/query-planner/duckdb.d.ts.map +1 -1
  144. package/query-planner/duckdb.js +16 -2
  145. package/query-planner/execution-context.d.ts.map +1 -1
  146. package/query-planner/execution-context.js +3 -1
  147. package/query-planner/executor.d.ts.map +1 -1
  148. package/query-planner/executor.js +7 -1
  149. package/query-planner/geoservices.d.ts.map +1 -1
  150. package/query-planner/geoservices.js +24 -5
  151. package/query-planner/grpc.d.ts.map +1 -1
  152. package/query-planner/grpc.js +29 -5
  153. package/query-planner/index.d.ts +20 -5
  154. package/query-planner/index.d.ts.map +1 -1
  155. package/query-planner/index.js +16 -3
  156. package/query-planner/ir.d.ts +6 -1
  157. package/query-planner/ir.d.ts.map +1 -1
  158. package/query-planner/ir.js +63 -1
  159. package/query-planner/odata-protocol-module.d.ts +54 -0
  160. package/query-planner/odata-protocol-module.d.ts.map +1 -0
  161. package/query-planner/odata-protocol-module.js +199 -0
  162. package/query-planner/odata-v1.d.ts +23 -0
  163. package/query-planner/odata-v1.d.ts.map +1 -0
  164. package/query-planner/odata-v1.js +202 -0
  165. package/query-planner/odata.d.ts +0 -3
  166. package/query-planner/odata.d.ts.map +1 -1
  167. package/query-planner/odata.js +0 -143
  168. package/query-planner/ogc-features.d.ts.map +1 -1
  169. package/query-planner/ogc-features.js +23 -1
  170. package/query-planner/planner.d.ts +2 -2
  171. package/query-planner/planner.d.ts.map +1 -1
  172. package/query-planner/planner.js +146 -27
  173. package/query-planner/representation.d.ts +59 -0
  174. package/query-planner/representation.d.ts.map +1 -0
  175. package/query-planner/representation.js +140 -0
  176. package/query-planner/types.d.ts +153 -3
  177. package/query-planner/types.d.ts.map +1 -1
  178. package/query-planner/wfs-protocol-module.d.ts +57 -0
  179. package/query-planner/wfs-protocol-module.d.ts.map +1 -0
  180. package/query-planner/wfs-protocol-module.js +731 -0
  181. package/query-planner/wfs-v1.d.ts +41 -0
  182. package/query-planner/wfs-v1.d.ts.map +1 -0
  183. package/query-planner/wfs-v1.js +366 -0
  184. package/query-planner/wfs.d.ts +1 -3
  185. package/query-planner/wfs.d.ts.map +1 -1
  186. package/query-planner/wfs.js +1 -70
  187. package/react/honua-map.d.ts +3 -1
  188. package/react/honua-map.d.ts.map +1 -1
  189. package/react/honua-map.js +11 -1
  190. package/react/hooks.d.ts +1 -1
  191. package/react/hooks.js +1 -1
  192. package/react/selection.d.ts.map +1 -1
  193. package/react/selection.js +0 -0
  194. package/react/use-mounted-source.d.ts +1 -1
  195. package/react/use-mounted-source.js +1 -1
  196. package/realtime/checkpoint-store.d.ts +206 -0
  197. package/realtime/checkpoint-store.d.ts.map +1 -0
  198. package/realtime/checkpoint-store.js +504 -0
  199. package/realtime/contract.d.ts +142 -0
  200. package/realtime/contract.d.ts.map +1 -0
  201. package/realtime/contract.js +154 -0
  202. package/realtime/exploration.d.ts +16 -0
  203. package/realtime/exploration.d.ts.map +1 -0
  204. package/realtime/exploration.js +32 -0
  205. package/realtime/honua-server.d.ts +131 -0
  206. package/realtime/honua-server.d.ts.map +1 -0
  207. package/realtime/honua-server.js +302 -0
  208. package/realtime/index.d.ts +39 -0
  209. package/realtime/index.d.ts.map +1 -0
  210. package/realtime/index.js +26 -0
  211. package/realtime/odata-delta.d.ts +114 -0
  212. package/realtime/odata-delta.d.ts.map +1 -0
  213. package/realtime/odata-delta.js +483 -0
  214. package/realtime/projections.d.ts +30 -0
  215. package/realtime/projections.d.ts.map +1 -0
  216. package/realtime/projections.js +51 -0
  217. package/realtime/reconciliation.d.ts +245 -0
  218. package/realtime/reconciliation.d.ts.map +1 -0
  219. package/realtime/reconciliation.js +377 -0
  220. package/realtime/reducer.d.ts +14 -0
  221. package/realtime/reducer.d.ts.map +1 -0
  222. package/realtime/reducer.js +351 -0
  223. package/realtime/resumable-transport.d.ts +111 -0
  224. package/realtime/resumable-transport.d.ts.map +1 -0
  225. package/realtime/resumable-transport.js +406 -0
  226. package/realtime/resumable.d.ts +104 -0
  227. package/realtime/resumable.d.ts.map +1 -0
  228. package/realtime/resumable.js +632 -0
  229. package/realtime/sse.d.ts +23 -0
  230. package/realtime/sse.d.ts.map +1 -0
  231. package/realtime/sse.js +147 -0
  232. package/realtime/store.d.ts +18 -0
  233. package/realtime/store.d.ts.map +1 -0
  234. package/realtime/store.js +63 -0
  235. package/realtime/types.d.ts +190 -0
  236. package/realtime/types.d.ts.map +1 -0
  237. package/realtime/types.js +10 -0
  238. package/realtime/websocket.d.ts +60 -0
  239. package/realtime/websocket.d.ts.map +1 -0
  240. package/realtime/websocket.js +157 -0
  241. package/realtime/wire.d.ts +28 -0
  242. package/realtime/wire.d.ts.map +1 -0
  243. package/realtime/wire.js +73 -0
  244. package/runtime/index.d.ts +6 -2
  245. package/runtime/index.d.ts.map +1 -1
  246. package/runtime/index.js +3 -1
  247. package/runtime/load-package.d.ts +24 -0
  248. package/runtime/load-package.d.ts.map +1 -1
  249. package/runtime/load-package.js +45 -1
  250. package/runtime/maplibre-renderer.d.ts +11 -0
  251. package/runtime/maplibre-renderer.d.ts.map +1 -1
  252. package/runtime/maplibre-renderer.js +32 -7
  253. package/runtime/offline-region-protocol.d.ts +73 -0
  254. package/runtime/offline-region-protocol.d.ts.map +1 -0
  255. package/runtime/offline-region-protocol.js +63 -0
  256. package/runtime/offline-region-style.d.ts +78 -0
  257. package/runtime/offline-region-style.d.ts.map +1 -0
  258. package/runtime/offline-region-style.js +147 -0
  259. package/runtime/pmtiles-protocol.d.ts +7 -8
  260. package/runtime/pmtiles-protocol.d.ts.map +1 -1
  261. package/runtime/pmtiles-protocol.js +19 -66
  262. package/runtime/protocol-registry.d.ts +55 -0
  263. package/runtime/protocol-registry.d.ts.map +1 -0
  264. package/runtime/protocol-registry.js +103 -0
  265. package/runtime/runtime.d.ts +2 -0
  266. package/runtime/runtime.d.ts.map +1 -1
  267. package/runtime/runtime.js +6 -1
  268. package/studio/index.d.ts +24 -7
  269. package/studio/index.d.ts.map +1 -1
  270. package/studio/index.js +21 -7
  271. package/studio/lifecycle-client.d.ts +164 -0
  272. package/studio/lifecycle-client.d.ts.map +1 -0
  273. package/studio/lifecycle-client.js +299 -0
  274. package/studio/lifecycle-errors.d.ts +91 -0
  275. package/studio/lifecycle-errors.d.ts.map +1 -0
  276. package/studio/lifecycle-errors.js +77 -0
  277. package/studio/lifecycle-types.d.ts +321 -0
  278. package/studio/lifecycle-types.d.ts.map +1 -0
  279. package/studio/lifecycle-types.js +22 -0
  280. package/webmap/convert-label.js +0 -1
  281. package/webmap/convert-symbol.d.ts.map +1 -1
@@ -12,6 +12,7 @@ export class ImageryLayerCompat {
12
12
  listMode;
13
13
  format;
14
14
  pixelType;
15
+ /** Mutable to match the ArcGIS declaration (`number[]`); see #1013. */
15
16
  bandIds;
16
17
  renderingRule;
17
18
  mosaicRule;
@@ -35,7 +36,7 @@ export class ImageryLayerCompat {
35
36
  this.listMode = options.listMode ?? "show";
36
37
  this.format = options.format ?? "png";
37
38
  this.pixelType = options.pixelType;
38
- this.bandIds = options.bandIds;
39
+ this.bandIds = options.bandIds === undefined ? undefined : [...options.bandIds];
39
40
  this.renderingRule = options.renderingRule;
40
41
  this.mosaicRule = options.mosaicRule;
41
42
  this.loaded = false;
@@ -66,7 +66,14 @@ export declare class LayerListCompat {
66
66
  * Headless usage keeps the state-model-only behavior.
67
67
  */
68
68
  private readonly widgetHost;
69
- private widgetHostBound;
69
+ /**
70
+ * The element the toggle listener is currently bound to. Tracked per element
71
+ * rather than as a "bound once" flag because the host legitimately mounts a
72
+ * *new* element after a teardown — an unregister/re-register cycle, or a
73
+ * container whose children were replaced — and a flag would leave that new
74
+ * element without a listener, silently breaking visibility toggles.
75
+ */
76
+ private widgetHostBoundElement;
70
77
  constructor(options?: LayerListCompatOptions);
71
78
  load(): Promise<LayerListCompat>;
72
79
  when(callback?: (widget: LayerListCompat) => void): Promise<LayerListCompat>;
@@ -1 +1 @@
1
- {"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/layer-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/layer-list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,KAAK,IAAI,CAAC;CAChF;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,qBAAqB,EAAE,EAAE,CAAC;IAC3C,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,UAAU,2BAA2B;IACnC,gBAAgB,EAAE,iCAAiC,CAAC;IACpD,OAAO,EAAE,2BAA2B,CAAC;CACtC;AAED,KAAK,wBAAwB,GAAG,MAAM,2BAA2B,CAAC;AAGlE,qBAAa,eAAe;IAC1B,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,GAAG,EAAE,OAAO,CAAC;IAC7B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,aAAa,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqE;IAC7G,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8D;IAC9F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,aAAa,CAA4B;IACjD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB,CAAU;gBAErB,OAAO,GAAE,sBAA2B;IAgC1C,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAiBhC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAQlF,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,qBAAqB;IAetF,OAAO,IAAI,SAAS,mBAAmB,EAAE;IAmBzC,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO;IAiBxE,cAAc,CACnB,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,EACpC,eAAe,EAAE,SAAS,CAAC,SAAS,qBAAqB,EAAE,CAAC,EAAE,GAC7D,OAAO;IAcH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAsB/E,EAAE,CAAC,KAAK,SAAS,wBAAwB,EAC9C,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,2BAA2B,CAAC,KAAK,CAAC,KAAK,IAAI,GAC5D,qBAAqB;IAgBjB,OAAO,IAAI,IAAI;IAStB,gFAAgF;YAClE,gBAAgB;IAiB9B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;IAeZ,OAAO,CAAC,cAAc;CAUvB"}
@@ -22,7 +22,14 @@ export class LayerListCompat {
22
22
  * Headless usage keeps the state-model-only behavior.
23
23
  */
24
24
  widgetHost;
25
- widgetHostBound = false;
25
+ /**
26
+ * The element the toggle listener is currently bound to. Tracked per element
27
+ * rather than as a "bound once" flag because the host legitimately mounts a
28
+ * *new* element after a teardown — an unregister/re-register cycle, or a
29
+ * container whose children were replaced — and a flag would leave that new
30
+ * element without a listener, silently breaking visibility toggles.
31
+ */
32
+ widgetHostBoundElement;
26
33
  constructor(options = {}) {
27
34
  this.view = options.view;
28
35
  this.map = options.map ?? extractMapFromView(options.view);
@@ -37,7 +44,7 @@ export class LayerListCompat {
37
44
  this.listenersByType = new Map();
38
45
  this.watchListeners = new Map();
39
46
  this.subscriptions = [];
40
- const widgetHost = options.container != null ? new HonuaWidgetHost("honua-layer-list", options.container) : undefined;
47
+ const widgetHost = options.container != null ? new HonuaWidgetHost("honua-layer-list", options.container, this.eventBus) : undefined;
41
48
  this.widgetHost = widgetHost?.available ? widgetHost : undefined;
42
49
  if (this.autoRefresh) {
43
50
  this.subscriptions.push(this.eventBus.on("map.layer-added", () => this.refresh()));
@@ -180,8 +187,8 @@ export class LayerListCompat {
180
187
  return;
181
188
  const rows = flattenLayerListItems(this.items);
182
189
  await host.update((element) => {
183
- if (!this.widgetHostBound) {
184
- this.widgetHostBound = true;
190
+ if (this.widgetHostBoundElement !== element) {
191
+ this.widgetHostBoundElement = element;
185
192
  element.addEventListener("honua-layer-visibility-change", (event) => {
186
193
  const detail = event.detail;
187
194
  if (detail?.layerId === undefined || typeof detail.visible !== "boolean")
@@ -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;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,GAAG,EAAE,OAAO,CAAC;IAC7B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,aAAa,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,mBAAwB;IAiCvC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAiB7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,kBAAkB;IAe7E,OAAO,IAAI,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC;IAqC3D,OAAO,IAAI,IAAI;IAQtB,4EAA4E;YAC9D,gBAAgB;IAe9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,cAAc;CAUvB"}
1
+ {"version":3,"file":"legend.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/legend.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAIf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,GAAG,EAAE,OAAO,CAAC;IAC7B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,aAAa,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,sBAAsB,CAAC;IACnC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,mBAAwB;IAkCvC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAiB7B,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ5E,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,kBAAkB;IAe7E,OAAO,IAAI,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC;IAqC3D,OAAO,IAAI,IAAI;IAQtB,4EAA4E;YAC9D,gBAAgB;IAe9B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,cAAc;CAUvB"}
@@ -37,7 +37,7 @@ export class LegendCompat {
37
37
  this.watchListeners = new Map();
38
38
  this.subscriptions = [];
39
39
  this.refreshRevision = 0;
40
- const widgetHost = options.container != null ? new HonuaWidgetHost("honua-legend", options.container) : undefined;
40
+ const widgetHost = options.container != null ? new HonuaWidgetHost("honua-legend", options.container, this.eventBus) : undefined;
41
41
  this.widgetHost = widgetHost?.available ? widgetHost : undefined;
42
42
  if (this.autoRefresh) {
43
43
  this.subscriptions.push(this.eventBus.on("map.layer-added", () => void this.refresh()));
@@ -0,0 +1,297 @@
1
+ /**
2
+ * ArcGIS `Locator` / `@arcgis/core/rest/locator` compatibility, backed entirely
3
+ * by the provider-pluggable geocoding contract in `src/geocoding/`.
4
+ *
5
+ * There is no Honua server dependency: the caller supplies a
6
+ * {@link GeocodingProvider} (Nominatim / Photon / Pelias / Honua) once and the
7
+ * shim projects ArcGIS-shaped parameters onto it and ArcGIS-shaped candidates
8
+ * back out.
9
+ *
10
+ * Capability honesty is inherited from the geocoding layer rather than faked:
11
+ * a provider that does not declare `suggest` (Nominatim) makes
12
+ * {@link LocatorCompat.suggestLocations} throw `HonuaCapabilityNotSupportedError`
13
+ * under the default `"strict"` policy, and makes the derived search source omit
14
+ * its `suggest` hook entirely so the Search widget simply does not offer
15
+ * typeahead. ArcGIS locator parameters the provider contract cannot express
16
+ * (`searchExtent`, proximity `location`, `categories`, `magicKey`,
17
+ * `locationType`) are rejected the same way instead of being silently dropped.
18
+ *
19
+ * @packageDocumentation
20
+ */
21
+ import type { CapabilityPolicy } from "../contract/types.js";
22
+ import { type GeocodingProvenance, type GeocodingProvider } from "../geocoding/provider.js";
23
+ import { CompatEventBus } from "./event-bus.js";
24
+ import type { SearchRequestCompat, SearchResultCompat, SearchSourceCompat, SearchSuggestionCompat } from "./search.js";
25
+ /** Structural `SpatialReference` accepted wherever ArcGIS takes one. */
26
+ export interface LocatorSpatialReferenceLike {
27
+ wkid?: number;
28
+ latestWkid?: number;
29
+ }
30
+ /** ArcGIS-shaped `Point` returned on every candidate. */
31
+ export interface LocatorPointCompat {
32
+ x: number;
33
+ y: number;
34
+ longitude: number;
35
+ latitude: number;
36
+ spatialReference: {
37
+ wkid: number;
38
+ };
39
+ }
40
+ /** ArcGIS-shaped `Extent` returned on every candidate. */
41
+ export interface LocatorExtentCompat {
42
+ xmin: number;
43
+ ymin: number;
44
+ xmax: number;
45
+ ymax: number;
46
+ spatialReference: {
47
+ wkid: number;
48
+ };
49
+ }
50
+ /**
51
+ * ArcGIS-shaped `AddressCandidate`, plus the geocoding provenance the host is
52
+ * obliged to display (Honua addition — ArcGIS has no equivalent field).
53
+ */
54
+ export interface LocatorAddressCandidateCompat {
55
+ address: string;
56
+ attributes: Record<string, string | null>;
57
+ location: LocatorPointCompat;
58
+ extent: LocatorExtentCompat;
59
+ score: number;
60
+ provenance: GeocodingProvenance;
61
+ }
62
+ /**
63
+ * ArcGIS-shaped `SuggestionResult`. `magicKey` is always `""`: the geocoding
64
+ * provider contract has no opaque re-resolution handle, so a suggestion is
65
+ * re-resolved by its `text`.
66
+ */
67
+ export interface LocatorSuggestionCompat {
68
+ text: string;
69
+ magicKey: string;
70
+ isCollection: boolean;
71
+ provenance: GeocodingProvenance;
72
+ }
73
+ /** ArcGIS multi-field address input; `SingleLine` is the supported form. */
74
+ export interface LocatorAddressInputCompat {
75
+ SingleLine?: string;
76
+ singleLine?: string;
77
+ Address?: string;
78
+ address?: string;
79
+ City?: string;
80
+ Region?: string;
81
+ Postal?: string;
82
+ CountryCode?: string;
83
+ [key: string]: unknown;
84
+ }
85
+ /** Parameters for {@link LocatorCompat.addressToLocations}. */
86
+ export interface AddressToLocationsParamsCompat {
87
+ address?: LocatorAddressInputCompat | string;
88
+ countryCode?: string;
89
+ maxLocations?: number;
90
+ outFields?: readonly string[] | string;
91
+ outSpatialReference?: LocatorSpatialReferenceLike | number;
92
+ /** Unsupported by the provider contract; rejected under `"strict"`. */
93
+ categories?: readonly string[] | string;
94
+ /** Proximity bias — unsupported by the provider contract. */
95
+ location?: unknown;
96
+ /** Result-window filter — unsupported by the provider contract. */
97
+ searchExtent?: unknown;
98
+ /** Opaque suggestion handle — unsupported by the provider contract. */
99
+ magicKey?: string;
100
+ }
101
+ /** One row of a {@link LocatorCompat.addressesToLocations} batch. */
102
+ export interface LocatorBatchAddressCompat extends LocatorAddressInputCompat {
103
+ OBJECTID?: number;
104
+ objectId?: number;
105
+ }
106
+ /** Parameters for {@link LocatorCompat.addressesToLocations}. */
107
+ export interface AddressesToLocationsParamsCompat {
108
+ addresses?: readonly LocatorBatchAddressCompat[];
109
+ countryCode?: string;
110
+ outFields?: readonly string[] | string;
111
+ outSpatialReference?: LocatorSpatialReferenceLike | number;
112
+ categories?: readonly string[] | string;
113
+ searchExtent?: unknown;
114
+ }
115
+ /** Parameters for {@link LocatorCompat.locationToAddress}. */
116
+ export interface LocationToAddressParamsCompat {
117
+ location?: unknown;
118
+ outSpatialReference?: LocatorSpatialReferenceLike | number;
119
+ outFields?: readonly string[] | string;
120
+ /** ArcGIS rooftop/street-side selector — unsupported by the provider contract. */
121
+ locationType?: string;
122
+ /** ArcGIS search radius in meters — unsupported by the provider contract. */
123
+ locationSearchRadius?: number;
124
+ }
125
+ /** Parameters for {@link LocatorCompat.suggestLocations}. */
126
+ export interface SuggestLocationsParamsCompat {
127
+ text?: string;
128
+ countryCode?: string;
129
+ maxSuggestions?: number;
130
+ categories?: readonly string[] | string;
131
+ location?: unknown;
132
+ searchExtent?: unknown;
133
+ }
134
+ export interface LocatorCompatOptions {
135
+ /**
136
+ * Original ArcGIS GeocodeServer URL. Retained for diagnostics only — it is
137
+ * never fetched. Geocoding always runs through {@link provider}.
138
+ */
139
+ url?: string;
140
+ /** Geocoding provider every operation is executed against. */
141
+ provider?: GeocodingProvider;
142
+ /** Accepted for ArcGIS constructor parity; diagnostics only (never sent). */
143
+ apiKey?: string;
144
+ /** Accepted for ArcGIS constructor parity; diagnostics only (never sent). */
145
+ requestOptions?: Record<string, unknown>;
146
+ /** Capability policy for provider capability misses; defaults to `"strict"`. */
147
+ capabilityPolicy?: CapabilityPolicy;
148
+ eventBus?: CompatEventBus;
149
+ /** Default `maxLocations` when a call does not specify one. */
150
+ maxLocations?: number;
151
+ /**
152
+ * Half-width, in degrees, of the square extent derived around a candidate
153
+ * point when the provider surfaces no `Xmin`/`Ymin`/`Xmax`/`Ymax` attributes.
154
+ * Defaults to `0.01` (roughly a 2 km box at the equator).
155
+ */
156
+ extentPaddingDegrees?: number;
157
+ }
158
+ export type LocatorLoadStatusCompat = "not-loaded" | "loading" | "loaded";
159
+ export interface LocatorHandleCompat {
160
+ remove(): void;
161
+ }
162
+ /** Options for {@link LocatorCompat.toSearchSource} / {@link LocatorSearchSourceCompat}. */
163
+ export interface LocatorSearchSourceCompatOptions {
164
+ /** Pre-configured locator. When omitted, one is built from `url` / `provider`. */
165
+ locator?: LocatorCompat;
166
+ /** Geocoding provider, when constructing the locator inline. */
167
+ provider?: GeocodingProvider;
168
+ /** ArcGIS `LocatorSearchSource.url`; retained for diagnostics only. */
169
+ url?: string;
170
+ capabilityPolicy?: CapabilityPolicy;
171
+ name?: string;
172
+ placeholder?: string;
173
+ maxResults?: number;
174
+ maxSuggestions?: number;
175
+ countryCode?: string;
176
+ outFields?: readonly string[] | string;
177
+ }
178
+ /**
179
+ * Drop-in replacement for ArcGIS `esri/tasks/Locator` /
180
+ * `@arcgis/core/rest/locator`, executed against a caller-configured
181
+ * {@link GeocodingProvider}.
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * import { LocatorCompat } from "@honua/sdk-js/esri-compat";
186
+ * import { photonGeocodingProvider } from "@honua/sdk-js/geocoding";
187
+ *
188
+ * const locator = new LocatorCompat({
189
+ * provider: photonGeocodingProvider({ baseUrl: "https://photon.example.org" }),
190
+ * });
191
+ * const candidates = await locator.addressToLocations({
192
+ * address: { SingleLine: "1 Honolulu Pl, HI" },
193
+ * maxLocations: 5,
194
+ * });
195
+ * ```
196
+ */
197
+ export declare class LocatorCompat {
198
+ readonly url: string | undefined;
199
+ /**
200
+ * Geocoding provider every operation runs against. Mutable so a migrated app
201
+ * can attach one after construction (`locator.provider = photonGeocodingProvider(...)`),
202
+ * which is the single assisted step the codemod cannot perform for you.
203
+ */
204
+ provider: GeocodingProvider | undefined;
205
+ readonly apiKey: string | undefined;
206
+ readonly requestOptions: Readonly<Record<string, unknown>> | undefined;
207
+ readonly capabilityPolicy: CapabilityPolicy;
208
+ readonly eventBus: CompatEventBus;
209
+ readonly maxLocations: number;
210
+ readonly extentPaddingDegrees: number;
211
+ loaded: boolean;
212
+ loadStatus: LocatorLoadStatusCompat;
213
+ private readonly watchListeners;
214
+ constructor(options?: LocatorCompatOptions | string);
215
+ /** `true` when the configured provider declares the `suggest` capability. */
216
+ get supportsSuggest(): boolean;
217
+ load(): Promise<LocatorCompat>;
218
+ when(callback?: (locator: LocatorCompat) => void): Promise<LocatorCompat>;
219
+ watch(propertyName: string, listener: (value: unknown) => void): LocatorHandleCompat;
220
+ /** Forward-geocode a single address into ArcGIS-shaped candidates. */
221
+ addressToLocations(params?: AddressToLocationsParamsCompat): Promise<LocatorAddressCandidateCompat[]>;
222
+ /**
223
+ * Client-side batch geocode. ArcGIS `addressesToLocations` posts one batch to
224
+ * a locator; the provider contract has no batch endpoint, so each address is
225
+ * geocoded individually and the best candidate is returned with `ResultID`
226
+ * carried through from `OBJECTID`.
227
+ */
228
+ addressesToLocations(params?: AddressesToLocationsParamsCompat): Promise<LocatorAddressCandidateCompat[]>;
229
+ /**
230
+ * Reverse-geocode a point. Mirrors ArcGIS by rejecting when the provider
231
+ * finds no address rather than resolving to `null`.
232
+ */
233
+ locationToAddress(params?: LocationToAddressParamsCompat): Promise<LocatorAddressCandidateCompat>;
234
+ /**
235
+ * Typeahead suggestions. Providers without the `suggest` capability throw
236
+ * `HonuaCapabilityNotSupportedError` under `"strict"` and resolve to `[]`
237
+ * under `"degraded"` — the miss is never faked with a forward geocode.
238
+ */
239
+ suggestLocations(params?: SuggestLocationsParamsCompat): Promise<LocatorSuggestionCompat[]>;
240
+ /**
241
+ * Project this locator as a `SearchCompat` source — the honua-maplibre
242
+ * replacement for the ArcGIS `LocatorSearchSource` Search backend.
243
+ */
244
+ toSearchSource(options?: Omit<LocatorSearchSourceCompatOptions, "locator">): LocatorSearchSourceCompat;
245
+ destroy(): void;
246
+ private requireProvider;
247
+ private rejectUnsupportedParams;
248
+ private rejectUnsupportedCapability;
249
+ private toCandidate;
250
+ /**
251
+ * Prefer the ArcGIS locator display extent when the provider surfaces
252
+ * `Xmin`/`Ymin`/`Xmax`/`Ymax` attributes; otherwise derive a square box around
253
+ * the candidate point so `view.goTo(candidate.extent)` still behaves.
254
+ */
255
+ private resolveExtent;
256
+ private notifyWatchers;
257
+ }
258
+ /**
259
+ * Drop-in replacement for the ArcGIS `LocatorSearchSource` Search-widget
260
+ * backend. `suggest` is only defined when the underlying provider declares the
261
+ * `suggest` capability, so `SearchCompat` skips typeahead for providers that
262
+ * do not have it rather than throwing on every keystroke.
263
+ */
264
+ export declare class LocatorSearchSourceCompat implements SearchSourceCompat {
265
+ readonly locator: LocatorCompat;
266
+ readonly name: string;
267
+ readonly placeholder: string;
268
+ readonly maxResults: number;
269
+ readonly maxSuggestions: number;
270
+ readonly countryCode: string | undefined;
271
+ readonly outFields: readonly string[] | string | undefined;
272
+ /**
273
+ * Present only while the configured provider declares the `suggest`
274
+ * capability. `SearchCompat` gates typeahead on `typeof source.suggest ===
275
+ * "function"`, so a provider without it (Nominatim) simply contributes no
276
+ * suggestions instead of throwing on every keystroke. Evaluated per access so
277
+ * a late-attached `locator.provider` is honored.
278
+ */
279
+ get suggest(): ((request: SearchRequestCompat) => Promise<SearchSuggestionCompat[]>) | undefined;
280
+ private readonly suggestFromLocator;
281
+ constructor(options?: LocatorSearchSourceCompatOptions);
282
+ search({ searchTerm }: SearchRequestCompat): Promise<SearchResultCompat[]>;
283
+ }
284
+ /**
285
+ * `@arcgis/core/rest/locator` module form of
286
+ * {@link LocatorCompat.addressToLocations}. The first argument is a configured
287
+ * {@link LocatorCompat} (or its options) rather than an ArcGIS locator URL,
288
+ * because the shim geocodes through a provider instead of a GeocodeServer.
289
+ */
290
+ export declare function locatorAddressToLocations(locator: LocatorCompat | LocatorCompatOptions | string, params?: AddressToLocationsParamsCompat): Promise<LocatorAddressCandidateCompat[]>;
291
+ /** `@arcgis/core/rest/locator` module form of {@link LocatorCompat.addressesToLocations}. */
292
+ export declare function locatorAddressesToLocations(locator: LocatorCompat | LocatorCompatOptions | string, params?: AddressesToLocationsParamsCompat): Promise<LocatorAddressCandidateCompat[]>;
293
+ /** `@arcgis/core/rest/locator` module form of {@link LocatorCompat.locationToAddress}. */
294
+ export declare function locatorLocationToAddress(locator: LocatorCompat | LocatorCompatOptions | string, params?: LocationToAddressParamsCompat): Promise<LocatorAddressCandidateCompat>;
295
+ /** `@arcgis/core/rest/locator` module form of {@link LocatorCompat.suggestLocations}. */
296
+ export declare function locatorSuggestLocations(locator: LocatorCompat | LocatorCompatOptions | string, params?: SuggestLocationsParamsCompat): Promise<LocatorSuggestionCompat[]>;
297
+ //# sourceMappingURL=locator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/locator.ts"],"names":[],"mappings":"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"}