@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,291 @@
1
+ /**
2
+ * Renderer-neutral hit-test and pointer primitives.
3
+ *
4
+ * The helpers in this module normalize MapLibre-shaped rendered features into
5
+ * Honua source-qualified identities without importing a renderer package.
6
+ *
7
+ * @module
8
+ */
9
+ import { loadQueryTileFeatureDetail, mapQueryTileFeatureIdentity, } from "../contract/index.js";
10
+ import { sourceFeatureSelectionTarget } from "../exploration/selection.js";
11
+ export async function hitTestMap(map, input, options = {}) {
12
+ const pointer = normalizePointerEvent(input, map);
13
+ const degraded = pointer.lngLat
14
+ ? []
15
+ : [
16
+ {
17
+ reason: "lnglat-unavailable",
18
+ message: "The renderer did not provide lngLat and cannot unproject screen coordinates.",
19
+ },
20
+ ];
21
+ if (!map.queryRenderedFeatures) {
22
+ return {
23
+ point: pointer.point,
24
+ lngLat: pointer.lngLat,
25
+ features: [],
26
+ degraded: [
27
+ ...degraded,
28
+ { reason: "renderer-unsupported", message: "The renderer does not support queryRenderedFeatures." },
29
+ ],
30
+ rawFeatures: [],
31
+ };
32
+ }
33
+ const rawFeatures = map.queryRenderedFeatures(queryGeometry(pointer.point, options.tolerance), {
34
+ ...(options.layers ? { layers: options.layers } : {}),
35
+ });
36
+ const normalized = normalizeHitTestFeatures(rawFeatures, options);
37
+ const withDetails = options.loadDetails ? await loadHitDetails(normalized, options) : normalized;
38
+ return {
39
+ point: pointer.point,
40
+ lngLat: pointer.lngLat,
41
+ features: withDetails,
42
+ degraded,
43
+ rawFeatures,
44
+ };
45
+ }
46
+ export function normalizePointerEvent(input, map) {
47
+ const event = isRecord(input) ? input : {};
48
+ const point = normalizePoint(event.point) ?? normalizePoint(event) ?? clientPoint(event) ?? { x: 0, y: 0 };
49
+ const lngLat = normalizeLngLat(event.lngLat) ?? (map?.unproject ? normalizeLngLat(map.unproject(point)) : undefined);
50
+ return {
51
+ type: typeof event.type === "string" ? event.type : "pointer",
52
+ point,
53
+ ...(lngLat ? { lngLat } : {}),
54
+ originalEvent: input,
55
+ };
56
+ }
57
+ export function normalizeHitTestFeatures(features, options = {}) {
58
+ if (options.maxResults !== undefined && options.maxResults <= 0)
59
+ return [];
60
+ const out = [];
61
+ for (const feature of features) {
62
+ const context = featureContext(feature, options);
63
+ const hit = normalizeHitFeature(feature, context, options);
64
+ if (options.sourceIds && (!hit.sourceId || !options.sourceIds.includes(hit.sourceId)))
65
+ continue;
66
+ if (options.sourceLayers && (!hit.sourceLayer || !options.sourceLayers.includes(hit.sourceLayer)))
67
+ continue;
68
+ out.push(hit);
69
+ if (options.maxResults !== undefined && out.length >= options.maxResults)
70
+ break;
71
+ }
72
+ return out;
73
+ }
74
+ export function normalizeHitFeature(feature, context, options = {}) {
75
+ const properties = featureProperties(feature);
76
+ const queryTileDescriptor = context.queryTileDescriptor ?? queryTileDescriptorForContext(context, options);
77
+ const queryTileIdentity = queryTileDescriptor ? mapQueryTileFeatureIdentity(queryTileDescriptor, feature) : undefined;
78
+ const sourceId = queryTileIdentity?.sourceId ?? context.sourceId;
79
+ const sourceLayer = queryTileIdentity?.sourceLayer ?? context.sourceLayer;
80
+ const featureId = queryTileIdentity?.id ??
81
+ options.resolveFeatureId?.(feature, context) ??
82
+ featureIdFromFeature(feature, properties, options.featureIdProperty);
83
+ const geometry = featureGeometry(feature);
84
+ const raster = rasterSample(feature);
85
+ const degraded = [];
86
+ if (!sourceId) {
87
+ degraded.push({ reason: "source-binding-unavailable", message: "Rendered feature has no Honua source binding." });
88
+ }
89
+ if (featureId === undefined) {
90
+ degraded.push({
91
+ reason: "feature-id-unavailable",
92
+ message: "Rendered feature has no stable feature id.",
93
+ layerId: context.layerId,
94
+ sourceId,
95
+ });
96
+ }
97
+ if (geometry === undefined) {
98
+ degraded.push({
99
+ reason: "geometry-unavailable",
100
+ message: "Rendered feature did not include geometry.",
101
+ layerId: context.layerId,
102
+ sourceId,
103
+ featureId,
104
+ });
105
+ }
106
+ if (context.layerType === "raster" && raster?.value === undefined) {
107
+ degraded.push({
108
+ reason: "raster-value-unavailable",
109
+ message: "Rendered raster hit did not include a sample value.",
110
+ layerId: context.layerId,
111
+ sourceId,
112
+ featureId,
113
+ });
114
+ }
115
+ return {
116
+ layerId: context.layerId,
117
+ sourceId,
118
+ sourceLayer,
119
+ featureId,
120
+ ...(sourceId && featureId !== undefined
121
+ ? { selectionTarget: sourceFeatureSelectionTarget(sourceId, featureId, { sourceLayer }) }
122
+ : {}),
123
+ properties,
124
+ geometry,
125
+ raster,
126
+ rawFeature: feature,
127
+ degraded,
128
+ };
129
+ }
130
+ export function createQueryTileDetailLoader(sources, descriptors) {
131
+ return async (context, options) => {
132
+ const descriptor = descriptors[context.target.sourceId] ?? descriptors[context.sourceId ?? ""];
133
+ const source = sources[context.target.sourceId] ?? (context.sourceId ? sources[context.sourceId] : undefined);
134
+ if (!descriptor || !source)
135
+ return undefined;
136
+ return loadQueryTileFeatureDetail({
137
+ source,
138
+ descriptor,
139
+ target: context.target,
140
+ signal: options.signal,
141
+ });
142
+ };
143
+ }
144
+ async function loadHitDetails(features, options) {
145
+ if (!options.detailLoader) {
146
+ return features.map((hit) => ({
147
+ ...hit,
148
+ degraded: [
149
+ ...hit.degraded,
150
+ { reason: "detail-unavailable", message: "No hit-test detail loader was configured.", sourceId: hit.sourceId },
151
+ ],
152
+ }));
153
+ }
154
+ const out = [];
155
+ for (const hit of features) {
156
+ if (options.signal?.aborted) {
157
+ out.push(withDegraded(hit, "detail-aborted", "Hit-test detail loading was aborted."));
158
+ continue;
159
+ }
160
+ if (!hit.sourceId || hit.featureId === undefined) {
161
+ out.push(withDegraded(hit, "detail-unavailable", "Hit-test detail requires a source id and feature id."));
162
+ continue;
163
+ }
164
+ try {
165
+ const target = {
166
+ sourceId: hit.sourceId,
167
+ id: hit.featureId,
168
+ ...(hit.sourceLayer ? { sourceLayer: hit.sourceLayer } : {}),
169
+ properties: hit.properties,
170
+ feature: hit.rawFeature,
171
+ };
172
+ const detail = await options.detailLoader({ ...hit, target, hit }, { signal: options.signal });
173
+ out.push(detail === undefined ? withDegraded(hit, "detail-unavailable", "No detail was available.") : { ...hit, detail });
174
+ }
175
+ catch (cause) {
176
+ out.push(withDegraded(hit, options.signal?.aborted ? "detail-aborted" : "detail-failed", options.signal?.aborted ? "Hit-test detail loading was aborted." : "Hit-test detail loading failed.", cause));
177
+ }
178
+ }
179
+ return out;
180
+ }
181
+ function withDegraded(hit, reason, message, cause) {
182
+ return {
183
+ ...hit,
184
+ degraded: [
185
+ ...hit.degraded,
186
+ { reason, message, layerId: hit.layerId, sourceId: hit.sourceId, featureId: hit.featureId, cause },
187
+ ],
188
+ };
189
+ }
190
+ function queryGeometry(point, tolerance) {
191
+ const hitTolerance = tolerance ?? 0;
192
+ if (hitTolerance <= 0)
193
+ return point;
194
+ return [
195
+ { x: point.x - hitTolerance, y: point.y - hitTolerance },
196
+ { x: point.x + hitTolerance, y: point.y + hitTolerance },
197
+ ];
198
+ }
199
+ function featureContext(feature, options) {
200
+ const explicit = options.resolveFeatureContext?.(feature);
201
+ if (explicit)
202
+ return explicit;
203
+ const layerId = featureLayerId(feature);
204
+ return {
205
+ ...(layerId ? { layerId } : {}),
206
+ ...(layerId && options.featureContexts?.[layerId] ? options.featureContexts[layerId] : {}),
207
+ ...featureNativeSourceContext(feature),
208
+ };
209
+ }
210
+ function queryTileDescriptorForContext(context, options) {
211
+ if (!context.sourceId)
212
+ return undefined;
213
+ return options.queryTileSources?.[context.sourceId];
214
+ }
215
+ function normalizePoint(value) {
216
+ if (Array.isArray(value) && typeof value[0] === "number" && typeof value[1] === "number") {
217
+ return { x: value[0], y: value[1] };
218
+ }
219
+ if (isRecord(value) && typeof value.x === "number" && typeof value.y === "number") {
220
+ return { x: value.x, y: value.y };
221
+ }
222
+ return undefined;
223
+ }
224
+ function normalizeLngLat(value) {
225
+ if (Array.isArray(value) && typeof value[0] === "number" && typeof value[1] === "number")
226
+ return [value[0], value[1]];
227
+ if (isRecord(value) && typeof value.lng === "number" && typeof value.lat === "number")
228
+ return [value.lng, value.lat];
229
+ return undefined;
230
+ }
231
+ function clientPoint(value) {
232
+ return typeof value.clientX === "number" && typeof value.clientY === "number"
233
+ ? { x: value.clientX, y: value.clientY }
234
+ : undefined;
235
+ }
236
+ function featureIdFromFeature(feature, properties, featureIdProperty) {
237
+ if (isRecord(feature) && (typeof feature.id === "string" || typeof feature.id === "number"))
238
+ return feature.id;
239
+ const propertyId = (featureIdProperty ? properties[featureIdProperty] : undefined) ??
240
+ properties.OBJECTID ??
241
+ properties.objectid ??
242
+ properties.ObjectID ??
243
+ properties.id;
244
+ return typeof propertyId === "string" || typeof propertyId === "number" ? propertyId : undefined;
245
+ }
246
+ function featureProperties(feature) {
247
+ return isRecord(feature) && isRecord(feature.properties) ? feature.properties : {};
248
+ }
249
+ function featureGeometry(feature) {
250
+ return isRecord(feature) && "geometry" in feature ? feature.geometry : undefined;
251
+ }
252
+ function featureLayerId(feature) {
253
+ if (!isRecord(feature))
254
+ return undefined;
255
+ const layer = feature.layer;
256
+ return isRecord(layer) && typeof layer.id === "string" ? layer.id : undefined;
257
+ }
258
+ function featureNativeSourceContext(feature) {
259
+ if (!isRecord(feature))
260
+ return {};
261
+ const layer = isRecord(feature.layer) ? feature.layer : {};
262
+ const sourceId = typeof feature.source === "string" ? feature.source : typeof layer.source === "string" ? layer.source : undefined;
263
+ const sourceLayer = typeof feature.sourceLayer === "string"
264
+ ? feature.sourceLayer
265
+ : typeof feature.sourceLayer === "number"
266
+ ? String(feature.sourceLayer)
267
+ : typeof layer["source-layer"] === "string"
268
+ ? layer["source-layer"]
269
+ : undefined;
270
+ return {
271
+ ...(typeof layer.id === "string" ? { layerId: layer.id } : {}),
272
+ ...(typeof layer.type === "string" ? { layerType: layer.type } : {}),
273
+ ...(sourceId ? { sourceId } : {}),
274
+ ...(sourceLayer ? { sourceLayer } : {}),
275
+ };
276
+ }
277
+ function rasterSample(feature) {
278
+ if (!isRecord(feature))
279
+ return undefined;
280
+ const sample = feature.raster ?? feature.sample;
281
+ if (!isRecord(sample))
282
+ return undefined;
283
+ return {
284
+ value: sample.value,
285
+ band: typeof sample.band === "number" || typeof sample.band === "string" ? sample.band : undefined,
286
+ metadata: isRecord(sample.metadata) ? sample.metadata : undefined,
287
+ };
288
+ }
289
+ function isRecord(value) {
290
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
291
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `@honua/sdk-js/interactions` — hit-test, pointer normalization, and the
3
+ * binding primitives that wire chart / map / table widgets to an
4
+ * `ExplorationContext`.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { hitTestMap, bindMapSelectionToExploration } from "@honua/sdk-js/interactions";
9
+ *
10
+ * map.on("click", async (event) => {
11
+ * const hit = await hitTestMap(map, event);
12
+ * if (hit?.feature) ctx.dispatch({ type: "select", target: hit.feature });
13
+ * });
14
+ * bindMapSelectionToExploration({ map, context: ctx, sourceId: "parcels" });
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ export { createQueryTileDetailLoader, hitTestMap, normalizeHitFeature, normalizeHitTestFeatures, normalizePointerEvent, } from "./hit-test.js";
20
+ export { extentToSpatialFilter, selectLinkedViewQueryProjection, subscribeExplorationSelector, } from "../exploration/selectors.js";
21
+ export { setFeatureState, getFeatureState, removeFeatureState, createHoverHandler, createSelectionHandler, } from "./feature-state.js";
22
+ export { bindDetailToSelection, bindChartToExploration, bindFilterControlsToExploration, bindMapExtentToExploration, bindMapSelectionToExploration, bindQueryProjectionToExploration, bindTableSelectionToExploration, syncMapLayerFilterToExploration, syncFeatureStateSelection, } from "./exploration-bindings.js";
23
+ export { preparePrimaryDetailModel, prepareSelectionDetailModels } from "./detail-model.js";
24
+ export { interactionQueryParamNames, parseInteractionQueryState, parseSelection, serializeInteractionQueryState, serializeSelection, } from "./share-state.js";
25
+ export type { HonuaHitFeature, HonuaHitTestDegradedReason, HonuaHitTestDegradedState, HonuaHitTestDetailContext, HonuaHitTestDetailLoader, HonuaHitTestFeatureOptions, HonuaHitTestMap, HonuaHitTestOptions, HonuaHitTestRasterSample, HonuaHitTestResult, HonuaLngLat, HonuaNormalizeHitTestOptions, HonuaPointerEvent, HonuaPointerEventType, HonuaPointerInput, HonuaRenderedFeatureContext, HonuaScreenPoint, } from "./hit-test.js";
26
+ export type { FeatureStateMap, MapEventTarget, InteractiveMap, FeatureTarget, HoverHandlerOptions, HoverHandle, SelectionHandlerOptions, SelectionHandle, } from "./feature-state.js";
27
+ export type { ExplorationSelector, ExplorationSelectorListener, ExplorationSelectorSubscribeOptions, LinkedViewQueryProjection, LinkedViewQueryProjectionOptions, LinkedViewSpatialMode, } from "../exploration/selectors.js";
28
+ export type { FeatureStateSelectionSyncOptions, ChartBucketSelection, ChartBucketSelectionOptions, ChartExplorationBinding, FilterControlsExplorationBinding, InteractionBindingHandle, LinkedViewQueryBindingOptions, MapExtentExplorationBindingOptions, MapExtentExplorationSource, MapLayerFilterExplorationBindingOptions, MapLayerFilterTarget, MapSelectionExplorationBindingOptions, SelectionDetailListener, TableSelectionExplorationBinding, } from "./exploration-bindings.js";
29
+ export type { DetailFeatureLike, DetailFieldDefinition, DetailFieldModel, DetailModel, DetailModelOptions, DetailSelectionStatus, } from "./detail-model.js";
30
+ export type { ShareableInteractionQueryParams, ShareableInteractionQueryState } from "./share-state.js";
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interactions/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,2BAA2B,EAC3B,UAAU,EACV,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,+BAA+B,EAC/B,0BAA0B,EAC1B,6BAA6B,EAC7B,gCAAgC,EAChC,+BAA+B,EAC/B,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,eAAe,EACf,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,4BAA4B,EAC5B,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,uBAAuB,EACvB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,mCAAmC,EACnC,yBAAyB,EACzB,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,gCAAgC,EAChC,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,6BAA6B,EAC7B,kCAAkC,EAClC,0BAA0B,EAC1B,uCAAuC,EACvC,oBAAoB,EACpB,qCAAqC,EACrC,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `@honua/sdk-js/interactions` — hit-test, pointer normalization, and the
3
+ * binding primitives that wire chart / map / table widgets to an
4
+ * `ExplorationContext`.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { hitTestMap, bindMapSelectionToExploration } from "@honua/sdk-js/interactions";
9
+ *
10
+ * map.on("click", async (event) => {
11
+ * const hit = await hitTestMap(map, event);
12
+ * if (hit?.feature) ctx.dispatch({ type: "select", target: hit.feature });
13
+ * });
14
+ * bindMapSelectionToExploration({ map, context: ctx, sourceId: "parcels" });
15
+ * ```
16
+ *
17
+ * @packageDocumentation
18
+ */
19
+ export { createQueryTileDetailLoader, hitTestMap, normalizeHitFeature, normalizeHitTestFeatures, normalizePointerEvent, } from "./hit-test.js";
20
+ export { extentToSpatialFilter, selectLinkedViewQueryProjection, subscribeExplorationSelector, } from "../exploration/selectors.js";
21
+ export { setFeatureState, getFeatureState, removeFeatureState, createHoverHandler, createSelectionHandler, } from "./feature-state.js";
22
+ export { bindDetailToSelection, bindChartToExploration, bindFilterControlsToExploration, bindMapExtentToExploration, bindMapSelectionToExploration, bindQueryProjectionToExploration, bindTableSelectionToExploration, syncMapLayerFilterToExploration, syncFeatureStateSelection, } from "./exploration-bindings.js";
23
+ export { preparePrimaryDetailModel, prepareSelectionDetailModels } from "./detail-model.js";
24
+ export { interactionQueryParamNames, parseInteractionQueryState, parseSelection, serializeInteractionQueryState, serializeSelection, } from "./share-state.js";
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shareable serialization helpers for map/table/detail interaction state.
3
+ *
4
+ * The encoded query string is intended for URLs and bookmarks. It carries the
5
+ * query projection and selection but leaves state ownership with
6
+ * `ExplorationContext`.
7
+ *
8
+ * @module
9
+ */
10
+ import type { LinkedViewQueryProjection } from "../exploration/selectors.js";
11
+ import type { FeatureSelectionTarget } from "../exploration/types.js";
12
+ export type ShareableInteractionQueryState = Partial<LinkedViewQueryProjection> & {
13
+ readonly selection?: ReadonlyArray<FeatureSelectionTarget>;
14
+ };
15
+ export interface ShareableInteractionQueryParams {
16
+ readonly filters: string;
17
+ readonly spatialFilter: string;
18
+ readonly extent: string;
19
+ readonly orderBy: string;
20
+ readonly pagination: string;
21
+ readonly outFields: string;
22
+ readonly grouping: string;
23
+ readonly aggregation: string;
24
+ readonly selection: string;
25
+ }
26
+ /** Encode selection targets as a stable JSON value suitable for a URL param. */
27
+ export declare function serializeSelection(selection: ReadonlyArray<FeatureSelectionTarget>): string;
28
+ /** Decode a selection value produced by {@link serializeSelection}. */
29
+ export declare function parseSelection(value: string | null | undefined): FeatureSelectionTarget[];
30
+ /** Encode query projection state into URL query parameters. */
31
+ export declare function serializeInteractionQueryState(state: ShareableInteractionQueryState): string;
32
+ /** Decode URL query parameters produced by {@link serializeInteractionQueryState}. */
33
+ export declare function parseInteractionQueryState(search: string | URLSearchParams): ShareableInteractionQueryState;
34
+ /** Return the query parameter names used by the shareable serializer. */
35
+ export declare function interactionQueryParamNames(): ShareableInteractionQueryParams;
36
+ //# sourceMappingURL=share-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-state.d.ts","sourceRoot":"","sources":["../../../src/interactions/share-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,MAAM,8BAA8B,GAAG,OAAO,CAAC,yBAAyB,CAAC,GAAG;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAcD,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAE3F;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,sBAAsB,EAAE,CAIzF;AAED,+DAA+D;AAC/D,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,8BAA8B,GAAG,MAAM,CAY5F;AAED,sFAAsF;AACtF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,8BAA8B,CAc3G;AAED,yEAAyE;AACzE,wBAAgB,0BAA0B,IAAI,+BAA+B,CAE5E"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Shareable serialization helpers for map/table/detail interaction state.
3
+ *
4
+ * The encoded query string is intended for URLs and bookmarks. It carries the
5
+ * query projection and selection but leaves state ownership with
6
+ * `ExplorationContext`.
7
+ *
8
+ * @module
9
+ */
10
+ const PARAMS = {
11
+ filters: "f",
12
+ spatialFilter: "sf",
13
+ extent: "ext",
14
+ orderBy: "sort",
15
+ pagination: "page",
16
+ outFields: "fields",
17
+ grouping: "group",
18
+ aggregation: "agg",
19
+ selection: "sel",
20
+ };
21
+ /** Encode selection targets as a stable JSON value suitable for a URL param. */
22
+ export function serializeSelection(selection) {
23
+ return stableStringify(selection);
24
+ }
25
+ /** Decode a selection value produced by {@link serializeSelection}. */
26
+ export function parseSelection(value) {
27
+ if (!value)
28
+ return [];
29
+ const parsed = parseJson(value);
30
+ return Array.isArray(parsed) ? parsed.filter(isSelectionTarget) : [];
31
+ }
32
+ /** Encode query projection state into URL query parameters. */
33
+ export function serializeInteractionQueryState(state) {
34
+ const params = new URLSearchParams();
35
+ setJsonParam(params, PARAMS.filters, emptyObjectToUndefined(state.filters));
36
+ setJsonParam(params, PARAMS.spatialFilter, state.spatialFilter);
37
+ setJsonParam(params, PARAMS.extent, state.extent);
38
+ setJsonParam(params, PARAMS.orderBy, emptyArrayToUndefined(state.orderBy));
39
+ setJsonParam(params, PARAMS.pagination, emptyObjectToUndefined(state.pagination));
40
+ setJsonParam(params, PARAMS.outFields, emptyArrayToUndefined(state.outFields));
41
+ setJsonParam(params, PARAMS.grouping, emptyArrayToUndefined(state.grouping));
42
+ setJsonParam(params, PARAMS.aggregation, state.aggregation);
43
+ setJsonParam(params, PARAMS.selection, emptyArrayToUndefined(state.selection));
44
+ return params.toString();
45
+ }
46
+ /** Decode URL query parameters produced by {@link serializeInteractionQueryState}. */
47
+ export function parseInteractionQueryState(search) {
48
+ const params = typeof search === "string" ? new URLSearchParams(search.startsWith("?") ? search.slice(1) : search) : search;
49
+ return {
50
+ filters: parseRecordParam(params.get(PARAMS.filters)),
51
+ spatialFilter: parseRecordParam(params.get(PARAMS.spatialFilter)),
52
+ extent: parseRecordParam(params.get(PARAMS.extent)),
53
+ orderBy: parseArrayParam(params.get(PARAMS.orderBy)),
54
+ pagination: parseRecordParam(params.get(PARAMS.pagination)),
55
+ outFields: parseStringArrayParam(params.get(PARAMS.outFields)),
56
+ grouping: parseStringArrayParam(params.get(PARAMS.grouping)),
57
+ aggregation: parseRecordParam(params.get(PARAMS.aggregation)),
58
+ selection: parseSelection(params.get(PARAMS.selection)),
59
+ };
60
+ }
61
+ /** Return the query parameter names used by the shareable serializer. */
62
+ export function interactionQueryParamNames() {
63
+ return { ...PARAMS };
64
+ }
65
+ function setJsonParam(params, name, value) {
66
+ if (value === undefined)
67
+ return;
68
+ params.set(name, stableStringify(value));
69
+ }
70
+ function stableStringify(value) {
71
+ return JSON.stringify(sortJsonValue(value));
72
+ }
73
+ function sortJsonValue(value) {
74
+ if (Array.isArray(value))
75
+ return value.map(sortJsonValue);
76
+ if (!value || typeof value !== "object")
77
+ return value;
78
+ const out = {};
79
+ for (const key of Object.keys(value).sort()) {
80
+ out[key] = sortJsonValue(value[key]);
81
+ }
82
+ return out;
83
+ }
84
+ function parseJson(value) {
85
+ try {
86
+ return JSON.parse(value);
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ function parseRecordParam(value) {
93
+ if (!value)
94
+ return undefined;
95
+ const parsed = parseJson(value);
96
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : undefined;
97
+ }
98
+ function parseArrayParam(value) {
99
+ if (!value)
100
+ return undefined;
101
+ const parsed = parseJson(value);
102
+ return Array.isArray(parsed) ? parsed : undefined;
103
+ }
104
+ function parseStringArrayParam(value) {
105
+ const parsed = parseArrayParam(value);
106
+ if (!parsed)
107
+ return undefined;
108
+ return parsed.filter((entry) => typeof entry === "string");
109
+ }
110
+ function emptyArrayToUndefined(value) {
111
+ return value && value.length > 0 ? value : undefined;
112
+ }
113
+ function emptyObjectToUndefined(value) {
114
+ return value && Object.keys(value).length > 0 ? value : undefined;
115
+ }
116
+ function isSelectionTarget(value) {
117
+ if (typeof value === "string" || typeof value === "number")
118
+ return true;
119
+ if (!value || typeof value !== "object" || Array.isArray(value))
120
+ return false;
121
+ const record = value;
122
+ return typeof record.sourceId === "string" && (typeof record.id === "string" || typeof record.id === "number");
123
+ }
@@ -0,0 +1,138 @@
1
+ /**
2
+ * MapLibre runtime adapter for Honua feature-service sources.
3
+ *
4
+ * {@link createHonuaFeatureServiceLayer} (and the migration codemod) emit a
5
+ * custom `honua-feature-service` source type that MapLibre's renderer does not
6
+ * understand — adding it to a `maplibre-gl` `Map` directly is a silent no-op.
7
+ *
8
+ * This module bridges that gap. It fetches features through the SDK query path
9
+ * ({@link HonuaFeatureLayer}) and converts the Esri feature set into a standard
10
+ * GeoJSON `FeatureCollection`, then exposes it as a plain MapLibre `geojson`
11
+ * source spec that the renderer renders natively. Callers either:
12
+ *
13
+ * - call {@link loadHonuaFeatureServiceGeoJson} to obtain a `geojson` source
14
+ * spec they add to their style themselves, or
15
+ * - call {@link registerHonuaFeatureServiceSources} to walk a {@link HonuaMap}
16
+ * and live-patch every `honua-feature-service` source on a real MapLibre map
17
+ * into a fetched `geojson` source.
18
+ *
19
+ * Raster Honua sources (`honua-map-service`, tile services) already project
20
+ * onto MapLibre-native sources and need no adapter; this fills in the feature
21
+ * (vector) asymmetry.
22
+ *
23
+ * @module
24
+ */
25
+ import type { HonuaClient } from "../core/client.js";
26
+ import type { EsriGeometryType } from "../core/types.js";
27
+ import type { HonuaMap } from "./honua-map.js";
28
+ /** A GeoJSON geometry produced by the adapter. */
29
+ export interface AdapterGeoJsonGeometry {
30
+ type: string;
31
+ coordinates: unknown;
32
+ }
33
+ /** A GeoJSON feature produced by the adapter. */
34
+ export interface AdapterGeoJsonFeature {
35
+ type: "Feature";
36
+ id?: string | number;
37
+ geometry: AdapterGeoJsonGeometry | null;
38
+ properties: Record<string, unknown>;
39
+ }
40
+ /** A GeoJSON feature collection produced by the adapter. */
41
+ export interface AdapterGeoJsonFeatureCollection {
42
+ type: "FeatureCollection";
43
+ features: AdapterGeoJsonFeature[];
44
+ }
45
+ /** A standard MapLibre `geojson` source specification. */
46
+ export interface MapLibreGeoJsonSourceSpecification {
47
+ type: "geojson";
48
+ data: AdapterGeoJsonFeatureCollection;
49
+ attribution?: string;
50
+ }
51
+ /** Options controlling how the adapter fetches feature-service data. */
52
+ export interface LoadHonuaFeatureServiceGeoJsonOptions {
53
+ /** Server-side WHERE clause. Defaults to `"1=1"`. */
54
+ definitionExpression?: string;
55
+ /** Fields to request. Defaults to all (`["*"]`). */
56
+ outFields?: string[];
57
+ /** Output spatial reference WKID. GeoJSON requires `4326`; defaults to it. */
58
+ outSR?: number;
59
+ /** Page size for paginated fetching. */
60
+ pageSize?: number;
61
+ /** Maximum pages to fetch. */
62
+ maxPages?: number;
63
+ /** Attribution to attach to the produced source spec. */
64
+ attribution?: string;
65
+ /** Abort signal forwarded to the query. */
66
+ signal?: AbortSignal;
67
+ }
68
+ /**
69
+ * The minimal MapLibre `Map` surface the adapter mutates. Any object exposing
70
+ * these methods — including a real `maplibre-gl` `Map` — satisfies it.
71
+ */
72
+ export interface FeatureServiceAdapterMap {
73
+ getSource(id: string): unknown;
74
+ addSource(id: string, source: unknown): void;
75
+ removeSource(id: string): void;
76
+ }
77
+ /**
78
+ * Convert a single Esri geometry into a GeoJSON geometry.
79
+ *
80
+ * Handles the geometry kinds a feature-service query returns (point,
81
+ * multipoint, polyline, polygon, envelope). Returns `null` when the geometry is
82
+ * absent or unrecognised so the feature still renders attribute-only.
83
+ */
84
+ export declare function esriGeometryToGeoJson(geometry: Record<string, unknown> | null | undefined, geometryType: EsriGeometryType | undefined): AdapterGeoJsonGeometry | null;
85
+ /**
86
+ * Convert an array of Esri features (attributes + geometry) into a GeoJSON
87
+ * `FeatureCollection`.
88
+ */
89
+ export declare function esriFeaturesToGeoJson(features: ReadonlyArray<{
90
+ attributes?: Record<string, unknown>;
91
+ geometry?: Record<string, unknown> | null;
92
+ }>, geometryType: EsriGeometryType | undefined): AdapterGeoJsonFeatureCollection;
93
+ /**
94
+ * Fetch a Honua feature-service layer through the SDK and return a standard
95
+ * MapLibre `geojson` source specification that the renderer renders natively.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const source = await loadHonuaFeatureServiceGeoJson(client, layer.source.url);
100
+ * map.addSource(layer.sourceId, source);
101
+ * map.addLayer(layer.layer);
102
+ * ```
103
+ */
104
+ export declare function loadHonuaFeatureServiceGeoJson(client: HonuaClient, url: string, options?: LoadHonuaFeatureServiceGeoJsonOptions): Promise<MapLibreGeoJsonSourceSpecification>;
105
+ /** Result of {@link registerHonuaFeatureServiceSources}. */
106
+ export interface RegisterHonuaFeatureServiceSourcesResult {
107
+ /** Source ids that were fetched and wired as `geojson` sources. */
108
+ registered: string[];
109
+ /** Source ids that failed to load, with the error encountered. */
110
+ failed: Array<{
111
+ sourceId: string;
112
+ error: unknown;
113
+ }>;
114
+ }
115
+ /** Options for {@link registerHonuaFeatureServiceSources}. */
116
+ export interface RegisterHonuaFeatureServiceSourcesOptions extends LoadHonuaFeatureServiceGeoJsonOptions {
117
+ /**
118
+ * Maximum number of feature-service sources to fetch concurrently. Defaults
119
+ * to {@link DEFAULT_REGISTER_CONCURRENCY}. Total load latency becomes the max
120
+ * of the per-source fetches rather than their sum.
121
+ */
122
+ concurrency?: number;
123
+ }
124
+ /**
125
+ * Walk a {@link HonuaMap} and replace every `honua-feature-service` source on a
126
+ * real MapLibre map with a fetched standard `geojson` source so feature layers
127
+ * actually render.
128
+ *
129
+ * Existing `geojson` sources are updated in place via `setData`; otherwise a new
130
+ * source is added. Layers should be added by the caller (or already present in
131
+ * the style) — this only manages the data sources.
132
+ *
133
+ * @param map - A `maplibre-gl` `Map` (or any {@link FeatureServiceAdapterMap}).
134
+ * @param honuaMap - The {@link HonuaMap} whose feature-service sources to wire.
135
+ * @param client - The Honua client used to fetch features.
136
+ */
137
+ export declare function registerHonuaFeatureServiceSources(map: FeatureServiceAdapterMap, honuaMap: HonuaMap, client: HonuaClient, options?: RegisterHonuaFeatureServiceSourcesOptions): Promise<RegisterHonuaFeatureServiceSourcesResult>;
138
+ //# sourceMappingURL=feature-service-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-service-adapter.d.ts","sourceRoot":"","sources":["../../../src/map/feature-service-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,4DAA4D;AAC5D,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,0DAA0D;AAC1D,MAAM,WAAW,kCAAkC;IACjD,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,+BAA+B,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,qCAAqC;IACpD,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,YAAY,EAAE,gBAAgB,GAAG,SAAS,GACzC,sBAAsB,GAAG,IAAI,CA+D/B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,aAAa,CAAC;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAAE,CAAC,EAC5G,YAAY,EAAE,gBAAgB,GAAG,SAAS,GACzC,+BAA+B,CASjC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,kCAAkC,CAAC,CAmC7C;AAED,4DAA4D;AAC5D,MAAM,WAAW,wCAAwC;IACvD,mEAAmE;IACnE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,8DAA8D;AAC9D,MAAM,WAAW,yCAA0C,SAAQ,qCAAqC;IACtG;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,yCAA8C,GACtD,OAAO,CAAC,wCAAwC,CAAC,CA4DnD"}