@honua/app-platform 0.0.20-alpha.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 (840) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/app/index.d.ts +164 -0
  4. package/app/index.d.ts.map +1 -0
  5. package/app/index.js +424 -0
  6. package/app-controller/controller.d.ts +425 -0
  7. package/app-controller/controller.d.ts.map +1 -0
  8. package/app-controller/controller.js +1173 -0
  9. package/app-controller/index.d.ts +14 -0
  10. package/app-controller/index.d.ts.map +1 -0
  11. package/app-controller/index.js +12 -0
  12. package/app-workspace/index.d.ts +421 -0
  13. package/app-workspace/index.d.ts.map +1 -0
  14. package/app-workspace/index.js +722 -0
  15. package/collaboration/client.d.ts +40 -0
  16. package/collaboration/client.d.ts.map +1 -0
  17. package/collaboration/client.js +299 -0
  18. package/collaboration/errors.d.ts +15 -0
  19. package/collaboration/errors.d.ts.map +1 -0
  20. package/collaboration/errors.js +17 -0
  21. package/collaboration/fixture.d.ts +41 -0
  22. package/collaboration/fixture.d.ts.map +1 -0
  23. package/collaboration/fixture.js +362 -0
  24. package/collaboration/index.d.ts +18 -0
  25. package/collaboration/index.d.ts.map +1 -0
  26. package/collaboration/index.js +14 -0
  27. package/collaboration/types.d.ts +240 -0
  28. package/collaboration/types.d.ts.map +1 -0
  29. package/collaboration/types.js +1 -0
  30. package/contract/analytics-sources.d.ts +149 -0
  31. package/contract/analytics-sources.d.ts.map +1 -0
  32. package/contract/analytics-sources.js +235 -0
  33. package/contract/edit-session.d.ts +203 -0
  34. package/contract/edit-session.d.ts.map +1 -0
  35. package/contract/edit-session.js +760 -0
  36. package/contract/edit-sketch.d.ts +91 -0
  37. package/contract/edit-sketch.d.ts.map +1 -0
  38. package/contract/edit-sketch.js +281 -0
  39. package/contract/index.d.ts +63 -0
  40. package/contract/index.d.ts.map +1 -0
  41. package/contract/index.js +52 -0
  42. package/contract/jobs.d.ts +149 -0
  43. package/contract/jobs.d.ts.map +1 -0
  44. package/contract/jobs.js +40 -0
  45. package/contract/pmtiles.d.ts +162 -0
  46. package/contract/pmtiles.d.ts.map +1 -0
  47. package/contract/pmtiles.js +155 -0
  48. package/contract/source.d.ts +447 -0
  49. package/contract/source.d.ts.map +1 -0
  50. package/contract/source.js +3909 -0
  51. package/contract/spatial-aggregation.d.ts +336 -0
  52. package/contract/spatial-aggregation.d.ts.map +1 -0
  53. package/contract/spatial-aggregation.js +298 -0
  54. package/contract/temporal.d.ts +455 -0
  55. package/contract/temporal.d.ts.map +1 -0
  56. package/contract/temporal.js +146 -0
  57. package/contract/tiles.d.ts +370 -0
  58. package/contract/tiles.d.ts.map +1 -0
  59. package/contract/tiles.js +519 -0
  60. package/contract/types.d.ts +694 -0
  61. package/contract/types.d.ts.map +1 -0
  62. package/contract/types.js +183 -0
  63. package/contract/widget-source.d.ts +205 -0
  64. package/contract/widget-source.d.ts.map +1 -0
  65. package/contract/widget-source.js +1473 -0
  66. package/control-plane/client.d.ts +95 -0
  67. package/control-plane/client.d.ts.map +1 -0
  68. package/control-plane/client.js +374 -0
  69. package/control-plane/index.d.ts +18 -0
  70. package/control-plane/index.d.ts.map +1 -0
  71. package/control-plane/index.js +14 -0
  72. package/control-plane/types.d.ts +233 -0
  73. package/control-plane/types.d.ts.map +1 -0
  74. package/control-plane/types.js +7 -0
  75. package/controls/basemap-style-binding.d.ts +54 -0
  76. package/controls/basemap-style-binding.d.ts.map +1 -0
  77. package/controls/basemap-style-binding.js +199 -0
  78. package/controls/basemap-switcher.d.ts +95 -0
  79. package/controls/basemap-switcher.d.ts.map +1 -0
  80. package/controls/basemap-switcher.js +379 -0
  81. package/controls/element-utils.d.ts +48 -0
  82. package/controls/element-utils.d.ts.map +1 -0
  83. package/controls/element-utils.js +78 -0
  84. package/controls/index.d.ts +33 -0
  85. package/controls/index.d.ts.map +1 -0
  86. package/controls/index.js +30 -0
  87. package/controls/layer-list.d.ts +98 -0
  88. package/controls/layer-list.d.ts.map +1 -0
  89. package/controls/layer-list.js +375 -0
  90. package/controls/legend-derive.d.ts +53 -0
  91. package/controls/legend-derive.d.ts.map +1 -0
  92. package/controls/legend-derive.js +196 -0
  93. package/controls/legend.d.ts +104 -0
  94. package/controls/legend.d.ts.map +1 -0
  95. package/controls/legend.js +381 -0
  96. package/controls/swipe-control.d.ts +80 -0
  97. package/controls/swipe-control.d.ts.map +1 -0
  98. package/controls/swipe-control.js +368 -0
  99. package/controls/types.d.ts +227 -0
  100. package/controls/types.d.ts.map +1 -0
  101. package/controls/types.js +11 -0
  102. package/core/auth/client-credentials-provider.d.ts +51 -0
  103. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  104. package/core/auth/client-credentials-provider.js +115 -0
  105. package/core/auth/credential-store.d.ts +52 -0
  106. package/core/auth/credential-store.d.ts.map +1 -0
  107. package/core/auth/credential-store.js +82 -0
  108. package/core/auth/index.d.ts +23 -0
  109. package/core/auth/index.d.ts.map +1 -0
  110. package/core/auth/index.js +20 -0
  111. package/core/auth/oauth2-provider.d.ts +114 -0
  112. package/core/auth/oauth2-provider.d.ts.map +1 -0
  113. package/core/auth/oauth2-provider.js +408 -0
  114. package/core/auth/pkce.d.ts +25 -0
  115. package/core/auth/pkce.d.ts.map +1 -0
  116. package/core/auth/pkce.js +46 -0
  117. package/core/auth/static-providers.d.ts +20 -0
  118. package/core/auth/static-providers.d.ts.map +1 -0
  119. package/core/auth/static-providers.js +26 -0
  120. package/core/auth/token-endpoint.d.ts +40 -0
  121. package/core/auth/token-endpoint.d.ts.map +1 -0
  122. package/core/auth/token-endpoint.js +133 -0
  123. package/core/auth/types.d.ts +144 -0
  124. package/core/auth/types.d.ts.map +1 -0
  125. package/core/auth/types.js +8 -0
  126. package/core/batch.d.ts +37 -0
  127. package/core/batch.d.ts.map +1 -0
  128. package/core/batch.js +79 -0
  129. package/core/cache-state.d.ts +79 -0
  130. package/core/cache-state.d.ts.map +1 -0
  131. package/core/cache-state.js +87 -0
  132. package/core/client.d.ts +607 -0
  133. package/core/client.d.ts.map +1 -0
  134. package/core/client.js +1716 -0
  135. package/core/compatibility.d.ts +18 -0
  136. package/core/compatibility.d.ts.map +1 -0
  137. package/core/compatibility.js +245 -0
  138. package/core/errors.d.ts +139 -0
  139. package/core/errors.d.ts.map +1 -0
  140. package/core/errors.js +176 -0
  141. package/core/esri-geojson.d.ts +66 -0
  142. package/core/esri-geojson.d.ts.map +1 -0
  143. package/core/esri-geojson.js +363 -0
  144. package/core/geoparquet-sql.d.ts +162 -0
  145. package/core/geoparquet-sql.d.ts.map +1 -0
  146. package/core/geoparquet-sql.js +333 -0
  147. package/core/geoservices.d.ts +34 -0
  148. package/core/geoservices.d.ts.map +1 -0
  149. package/core/geoservices.js +434 -0
  150. package/core/grpc-adapter.d.ts +23 -0
  151. package/core/grpc-adapter.d.ts.map +1 -0
  152. package/core/grpc-adapter.js +688 -0
  153. package/core/odata.d.ts +347 -0
  154. package/core/odata.d.ts.map +1 -0
  155. package/core/odata.js +913 -0
  156. package/core/ogc-conformance.d.ts +35 -0
  157. package/core/ogc-conformance.d.ts.map +1 -0
  158. package/core/ogc-conformance.js +134 -0
  159. package/core/ogc-endpoint-layout.d.ts +70 -0
  160. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  161. package/core/ogc-endpoint-layout.js +173 -0
  162. package/core/ogc-features.d.ts +23 -0
  163. package/core/ogc-features.d.ts.map +1 -0
  164. package/core/ogc-features.js +129 -0
  165. package/core/ogc-maps.d.ts +49 -0
  166. package/core/ogc-maps.d.ts.map +1 -0
  167. package/core/ogc-maps.js +126 -0
  168. package/core/ogc-processes.d.ts +118 -0
  169. package/core/ogc-processes.d.ts.map +1 -0
  170. package/core/ogc-processes.js +423 -0
  171. package/core/ogc-records.d.ts +75 -0
  172. package/core/ogc-records.d.ts.map +1 -0
  173. package/core/ogc-records.js +251 -0
  174. package/core/ogc-tiles.d.ts +125 -0
  175. package/core/ogc-tiles.d.ts.map +1 -0
  176. package/core/ogc-tiles.js +183 -0
  177. package/core/path-utils.d.ts +69 -0
  178. package/core/path-utils.d.ts.map +1 -0
  179. package/core/path-utils.js +123 -0
  180. package/core/pbf-decoder.d.ts +39 -0
  181. package/core/pbf-decoder.d.ts.map +1 -0
  182. package/core/pbf-decoder.js +702 -0
  183. package/core/process-runner.d.ts +104 -0
  184. package/core/process-runner.d.ts.map +1 -0
  185. package/core/process-runner.js +315 -0
  186. package/core/protocol-transport.d.ts +76 -0
  187. package/core/protocol-transport.d.ts.map +1 -0
  188. package/core/protocol-transport.js +15 -0
  189. package/core/query-builder.d.ts +261 -0
  190. package/core/query-builder.d.ts.map +1 -0
  191. package/core/query-builder.js +538 -0
  192. package/core/request-pipeline.d.ts +88 -0
  193. package/core/request-pipeline.d.ts.map +1 -0
  194. package/core/request-pipeline.js +273 -0
  195. package/core/spatial-filter.d.ts +93 -0
  196. package/core/spatial-filter.d.ts.map +1 -0
  197. package/core/spatial-filter.js +153 -0
  198. package/core/stac-static.d.ts +51 -0
  199. package/core/stac-static.d.ts.map +1 -0
  200. package/core/stac-static.js +195 -0
  201. package/core/stac.d.ts +67 -0
  202. package/core/stac.d.ts.map +1 -0
  203. package/core/stac.js +259 -0
  204. package/core/surfaces.d.ts +540 -0
  205. package/core/surfaces.d.ts.map +1 -0
  206. package/core/surfaces.js +1964 -0
  207. package/core/terrain-elevation.d.ts +114 -0
  208. package/core/terrain-elevation.d.ts.map +1 -0
  209. package/core/terrain-elevation.js +150 -0
  210. package/core/types.d.ts +1404 -0
  211. package/core/types.d.ts.map +1 -0
  212. package/core/types.js +13 -0
  213. package/core/wfs-capabilities.d.ts +153 -0
  214. package/core/wfs-capabilities.d.ts.map +1 -0
  215. package/core/wfs-capabilities.js +490 -0
  216. package/core/wfs-filter.d.ts +118 -0
  217. package/core/wfs-filter.d.ts.map +1 -0
  218. package/core/wfs-filter.js +634 -0
  219. package/core/wfs.d.ts +232 -0
  220. package/core/wfs.d.ts.map +1 -0
  221. package/core/wfs.js +426 -0
  222. package/core/wire-shared.d.ts +32 -0
  223. package/core/wire-shared.d.ts.map +1 -0
  224. package/core/wire-shared.js +76 -0
  225. package/core/wms-axis.d.ts +36 -0
  226. package/core/wms-axis.d.ts.map +1 -0
  227. package/core/wms-axis.js +73 -0
  228. package/core/wms-capabilities.d.ts +110 -0
  229. package/core/wms-capabilities.d.ts.map +1 -0
  230. package/core/wms-capabilities.js +559 -0
  231. package/core/wms-types.d.ts +128 -0
  232. package/core/wms-types.d.ts.map +1 -0
  233. package/core/wms-types.js +32 -0
  234. package/core/wms.d.ts +144 -0
  235. package/core/wms.d.ts.map +1 -0
  236. package/core/wms.js +338 -0
  237. package/core/wmts-capabilities.d.ts +82 -0
  238. package/core/wmts-capabilities.d.ts.map +1 -0
  239. package/core/wmts-capabilities.js +402 -0
  240. package/core/wmts.d.ts +103 -0
  241. package/core/wmts.d.ts.map +1 -0
  242. package/core/wmts.js +332 -0
  243. package/core/xml-text.d.ts +20 -0
  244. package/core/xml-text.d.ts.map +1 -0
  245. package/core/xml-text.js +85 -0
  246. package/esri-compat/basemap-gallery.d.ts +38 -0
  247. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  248. package/esri-compat/basemap-gallery.js +159 -0
  249. package/esri-compat/basemap-layer-list.d.ts +35 -0
  250. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  251. package/esri-compat/basemap-layer-list.js +139 -0
  252. package/esri-compat/basemap.d.ts +32 -0
  253. package/esri-compat/basemap.d.ts.map +1 -0
  254. package/esri-compat/basemap.js +84 -0
  255. package/esri-compat/bookmarks.d.ts +36 -0
  256. package/esri-compat/bookmarks.d.ts.map +1 -0
  257. package/esri-compat/bookmarks.js +108 -0
  258. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  259. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  260. package/esri-compat/class-breaks-renderer.js +164 -0
  261. package/esri-compat/color.d.ts +22 -0
  262. package/esri-compat/color.d.ts.map +1 -0
  263. package/esri-compat/color.js +106 -0
  264. package/esri-compat/controls.d.ts +174 -0
  265. package/esri-compat/controls.d.ts.map +1 -0
  266. package/esri-compat/controls.js +479 -0
  267. package/esri-compat/coordinate-conversion.d.ts +41 -0
  268. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  269. package/esri-compat/coordinate-conversion.js +125 -0
  270. package/esri-compat/directions.d.ts +45 -0
  271. package/esri-compat/directions.d.ts.map +1 -0
  272. package/esri-compat/directions.js +123 -0
  273. package/esri-compat/editor.d.ts +47 -0
  274. package/esri-compat/editor.d.ts.map +1 -0
  275. package/esri-compat/editor.js +170 -0
  276. package/esri-compat/esri-config.d.ts +16 -0
  277. package/esri-compat/esri-config.d.ts.map +1 -0
  278. package/esri-compat/esri-config.js +23 -0
  279. package/esri-compat/esri-request.d.ts +17 -0
  280. package/esri-compat/esri-request.d.ts.map +1 -0
  281. package/esri-compat/esri-request.js +127 -0
  282. package/esri-compat/event-bus.d.ts +106 -0
  283. package/esri-compat/event-bus.d.ts.map +1 -0
  284. package/esri-compat/event-bus.js +90 -0
  285. package/esri-compat/expand.d.ts +36 -0
  286. package/esri-compat/expand.d.ts.map +1 -0
  287. package/esri-compat/expand.js +97 -0
  288. package/esri-compat/extent.d.ts +43 -0
  289. package/esri-compat/extent.d.ts.map +1 -0
  290. package/esri-compat/extent.js +140 -0
  291. package/esri-compat/feature-filter.d.ts +55 -0
  292. package/esri-compat/feature-filter.d.ts.map +1 -0
  293. package/esri-compat/feature-filter.js +109 -0
  294. package/esri-compat/feature-form.d.ts +64 -0
  295. package/esri-compat/feature-form.d.ts.map +1 -0
  296. package/esri-compat/feature-form.js +137 -0
  297. package/esri-compat/feature-layer.d.ts +173 -0
  298. package/esri-compat/feature-layer.d.ts.map +1 -0
  299. package/esri-compat/feature-layer.js +661 -0
  300. package/esri-compat/feature-set.d.ts +32 -0
  301. package/esri-compat/feature-set.d.ts.map +1 -0
  302. package/esri-compat/feature-set.js +80 -0
  303. package/esri-compat/feature-table.d.ts +141 -0
  304. package/esri-compat/feature-table.d.ts.map +1 -0
  305. package/esri-compat/feature-table.js +500 -0
  306. package/esri-compat/feature-templates.d.ts +41 -0
  307. package/esri-compat/feature-templates.d.ts.map +1 -0
  308. package/esri-compat/feature-templates.js +97 -0
  309. package/esri-compat/feature.d.ts +33 -0
  310. package/esri-compat/feature.d.ts.map +1 -0
  311. package/esri-compat/feature.js +83 -0
  312. package/esri-compat/geojson-layer.d.ts +86 -0
  313. package/esri-compat/geojson-layer.d.ts.map +1 -0
  314. package/esri-compat/geojson-layer.js +191 -0
  315. package/esri-compat/geometry-engine.d.ts +107 -0
  316. package/esri-compat/geometry-engine.d.ts.map +1 -0
  317. package/esri-compat/geometry-engine.js +266 -0
  318. package/esri-compat/graphic.d.ts +46 -0
  319. package/esri-compat/graphic.d.ts.map +1 -0
  320. package/esri-compat/graphic.js +103 -0
  321. package/esri-compat/graphics-layer.d.ts +49 -0
  322. package/esri-compat/graphics-layer.d.ts.map +1 -0
  323. package/esri-compat/graphics-layer.js +185 -0
  324. package/esri-compat/group-layer.d.ts +48 -0
  325. package/esri-compat/group-layer.d.ts.map +1 -0
  326. package/esri-compat/group-layer.js +212 -0
  327. package/esri-compat/identify.d.ts +71 -0
  328. package/esri-compat/identify.d.ts.map +1 -0
  329. package/esri-compat/identify.js +299 -0
  330. package/esri-compat/identity-manager.d.ts +74 -0
  331. package/esri-compat/identity-manager.d.ts.map +1 -0
  332. package/esri-compat/identity-manager.js +245 -0
  333. package/esri-compat/imagery-layer.d.ts +78 -0
  334. package/esri-compat/imagery-layer.d.ts.map +1 -0
  335. package/esri-compat/imagery-layer.js +167 -0
  336. package/esri-compat/label-class.d.ts +31 -0
  337. package/esri-compat/label-class.d.ts.map +1 -0
  338. package/esri-compat/label-class.js +102 -0
  339. package/esri-compat/layer-list.d.ts +77 -0
  340. package/esri-compat/layer-list.d.ts.map +1 -0
  341. package/esri-compat/layer-list.js +342 -0
  342. package/esri-compat/legend.d.ts +53 -0
  343. package/esri-compat/legend.d.ts.map +1 -0
  344. package/esri-compat/legend.js +254 -0
  345. package/esri-compat/map-image-layer.d.ts +162 -0
  346. package/esri-compat/map-image-layer.d.ts.map +1 -0
  347. package/esri-compat/map-image-layer.js +709 -0
  348. package/esri-compat/map-view.d.ts +323 -0
  349. package/esri-compat/map-view.d.ts.map +1 -0
  350. package/esri-compat/map-view.js +1175 -0
  351. package/esri-compat/map.d.ts +47 -0
  352. package/esri-compat/map.d.ts.map +1 -0
  353. package/esri-compat/map.js +209 -0
  354. package/esri-compat/measurement-2d.d.ts +61 -0
  355. package/esri-compat/measurement-2d.d.ts.map +1 -0
  356. package/esri-compat/measurement-2d.js +184 -0
  357. package/esri-compat/measurement.d.ts +45 -0
  358. package/esri-compat/measurement.d.ts.map +1 -0
  359. package/esri-compat/measurement.js +193 -0
  360. package/esri-compat/oauth-info.d.ts +50 -0
  361. package/esri-compat/oauth-info.d.ts.map +1 -0
  362. package/esri-compat/oauth-info.js +142 -0
  363. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  364. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  365. package/esri-compat/picture-marker-symbol.js +126 -0
  366. package/esri-compat/point.d.ts +31 -0
  367. package/esri-compat/point.d.ts.map +1 -0
  368. package/esri-compat/point.js +102 -0
  369. package/esri-compat/polygon.d.ts +31 -0
  370. package/esri-compat/polygon.d.ts.map +1 -0
  371. package/esri-compat/polygon.js +107 -0
  372. package/esri-compat/polyline.d.ts +31 -0
  373. package/esri-compat/polyline.d.ts.map +1 -0
  374. package/esri-compat/polyline.js +107 -0
  375. package/esri-compat/popup-template.d.ts +55 -0
  376. package/esri-compat/popup-template.d.ts.map +1 -0
  377. package/esri-compat/popup-template.js +128 -0
  378. package/esri-compat/popup.d.ts +54 -0
  379. package/esri-compat/popup.d.ts.map +1 -0
  380. package/esri-compat/popup.js +312 -0
  381. package/esri-compat/print.d.ts +47 -0
  382. package/esri-compat/print.d.ts.map +1 -0
  383. package/esri-compat/print.js +105 -0
  384. package/esri-compat/query.d.ts +58 -0
  385. package/esri-compat/query.d.ts.map +1 -0
  386. package/esri-compat/query.js +128 -0
  387. package/esri-compat/reactive-utils.d.ts +24 -0
  388. package/esri-compat/reactive-utils.d.ts.map +1 -0
  389. package/esri-compat/reactive-utils.js +193 -0
  390. package/esri-compat/request.d.ts +41 -0
  391. package/esri-compat/request.d.ts.map +1 -0
  392. package/esri-compat/request.js +253 -0
  393. package/esri-compat/route-layer.d.ts +59 -0
  394. package/esri-compat/route-layer.d.ts.map +1 -0
  395. package/esri-compat/route-layer.js +223 -0
  396. package/esri-compat/route-task.d.ts +88 -0
  397. package/esri-compat/route-task.d.ts.map +1 -0
  398. package/esri-compat/route-task.js +225 -0
  399. package/esri-compat/scene-view.d.ts +41 -0
  400. package/esri-compat/scene-view.d.ts.map +1 -0
  401. package/esri-compat/scene-view.js +68 -0
  402. package/esri-compat/search.d.ts +112 -0
  403. package/esri-compat/search.d.ts.map +1 -0
  404. package/esri-compat/search.js +820 -0
  405. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  406. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  407. package/esri-compat/simple-fill-symbol.js +85 -0
  408. package/esri-compat/simple-line-symbol.d.ts +27 -0
  409. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  410. package/esri-compat/simple-line-symbol.js +85 -0
  411. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  412. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  413. package/esri-compat/simple-marker-symbol.js +92 -0
  414. package/esri-compat/simple-renderer.d.ts +29 -0
  415. package/esri-compat/simple-renderer.d.ts.map +1 -0
  416. package/esri-compat/simple-renderer.js +92 -0
  417. package/esri-compat/sketch.d.ts +64 -0
  418. package/esri-compat/sketch.d.ts.map +1 -0
  419. package/esri-compat/sketch.js +227 -0
  420. package/esri-compat/spatial-reference.d.ts +31 -0
  421. package/esri-compat/spatial-reference.d.ts.map +1 -0
  422. package/esri-compat/spatial-reference.js +102 -0
  423. package/esri-compat/swipe.d.ts +34 -0
  424. package/esri-compat/swipe.d.ts.map +1 -0
  425. package/esri-compat/swipe.js +93 -0
  426. package/esri-compat/table-list.d.ts +36 -0
  427. package/esri-compat/table-list.d.ts.map +1 -0
  428. package/esri-compat/table-list.js +126 -0
  429. package/esri-compat/text-symbol.d.ts +37 -0
  430. package/esri-compat/text-symbol.d.ts.map +1 -0
  431. package/esri-compat/text-symbol.js +123 -0
  432. package/esri-compat/tile-layer.d.ts +52 -0
  433. package/esri-compat/tile-layer.d.ts.map +1 -0
  434. package/esri-compat/tile-layer.js +168 -0
  435. package/esri-compat/time-slider.d.ts +70 -0
  436. package/esri-compat/time-slider.d.ts.map +1 -0
  437. package/esri-compat/time-slider.js +208 -0
  438. package/esri-compat/track.d.ts +51 -0
  439. package/esri-compat/track.d.ts.map +1 -0
  440. package/esri-compat/track.js +174 -0
  441. package/esri-compat/unique-value-renderer.d.ts +41 -0
  442. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  443. package/esri-compat/unique-value-renderer.js +127 -0
  444. package/esri-compat/url.d.ts +13 -0
  445. package/esri-compat/url.d.ts.map +1 -0
  446. package/esri-compat/url.js +68 -0
  447. package/esri-compat/vector-tile-layer.d.ts +47 -0
  448. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  449. package/esri-compat/vector-tile-layer.js +130 -0
  450. package/esri-compat/web-map.d.ts +14 -0
  451. package/esri-compat/web-map.d.ts.map +1 -0
  452. package/esri-compat/web-map.js +24 -0
  453. package/esri-compat/wfs-layer.d.ts +64 -0
  454. package/esri-compat/wfs-layer.d.ts.map +1 -0
  455. package/esri-compat/wfs-layer.js +145 -0
  456. package/esri-compat/wms-layer.d.ts +76 -0
  457. package/esri-compat/wms-layer.d.ts.map +1 -0
  458. package/esri-compat/wms-layer.js +157 -0
  459. package/exploration/context.d.ts +25 -0
  460. package/exploration/context.d.ts.map +1 -0
  461. package/exploration/context.js +396 -0
  462. package/exploration/index.d.ts +27 -0
  463. package/exploration/index.d.ts.map +1 -0
  464. package/exploration/index.js +24 -0
  465. package/exploration/presets.d.ts +27 -0
  466. package/exploration/presets.d.ts.map +1 -0
  467. package/exploration/presets.js +114 -0
  468. package/exploration/reducer.d.ts +23 -0
  469. package/exploration/reducer.d.ts.map +1 -0
  470. package/exploration/reducer.js +332 -0
  471. package/exploration/selection.d.ts +25 -0
  472. package/exploration/selection.d.ts.map +1 -0
  473. package/exploration/selection.js +34 -0
  474. package/exploration/selectors.d.ts +56 -0
  475. package/exploration/selectors.d.ts.map +1 -0
  476. package/exploration/selectors.js +110 -0
  477. package/exploration/types.d.ts +294 -0
  478. package/exploration/types.d.ts.map +1 -0
  479. package/exploration/types.js +33 -0
  480. package/expr/expression.d.ts +457 -0
  481. package/expr/expression.d.ts.map +1 -0
  482. package/expr/expression.js +663 -0
  483. package/expr/index.d.ts +32 -0
  484. package/expr/index.d.ts.map +1 -0
  485. package/expr/index.js +30 -0
  486. package/filter-registry/index.d.ts +145 -0
  487. package/filter-registry/index.d.ts.map +1 -0
  488. package/filter-registry/index.js +531 -0
  489. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  490. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  491. package/gen/honua/v1/feature_service_pb.js +375 -0
  492. package/generated-app/errors.d.ts +41 -0
  493. package/generated-app/errors.d.ts.map +1 -0
  494. package/generated-app/errors.js +41 -0
  495. package/generated-app/index.d.ts +17 -0
  496. package/generated-app/index.d.ts.map +1 -0
  497. package/generated-app/index.js +12 -0
  498. package/generated-app/manifest.d.ts +183 -0
  499. package/generated-app/manifest.d.ts.map +1 -0
  500. package/generated-app/manifest.js +14 -0
  501. package/generated-app/projection.d.ts +44 -0
  502. package/generated-app/projection.d.ts.map +1 -0
  503. package/generated-app/projection.js +234 -0
  504. package/generated-app/runtime.d.ts +215 -0
  505. package/generated-app/runtime.d.ts.map +1 -0
  506. package/generated-app/runtime.js +1196 -0
  507. package/geocoding/index.d.ts +106 -0
  508. package/geocoding/index.d.ts.map +1 -0
  509. package/geocoding/index.js +278 -0
  510. package/interactions/detail-model.d.ts +54 -0
  511. package/interactions/detail-model.d.ts.map +1 -0
  512. package/interactions/detail-model.js +105 -0
  513. package/interactions/exploration-bindings.d.ts +120 -0
  514. package/interactions/exploration-bindings.d.ts.map +1 -0
  515. package/interactions/exploration-bindings.js +218 -0
  516. package/interactions/feature-state.d.ts +144 -0
  517. package/interactions/feature-state.d.ts.map +1 -0
  518. package/interactions/feature-state.js +169 -0
  519. package/interactions/hit-test.d.ts +112 -0
  520. package/interactions/hit-test.d.ts.map +1 -0
  521. package/interactions/hit-test.js +291 -0
  522. package/interactions/index.d.ts +31 -0
  523. package/interactions/index.d.ts.map +1 -0
  524. package/interactions/index.js +24 -0
  525. package/interactions/share-state.d.ts +36 -0
  526. package/interactions/share-state.d.ts.map +1 -0
  527. package/interactions/share-state.js +123 -0
  528. package/map/feature-service-adapter.d.ts +138 -0
  529. package/map/feature-service-adapter.d.ts.map +1 -0
  530. package/map/feature-service-adapter.js +279 -0
  531. package/map/honua-map.d.ts +203 -0
  532. package/map/honua-map.d.ts.map +1 -0
  533. package/map/honua-map.js +347 -0
  534. package/map/index.d.ts +27 -0
  535. package/map/index.d.ts.map +1 -0
  536. package/map/index.js +22 -0
  537. package/map/maplibre-target.d.ts +103 -0
  538. package/map/maplibre-target.d.ts.map +1 -0
  539. package/map/maplibre-target.js +164 -0
  540. package/map/webmap-maplibre.d.ts +60 -0
  541. package/map/webmap-maplibre.d.ts.map +1 -0
  542. package/map/webmap-maplibre.js +212 -0
  543. package/operate/client.d.ts +94 -0
  544. package/operate/client.d.ts.map +1 -0
  545. package/operate/client.js +361 -0
  546. package/operate/index.d.ts +22 -0
  547. package/operate/index.d.ts.map +1 -0
  548. package/operate/index.js +19 -0
  549. package/operate/types.d.ts +397 -0
  550. package/operate/types.d.ts.map +1 -0
  551. package/operate/types.js +17 -0
  552. package/operator/client.d.ts +60 -0
  553. package/operator/client.d.ts.map +1 -0
  554. package/operator/client.js +20 -0
  555. package/operator/controllers/approval.d.ts +52 -0
  556. package/operator/controllers/approval.d.ts.map +1 -0
  557. package/operator/controllers/approval.js +123 -0
  558. package/operator/controllers/base.d.ts +27 -0
  559. package/operator/controllers/base.d.ts.map +1 -0
  560. package/operator/controllers/base.js +53 -0
  561. package/operator/controllers/builder-workspace.d.ts +55 -0
  562. package/operator/controllers/builder-workspace.d.ts.map +1 -0
  563. package/operator/controllers/builder-workspace.js +108 -0
  564. package/operator/controllers/chat.d.ts +61 -0
  565. package/operator/controllers/chat.d.ts.map +1 -0
  566. package/operator/controllers/chat.js +154 -0
  567. package/operator/controllers/clarification.d.ts +52 -0
  568. package/operator/controllers/clarification.d.ts.map +1 -0
  569. package/operator/controllers/clarification.js +121 -0
  570. package/operator/controllers/execution.d.ts +60 -0
  571. package/operator/controllers/execution.d.ts.map +1 -0
  572. package/operator/controllers/execution.js +286 -0
  573. package/operator/controllers/index.d.ts +23 -0
  574. package/operator/controllers/index.d.ts.map +1 -0
  575. package/operator/controllers/index.js +15 -0
  576. package/operator/controllers/map-workspace.d.ts +85 -0
  577. package/operator/controllers/map-workspace.d.ts.map +1 -0
  578. package/operator/controllers/map-workspace.js +296 -0
  579. package/operator/controllers/plan-review.d.ts +66 -0
  580. package/operator/controllers/plan-review.d.ts.map +1 -0
  581. package/operator/controllers/plan-review.js +124 -0
  582. package/operator/errors.d.ts +62 -0
  583. package/operator/errors.d.ts.map +1 -0
  584. package/operator/errors.js +75 -0
  585. package/operator/i18n/index.d.ts +10 -0
  586. package/operator/i18n/index.d.ts.map +1 -0
  587. package/operator/i18n/index.js +8 -0
  588. package/operator/i18n/messages.d.ts +19 -0
  589. package/operator/i18n/messages.d.ts.map +1 -0
  590. package/operator/i18n/messages.js +54 -0
  591. package/operator/index.d.ts +19 -0
  592. package/operator/index.d.ts.map +1 -0
  593. package/operator/index.js +15 -0
  594. package/operator/telemetry.d.ts +26 -0
  595. package/operator/telemetry.d.ts.map +1 -0
  596. package/operator/telemetry.js +9 -0
  597. package/operator/theming/index.d.ts +12 -0
  598. package/operator/theming/index.d.ts.map +1 -0
  599. package/operator/theming/index.js +9 -0
  600. package/operator/theming/provider.d.ts +27 -0
  601. package/operator/theming/provider.d.ts.map +1 -0
  602. package/operator/theming/provider.js +26 -0
  603. package/operator/theming/tokens.d.ts +28 -0
  604. package/operator/theming/tokens.d.ts.map +1 -0
  605. package/operator/theming/tokens.js +65 -0
  606. package/operator/workspace/events.d.ts +70 -0
  607. package/operator/workspace/events.d.ts.map +1 -0
  608. package/operator/workspace/events.js +9 -0
  609. package/operator/workspace/index.d.ts +12 -0
  610. package/operator/workspace/index.d.ts.map +1 -0
  611. package/operator/workspace/index.js +8 -0
  612. package/operator/workspace/types.d.ts +178 -0
  613. package/operator/workspace/types.d.ts.map +1 -0
  614. package/operator/workspace/types.js +47 -0
  615. package/operator/workspace/workspace.d.ts +58 -0
  616. package/operator/workspace/workspace.d.ts.map +1 -0
  617. package/operator/workspace/workspace.js +339 -0
  618. package/package.json +105 -0
  619. package/realtime/exploration.d.ts +16 -0
  620. package/realtime/exploration.d.ts.map +1 -0
  621. package/realtime/exploration.js +32 -0
  622. package/realtime/honua-server.d.ts +123 -0
  623. package/realtime/honua-server.d.ts.map +1 -0
  624. package/realtime/honua-server.js +188 -0
  625. package/realtime/index.d.ts +20 -0
  626. package/realtime/index.d.ts.map +1 -0
  627. package/realtime/index.js +14 -0
  628. package/realtime/projections.d.ts +30 -0
  629. package/realtime/projections.d.ts.map +1 -0
  630. package/realtime/projections.js +51 -0
  631. package/realtime/reducer.d.ts +14 -0
  632. package/realtime/reducer.d.ts.map +1 -0
  633. package/realtime/reducer.js +351 -0
  634. package/realtime/sse.d.ts +23 -0
  635. package/realtime/sse.d.ts.map +1 -0
  636. package/realtime/sse.js +143 -0
  637. package/realtime/store.d.ts +18 -0
  638. package/realtime/store.d.ts.map +1 -0
  639. package/realtime/store.js +63 -0
  640. package/realtime/types.d.ts +190 -0
  641. package/realtime/types.d.ts.map +1 -0
  642. package/realtime/types.js +10 -0
  643. package/replica-sync/client.d.ts +32 -0
  644. package/replica-sync/client.d.ts.map +1 -0
  645. package/replica-sync/client.js +52 -0
  646. package/replica-sync/errors.d.ts +22 -0
  647. package/replica-sync/errors.d.ts.map +1 -0
  648. package/replica-sync/errors.js +29 -0
  649. package/replica-sync/fixture.d.ts +40 -0
  650. package/replica-sync/fixture.d.ts.map +1 -0
  651. package/replica-sync/fixture.js +364 -0
  652. package/replica-sync/index.d.ts +22 -0
  653. package/replica-sync/index.d.ts.map +1 -0
  654. package/replica-sync/index.js +17 -0
  655. package/replica-sync/types.d.ts +270 -0
  656. package/replica-sync/types.d.ts.map +1 -0
  657. package/replica-sync/types.js +13 -0
  658. package/runtime/diff.d.ts +31 -0
  659. package/runtime/diff.d.ts.map +1 -0
  660. package/runtime/diff.js +143 -0
  661. package/runtime/errors.d.ts +40 -0
  662. package/runtime/errors.d.ts.map +1 -0
  663. package/runtime/errors.js +35 -0
  664. package/runtime/index.d.ts +59 -0
  665. package/runtime/index.d.ts.map +1 -0
  666. package/runtime/index.js +40 -0
  667. package/runtime/legend.d.ts +23 -0
  668. package/runtime/legend.d.ts.map +1 -0
  669. package/runtime/legend.js +38 -0
  670. package/runtime/load-package.d.ts +125 -0
  671. package/runtime/load-package.d.ts.map +1 -0
  672. package/runtime/load-package.js +272 -0
  673. package/runtime/map-package-fetch.d.ts +107 -0
  674. package/runtime/map-package-fetch.d.ts.map +1 -0
  675. package/runtime/map-package-fetch.js +336 -0
  676. package/runtime/map-package-realtime.d.ts +169 -0
  677. package/runtime/map-package-realtime.d.ts.map +1 -0
  678. package/runtime/map-package-realtime.js +350 -0
  679. package/runtime/map-package-validation.d.ts +30 -0
  680. package/runtime/map-package-validation.d.ts.map +1 -0
  681. package/runtime/map-package-validation.js +257 -0
  682. package/runtime/map-package-watch.d.ts +78 -0
  683. package/runtime/map-package-watch.d.ts.map +1 -0
  684. package/runtime/map-package-watch.js +695 -0
  685. package/runtime/map-package.d.ts +167 -0
  686. package/runtime/map-package.d.ts.map +1 -0
  687. package/runtime/map-package.js +15 -0
  688. package/runtime/ogc-styles.d.ts +110 -0
  689. package/runtime/ogc-styles.d.ts.map +1 -0
  690. package/runtime/ogc-styles.js +195 -0
  691. package/runtime/pmtiles-protocol.d.ts +77 -0
  692. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  693. package/runtime/pmtiles-protocol.js +120 -0
  694. package/runtime/popups.d.ts +62 -0
  695. package/runtime/popups.d.ts.map +1 -0
  696. package/runtime/popups.js +95 -0
  697. package/runtime/query-tiles.d.ts +217 -0
  698. package/runtime/query-tiles.d.ts.map +1 -0
  699. package/runtime/query-tiles.js +801 -0
  700. package/runtime/runtime.d.ts +243 -0
  701. package/runtime/runtime.d.ts.map +1 -0
  702. package/runtime/runtime.js +1147 -0
  703. package/runtime/source-bridge.d.ts +99 -0
  704. package/runtime/source-bridge.d.ts.map +1 -0
  705. package/runtime/source-bridge.js +428 -0
  706. package/runtime/style-compose.d.ts +46 -0
  707. package/runtime/style-compose.d.ts.map +1 -0
  708. package/runtime/style-compose.js +144 -0
  709. package/runtime/style-interactions.d.ts +141 -0
  710. package/runtime/style-interactions.d.ts.map +1 -0
  711. package/runtime/style-interactions.js +574 -0
  712. package/runtime/style-spec-validation.d.ts +23 -0
  713. package/runtime/style-spec-validation.d.ts.map +1 -0
  714. package/runtime/style-spec-validation.js +357 -0
  715. package/scene-workspace/analysis-widgets.d.ts +334 -0
  716. package/scene-workspace/analysis-widgets.d.ts.map +1 -0
  717. package/scene-workspace/analysis-widgets.js +424 -0
  718. package/scene-workspace/cesium-adapter.d.ts +438 -0
  719. package/scene-workspace/cesium-adapter.d.ts.map +1 -0
  720. package/scene-workspace/cesium-adapter.js +493 -0
  721. package/scene-workspace/index.d.ts +21 -0
  722. package/scene-workspace/index.d.ts.map +1 -0
  723. package/scene-workspace/index.js +14 -0
  724. package/scene-workspace/primitives.d.ts +162 -0
  725. package/scene-workspace/primitives.d.ts.map +1 -0
  726. package/scene-workspace/primitives.js +255 -0
  727. package/scene-workspace/scene-discovery.d.ts +196 -0
  728. package/scene-workspace/scene-discovery.d.ts.map +1 -0
  729. package/scene-workspace/scene-discovery.js +228 -0
  730. package/scene-workspace/scene-view.d.ts +209 -0
  731. package/scene-workspace/scene-view.d.ts.map +1 -0
  732. package/scene-workspace/scene-view.js +267 -0
  733. package/scene-workspace/types.d.ts +229 -0
  734. package/scene-workspace/types.d.ts.map +1 -0
  735. package/scene-workspace/types.js +23 -0
  736. package/scene-workspace/workspace.d.ts +13 -0
  737. package/scene-workspace/workspace.d.ts.map +1 -0
  738. package/scene-workspace/workspace.js +391 -0
  739. package/share/denial.d.ts +78 -0
  740. package/share/denial.d.ts.map +1 -0
  741. package/share/denial.js +61 -0
  742. package/share/embed-token.d.ts +71 -0
  743. package/share/embed-token.d.ts.map +1 -0
  744. package/share/embed-token.js +99 -0
  745. package/share/index.d.ts +35 -0
  746. package/share/index.d.ts.map +1 -0
  747. package/share/index.js +30 -0
  748. package/share/open-data.d.ts +114 -0
  749. package/share/open-data.d.ts.map +1 -0
  750. package/share/open-data.js +81 -0
  751. package/share/types.d.ts +163 -0
  752. package/share/types.d.ts.map +1 -0
  753. package/share/types.js +17 -0
  754. package/studio/capability-manifest.d.ts +285 -0
  755. package/studio/capability-manifest.d.ts.map +1 -0
  756. package/studio/capability-manifest.js +59 -0
  757. package/studio/chart-spec.d.ts +85 -0
  758. package/studio/chart-spec.d.ts.map +1 -0
  759. package/studio/chart-spec.js +106 -0
  760. package/studio/index.d.ts +34 -0
  761. package/studio/index.d.ts.map +1 -0
  762. package/studio/index.js +27 -0
  763. package/studio/provenance.d.ts +131 -0
  764. package/studio/provenance.d.ts.map +1 -0
  765. package/studio/provenance.js +39 -0
  766. package/studio/publish.d.ts +64 -0
  767. package/studio/publish.d.ts.map +1 -0
  768. package/studio/publish.js +13 -0
  769. package/studio/types.d.ts +278 -0
  770. package/studio/types.d.ts.map +1 -0
  771. package/studio/types.js +71 -0
  772. package/studio/validate.d.ts +45 -0
  773. package/studio/validate.d.ts.map +1 -0
  774. package/studio/validate.js +255 -0
  775. package/studio/validation.d.ts +112 -0
  776. package/studio/validation.d.ts.map +1 -0
  777. package/studio/validation.js +42 -0
  778. package/style/factory.d.ts +30 -0
  779. package/style/factory.d.ts.map +1 -0
  780. package/style/factory.js +61 -0
  781. package/style/index.d.ts +25 -0
  782. package/style/index.d.ts.map +1 -0
  783. package/style/index.js +24 -0
  784. package/style/specification.d.ts +203 -0
  785. package/style/specification.d.ts.map +1 -0
  786. package/style/specification.js +178 -0
  787. package/style/wms-wmts-resolvers.d.ts +38 -0
  788. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  789. package/style/wms-wmts-resolvers.js +92 -0
  790. package/web-components/controller.d.ts +39 -0
  791. package/web-components/controller.d.ts.map +1 -0
  792. package/web-components/controller.js +640 -0
  793. package/web-components/elements.d.ts +210 -0
  794. package/web-components/elements.d.ts.map +1 -0
  795. package/web-components/elements.js +1651 -0
  796. package/web-components/index.d.ts +24 -0
  797. package/web-components/index.d.ts.map +1 -0
  798. package/web-components/index.js +22 -0
  799. package/web-components/maplibre-renderer.d.ts +22 -0
  800. package/web-components/maplibre-renderer.d.ts.map +1 -0
  801. package/web-components/maplibre-renderer.js +474 -0
  802. package/web-components/types.d.ts +397 -0
  803. package/web-components/types.d.ts.map +1 -0
  804. package/web-components/types.js +1 -0
  805. package/webmap/contract.d.ts +28 -0
  806. package/webmap/contract.d.ts.map +1 -0
  807. package/webmap/contract.js +130 -0
  808. package/webmap/convert-basemap.d.ts +17 -0
  809. package/webmap/convert-basemap.d.ts.map +1 -0
  810. package/webmap/convert-basemap.js +78 -0
  811. package/webmap/convert-extent.d.ts +17 -0
  812. package/webmap/convert-extent.d.ts.map +1 -0
  813. package/webmap/convert-extent.js +114 -0
  814. package/webmap/convert-label.d.ts +13 -0
  815. package/webmap/convert-label.d.ts.map +1 -0
  816. package/webmap/convert-label.js +125 -0
  817. package/webmap/convert-layer.d.ts +22 -0
  818. package/webmap/convert-layer.d.ts.map +1 -0
  819. package/webmap/convert-layer.js +181 -0
  820. package/webmap/convert-popup.d.ts +34 -0
  821. package/webmap/convert-popup.d.ts.map +1 -0
  822. package/webmap/convert-popup.js +68 -0
  823. package/webmap/convert-renderer.d.ts +17 -0
  824. package/webmap/convert-renderer.d.ts.map +1 -0
  825. package/webmap/convert-renderer.js +161 -0
  826. package/webmap/convert-symbol.d.ts +17 -0
  827. package/webmap/convert-symbol.d.ts.map +1 -0
  828. package/webmap/convert-symbol.js +122 -0
  829. package/webmap/index.d.ts +44 -0
  830. package/webmap/index.d.ts.map +1 -0
  831. package/webmap/index.js +33 -0
  832. package/webmap/parse.d.ts +25 -0
  833. package/webmap/parse.d.ts.map +1 -0
  834. package/webmap/parse.js +83 -0
  835. package/webmap/types.d.ts +264 -0
  836. package/webmap/types.d.ts.map +1 -0
  837. package/webmap/types.js +13 -0
  838. package/webmap/warnings.d.ts +30 -0
  839. package/webmap/warnings.d.ts.map +1 -0
  840. package/webmap/warnings.js +37 -0
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `@honua/sdk-js/geocoding` — `HonuaGeocodingClient` for forward / reverse
3
+ * geocoding and typeahead suggestions over a Honua-hosted GeocodeServer.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { HonuaGeocodingClient } from "@honua/sdk-js/geocoding";
8
+ *
9
+ * const geo = new HonuaGeocodingClient({
10
+ * baseUrl: "https://your-honua-server.example",
11
+ * locatorName: "world-geocoder",
12
+ * });
13
+ *
14
+ * const results = await geo.forwardGeocode("1 Honolulu Pl, HI");
15
+ * // reverseGeocode is latitude-first, then longitude.
16
+ * const here = await geo.reverseGeocode(21.30, -157.85);
17
+ * const hints = await geo.suggest("honol");
18
+ * ```
19
+ *
20
+ * @example Debounced typeahead
21
+ * ```ts
22
+ * let timer: ReturnType<typeof setTimeout> | undefined;
23
+ * input.addEventListener("input", (event) => {
24
+ * clearTimeout(timer);
25
+ * const text = (event.target as HTMLInputElement).value;
26
+ * timer = setTimeout(async () => {
27
+ * render(await geo.suggest(text));
28
+ * }, 200);
29
+ * });
30
+ * ```
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ export interface GeocodingClientOptions {
35
+ baseUrl: string;
36
+ locatorName?: string;
37
+ apiKey?: string;
38
+ bearerToken?: string;
39
+ fetchFn?: typeof fetch;
40
+ timeoutMs?: number;
41
+ }
42
+ export interface ForwardGeocodeOptions {
43
+ maxResults?: number;
44
+ countryCodes?: string;
45
+ spatialReferenceWkid?: number;
46
+ }
47
+ export interface ReverseGeocodeOptions {
48
+ spatialReferenceWkid?: number;
49
+ }
50
+ export interface SuggestOptions {
51
+ maxSuggestions?: number;
52
+ countryCodes?: string;
53
+ }
54
+ export interface GeocodeResult {
55
+ address: string;
56
+ latitude: number;
57
+ longitude: number;
58
+ score: number;
59
+ attributes: Record<string, string | null>;
60
+ }
61
+ export interface ReverseGeocodeResult {
62
+ address: string;
63
+ latitude: number;
64
+ longitude: number;
65
+ attributes: Record<string, string | null>;
66
+ }
67
+ export interface GeocodeSuggestion {
68
+ text: string;
69
+ magicKey: string;
70
+ isCollection: boolean;
71
+ }
72
+ export declare class HonuaGeocodingClient {
73
+ private readonly baseUrl;
74
+ private readonly locatorName;
75
+ private readonly fetchFn;
76
+ private readonly defaultHeaders;
77
+ private readonly timeoutMs;
78
+ constructor(options: GeocodingClientOptions);
79
+ /**
80
+ * Forward-geocode a single-line address string into one or more candidate
81
+ * locations.
82
+ */
83
+ forwardGeocode(address: string, options?: ForwardGeocodeOptions): Promise<GeocodeResult[]>;
84
+ /**
85
+ * Reverse-geocode a latitude/longitude pair to the nearest address.
86
+ * Returns `null` when the server cannot find an address for the given
87
+ * coordinates.
88
+ */
89
+ reverseGeocode(latitude: number, longitude: number, options?: ReverseGeocodeOptions): Promise<ReverseGeocodeResult | null>;
90
+ /**
91
+ * Retrieve type-ahead suggestions for a partial address string.
92
+ */
93
+ suggest(text: string, options?: SuggestOptions): Promise<GeocodeSuggestion[]>;
94
+ private serviceBasePath;
95
+ /**
96
+ * Fetch with `redirect: "manual"`, only following a redirect when its target
97
+ * stays on the configured base origin. The geocoding client attaches its API
98
+ * key as a custom `X-API-Key` header that the runtime does not strip across a
99
+ * cross-origin redirect, so auto-following one would leak the key to the
100
+ * redirect target's host. Cross-origin (or origin-unverifiable) redirects
101
+ * throw instead of replaying the credentialed request off-origin.
102
+ */
103
+ private fetchWithSafeRedirects;
104
+ private request;
105
+ }
106
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/geocoding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AASH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;CACvB;AA0ED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;gBAE5B,OAAO,EAAE,sBAAsB;IAwBlD;;;OAGG;IACU,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA+BvG;;;;OAIG;IACU,cAAc,CACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA8CvC;;OAEG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA8B1F,OAAO,CAAC,eAAe;IAIvB;;;;;;;OAOG;YACW,sBAAsB;YA0CtB,OAAO;CAiDtB"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * `@honua/sdk-js/geocoding` — `HonuaGeocodingClient` for forward / reverse
3
+ * geocoding and typeahead suggestions over a Honua-hosted GeocodeServer.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { HonuaGeocodingClient } from "@honua/sdk-js/geocoding";
8
+ *
9
+ * const geo = new HonuaGeocodingClient({
10
+ * baseUrl: "https://your-honua-server.example",
11
+ * locatorName: "world-geocoder",
12
+ * });
13
+ *
14
+ * const results = await geo.forwardGeocode("1 Honolulu Pl, HI");
15
+ * // reverseGeocode is latitude-first, then longitude.
16
+ * const here = await geo.reverseGeocode(21.30, -157.85);
17
+ * const hints = await geo.suggest("honol");
18
+ * ```
19
+ *
20
+ * @example Debounced typeahead
21
+ * ```ts
22
+ * let timer: ReturnType<typeof setTimeout> | undefined;
23
+ * input.addEventListener("input", (event) => {
24
+ * clearTimeout(timer);
25
+ * const text = (event.target as HTMLInputElement).value;
26
+ * timer = setTimeout(async () => {
27
+ * render(await geo.suggest(text));
28
+ * }, 200);
29
+ * });
30
+ * ```
31
+ *
32
+ * @packageDocumentation
33
+ */
34
+ import { HonuaAbortError, HonuaHttpError, HonuaNetworkError, HonuaTimeoutError } from "../core/errors.js";
35
+ import { encodeServiceIdPath, trimTrailingSlashes } from "../core/path-utils.js";
36
+ // ---------------------------------------------------------------------------
37
+ // Helpers
38
+ // ---------------------------------------------------------------------------
39
+ /** Redirect status codes that carry a `Location` header. */
40
+ const GEOCODING_REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
41
+ /** Maximum number of redirects {@link HonuaGeocodingClient} will follow. */
42
+ const GEOCODING_MAX_REDIRECTS = 20;
43
+ function isAbsoluteHttpUrl(value) {
44
+ return value.startsWith("http://") || value.startsWith("https://");
45
+ }
46
+ function normalizeBaseUrl(url) {
47
+ return trimTrailingSlashes(url);
48
+ }
49
+ function stringifyAttributes(attrs) {
50
+ const result = {};
51
+ for (const [key, value] of Object.entries(attrs)) {
52
+ if (value === null || value === undefined) {
53
+ result[key] = null;
54
+ }
55
+ else {
56
+ result[key] = String(value);
57
+ }
58
+ }
59
+ return result;
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // Client
63
+ // ---------------------------------------------------------------------------
64
+ export class HonuaGeocodingClient {
65
+ baseUrl;
66
+ locatorName;
67
+ fetchFn;
68
+ defaultHeaders;
69
+ timeoutMs;
70
+ constructor(options) {
71
+ this.baseUrl = normalizeBaseUrl(options.baseUrl);
72
+ this.locatorName = options.locatorName ?? "World";
73
+ // Bind to `globalThis` at assignment: invoking an unbound `window.fetch`
74
+ // as `this.fetchFn(...)` throws "TypeError: Illegal invocation" in
75
+ // browsers. Binding is a no-op for Node's undici fetch and for
76
+ // caller-supplied wrappers.
77
+ this.fetchFn = (options.fetchFn ?? fetch).bind(globalThis);
78
+ this.timeoutMs = options.timeoutMs;
79
+ const headers = {};
80
+ if (options.apiKey) {
81
+ headers["X-API-Key"] = options.apiKey;
82
+ }
83
+ if (options.bearerToken) {
84
+ headers.Authorization = `Bearer ${options.bearerToken}`;
85
+ }
86
+ this.defaultHeaders = headers;
87
+ }
88
+ // -------------------------------------------------------------------------
89
+ // Public methods
90
+ // -------------------------------------------------------------------------
91
+ /**
92
+ * Forward-geocode a single-line address string into one or more candidate
93
+ * locations.
94
+ */
95
+ async forwardGeocode(address, options) {
96
+ const params = new URLSearchParams();
97
+ params.set("singleLine", address);
98
+ params.set("f", "json");
99
+ if (options?.maxResults !== undefined) {
100
+ params.set("maxLocations", String(options.maxResults));
101
+ }
102
+ if (options?.countryCodes !== undefined) {
103
+ params.set("countryCode", options.countryCodes);
104
+ }
105
+ if (options?.spatialReferenceWkid !== undefined) {
106
+ params.set("outSR", String(options.spatialReferenceWkid));
107
+ }
108
+ const url = `${this.serviceBasePath()}/findAddressCandidates?${params.toString()}`;
109
+ const data = await this.request(url);
110
+ if (data.error) {
111
+ throw new HonuaHttpError(data.error.code, `Geocode server error: ${data.error.message}`, data.error);
112
+ }
113
+ return (data.candidates ?? []).map((c) => ({
114
+ address: c.address,
115
+ longitude: c.location.x,
116
+ latitude: c.location.y,
117
+ score: c.score,
118
+ attributes: stringifyAttributes(c.attributes ?? {}),
119
+ }));
120
+ }
121
+ /**
122
+ * Reverse-geocode a latitude/longitude pair to the nearest address.
123
+ * Returns `null` when the server cannot find an address for the given
124
+ * coordinates.
125
+ */
126
+ async reverseGeocode(latitude, longitude, options) {
127
+ const params = new URLSearchParams();
128
+ params.set("location", `${longitude},${latitude}`);
129
+ params.set("f", "json");
130
+ if (options?.spatialReferenceWkid !== undefined) {
131
+ params.set("outSR", String(options.spatialReferenceWkid));
132
+ }
133
+ const url = `${this.serviceBasePath()}/reverseGeocode?${params.toString()}`;
134
+ let data;
135
+ try {
136
+ data = await this.request(url);
137
+ }
138
+ catch (err) {
139
+ // Some geocode servers return an HTTP error when no address is found.
140
+ if (err instanceof HonuaHttpError && err.statusCode === 400) {
141
+ return null;
142
+ }
143
+ throw err;
144
+ }
145
+ if (data.error) {
146
+ // Server-level "no result" errors are not exceptional.
147
+ if (data.error.code === 400) {
148
+ return null;
149
+ }
150
+ throw new HonuaHttpError(data.error.code, `Reverse geocode server error: ${data.error.message}`, data.error);
151
+ }
152
+ if (!data.address || !data.location) {
153
+ return null;
154
+ }
155
+ const { Match_addr, ...rest } = data.address;
156
+ return {
157
+ address: Match_addr ?? "",
158
+ longitude: data.location.x,
159
+ latitude: data.location.y,
160
+ attributes: stringifyAttributes(rest),
161
+ };
162
+ }
163
+ /**
164
+ * Retrieve type-ahead suggestions for a partial address string.
165
+ */
166
+ async suggest(text, options) {
167
+ const params = new URLSearchParams();
168
+ params.set("text", text);
169
+ params.set("f", "json");
170
+ if (options?.maxSuggestions !== undefined) {
171
+ params.set("maxSuggestions", String(options.maxSuggestions));
172
+ }
173
+ if (options?.countryCodes !== undefined) {
174
+ params.set("countryCode", options.countryCodes);
175
+ }
176
+ const url = `${this.serviceBasePath()}/suggest?${params.toString()}`;
177
+ const data = await this.request(url);
178
+ if (data.error) {
179
+ throw new HonuaHttpError(data.error.code, `Suggest server error: ${data.error.message}`, data.error);
180
+ }
181
+ return (data.suggestions ?? []).map((s) => ({
182
+ text: s.text,
183
+ magicKey: s.magicKey,
184
+ isCollection: s.isCollection,
185
+ }));
186
+ }
187
+ // -------------------------------------------------------------------------
188
+ // Internals
189
+ // -------------------------------------------------------------------------
190
+ serviceBasePath() {
191
+ return `${this.baseUrl}/rest/services/${encodeServiceIdPath(this.locatorName)}/GeocodeServer`;
192
+ }
193
+ /**
194
+ * Fetch with `redirect: "manual"`, only following a redirect when its target
195
+ * stays on the configured base origin. The geocoding client attaches its API
196
+ * key as a custom `X-API-Key` header that the runtime does not strip across a
197
+ * cross-origin redirect, so auto-following one would leak the key to the
198
+ * redirect target's host. Cross-origin (or origin-unverifiable) redirects
199
+ * throw instead of replaying the credentialed request off-origin.
200
+ */
201
+ async fetchWithSafeRedirects(url, init) {
202
+ const baseOrigin = isAbsoluteHttpUrl(this.baseUrl) ? new URL(this.baseUrl).origin : undefined;
203
+ let currentUrl = url;
204
+ for (let redirects = 0;; redirects += 1) {
205
+ const response = await this.fetchFn(currentUrl, { ...init, redirect: "manual" });
206
+ if (response.type === "opaqueredirect") {
207
+ throw new HonuaNetworkError("Refusing to follow an opaque cross-origin redirect; the geocoding API key would be leaked to the redirect target.", undefined);
208
+ }
209
+ if (!GEOCODING_REDIRECT_STATUSES.has(response.status)) {
210
+ return response;
211
+ }
212
+ if (redirects >= GEOCODING_MAX_REDIRECTS) {
213
+ throw new HonuaNetworkError(`Exceeded the maximum of ${GEOCODING_MAX_REDIRECTS} redirects.`, undefined);
214
+ }
215
+ const location = response.headers.get("location");
216
+ if (!location) {
217
+ throw new HonuaNetworkError("Redirect response is missing a Location header.", undefined);
218
+ }
219
+ let target;
220
+ try {
221
+ target = new URL(location, currentUrl);
222
+ }
223
+ catch {
224
+ throw new HonuaNetworkError(`Redirect response has an invalid Location header: ${location}`, undefined);
225
+ }
226
+ if (baseOrigin === undefined || target.origin !== baseOrigin) {
227
+ throw new HonuaNetworkError(`Refusing to follow a cross-origin redirect to ${target.origin}; the geocoding API key would be leaked.`, undefined);
228
+ }
229
+ currentUrl = target.toString();
230
+ await response.body?.cancel().catch(() => undefined);
231
+ }
232
+ }
233
+ async request(url) {
234
+ const controller = new AbortController();
235
+ let timeoutId;
236
+ if (this.timeoutMs !== undefined) {
237
+ timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
238
+ }
239
+ let response;
240
+ try {
241
+ response = await this.fetchWithSafeRedirects(url, {
242
+ method: "GET",
243
+ headers: this.defaultHeaders,
244
+ signal: controller.signal,
245
+ });
246
+ }
247
+ catch (err) {
248
+ if (timeoutId !== undefined) {
249
+ clearTimeout(timeoutId);
250
+ }
251
+ if (err instanceof DOMException && err.name === "AbortError") {
252
+ if (this.timeoutMs !== undefined) {
253
+ throw new HonuaTimeoutError(this.timeoutMs);
254
+ }
255
+ throw new HonuaAbortError();
256
+ }
257
+ throw new HonuaNetworkError(err instanceof Error
258
+ ? `Geocoding request failed: ${err.message}`
259
+ : "Geocoding request failed due to a network error", err);
260
+ }
261
+ finally {
262
+ if (timeoutId !== undefined) {
263
+ clearTimeout(timeoutId);
264
+ }
265
+ }
266
+ if (!response.ok) {
267
+ let body;
268
+ try {
269
+ body = await response.json();
270
+ }
271
+ catch {
272
+ body = await response.text().catch(() => null);
273
+ }
274
+ throw new HonuaHttpError(response.status, `Geocoding request failed with status ${response.status}`, body);
275
+ }
276
+ return (await response.json());
277
+ }
278
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Framework-neutral popup/detail data preparation helpers.
3
+ *
4
+ * These helpers consume selection targets and query results from the existing
5
+ * exploration surfaces. They do not own interaction state.
6
+ *
7
+ * @module
8
+ */
9
+ import type { FeatureId, SourceId } from "../contract/types.js";
10
+ import type { FeatureSelectionTarget } from "../exploration/types.js";
11
+ export interface DetailFeatureLike {
12
+ readonly id?: FeatureId;
13
+ readonly sourceId?: SourceId;
14
+ readonly sourceLayer?: string;
15
+ readonly attributes?: Readonly<Record<string, unknown>>;
16
+ readonly properties?: Readonly<Record<string, unknown>>;
17
+ readonly geometry?: unknown;
18
+ }
19
+ export interface DetailFieldDefinition {
20
+ readonly name: string;
21
+ readonly label?: string;
22
+ readonly visible?: boolean;
23
+ readonly formatter?: (value: unknown, feature: DetailFeatureLike) => unknown;
24
+ }
25
+ export interface DetailModelOptions {
26
+ readonly selection: ReadonlyArray<FeatureSelectionTarget>;
27
+ readonly features?: ReadonlyArray<DetailFeatureLike>;
28
+ readonly sourceId?: SourceId;
29
+ readonly sourceLayer?: string;
30
+ readonly objectIdField?: string;
31
+ readonly titleField?: string;
32
+ readonly fields?: ReadonlyArray<DetailFieldDefinition | string>;
33
+ readonly includeHiddenFields?: boolean;
34
+ }
35
+ export type DetailSelectionStatus = "empty" | "ready" | "stale";
36
+ export interface DetailFieldModel {
37
+ readonly name: string;
38
+ readonly label: string;
39
+ readonly value: unknown;
40
+ }
41
+ export interface DetailModel {
42
+ readonly status: DetailSelectionStatus;
43
+ readonly target?: FeatureSelectionTarget;
44
+ readonly feature?: DetailFeatureLike;
45
+ readonly title?: string;
46
+ readonly attributes: Readonly<Record<string, unknown>>;
47
+ readonly fields: ReadonlyArray<DetailFieldModel>;
48
+ readonly geometry?: unknown;
49
+ }
50
+ /** Build one detail model per selected target. */
51
+ export declare function prepareSelectionDetailModels(options: DetailModelOptions): DetailModel[];
52
+ /** Build the primary popup/detail model for the first selected target. */
53
+ export declare function preparePrimaryDetailModel(options: DetailModelOptions): DetailModel;
54
+ //# sourceMappingURL=detail-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-model.d.ts","sourceRoot":"","sources":["../../../src/interactions/detail-model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC;CAC9E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAC;IAChE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,kDAAkD;AAClD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,EAAE,CAgBvF;AAED,0EAA0E;AAC1E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAElF"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Framework-neutral popup/detail data preparation helpers.
3
+ *
4
+ * These helpers consume selection targets and query results from the existing
5
+ * exploration surfaces. They do not own interaction state.
6
+ *
7
+ * @module
8
+ */
9
+ import { featureSelectionKey, isSourceQualifiedSelectionTarget, sourceFeatureSelectionTarget, } from "../exploration/selection.js";
10
+ /** Build one detail model per selected target. */
11
+ export function prepareSelectionDetailModels(options) {
12
+ const selection = options.selection;
13
+ if (selection.length === 0)
14
+ return [emptyDetailModel()];
15
+ const features = options.features ?? [];
16
+ const bySelectionKey = new Map();
17
+ for (const feature of features) {
18
+ const target = featureToSelectionTarget(feature, options);
19
+ if (target)
20
+ bySelectionKey.set(featureSelectionKey(target), feature);
21
+ }
22
+ return selection.map((target) => {
23
+ const feature = bySelectionKey.get(featureSelectionKey(target));
24
+ if (!feature)
25
+ return staleDetailModel(target);
26
+ return readyDetailModel(target, feature, options);
27
+ });
28
+ }
29
+ /** Build the primary popup/detail model for the first selected target. */
30
+ export function preparePrimaryDetailModel(options) {
31
+ return prepareSelectionDetailModels(options)[0] ?? emptyDetailModel();
32
+ }
33
+ function readyDetailModel(target, feature, options) {
34
+ const attributes = featureAttributes(feature);
35
+ return {
36
+ status: "ready",
37
+ target,
38
+ feature,
39
+ title: detailTitle(attributes, options.titleField, target),
40
+ attributes,
41
+ fields: detailFields(feature, attributes, options),
42
+ geometry: feature.geometry,
43
+ };
44
+ }
45
+ function emptyDetailModel() {
46
+ return {
47
+ status: "empty",
48
+ attributes: {},
49
+ fields: [],
50
+ };
51
+ }
52
+ function staleDetailModel(target) {
53
+ return {
54
+ status: "stale",
55
+ target,
56
+ attributes: {},
57
+ fields: [],
58
+ };
59
+ }
60
+ function featureToSelectionTarget(feature, options) {
61
+ const id = featureId(feature, options.objectIdField);
62
+ if (id === undefined)
63
+ return undefined;
64
+ const sourceId = feature.sourceId ?? options.sourceId;
65
+ if (!sourceId)
66
+ return id;
67
+ return sourceFeatureSelectionTarget(sourceId, id, { sourceLayer: feature.sourceLayer ?? options.sourceLayer });
68
+ }
69
+ function featureId(feature, objectIdField) {
70
+ if (feature.id !== undefined)
71
+ return feature.id;
72
+ const attributes = featureAttributes(feature);
73
+ const value = (objectIdField ? attributes[objectIdField] : undefined) ??
74
+ attributes.OBJECTID ??
75
+ attributes.objectid ??
76
+ attributes.ObjectID ??
77
+ attributes.id;
78
+ return typeof value === "string" || typeof value === "number" ? value : undefined;
79
+ }
80
+ function featureAttributes(feature) {
81
+ return feature.attributes ?? feature.properties ?? {};
82
+ }
83
+ function detailTitle(attributes, titleField, target) {
84
+ const title = titleField ? attributes[titleField] : undefined;
85
+ if (title !== undefined && title !== null && String(title).length > 0)
86
+ return String(title);
87
+ if (isSourceQualifiedSelectionTarget(target))
88
+ return `${target.sourceId} ${String(target.id)}`;
89
+ return String(target);
90
+ }
91
+ function detailFields(feature, attributes, options) {
92
+ const definitions = options.fields ?? Object.keys(attributes);
93
+ const out = [];
94
+ for (const definition of definitions) {
95
+ const field = typeof definition === "string" ? { name: definition } : definition;
96
+ if (field.visible === false && !options.includeHiddenFields)
97
+ continue;
98
+ out.push({
99
+ name: field.name,
100
+ label: field.label ?? field.name,
101
+ value: field.formatter ? field.formatter(attributes[field.name], feature) : attributes[field.name],
102
+ });
103
+ }
104
+ return out;
105
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Interaction bindings between map/table/detail surfaces and
3
+ * `ExplorationViewController`.
4
+ *
5
+ * These helpers keep component adapters small: maps publish source-qualified
6
+ * selection targets, tables publish the same targets, maps observe shared
7
+ * selection to update feature-state, and detail panels subscribe to the
8
+ * shared selection slice.
9
+ *
10
+ * @module
11
+ */
12
+ import type { AggregationSpec } from "../contract/types.js";
13
+ import type { HonuaExtent } from "../core/types.js";
14
+ import type { ExplorationSelectorListener, ExplorationSelectorSubscribeOptions, LinkedViewQueryProjection, LinkedViewQueryProjectionOptions } from "../exploration/selectors.js";
15
+ import type { ExplorationViewChangeEvent, ExplorationViewController, ExplorationViewSubscribeOptions, ExplorationViewSubscription, FeatureSelectionTarget, FilterClause, Unsubscribe } from "../exploration/types.js";
16
+ import type { FeatureStateMap, InteractiveMap, SelectionHandle, SelectionHandlerOptions } from "./feature-state.js";
17
+ export interface MapSelectionExplorationBindingOptions extends SelectionHandlerOptions {
18
+ /** Replace the exploration selection with the map selection. @default true */
19
+ readonly replaceSelection?: boolean;
20
+ }
21
+ /**
22
+ * Bind a MapLibre-style selection handler to an exploration view.
23
+ *
24
+ * The map handler already knows its source and source layer, so this publishes
25
+ * source-qualified targets into the shared exploration selection slice.
26
+ */
27
+ export declare function bindMapSelectionToExploration(map: InteractiveMap, view: ExplorationViewController, options: MapSelectionExplorationBindingOptions): SelectionHandle;
28
+ export interface FeatureStateSelectionSyncOptions {
29
+ readonly source: string;
30
+ readonly sourceLayer?: string;
31
+ readonly stateKey?: string;
32
+ /** Apply raw legacy ids to this source. @default true */
33
+ readonly includeRawIds?: boolean;
34
+ /** Apply current view state immediately. @default true */
35
+ readonly applyInitial?: boolean;
36
+ readonly subscribeOptions?: ExplorationViewSubscribeOptions;
37
+ }
38
+ export interface InteractionBindingHandle {
39
+ remove(): void;
40
+ }
41
+ export interface LinkedViewQueryBindingOptions extends LinkedViewQueryProjectionOptions, ExplorationViewSubscribeOptions {
42
+ /** Slices that should recompute the projection. */
43
+ readonly subscription?: ExplorationViewSubscription;
44
+ /** Emit the current projection before waiting for changes. @default true */
45
+ readonly applyInitial?: boolean;
46
+ /** Equality check used to suppress unchanged projections. @default deep value equality */
47
+ readonly equals?: (a: LinkedViewQueryProjection, b: LinkedViewQueryProjection) => boolean;
48
+ }
49
+ export interface MapExtentExplorationSource {
50
+ current?(): HonuaExtent | undefined;
51
+ subscribe(listener: (extent: HonuaExtent | undefined) => void): Unsubscribe | InteractionBindingHandle;
52
+ }
53
+ export interface MapExtentExplorationBindingOptions {
54
+ /** Publish the source's current extent on bind when available. @default true */
55
+ readonly applyInitial?: boolean;
56
+ /** Also mirror the extent into `spatialFilter`. @default false */
57
+ readonly publishSpatialFilter?: boolean;
58
+ /** Coalesce same-tick move events before dispatching. @default true */
59
+ readonly coalesce?: boolean;
60
+ }
61
+ export interface FilterControlsExplorationBinding {
62
+ setFilter(id: string, clause: FilterClause): void;
63
+ clearFilter(id: string): void;
64
+ subscribe(listener: ExplorationSelectorListener<Readonly<Record<string, FilterClause>>>, options?: ExplorationSelectorSubscribeOptions<Readonly<Record<string, FilterClause>>>): Unsubscribe;
65
+ }
66
+ export interface ChartBucketSelection {
67
+ readonly targets?: ReadonlyArray<FeatureSelectionTarget>;
68
+ readonly filters?: Readonly<Record<string, FilterClause>>;
69
+ }
70
+ export interface ChartBucketSelectionOptions {
71
+ /** Replace the current selection when the bucket supplies targets. @default true */
72
+ readonly replaceSelection?: boolean;
73
+ }
74
+ export interface ChartExplorationBinding {
75
+ setGrouping(grouping: ReadonlyArray<string>): void;
76
+ setAggregation(aggregation: AggregationSpec | undefined): void;
77
+ selectTargets(targets: ReadonlyArray<FeatureSelectionTarget>, options?: {
78
+ readonly replace?: boolean;
79
+ }): void;
80
+ selectBucket(bucket: ChartBucketSelection, options?: ChartBucketSelectionOptions): void;
81
+ subscribeQuery(listener: ExplorationSelectorListener<LinkedViewQueryProjection>, options?: LinkedViewQueryBindingOptions): Unsubscribe;
82
+ }
83
+ export interface MapLayerFilterTarget {
84
+ setFilter(layerId: string, filter: unknown): void;
85
+ }
86
+ export interface MapLayerFilterExplorationBindingOptions extends LinkedViewQueryBindingOptions {
87
+ readonly layerId: string;
88
+ readonly translate: (projection: LinkedViewQueryProjection) => unknown;
89
+ }
90
+ /**
91
+ * Reflect exploration selection into MapLibre feature-state.
92
+ *
93
+ * This is the table-to-map path: a table or detail panel can call
94
+ * `view.select(...)`; the map observes the shared selection slice and toggles
95
+ * feature-state for matching source-qualified targets.
96
+ */
97
+ export declare function syncFeatureStateSelection(map: FeatureStateMap, view: ExplorationViewController, options: FeatureStateSelectionSyncOptions): InteractionBindingHandle;
98
+ /** Publish viewport extent changes from a map adapter into an exploration view. */
99
+ export declare function bindMapExtentToExploration(view: ExplorationViewController, source: MapExtentExplorationSource, options?: MapExtentExplorationBindingOptions): InteractionBindingHandle;
100
+ /** Subscribe a table, chart, or result adapter to the shared query projection. */
101
+ export declare function bindQueryProjectionToExploration(view: ExplorationViewController, listener: ExplorationSelectorListener<LinkedViewQueryProjection>, options?: LinkedViewQueryBindingOptions): Unsubscribe;
102
+ /** Adapter for filter bars and query-builder controls. */
103
+ export declare function bindFilterControlsToExploration(view: ExplorationViewController): FilterControlsExplorationBinding;
104
+ /** Adapter for chart/grouped-result controls that publish grouping, aggregation, filters, and selection. */
105
+ export declare function bindChartToExploration(view: ExplorationViewController): ChartExplorationBinding;
106
+ /** Reflect linked filter/query state into a MapLibre-style layer filter. */
107
+ export declare function syncMapLayerFilterToExploration(map: MapLayerFilterTarget, view: ExplorationViewController, options: MapLayerFilterExplorationBindingOptions): InteractionBindingHandle;
108
+ export type SelectionDetailListener = (selection: ReadonlyArray<FeatureSelectionTarget>, event: ExplorationViewChangeEvent) => void;
109
+ /** Subscribe a detail panel to the shared exploration selection. */
110
+ export declare function bindDetailToSelection(view: ExplorationViewController, listener: SelectionDetailListener, options?: ExplorationViewSubscribeOptions): Unsubscribe;
111
+ export interface TableSelectionExplorationBinding {
112
+ select(targets: ReadonlyArray<FeatureSelectionTarget>, options?: {
113
+ readonly replace?: boolean;
114
+ }): void;
115
+ clearSelection(): void;
116
+ subscribe(listener: SelectionDetailListener, options?: ExplorationViewSubscribeOptions): Unsubscribe;
117
+ }
118
+ /** Small adapter for table/grid components that publish and observe selection. */
119
+ export declare function bindTableSelectionToExploration(view: ExplorationViewController): TableSelectionExplorationBinding;
120
+ //# sourceMappingURL=exploration-bindings.d.ts.map