@honua/react 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 (597) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +9 -0
  3. package/contract/analytics-sources.d.ts +149 -0
  4. package/contract/analytics-sources.d.ts.map +1 -0
  5. package/contract/analytics-sources.js +235 -0
  6. package/contract/edit-session.d.ts +203 -0
  7. package/contract/edit-session.d.ts.map +1 -0
  8. package/contract/edit-session.js +760 -0
  9. package/contract/edit-sketch.d.ts +91 -0
  10. package/contract/edit-sketch.d.ts.map +1 -0
  11. package/contract/edit-sketch.js +281 -0
  12. package/contract/index.d.ts +61 -0
  13. package/contract/index.d.ts.map +1 -0
  14. package/contract/index.js +51 -0
  15. package/contract/jobs.d.ts +149 -0
  16. package/contract/jobs.d.ts.map +1 -0
  17. package/contract/jobs.js +40 -0
  18. package/contract/source.d.ts +423 -0
  19. package/contract/source.d.ts.map +1 -0
  20. package/contract/source.js +3802 -0
  21. package/contract/spatial-aggregation.d.ts +336 -0
  22. package/contract/spatial-aggregation.d.ts.map +1 -0
  23. package/contract/spatial-aggregation.js +298 -0
  24. package/contract/temporal.d.ts +455 -0
  25. package/contract/temporal.d.ts.map +1 -0
  26. package/contract/temporal.js +146 -0
  27. package/contract/tiles.d.ts +370 -0
  28. package/contract/tiles.d.ts.map +1 -0
  29. package/contract/tiles.js +519 -0
  30. package/contract/types.d.ts +665 -0
  31. package/contract/types.d.ts.map +1 -0
  32. package/contract/types.js +175 -0
  33. package/contract/widget-source.d.ts +205 -0
  34. package/contract/widget-source.d.ts.map +1 -0
  35. package/contract/widget-source.js +1473 -0
  36. package/control-plane/client.d.ts +95 -0
  37. package/control-plane/client.d.ts.map +1 -0
  38. package/control-plane/client.js +374 -0
  39. package/control-plane/index.d.ts +18 -0
  40. package/control-plane/index.d.ts.map +1 -0
  41. package/control-plane/index.js +14 -0
  42. package/control-plane/types.d.ts +233 -0
  43. package/control-plane/types.d.ts.map +1 -0
  44. package/control-plane/types.js +7 -0
  45. package/core/batch.d.ts +37 -0
  46. package/core/batch.d.ts.map +1 -0
  47. package/core/batch.js +79 -0
  48. package/core/cache-state.d.ts +79 -0
  49. package/core/cache-state.d.ts.map +1 -0
  50. package/core/cache-state.js +87 -0
  51. package/core/client.d.ts +577 -0
  52. package/core/client.d.ts.map +1 -0
  53. package/core/client.js +1664 -0
  54. package/core/compatibility.d.ts +18 -0
  55. package/core/compatibility.d.ts.map +1 -0
  56. package/core/compatibility.js +245 -0
  57. package/core/errors.d.ts +107 -0
  58. package/core/errors.d.ts.map +1 -0
  59. package/core/errors.js +156 -0
  60. package/core/esri-geojson.d.ts +66 -0
  61. package/core/esri-geojson.d.ts.map +1 -0
  62. package/core/esri-geojson.js +363 -0
  63. package/core/geoservices.d.ts +34 -0
  64. package/core/geoservices.d.ts.map +1 -0
  65. package/core/geoservices.js +434 -0
  66. package/core/grpc-adapter.d.ts +23 -0
  67. package/core/grpc-adapter.d.ts.map +1 -0
  68. package/core/grpc-adapter.js +688 -0
  69. package/core/odata.d.ts +347 -0
  70. package/core/odata.d.ts.map +1 -0
  71. package/core/odata.js +913 -0
  72. package/core/ogc-conformance.d.ts +35 -0
  73. package/core/ogc-conformance.d.ts.map +1 -0
  74. package/core/ogc-conformance.js +134 -0
  75. package/core/ogc-features.d.ts +23 -0
  76. package/core/ogc-features.d.ts.map +1 -0
  77. package/core/ogc-features.js +114 -0
  78. package/core/ogc-maps.d.ts +49 -0
  79. package/core/ogc-maps.d.ts.map +1 -0
  80. package/core/ogc-maps.js +126 -0
  81. package/core/ogc-processes.d.ts +118 -0
  82. package/core/ogc-processes.d.ts.map +1 -0
  83. package/core/ogc-processes.js +423 -0
  84. package/core/ogc-records.d.ts +75 -0
  85. package/core/ogc-records.d.ts.map +1 -0
  86. package/core/ogc-records.js +251 -0
  87. package/core/ogc-tiles.d.ts +125 -0
  88. package/core/ogc-tiles.d.ts.map +1 -0
  89. package/core/ogc-tiles.js +183 -0
  90. package/core/path-utils.d.ts +69 -0
  91. package/core/path-utils.d.ts.map +1 -0
  92. package/core/path-utils.js +123 -0
  93. package/core/pbf-decoder.d.ts +39 -0
  94. package/core/pbf-decoder.d.ts.map +1 -0
  95. package/core/pbf-decoder.js +702 -0
  96. package/core/process-runner.d.ts +104 -0
  97. package/core/process-runner.d.ts.map +1 -0
  98. package/core/process-runner.js +315 -0
  99. package/core/protocol-transport.d.ts +76 -0
  100. package/core/protocol-transport.d.ts.map +1 -0
  101. package/core/protocol-transport.js +15 -0
  102. package/core/query-builder.d.ts +261 -0
  103. package/core/query-builder.d.ts.map +1 -0
  104. package/core/query-builder.js +538 -0
  105. package/core/request-pipeline.d.ts +88 -0
  106. package/core/request-pipeline.d.ts.map +1 -0
  107. package/core/request-pipeline.js +273 -0
  108. package/core/spatial-filter.d.ts +93 -0
  109. package/core/spatial-filter.d.ts.map +1 -0
  110. package/core/spatial-filter.js +153 -0
  111. package/core/stac.d.ts +55 -0
  112. package/core/stac.d.ts.map +1 -0
  113. package/core/stac.js +229 -0
  114. package/core/surfaces.d.ts +527 -0
  115. package/core/surfaces.d.ts.map +1 -0
  116. package/core/surfaces.js +1917 -0
  117. package/core/terrain-elevation.d.ts +114 -0
  118. package/core/terrain-elevation.d.ts.map +1 -0
  119. package/core/terrain-elevation.js +150 -0
  120. package/core/types.d.ts +1355 -0
  121. package/core/types.d.ts.map +1 -0
  122. package/core/types.js +13 -0
  123. package/core/wfs-capabilities.d.ts +143 -0
  124. package/core/wfs-capabilities.d.ts.map +1 -0
  125. package/core/wfs-capabilities.js +478 -0
  126. package/core/wfs-filter.d.ts +118 -0
  127. package/core/wfs-filter.d.ts.map +1 -0
  128. package/core/wfs-filter.js +634 -0
  129. package/core/wfs.d.ts +219 -0
  130. package/core/wfs.d.ts.map +1 -0
  131. package/core/wfs.js +406 -0
  132. package/core/wire-shared.d.ts +32 -0
  133. package/core/wire-shared.d.ts.map +1 -0
  134. package/core/wire-shared.js +76 -0
  135. package/core/wms-axis.d.ts +36 -0
  136. package/core/wms-axis.d.ts.map +1 -0
  137. package/core/wms-axis.js +73 -0
  138. package/core/wms-capabilities.d.ts +110 -0
  139. package/core/wms-capabilities.d.ts.map +1 -0
  140. package/core/wms-capabilities.js +559 -0
  141. package/core/wms-types.d.ts +128 -0
  142. package/core/wms-types.d.ts.map +1 -0
  143. package/core/wms-types.js +32 -0
  144. package/core/wms.d.ts +144 -0
  145. package/core/wms.d.ts.map +1 -0
  146. package/core/wms.js +338 -0
  147. package/core/wmts-capabilities.d.ts +82 -0
  148. package/core/wmts-capabilities.d.ts.map +1 -0
  149. package/core/wmts-capabilities.js +402 -0
  150. package/core/wmts.d.ts +103 -0
  151. package/core/wmts.d.ts.map +1 -0
  152. package/core/wmts.js +332 -0
  153. package/core/xml-text.d.ts +20 -0
  154. package/core/xml-text.d.ts.map +1 -0
  155. package/core/xml-text.js +85 -0
  156. package/esri-compat/basemap-gallery.d.ts +38 -0
  157. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  158. package/esri-compat/basemap-gallery.js +159 -0
  159. package/esri-compat/basemap-layer-list.d.ts +35 -0
  160. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  161. package/esri-compat/basemap-layer-list.js +139 -0
  162. package/esri-compat/basemap.d.ts +32 -0
  163. package/esri-compat/basemap.d.ts.map +1 -0
  164. package/esri-compat/basemap.js +84 -0
  165. package/esri-compat/bookmarks.d.ts +36 -0
  166. package/esri-compat/bookmarks.d.ts.map +1 -0
  167. package/esri-compat/bookmarks.js +108 -0
  168. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  169. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  170. package/esri-compat/class-breaks-renderer.js +164 -0
  171. package/esri-compat/color.d.ts +22 -0
  172. package/esri-compat/color.d.ts.map +1 -0
  173. package/esri-compat/color.js +106 -0
  174. package/esri-compat/controls.d.ts +174 -0
  175. package/esri-compat/controls.d.ts.map +1 -0
  176. package/esri-compat/controls.js +479 -0
  177. package/esri-compat/coordinate-conversion.d.ts +41 -0
  178. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  179. package/esri-compat/coordinate-conversion.js +125 -0
  180. package/esri-compat/directions.d.ts +45 -0
  181. package/esri-compat/directions.d.ts.map +1 -0
  182. package/esri-compat/directions.js +123 -0
  183. package/esri-compat/editor.d.ts +47 -0
  184. package/esri-compat/editor.d.ts.map +1 -0
  185. package/esri-compat/editor.js +170 -0
  186. package/esri-compat/esri-config.d.ts +16 -0
  187. package/esri-compat/esri-config.d.ts.map +1 -0
  188. package/esri-compat/esri-config.js +23 -0
  189. package/esri-compat/esri-request.d.ts +17 -0
  190. package/esri-compat/esri-request.d.ts.map +1 -0
  191. package/esri-compat/esri-request.js +127 -0
  192. package/esri-compat/event-bus.d.ts +106 -0
  193. package/esri-compat/event-bus.d.ts.map +1 -0
  194. package/esri-compat/event-bus.js +90 -0
  195. package/esri-compat/expand.d.ts +36 -0
  196. package/esri-compat/expand.d.ts.map +1 -0
  197. package/esri-compat/expand.js +97 -0
  198. package/esri-compat/extent.d.ts +43 -0
  199. package/esri-compat/extent.d.ts.map +1 -0
  200. package/esri-compat/extent.js +140 -0
  201. package/esri-compat/feature-filter.d.ts +55 -0
  202. package/esri-compat/feature-filter.d.ts.map +1 -0
  203. package/esri-compat/feature-filter.js +109 -0
  204. package/esri-compat/feature-form.d.ts +64 -0
  205. package/esri-compat/feature-form.d.ts.map +1 -0
  206. package/esri-compat/feature-form.js +137 -0
  207. package/esri-compat/feature-layer.d.ts +173 -0
  208. package/esri-compat/feature-layer.d.ts.map +1 -0
  209. package/esri-compat/feature-layer.js +661 -0
  210. package/esri-compat/feature-set.d.ts +32 -0
  211. package/esri-compat/feature-set.d.ts.map +1 -0
  212. package/esri-compat/feature-set.js +80 -0
  213. package/esri-compat/feature-table.d.ts +141 -0
  214. package/esri-compat/feature-table.d.ts.map +1 -0
  215. package/esri-compat/feature-table.js +500 -0
  216. package/esri-compat/feature-templates.d.ts +41 -0
  217. package/esri-compat/feature-templates.d.ts.map +1 -0
  218. package/esri-compat/feature-templates.js +97 -0
  219. package/esri-compat/feature.d.ts +33 -0
  220. package/esri-compat/feature.d.ts.map +1 -0
  221. package/esri-compat/feature.js +83 -0
  222. package/esri-compat/geojson-layer.d.ts +86 -0
  223. package/esri-compat/geojson-layer.d.ts.map +1 -0
  224. package/esri-compat/geojson-layer.js +191 -0
  225. package/esri-compat/geometry-engine.d.ts +107 -0
  226. package/esri-compat/geometry-engine.d.ts.map +1 -0
  227. package/esri-compat/geometry-engine.js +266 -0
  228. package/esri-compat/graphic.d.ts +46 -0
  229. package/esri-compat/graphic.d.ts.map +1 -0
  230. package/esri-compat/graphic.js +103 -0
  231. package/esri-compat/graphics-layer.d.ts +49 -0
  232. package/esri-compat/graphics-layer.d.ts.map +1 -0
  233. package/esri-compat/graphics-layer.js +185 -0
  234. package/esri-compat/group-layer.d.ts +48 -0
  235. package/esri-compat/group-layer.d.ts.map +1 -0
  236. package/esri-compat/group-layer.js +212 -0
  237. package/esri-compat/identify.d.ts +71 -0
  238. package/esri-compat/identify.d.ts.map +1 -0
  239. package/esri-compat/identify.js +299 -0
  240. package/esri-compat/identity-manager.d.ts +31 -0
  241. package/esri-compat/identity-manager.d.ts.map +1 -0
  242. package/esri-compat/identity-manager.js +115 -0
  243. package/esri-compat/imagery-layer.d.ts +78 -0
  244. package/esri-compat/imagery-layer.d.ts.map +1 -0
  245. package/esri-compat/imagery-layer.js +167 -0
  246. package/esri-compat/label-class.d.ts +31 -0
  247. package/esri-compat/label-class.d.ts.map +1 -0
  248. package/esri-compat/label-class.js +102 -0
  249. package/esri-compat/layer-list.d.ts +77 -0
  250. package/esri-compat/layer-list.d.ts.map +1 -0
  251. package/esri-compat/layer-list.js +342 -0
  252. package/esri-compat/legend.d.ts +53 -0
  253. package/esri-compat/legend.d.ts.map +1 -0
  254. package/esri-compat/legend.js +254 -0
  255. package/esri-compat/map-image-layer.d.ts +162 -0
  256. package/esri-compat/map-image-layer.d.ts.map +1 -0
  257. package/esri-compat/map-image-layer.js +709 -0
  258. package/esri-compat/map-view.d.ts +323 -0
  259. package/esri-compat/map-view.d.ts.map +1 -0
  260. package/esri-compat/map-view.js +1175 -0
  261. package/esri-compat/map.d.ts +47 -0
  262. package/esri-compat/map.d.ts.map +1 -0
  263. package/esri-compat/map.js +209 -0
  264. package/esri-compat/measurement-2d.d.ts +61 -0
  265. package/esri-compat/measurement-2d.d.ts.map +1 -0
  266. package/esri-compat/measurement-2d.js +184 -0
  267. package/esri-compat/measurement.d.ts +45 -0
  268. package/esri-compat/measurement.d.ts.map +1 -0
  269. package/esri-compat/measurement.js +193 -0
  270. package/esri-compat/oauth-info.d.ts +35 -0
  271. package/esri-compat/oauth-info.d.ts.map +1 -0
  272. package/esri-compat/oauth-info.js +115 -0
  273. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  274. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  275. package/esri-compat/picture-marker-symbol.js +126 -0
  276. package/esri-compat/point.d.ts +31 -0
  277. package/esri-compat/point.d.ts.map +1 -0
  278. package/esri-compat/point.js +102 -0
  279. package/esri-compat/polygon.d.ts +31 -0
  280. package/esri-compat/polygon.d.ts.map +1 -0
  281. package/esri-compat/polygon.js +107 -0
  282. package/esri-compat/polyline.d.ts +31 -0
  283. package/esri-compat/polyline.d.ts.map +1 -0
  284. package/esri-compat/polyline.js +107 -0
  285. package/esri-compat/popup-template.d.ts +55 -0
  286. package/esri-compat/popup-template.d.ts.map +1 -0
  287. package/esri-compat/popup-template.js +128 -0
  288. package/esri-compat/popup.d.ts +54 -0
  289. package/esri-compat/popup.d.ts.map +1 -0
  290. package/esri-compat/popup.js +312 -0
  291. package/esri-compat/print.d.ts +47 -0
  292. package/esri-compat/print.d.ts.map +1 -0
  293. package/esri-compat/print.js +105 -0
  294. package/esri-compat/query.d.ts +58 -0
  295. package/esri-compat/query.d.ts.map +1 -0
  296. package/esri-compat/query.js +128 -0
  297. package/esri-compat/reactive-utils.d.ts +24 -0
  298. package/esri-compat/reactive-utils.d.ts.map +1 -0
  299. package/esri-compat/reactive-utils.js +193 -0
  300. package/esri-compat/request.d.ts +41 -0
  301. package/esri-compat/request.d.ts.map +1 -0
  302. package/esri-compat/request.js +253 -0
  303. package/esri-compat/route-layer.d.ts +59 -0
  304. package/esri-compat/route-layer.d.ts.map +1 -0
  305. package/esri-compat/route-layer.js +223 -0
  306. package/esri-compat/route-task.d.ts +88 -0
  307. package/esri-compat/route-task.d.ts.map +1 -0
  308. package/esri-compat/route-task.js +225 -0
  309. package/esri-compat/scene-view.d.ts +41 -0
  310. package/esri-compat/scene-view.d.ts.map +1 -0
  311. package/esri-compat/scene-view.js +68 -0
  312. package/esri-compat/search.d.ts +112 -0
  313. package/esri-compat/search.d.ts.map +1 -0
  314. package/esri-compat/search.js +820 -0
  315. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  316. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  317. package/esri-compat/simple-fill-symbol.js +85 -0
  318. package/esri-compat/simple-line-symbol.d.ts +27 -0
  319. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  320. package/esri-compat/simple-line-symbol.js +85 -0
  321. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  322. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  323. package/esri-compat/simple-marker-symbol.js +92 -0
  324. package/esri-compat/simple-renderer.d.ts +29 -0
  325. package/esri-compat/simple-renderer.d.ts.map +1 -0
  326. package/esri-compat/simple-renderer.js +92 -0
  327. package/esri-compat/sketch.d.ts +64 -0
  328. package/esri-compat/sketch.d.ts.map +1 -0
  329. package/esri-compat/sketch.js +227 -0
  330. package/esri-compat/spatial-reference.d.ts +31 -0
  331. package/esri-compat/spatial-reference.d.ts.map +1 -0
  332. package/esri-compat/spatial-reference.js +102 -0
  333. package/esri-compat/swipe.d.ts +34 -0
  334. package/esri-compat/swipe.d.ts.map +1 -0
  335. package/esri-compat/swipe.js +93 -0
  336. package/esri-compat/table-list.d.ts +36 -0
  337. package/esri-compat/table-list.d.ts.map +1 -0
  338. package/esri-compat/table-list.js +126 -0
  339. package/esri-compat/text-symbol.d.ts +37 -0
  340. package/esri-compat/text-symbol.d.ts.map +1 -0
  341. package/esri-compat/text-symbol.js +123 -0
  342. package/esri-compat/tile-layer.d.ts +52 -0
  343. package/esri-compat/tile-layer.d.ts.map +1 -0
  344. package/esri-compat/tile-layer.js +168 -0
  345. package/esri-compat/time-slider.d.ts +70 -0
  346. package/esri-compat/time-slider.d.ts.map +1 -0
  347. package/esri-compat/time-slider.js +208 -0
  348. package/esri-compat/track.d.ts +51 -0
  349. package/esri-compat/track.d.ts.map +1 -0
  350. package/esri-compat/track.js +174 -0
  351. package/esri-compat/unique-value-renderer.d.ts +41 -0
  352. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  353. package/esri-compat/unique-value-renderer.js +127 -0
  354. package/esri-compat/url.d.ts +13 -0
  355. package/esri-compat/url.d.ts.map +1 -0
  356. package/esri-compat/url.js +68 -0
  357. package/esri-compat/vector-tile-layer.d.ts +47 -0
  358. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  359. package/esri-compat/vector-tile-layer.js +130 -0
  360. package/esri-compat/web-map.d.ts +14 -0
  361. package/esri-compat/web-map.d.ts.map +1 -0
  362. package/esri-compat/web-map.js +24 -0
  363. package/esri-compat/wfs-layer.d.ts +64 -0
  364. package/esri-compat/wfs-layer.d.ts.map +1 -0
  365. package/esri-compat/wfs-layer.js +145 -0
  366. package/esri-compat/wms-layer.d.ts +76 -0
  367. package/esri-compat/wms-layer.d.ts.map +1 -0
  368. package/esri-compat/wms-layer.js +157 -0
  369. package/exploration/context.d.ts +25 -0
  370. package/exploration/context.d.ts.map +1 -0
  371. package/exploration/context.js +396 -0
  372. package/exploration/index.d.ts +27 -0
  373. package/exploration/index.d.ts.map +1 -0
  374. package/exploration/index.js +24 -0
  375. package/exploration/presets.d.ts +27 -0
  376. package/exploration/presets.d.ts.map +1 -0
  377. package/exploration/presets.js +114 -0
  378. package/exploration/reducer.d.ts +23 -0
  379. package/exploration/reducer.d.ts.map +1 -0
  380. package/exploration/reducer.js +332 -0
  381. package/exploration/selection.d.ts +25 -0
  382. package/exploration/selection.d.ts.map +1 -0
  383. package/exploration/selection.js +34 -0
  384. package/exploration/selectors.d.ts +56 -0
  385. package/exploration/selectors.d.ts.map +1 -0
  386. package/exploration/selectors.js +110 -0
  387. package/exploration/types.d.ts +294 -0
  388. package/exploration/types.d.ts.map +1 -0
  389. package/exploration/types.js +33 -0
  390. package/expr/expression.d.ts +457 -0
  391. package/expr/expression.d.ts.map +1 -0
  392. package/expr/expression.js +663 -0
  393. package/expr/index.d.ts +32 -0
  394. package/expr/index.d.ts.map +1 -0
  395. package/expr/index.js +30 -0
  396. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  397. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  398. package/gen/honua/v1/feature_service_pb.js +375 -0
  399. package/generated-app/errors.d.ts +41 -0
  400. package/generated-app/errors.d.ts.map +1 -0
  401. package/generated-app/errors.js +41 -0
  402. package/generated-app/index.d.ts +17 -0
  403. package/generated-app/index.d.ts.map +1 -0
  404. package/generated-app/index.js +12 -0
  405. package/generated-app/manifest.d.ts +183 -0
  406. package/generated-app/manifest.d.ts.map +1 -0
  407. package/generated-app/manifest.js +14 -0
  408. package/generated-app/projection.d.ts +44 -0
  409. package/generated-app/projection.d.ts.map +1 -0
  410. package/generated-app/projection.js +234 -0
  411. package/generated-app/runtime.d.ts +215 -0
  412. package/generated-app/runtime.d.ts.map +1 -0
  413. package/generated-app/runtime.js +1196 -0
  414. package/interactions/detail-model.d.ts +54 -0
  415. package/interactions/detail-model.d.ts.map +1 -0
  416. package/interactions/detail-model.js +105 -0
  417. package/interactions/exploration-bindings.d.ts +120 -0
  418. package/interactions/exploration-bindings.d.ts.map +1 -0
  419. package/interactions/exploration-bindings.js +218 -0
  420. package/interactions/feature-state.d.ts +144 -0
  421. package/interactions/feature-state.d.ts.map +1 -0
  422. package/interactions/feature-state.js +169 -0
  423. package/interactions/hit-test.d.ts +112 -0
  424. package/interactions/hit-test.d.ts.map +1 -0
  425. package/interactions/hit-test.js +291 -0
  426. package/interactions/index.d.ts +31 -0
  427. package/interactions/index.d.ts.map +1 -0
  428. package/interactions/index.js +24 -0
  429. package/interactions/share-state.d.ts +36 -0
  430. package/interactions/share-state.d.ts.map +1 -0
  431. package/interactions/share-state.js +123 -0
  432. package/map/feature-service-adapter.d.ts +138 -0
  433. package/map/feature-service-adapter.d.ts.map +1 -0
  434. package/map/feature-service-adapter.js +279 -0
  435. package/map/honua-map.d.ts +203 -0
  436. package/map/honua-map.d.ts.map +1 -0
  437. package/map/honua-map.js +347 -0
  438. package/map/index.d.ts +27 -0
  439. package/map/index.d.ts.map +1 -0
  440. package/map/index.js +22 -0
  441. package/map/maplibre-target.d.ts +103 -0
  442. package/map/maplibre-target.d.ts.map +1 -0
  443. package/map/maplibre-target.js +164 -0
  444. package/map/webmap-maplibre.d.ts +60 -0
  445. package/map/webmap-maplibre.d.ts.map +1 -0
  446. package/map/webmap-maplibre.js +212 -0
  447. package/package.json +37 -0
  448. package/react/context.d.ts +32 -0
  449. package/react/context.d.ts.map +1 -0
  450. package/react/context.js +19 -0
  451. package/react/honua-layer.d.ts +35 -0
  452. package/react/honua-layer.d.ts.map +1 -0
  453. package/react/honua-layer.js +47 -0
  454. package/react/honua-map.d.ts +83 -0
  455. package/react/honua-map.d.ts.map +1 -0
  456. package/react/honua-map.js +109 -0
  457. package/react/honua-popup.d.ts +26 -0
  458. package/react/honua-popup.d.ts.map +1 -0
  459. package/react/honua-popup.js +34 -0
  460. package/react/hooks.d.ts +127 -0
  461. package/react/hooks.d.ts.map +1 -0
  462. package/react/hooks.js +206 -0
  463. package/react/index.d.ts +42 -0
  464. package/react/index.d.ts.map +1 -0
  465. package/react/index.js +34 -0
  466. package/react/provider.d.ts +36 -0
  467. package/react/provider.d.ts.map +1 -0
  468. package/react/provider.js +35 -0
  469. package/react/query-cache.d.ts +76 -0
  470. package/react/query-cache.d.ts.map +1 -0
  471. package/react/query-cache.js +188 -0
  472. package/runtime/diff.d.ts +31 -0
  473. package/runtime/diff.d.ts.map +1 -0
  474. package/runtime/diff.js +143 -0
  475. package/runtime/errors.d.ts +40 -0
  476. package/runtime/errors.d.ts.map +1 -0
  477. package/runtime/errors.js +35 -0
  478. package/runtime/index.d.ts +59 -0
  479. package/runtime/index.d.ts.map +1 -0
  480. package/runtime/index.js +43 -0
  481. package/runtime/legend.d.ts +23 -0
  482. package/runtime/legend.d.ts.map +1 -0
  483. package/runtime/legend.js +38 -0
  484. package/runtime/load-package.d.ts +125 -0
  485. package/runtime/load-package.d.ts.map +1 -0
  486. package/runtime/load-package.js +264 -0
  487. package/runtime/map-package-fetch.d.ts +107 -0
  488. package/runtime/map-package-fetch.d.ts.map +1 -0
  489. package/runtime/map-package-fetch.js +336 -0
  490. package/runtime/map-package-realtime.d.ts +169 -0
  491. package/runtime/map-package-realtime.d.ts.map +1 -0
  492. package/runtime/map-package-realtime.js +350 -0
  493. package/runtime/map-package-validation.d.ts +43 -0
  494. package/runtime/map-package-validation.d.ts.map +1 -0
  495. package/runtime/map-package-validation.js +269 -0
  496. package/runtime/map-package-watch.d.ts +78 -0
  497. package/runtime/map-package-watch.d.ts.map +1 -0
  498. package/runtime/map-package-watch.js +695 -0
  499. package/runtime/map-package.d.ts +167 -0
  500. package/runtime/map-package.d.ts.map +1 -0
  501. package/runtime/map-package.js +15 -0
  502. package/runtime/ogc-styles.d.ts +110 -0
  503. package/runtime/ogc-styles.d.ts.map +1 -0
  504. package/runtime/ogc-styles.js +195 -0
  505. package/runtime/popups.d.ts +62 -0
  506. package/runtime/popups.d.ts.map +1 -0
  507. package/runtime/popups.js +95 -0
  508. package/runtime/query-tiles.d.ts +217 -0
  509. package/runtime/query-tiles.d.ts.map +1 -0
  510. package/runtime/query-tiles.js +801 -0
  511. package/runtime/runtime.d.ts +243 -0
  512. package/runtime/runtime.d.ts.map +1 -0
  513. package/runtime/runtime.js +1147 -0
  514. package/runtime/source-bridge.d.ts +99 -0
  515. package/runtime/source-bridge.d.ts.map +1 -0
  516. package/runtime/source-bridge.js +401 -0
  517. package/runtime/style-compose.d.ts +46 -0
  518. package/runtime/style-compose.d.ts.map +1 -0
  519. package/runtime/style-compose.js +144 -0
  520. package/runtime/style-interactions.d.ts +141 -0
  521. package/runtime/style-interactions.d.ts.map +1 -0
  522. package/runtime/style-interactions.js +574 -0
  523. package/runtime/style-spec-validation.d.ts +23 -0
  524. package/runtime/style-spec-validation.d.ts.map +1 -0
  525. package/runtime/style-spec-validation.js +357 -0
  526. package/studio/capability-manifest.d.ts +285 -0
  527. package/studio/capability-manifest.d.ts.map +1 -0
  528. package/studio/capability-manifest.js +59 -0
  529. package/studio/chart-spec.d.ts +85 -0
  530. package/studio/chart-spec.d.ts.map +1 -0
  531. package/studio/chart-spec.js +106 -0
  532. package/studio/index.d.ts +34 -0
  533. package/studio/index.d.ts.map +1 -0
  534. package/studio/index.js +27 -0
  535. package/studio/provenance.d.ts +131 -0
  536. package/studio/provenance.d.ts.map +1 -0
  537. package/studio/provenance.js +39 -0
  538. package/studio/publish.d.ts +64 -0
  539. package/studio/publish.d.ts.map +1 -0
  540. package/studio/publish.js +13 -0
  541. package/studio/types.d.ts +278 -0
  542. package/studio/types.d.ts.map +1 -0
  543. package/studio/types.js +71 -0
  544. package/studio/validate.d.ts +45 -0
  545. package/studio/validate.d.ts.map +1 -0
  546. package/studio/validate.js +255 -0
  547. package/studio/validation.d.ts +112 -0
  548. package/studio/validation.d.ts.map +1 -0
  549. package/studio/validation.js +42 -0
  550. package/style/factory.d.ts +30 -0
  551. package/style/factory.d.ts.map +1 -0
  552. package/style/factory.js +61 -0
  553. package/style/index.d.ts +25 -0
  554. package/style/index.d.ts.map +1 -0
  555. package/style/index.js +24 -0
  556. package/style/specification.d.ts +203 -0
  557. package/style/specification.d.ts.map +1 -0
  558. package/style/specification.js +178 -0
  559. package/style/wms-wmts-resolvers.d.ts +38 -0
  560. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  561. package/style/wms-wmts-resolvers.js +92 -0
  562. package/webmap/contract.d.ts +28 -0
  563. package/webmap/contract.d.ts.map +1 -0
  564. package/webmap/contract.js +130 -0
  565. package/webmap/convert-basemap.d.ts +17 -0
  566. package/webmap/convert-basemap.d.ts.map +1 -0
  567. package/webmap/convert-basemap.js +78 -0
  568. package/webmap/convert-extent.d.ts +17 -0
  569. package/webmap/convert-extent.d.ts.map +1 -0
  570. package/webmap/convert-extent.js +114 -0
  571. package/webmap/convert-label.d.ts +13 -0
  572. package/webmap/convert-label.d.ts.map +1 -0
  573. package/webmap/convert-label.js +125 -0
  574. package/webmap/convert-layer.d.ts +22 -0
  575. package/webmap/convert-layer.d.ts.map +1 -0
  576. package/webmap/convert-layer.js +181 -0
  577. package/webmap/convert-popup.d.ts +34 -0
  578. package/webmap/convert-popup.d.ts.map +1 -0
  579. package/webmap/convert-popup.js +68 -0
  580. package/webmap/convert-renderer.d.ts +17 -0
  581. package/webmap/convert-renderer.d.ts.map +1 -0
  582. package/webmap/convert-renderer.js +161 -0
  583. package/webmap/convert-symbol.d.ts +17 -0
  584. package/webmap/convert-symbol.d.ts.map +1 -0
  585. package/webmap/convert-symbol.js +122 -0
  586. package/webmap/index.d.ts +44 -0
  587. package/webmap/index.d.ts.map +1 -0
  588. package/webmap/index.js +33 -0
  589. package/webmap/parse.d.ts +25 -0
  590. package/webmap/parse.d.ts.map +1 -0
  591. package/webmap/parse.js +83 -0
  592. package/webmap/types.d.ts +264 -0
  593. package/webmap/types.d.ts.map +1 -0
  594. package/webmap/types.js +13 -0
  595. package/webmap/warnings.d.ts +30 -0
  596. package/webmap/warnings.d.ts.map +1 -0
  597. package/webmap/warnings.js +37 -0
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Typed mirror of the server-produced `MapPackage` (honua-server #731). The
3
+ * package shape is `honua_map_package.v1` — the format string is the
4
+ * canonical version gate and the runtime loader refuses other values.
5
+ *
6
+ * Field names mirror the server's camelCase JSON; see
7
+ * `/honua-server/docs/developer/AI_OPERATOR_CONTRACT.md#MapPackage` for the
8
+ * authoritative definition. The runtime preserves unknown fields on the
9
+ * package through `updatePackage` so minor additive changes do not break
10
+ * callers.
11
+ *
12
+ * @module
13
+ */
14
+ import type { HonuaStyleSpecification } from "../style/specification.js";
15
+ /** Canonical format string for the v1 MapPackage shape. */
16
+ export declare const HONUA_MAP_PACKAGE_FORMAT_V1: "honua_map_package.v1";
17
+ /** Canonical format string for the v1 MapPackage shape. */
18
+ export type HonuaMapPackageFormat = typeof HONUA_MAP_PACKAGE_FORMAT_V1;
19
+ /** Lifecycle states a MapPackage may occupy server-side. */
20
+ export type HonuaMapPackageStatus = "Draft" | "Composing" | "Ready" | "Failed" | "Expired";
21
+ /**
22
+ * Server `SourceBinding.protocol` enum. Uses snake_case to match the
23
+ * server wire format. Translated to the SDK's kebab-case `Protocol`
24
+ * union in `source-bridge.ts`.
25
+ */
26
+ export type HonuaMapPackageProtocol = "geoservices_feature_service" | "geoservices_map_service" | "ogc_features" | "ogc_maps" | "ogc_tiles" | "wfs" | "wms" | "wmts" | "odata" | "vector_tile" | "raster_tile" | "workspace_artifact";
27
+ /** Protocol-specific endpoint information attached to a binding. */
28
+ export interface HonuaMapPackageLocator {
29
+ url?: string;
30
+ serviceId?: string;
31
+ /**
32
+ * The server's canonical `SourceLocator.LayerId` is `string?`
33
+ * (`honua-server/src/Honua.Core/Features/Geoprocessing/Domain/SourceBinding.cs`).
34
+ * Numeric forms (`0`) are accepted to match the SDK's historical
35
+ * shape; both variants are coerced to a number inside
36
+ * `projectSourceBindings` before hitting `createDataset`.
37
+ */
38
+ layerId?: number | string;
39
+ collectionId?: string | number;
40
+ typeName?: string;
41
+ entitySet?: string;
42
+ /** Allow additive fields from newer server revisions. */
43
+ [extra: string]: unknown;
44
+ }
45
+ /** One inlined `SourceBinding` entry on a MapPackage. */
46
+ export interface HonuaMapPackageSourceBinding {
47
+ sourceId: string;
48
+ protocol: HonuaMapPackageProtocol;
49
+ locator: HonuaMapPackageLocator;
50
+ /** Server-side filter expression (protocol-specific). */
51
+ filter?: string;
52
+ /** Optional free-form attribution text. */
53
+ attribution?: string;
54
+ /** Out-of-band binding metadata. Preserved round-trip. */
55
+ metadata?: Record<string, string>;
56
+ }
57
+ /** A style reference carried inline on the package body. */
58
+ export interface HonuaMapPackageStyleRef {
59
+ styleId: string;
60
+ label?: string;
61
+ presetId?: string;
62
+ /**
63
+ * Inline body — MapLibre `paint` / `layout` overrides keyed by layer id.
64
+ * Draft-1 of honua-server#731 attaches bodies inline; when the server
65
+ * moves to out-of-band retrieval, callers supply `resolveStyleRef` on the
66
+ * loader instead.
67
+ */
68
+ body?: HonuaStyleRefBody;
69
+ }
70
+ /**
71
+ * Resolved `StyleRef` body. Keys name MapLibre layers; values are partial
72
+ * layer overrides (paint/layout/minzoom/maxzoom/filter/metadata). Token
73
+ * placeholders in the form `{theme:key}` are substituted during
74
+ * composition from the active {@link HonuaMapPackageThemeSpec}.
75
+ */
76
+ export type HonuaStyleRefBody = Record<string, HonuaStyleRefLayerOverride>;
77
+ /** Partial layer specification applied on top of `mapSpec.layers[i]`. */
78
+ export interface HonuaStyleRefLayerOverride {
79
+ paint?: Record<string, unknown>;
80
+ layout?: Record<string, unknown>;
81
+ minzoom?: number;
82
+ maxzoom?: number;
83
+ filter?: unknown;
84
+ metadata?: Record<string, unknown>;
85
+ }
86
+ /**
87
+ * Resolved `ThemeSpec`. v1 uses a flat, name-keyed token map. Richer
88
+ * ramp / typography shapes can be added without breaking the runtime
89
+ * public surface.
90
+ */
91
+ export interface HonuaMapPackageThemeSpec {
92
+ themeId?: string;
93
+ tokens?: Record<string, string | number>;
94
+ }
95
+ /** Initial camera / extent for the composed map. */
96
+ export interface HonuaMapPackageInitialView {
97
+ bbox?: readonly [number, number, number, number];
98
+ center?: readonly [number, number];
99
+ zoom?: number;
100
+ pitch?: number;
101
+ bearing?: number;
102
+ crs?: string;
103
+ }
104
+ /** Legend swatch rendered by the runtime. */
105
+ export interface HonuaMapPackageLegendEntry {
106
+ label: string;
107
+ color?: string;
108
+ minValue?: number;
109
+ maxValue?: number;
110
+ /** Optional symbol URL for icon-based legends. */
111
+ iconUrl?: string;
112
+ }
113
+ /** Popup binding surface; resolved into a click handler by the runtime. */
114
+ export interface HonuaMapPackagePopupBinding {
115
+ sourceId: string;
116
+ /** Name of the source field to render. Optional when `template` is set. */
117
+ fieldName?: string;
118
+ /**
119
+ * Optional template. Default is a list of `key: value` rows rendered in
120
+ * a neutral, unstyled DOM subtree — `#29` operator components replace it.
121
+ */
122
+ template?: string;
123
+ /** Optional HTML title for the popup. */
124
+ title?: string;
125
+ }
126
+ /** Label binding surface (v1 is pass-through metadata for the runtime). */
127
+ export interface HonuaMapPackageLabelBinding {
128
+ sourceId: string;
129
+ fieldName: string;
130
+ placement?: "point" | "line" | "polygon";
131
+ }
132
+ /**
133
+ * v1 MapPackage shape — mirrors the draft server type in
134
+ * `/home/makani/honua-server/src/Honua.Core/Features/Geoprocessing/Domain/MapPackage.cs`.
135
+ * Unknown fields are preserved through `updatePackage` round-trip so
136
+ * minor additive changes do not break runtime consumers.
137
+ */
138
+ export interface HonuaMapPackage {
139
+ mapPackageId: string;
140
+ format: HonuaMapPackageFormat;
141
+ status?: HonuaMapPackageStatus;
142
+ createdAt?: string;
143
+ updatedAt?: string;
144
+ /** Optional server retention / hosting expiry timestamp. */
145
+ expiresAt?: string;
146
+ templateId?: string;
147
+ themeId?: string;
148
+ /** Optional inline theme body. Overrides out-of-band theme lookup. */
149
+ theme?: HonuaMapPackageThemeSpec;
150
+ previewArtifactId?: string;
151
+ sourceBindings: readonly HonuaMapPackageSourceBinding[];
152
+ styleRefs?: readonly HonuaMapPackageStyleRef[];
153
+ /**
154
+ * MapLibre-compatible style document. The runtime composes style-ref
155
+ * overrides and theme tokens into this body before handing it to
156
+ * `maplibre-gl.Map.setStyle`.
157
+ */
158
+ mapSpec: HonuaStyleSpecification;
159
+ initialView?: HonuaMapPackageInitialView;
160
+ legend?: readonly HonuaMapPackageLegendEntry[];
161
+ popupBindings?: readonly HonuaMapPackagePopupBinding[];
162
+ labelBindings?: readonly HonuaMapPackageLabelBinding[];
163
+ boundArtifacts?: readonly string[];
164
+ /** Preserve additive fields through round-trip without forcing a type bump. */
165
+ [extra: string]: unknown;
166
+ }
167
+ //# sourceMappingURL=map-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAC;AAE3E,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,aAAa,GACb,aAAa,GACb,oBAAoB,CAAC;AAEzB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6CAA6C;AAC7C,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,cAAc,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACxD,SAAS,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAE/C;;;;OAIG;IACH,OAAO,EAAE,uBAAuB,CAAC;IAEjC,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,+EAA+E;IAC/E,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Typed mirror of the server-produced `MapPackage` (honua-server #731). The
3
+ * package shape is `honua_map_package.v1` — the format string is the
4
+ * canonical version gate and the runtime loader refuses other values.
5
+ *
6
+ * Field names mirror the server's camelCase JSON; see
7
+ * `/honua-server/docs/developer/AI_OPERATOR_CONTRACT.md#MapPackage` for the
8
+ * authoritative definition. The runtime preserves unknown fields on the
9
+ * package through `updatePackage` so minor additive changes do not break
10
+ * callers.
11
+ *
12
+ * @module
13
+ */
14
+ /** Canonical format string for the v1 MapPackage shape. */
15
+ export const HONUA_MAP_PACKAGE_FORMAT_V1 = "honua_map_package.v1";
@@ -0,0 +1,110 @@
1
+ /**
2
+ * OGC API – Styles client + StyleRef resolver.
3
+ *
4
+ * Consumes the server's OGC API – Styles surface (honua-server, ADR-0048) so
5
+ * that `styleRefs.styleId` aligns with the server's canonical styleId instead
6
+ * of relying on an ad-hoc, caller-supplied callback:
7
+ *
8
+ * GET /ogc/styles -> { styles: [{ id, title, links }], default? }
9
+ * GET /ogc/styles/{styleId} -> MapLibre style document
10
+ * (Accept: application/vnd.mapbox.style+json — content negotiated)
11
+ * GET /ogc/styles/{styleId}/metadata -> style metadata document
12
+ *
13
+ * The {@link createOgcStyleRefResolver} factory adapts the full MapLibre style
14
+ * document returned by `/ogc/styles/{styleId}` into the per-layer
15
+ * {@link HonuaStyleRefBody} override map consumed by `applyStyleRefs`. This is
16
+ * wired as the default StyleRef resolution path in the runtime loader, while a
17
+ * caller-supplied callback remains supported as a back-compat override.
18
+ *
19
+ * @module
20
+ */
21
+ import type { HonuaClient } from "../core/client.js";
22
+ import type { HonuaStyleSpecification } from "../style/specification.js";
23
+ import type { HonuaStyleRefBody } from "./map-package.js";
24
+ import type { StyleRefResolver } from "./style-compose.js";
25
+ /** Default path prefix for the server's OGC API – Styles surface. */
26
+ export declare const DEFAULT_OGC_STYLES_PATH_PREFIX = "/ogc/styles";
27
+ /**
28
+ * MapLibre style media type used to content-negotiate the encoded style
29
+ * document from `/ogc/styles/{styleId}`. Matches the server default.
30
+ */
31
+ export declare const MAPLIBRE_STYLE_MEDIA_TYPE = "application/vnd.mapbox.style+json";
32
+ /** A link entry on a styles list / style metadata document. */
33
+ export interface OgcStyleLink {
34
+ readonly rel: string;
35
+ readonly type?: string;
36
+ readonly href: string;
37
+ readonly title?: string;
38
+ }
39
+ /** One entry in the `/ogc/styles` style list. */
40
+ export interface OgcStyleListEntry {
41
+ readonly id: string;
42
+ readonly title?: string;
43
+ readonly links?: readonly OgcStyleLink[];
44
+ }
45
+ /** Response body of `GET /ogc/styles`. */
46
+ export interface OgcStyleList {
47
+ readonly styles: readonly OgcStyleListEntry[];
48
+ /** Server-designated default styleId, when present. */
49
+ readonly default?: string;
50
+ }
51
+ /** Options shared by the OGC styles client calls. */
52
+ export interface OgcStylesRequestOptions {
53
+ readonly signal?: AbortSignal;
54
+ readonly headers?: HeadersInit;
55
+ }
56
+ /** Options for constructing an OGC styles client. */
57
+ export interface OgcStylesClientOptions {
58
+ readonly client: HonuaClient;
59
+ /**
60
+ * Override the OGC styles path prefix. Defaults to
61
+ * {@link DEFAULT_OGC_STYLES_PATH_PREFIX} (`/ogc/styles`).
62
+ */
63
+ readonly pathPrefix?: string;
64
+ }
65
+ /**
66
+ * Thin client over the server's OGC API – Styles surface. Uses the shared
67
+ * {@link HonuaClient} request pipeline (auth / retry / interceptors), matching
68
+ * the other `/ogc/*` consumers in the SDK.
69
+ */
70
+ export declare class OgcStylesClient {
71
+ private readonly client;
72
+ private readonly pathPrefix;
73
+ constructor(options: OgcStylesClientOptions);
74
+ /** List available styles via `GET /ogc/styles`. */
75
+ listStyles(options?: OgcStylesRequestOptions): Promise<OgcStyleList>;
76
+ /**
77
+ * Fetch the MapLibre style document for `styleId` via
78
+ * `GET /ogc/styles/{styleId}` (content-negotiated to
79
+ * {@link MAPLIBRE_STYLE_MEDIA_TYPE}).
80
+ */
81
+ getStyle(styleId: string, options?: OgcStylesRequestOptions): Promise<HonuaStyleSpecification>;
82
+ /** Fetch the style metadata document via `GET /ogc/styles/{styleId}/metadata`. */
83
+ getStyleMetadata(styleId: string, options?: OgcStylesRequestOptions): Promise<Record<string, unknown>>;
84
+ /** Resolve the request path for a single style. */
85
+ stylePath(styleId: string): string;
86
+ private getJson;
87
+ }
88
+ /** Options for {@link createOgcStyleRefResolver}. */
89
+ export interface OgcStyleRefResolverOptions extends OgcStylesClientOptions, OgcStylesRequestOptions {
90
+ }
91
+ /**
92
+ * Build a {@link StyleRefResolver} backed by the server's `/ogc/styles`
93
+ * surface. The resolver fetches `GET /ogc/styles/{styleId}` (content-negotiated
94
+ * MapLibre) and projects the returned style document's layers into the
95
+ * per-layer {@link HonuaStyleRefBody} override map that `applyStyleRefs`
96
+ * consumes. Layer overrides are keyed by MapLibre layer id; only
97
+ * paint/layout/zoom/filter/metadata are carried over (structural fields such
98
+ * as `source` are intentionally dropped — a StyleRef refines existing layers).
99
+ *
100
+ * The `presetId` argument is currently advisory and not encoded into the
101
+ * request path; the server resolves presets server-side by styleId.
102
+ */
103
+ export declare function createOgcStyleRefResolver(options: OgcStyleRefResolverOptions): StyleRefResolver;
104
+ /**
105
+ * Project a MapLibre style document into a {@link HonuaStyleRefBody} — a map of
106
+ * per-layer paint/layout overrides keyed by layer id. Layers without any
107
+ * override-relevant fields are omitted.
108
+ */
109
+ export declare function styleDocumentToRefBody(style: HonuaStyleSpecification): HonuaStyleRefBody;
110
+ //# sourceMappingURL=ogc-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogc-styles.d.ts","sourceRoot":"","sources":["../../../src/runtime/ogc-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAElG,OAAO,KAAK,EAAE,iBAAiB,EAA8B,MAAM,kBAAkB,CAAC;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qEAAqE;AACrE,eAAO,MAAM,8BAA8B,gBAAgB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,sCAAsC,CAAC;AAE7E,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC1C;AAED,0CAA0C;AAC1C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qDAAqD;AACrD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,sBAAsB;IAK3C,mDAAmD;IACtC,UAAU,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,YAAY,CAAC;IAKrF;;;;OAIG;IACU,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY/G,kFAAkF;IACrE,gBAAgB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnC,mDAAmD;IAC5C,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;YAI3B,OAAO;CActB;AAED,qDAAqD;AACrD,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB,EAAE,uBAAuB;CAAG;AAEtG;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,gBAAgB,CAa/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,uBAAuB,GAAG,iBAAiB,CAQxF"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * OGC API – Styles client + StyleRef resolver.
3
+ *
4
+ * Consumes the server's OGC API – Styles surface (honua-server, ADR-0048) so
5
+ * that `styleRefs.styleId` aligns with the server's canonical styleId instead
6
+ * of relying on an ad-hoc, caller-supplied callback:
7
+ *
8
+ * GET /ogc/styles -> { styles: [{ id, title, links }], default? }
9
+ * GET /ogc/styles/{styleId} -> MapLibre style document
10
+ * (Accept: application/vnd.mapbox.style+json — content negotiated)
11
+ * GET /ogc/styles/{styleId}/metadata -> style metadata document
12
+ *
13
+ * The {@link createOgcStyleRefResolver} factory adapts the full MapLibre style
14
+ * document returned by `/ogc/styles/{styleId}` into the per-layer
15
+ * {@link HonuaStyleRefBody} override map consumed by `applyStyleRefs`. This is
16
+ * wired as the default StyleRef resolution path in the runtime loader, while a
17
+ * caller-supplied callback remains supported as a back-compat override.
18
+ *
19
+ * @module
20
+ */
21
+ import { trimTrailingSlashes } from "../core/path-utils.js";
22
+ import { HonuaMapPackageError } from "./errors.js";
23
+ /** Default path prefix for the server's OGC API – Styles surface. */
24
+ export const DEFAULT_OGC_STYLES_PATH_PREFIX = "/ogc/styles";
25
+ /**
26
+ * MapLibre style media type used to content-negotiate the encoded style
27
+ * document from `/ogc/styles/{styleId}`. Matches the server default.
28
+ */
29
+ export const MAPLIBRE_STYLE_MEDIA_TYPE = "application/vnd.mapbox.style+json";
30
+ /**
31
+ * Thin client over the server's OGC API – Styles surface. Uses the shared
32
+ * {@link HonuaClient} request pipeline (auth / retry / interceptors), matching
33
+ * the other `/ogc/*` consumers in the SDK.
34
+ */
35
+ export class OgcStylesClient {
36
+ client;
37
+ pathPrefix;
38
+ constructor(options) {
39
+ this.client = options.client;
40
+ this.pathPrefix = normalizePrefix(options.pathPrefix ?? DEFAULT_OGC_STYLES_PATH_PREFIX);
41
+ }
42
+ /** List available styles via `GET /ogc/styles`. */
43
+ async listStyles(options = {}) {
44
+ const body = await this.getJson(this.pathPrefix, "application/json", options);
45
+ return normalizeStyleList(body);
46
+ }
47
+ /**
48
+ * Fetch the MapLibre style document for `styleId` via
49
+ * `GET /ogc/styles/{styleId}` (content-negotiated to
50
+ * {@link MAPLIBRE_STYLE_MEDIA_TYPE}).
51
+ */
52
+ async getStyle(styleId, options = {}) {
53
+ const path = this.stylePath(styleId);
54
+ const body = await this.getJson(path, `${MAPLIBRE_STYLE_MEDIA_TYPE}, application/json;q=0.9`, options);
55
+ if (!isRecord(body) || !Array.isArray(body.layers)) {
56
+ throw new HonuaMapPackageError(`OGC style "${styleId}" did not return a MapLibre style document`, {
57
+ stage: "style-compose",
58
+ detail: { styleId, path },
59
+ });
60
+ }
61
+ return body;
62
+ }
63
+ /** Fetch the style metadata document via `GET /ogc/styles/{styleId}/metadata`. */
64
+ async getStyleMetadata(styleId, options = {}) {
65
+ const path = `${this.stylePath(styleId)}/metadata`;
66
+ const body = await this.getJson(path, "application/json", options);
67
+ if (!isRecord(body)) {
68
+ throw new HonuaMapPackageError(`OGC style metadata for "${styleId}" was not an object`, {
69
+ stage: "style-compose",
70
+ detail: { styleId, path },
71
+ });
72
+ }
73
+ return body;
74
+ }
75
+ /** Resolve the request path for a single style. */
76
+ stylePath(styleId) {
77
+ return `${this.pathPrefix}/${encodeURIComponent(styleId)}`;
78
+ }
79
+ async getJson(path, accept, options) {
80
+ const headers = new Headers(options.headers);
81
+ if (!headers.has("Accept"))
82
+ headers.set("Accept", accept);
83
+ const response = await this.client.pipelineFetch("GET", path, { headers }, options.signal);
84
+ try {
85
+ return await response.json();
86
+ }
87
+ catch (cause) {
88
+ throw new HonuaMapPackageError(`OGC styles response from "${path}" was not valid JSON`, {
89
+ stage: "style-compose",
90
+ detail: { path },
91
+ cause,
92
+ });
93
+ }
94
+ }
95
+ }
96
+ /**
97
+ * Build a {@link StyleRefResolver} backed by the server's `/ogc/styles`
98
+ * surface. The resolver fetches `GET /ogc/styles/{styleId}` (content-negotiated
99
+ * MapLibre) and projects the returned style document's layers into the
100
+ * per-layer {@link HonuaStyleRefBody} override map that `applyStyleRefs`
101
+ * consumes. Layer overrides are keyed by MapLibre layer id; only
102
+ * paint/layout/zoom/filter/metadata are carried over (structural fields such
103
+ * as `source` are intentionally dropped — a StyleRef refines existing layers).
104
+ *
105
+ * The `presetId` argument is currently advisory and not encoded into the
106
+ * request path; the server resolves presets server-side by styleId.
107
+ */
108
+ export function createOgcStyleRefResolver(options) {
109
+ const ogc = new OgcStylesClient({
110
+ client: options.client,
111
+ ...(options.pathPrefix ? { pathPrefix: options.pathPrefix } : {}),
112
+ });
113
+ const requestOptions = {
114
+ ...(options.signal ? { signal: options.signal } : {}),
115
+ ...(options.headers ? { headers: options.headers } : {}),
116
+ };
117
+ return async (styleId) => {
118
+ const style = await ogc.getStyle(styleId, requestOptions);
119
+ return styleDocumentToRefBody(style);
120
+ };
121
+ }
122
+ /**
123
+ * Project a MapLibre style document into a {@link HonuaStyleRefBody} — a map of
124
+ * per-layer paint/layout overrides keyed by layer id. Layers without any
125
+ * override-relevant fields are omitted.
126
+ */
127
+ export function styleDocumentToRefBody(style) {
128
+ const body = {};
129
+ for (const layer of style.layers ?? []) {
130
+ if (!layer || typeof layer.id !== "string")
131
+ continue;
132
+ const override = layerToOverride(layer);
133
+ if (override)
134
+ body[layer.id] = override;
135
+ }
136
+ return body;
137
+ }
138
+ function layerToOverride(layer) {
139
+ const override = {};
140
+ let hasField = false;
141
+ if (layer.paint !== undefined) {
142
+ override.paint = layer.paint;
143
+ hasField = true;
144
+ }
145
+ if (layer.layout !== undefined) {
146
+ override.layout = layer.layout;
147
+ hasField = true;
148
+ }
149
+ if (layer.minzoom !== undefined) {
150
+ override.minzoom = layer.minzoom;
151
+ hasField = true;
152
+ }
153
+ if (layer.maxzoom !== undefined) {
154
+ override.maxzoom = layer.maxzoom;
155
+ hasField = true;
156
+ }
157
+ if (layer.filter !== undefined) {
158
+ override.filter = layer.filter;
159
+ hasField = true;
160
+ }
161
+ if (layer.metadata !== undefined) {
162
+ override.metadata = layer.metadata;
163
+ hasField = true;
164
+ }
165
+ return hasField ? override : undefined;
166
+ }
167
+ function normalizeStyleList(body) {
168
+ if (!isRecord(body) || !Array.isArray(body.styles)) {
169
+ throw new HonuaMapPackageError("OGC styles list did not contain a styles array", {
170
+ stage: "style-compose",
171
+ detail: { body },
172
+ });
173
+ }
174
+ const styles = [];
175
+ for (const entry of body.styles) {
176
+ if (!isRecord(entry) || typeof entry.id !== "string")
177
+ continue;
178
+ styles.push({
179
+ id: entry.id,
180
+ ...(typeof entry.title === "string" ? { title: entry.title } : {}),
181
+ ...(Array.isArray(entry.links) ? { links: entry.links } : {}),
182
+ });
183
+ }
184
+ return {
185
+ styles,
186
+ ...(typeof body.default === "string" ? { default: body.default } : {}),
187
+ };
188
+ }
189
+ function normalizePrefix(prefix) {
190
+ const trimmed = trimTrailingSlashes(prefix);
191
+ return trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
192
+ }
193
+ function isRecord(value) {
194
+ return typeof value === "object" && value !== null && !Array.isArray(value);
195
+ }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Popup bindings. The runtime wires `MapPackage.popupBindings[]` into
3
+ * MapLibre `click` handlers using a duck-typed map interface (no runtime
4
+ * dependency on `maplibre-gl`). The default DOM renderer is intentionally
5
+ * unstyled — `#29` operator components replace it with richer popup UIs.
6
+ *
7
+ * @module
8
+ */
9
+ import type { MapEventTarget } from "../interactions/feature-state.js";
10
+ import type { HonuaMapPackagePopupBinding } from "./map-package.js";
11
+ /**
12
+ * Minimal subset of `maplibre-gl.Popup` needed to open a popup at
13
+ * click coordinates. Any object implementing these methods works.
14
+ */
15
+ export interface PopupHandle {
16
+ setLngLat(coord: [number, number]): this;
17
+ setDOMContent(node: Node): this;
18
+ setHTML(html: string): this;
19
+ addTo(map: unknown): this;
20
+ remove(): void;
21
+ }
22
+ /** Factory a host supplies so the runtime never imports `maplibre-gl` directly. */
23
+ export type PopupFactory = () => PopupHandle;
24
+ /** Custom popup renderer that receives the click event features. */
25
+ export type PopupRenderer = (context: PopupRenderContext) => Node | string | undefined;
26
+ export interface PopupRenderContext {
27
+ binding: HonuaMapPackagePopupBinding;
28
+ features: ReadonlyArray<PopupFeature>;
29
+ lngLat: [number, number];
30
+ }
31
+ export interface PopupFeature {
32
+ id?: string | number;
33
+ properties?: Record<string, unknown>;
34
+ geometry?: unknown;
35
+ }
36
+ export interface BindPopupOptions {
37
+ binding: HonuaMapPackagePopupBinding;
38
+ /** MapLibre layer id to listen to for clicks. */
39
+ layerId: string;
40
+ /** Create a new popup handle (usually `new maplibregl.Popup()`). */
41
+ popupFactory: PopupFactory;
42
+ /** Custom renderer; defaults to unstyled key/value list. */
43
+ render?: PopupRenderer;
44
+ }
45
+ /** Handle returned by {@link bindPopup} — call `remove()` on teardown. */
46
+ export interface PopupBindingHandle {
47
+ remove(): void;
48
+ readonly layerId: string;
49
+ }
50
+ /**
51
+ * Subscribe to `click` events on `layerId` and render a popup at the
52
+ * click point. Assumes the host passes a map that matches `MapEventTarget`
53
+ * (all MapLibre `Map` instances do).
54
+ */
55
+ export declare function bindPopup(map: MapEventTarget & {}, options: BindPopupOptions): PopupBindingHandle;
56
+ /**
57
+ * Default renderer: an unstyled `<dl>` list of `binding.fieldName` (when
58
+ * set) or all properties on the first feature. Use a custom renderer for
59
+ * anything production-quality.
60
+ */
61
+ export declare function defaultPopupRenderer(context: PopupRenderContext): Node | undefined;
62
+ //# sourceMappingURL=popups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popups.d.ts","sourceRoot":"","sources":["../../../src/runtime/popups.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC;AAE7C,oEAAoE;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,2BAA2B,CAAC;IACrC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,2BAA2B,CAAC;IACrC,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,YAAY,EAAE,YAAY,CAAC;IAC3B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,IAAI,CAAC;IACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,cAAc,GAAG,EAErB,EACD,OAAO,EAAE,gBAAgB,GACxB,kBAAkB,CAkCpB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAoClF"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Popup bindings. The runtime wires `MapPackage.popupBindings[]` into
3
+ * MapLibre `click` handlers using a duck-typed map interface (no runtime
4
+ * dependency on `maplibre-gl`). The default DOM renderer is intentionally
5
+ * unstyled — `#29` operator components replace it with richer popup UIs.
6
+ *
7
+ * @module
8
+ */
9
+ /**
10
+ * Subscribe to `click` events on `layerId` and render a popup at the
11
+ * click point. Assumes the host passes a map that matches `MapEventTarget`
12
+ * (all MapLibre `Map` instances do).
13
+ */
14
+ export function bindPopup(map, options) {
15
+ const { binding, layerId, popupFactory, render = defaultPopupRenderer } = options;
16
+ let current;
17
+ function onClick(...args) {
18
+ const event = args[0];
19
+ if (!event?.lngLat || !event.features || event.features.length === 0)
20
+ return;
21
+ const lngLat = [event.lngLat.lng, event.lngLat.lat];
22
+ const rendered = render({ binding, features: event.features, lngLat });
23
+ if (!rendered)
24
+ return;
25
+ current?.remove();
26
+ current = popupFactory().setLngLat(lngLat);
27
+ if (typeof rendered === "string")
28
+ current.setHTML(rendered);
29
+ else
30
+ current.setDOMContent(rendered);
31
+ current.addTo(map);
32
+ }
33
+ map.on("click", layerId, onClick);
34
+ return {
35
+ layerId,
36
+ remove() {
37
+ current?.remove();
38
+ current = undefined;
39
+ map.off("click", layerId, onClick);
40
+ },
41
+ };
42
+ }
43
+ /**
44
+ * Default renderer: an unstyled `<dl>` list of `binding.fieldName` (when
45
+ * set) or all properties on the first feature. Use a custom renderer for
46
+ * anything production-quality.
47
+ */
48
+ export function defaultPopupRenderer(context) {
49
+ const doc = resolveDocument();
50
+ if (!doc)
51
+ return undefined;
52
+ const root = doc.createElement("div");
53
+ if (context.binding.title) {
54
+ const title = doc.createElement("h3");
55
+ title.textContent = context.binding.title;
56
+ root.appendChild(title);
57
+ }
58
+ const feature = context.features[0];
59
+ if (!feature || !feature.properties)
60
+ return root;
61
+ if (context.binding.template) {
62
+ const body = doc.createElement("div");
63
+ body.textContent = renderStringTemplate(context.binding.template, feature.properties);
64
+ root.appendChild(body);
65
+ return root;
66
+ }
67
+ const fields = context.binding.fieldName
68
+ ? [context.binding.fieldName].filter((f) => Object.hasOwn(feature.properties ?? {}, f))
69
+ : Object.keys(feature.properties);
70
+ const dl = doc.createElement("dl");
71
+ for (const field of fields) {
72
+ const dt = doc.createElement("dt");
73
+ dt.textContent = field;
74
+ const dd = doc.createElement("dd");
75
+ dd.textContent = String(feature.properties[field]);
76
+ dl.appendChild(dt);
77
+ dl.appendChild(dd);
78
+ }
79
+ root.appendChild(dl);
80
+ return root;
81
+ }
82
+ function renderStringTemplate(template, properties) {
83
+ // [^{}] (not [^}]) keeps candidate matches non-overlapping so the scan stays
84
+ // linear on adversarial input like "{{{{…" (CodeQL js/polynomial-redos), and
85
+ // stops a stray "{" from being swallowed into the preceding placeholder key.
86
+ return template.replace(/\{([^{}]+)\}/g, (_, key) => {
87
+ const value = properties[key];
88
+ return value === undefined || value === null ? "" : String(value);
89
+ });
90
+ }
91
+ function resolveDocument() {
92
+ if (typeof document !== "undefined")
93
+ return document;
94
+ return undefined;
95
+ }