@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,379 @@
1
+ /**
2
+ * `<honua-basemap-switcher>` — framework-free custom element that switches a
3
+ * MapLibre map between exclusive basemap definitions (issue #274).
4
+ *
5
+ * The element renders an accessible radio group (one radio per base) inside
6
+ * shadow DOM with structural-only CSS and `::part()` hooks, and delegates all
7
+ * style mutations to {@link HonuaBasemapStyleBinding}. It never imports
8
+ * `maplibre-gl` or the SDK core, so the `@honua/sdk-js/controls` entry stays
9
+ * independent of the core bundle.
10
+ *
11
+ * ## Wiring
12
+ * - `element.map = map` (any MapLibre `Map`) or `element.connect(map)`;
13
+ * - declaratively via `for="<honua-map id>"` — the element resolves the map
14
+ * from a sibling element exposing a `.map` property (e.g. `<honua-map>`)
15
+ * and also listens for the `honua-map-ready` event, matching the idiom of
16
+ * the `web-components` entry.
17
+ *
18
+ * ## Attributes
19
+ * - `bases` — JSON array of {@link HonuaBasemapDefinition} (property `bases`
20
+ * is preferred for non-trivial configs).
21
+ * - `value` — id of the base to activate; reflected on selection changes.
22
+ * - `for` — id of the map-providing element, see Wiring.
23
+ * - `label` — accessible name of the radio group (default "Basemaps").
24
+ *
25
+ * ## Events
26
+ * - `change` — `CustomEvent<HonuaBasemapSwitcherChangeDetail>` (bubbles,
27
+ * composed) whenever the active base changes: user interaction,
28
+ * programmatic `value` assignment, or the initial/default activation.
29
+ *
30
+ * ## CSS parts
31
+ * - `group` — the radio-group container (button-group layout).
32
+ * - `radio` — each base button.
33
+ * - `radio-active` — additionally present on the active base's button.
34
+ *
35
+ * ## Accessibility
36
+ * Radio-group semantics (`role="radiogroup"` / `role="radio"`,
37
+ * `aria-checked`) with roving tabindex; ArrowLeft/ArrowUp and
38
+ * ArrowRight/ArrowDown move and select, Home/End jump to the first/last
39
+ * base, Space/Enter select the focused base.
40
+ */
41
+ import { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
42
+ import { HTMLElementBase, escapeAttribute, escapeHtml, globalDom, listenForHonuaMapReady, resolveHonuaMapFromContext, } from "./element-utils.js";
43
+ import { HonuaLegendElement } from "./legend.js";
44
+ import { HonuaSwipeControlElement } from "./swipe-control.js";
45
+ /**
46
+ * Custom element implementing the exclusive basemap switcher. Registered as
47
+ * `honua-basemap-switcher` by {@link defineHonuaControls} (which runs
48
+ * automatically on import when a `customElements` registry exists).
49
+ */
50
+ export class HonuaBasemapSwitcherElement extends HTMLElementBase {
51
+ static get observedAttributes() {
52
+ return ["bases", "value", "for", "label"];
53
+ }
54
+ #binding = new HonuaBasemapStyleBinding();
55
+ #requestedValue;
56
+ #disposeMapReadyListener;
57
+ #rendered = false;
58
+ /**
59
+ * The MapLibre map driven by this control. Assigning a map applies the
60
+ * current selection to it; assigning `undefined` detaches and removes every
61
+ * layer/source the control added.
62
+ */
63
+ get map() {
64
+ return this.#binding.map;
65
+ }
66
+ set map(map) {
67
+ this.#binding.setMap(map);
68
+ if (map)
69
+ this.#ensureActive();
70
+ }
71
+ /** Wires the control to a MapLibre map. Equivalent to setting `.map`. */
72
+ connect(map) {
73
+ this.map = map;
74
+ }
75
+ /** The registered base definitions. */
76
+ get bases() {
77
+ return this.#binding.bases;
78
+ }
79
+ set bases(bases) {
80
+ const previousActive = this.#binding.activeId;
81
+ this.#binding.setBases(bases);
82
+ this.#rendered = false;
83
+ this.render();
84
+ if (previousActive !== undefined && this.#binding.activeId === undefined) {
85
+ // The previously active base was removed; fall back to a valid base.
86
+ this.#ensureActive(previousActive);
87
+ }
88
+ else {
89
+ this.#ensureActive();
90
+ }
91
+ }
92
+ /**
93
+ * Id of the active base. Assigning a registered base id activates it (and
94
+ * dispatches `change` when the selection actually changes); assignments
95
+ * are remembered and honored once matching bases arrive.
96
+ */
97
+ get value() {
98
+ return this.#binding.activeId ?? this.#requestedValue;
99
+ }
100
+ set value(value) {
101
+ if (value === undefined)
102
+ return;
103
+ this.select(value);
104
+ }
105
+ /**
106
+ * Activates the base with the given id. Returns `true` when the id matched
107
+ * a registered base. Dispatches `change` when the active base changed.
108
+ */
109
+ select(baseId) {
110
+ const previous = this.#binding.activeId;
111
+ if (previous === baseId) {
112
+ this.#requestedValue = undefined;
113
+ return true;
114
+ }
115
+ const base = this.bases.find((candidate) => candidate.id === baseId);
116
+ if (!base || !this.#binding.activate(baseId)) {
117
+ this.#requestedValue = baseId;
118
+ return false;
119
+ }
120
+ this.#requestedValue = undefined;
121
+ this.#reflectValue(baseId);
122
+ this.#updateSelectionDom();
123
+ this.#dispatchChange({
124
+ value: baseId,
125
+ ...(previous !== undefined ? { previousValue: previous } : {}),
126
+ kind: base.kind,
127
+ });
128
+ return true;
129
+ }
130
+ attributeChangedCallback(name, _oldValue, newValue) {
131
+ if (name === "bases") {
132
+ const parsed = parseBases(newValue);
133
+ if (parsed)
134
+ this.bases = parsed;
135
+ return;
136
+ }
137
+ if (name === "value") {
138
+ if (newValue !== null && newValue !== this.#binding.activeId)
139
+ this.select(newValue);
140
+ return;
141
+ }
142
+ if (name === "for") {
143
+ this.#resolveMapFromContext();
144
+ return;
145
+ }
146
+ if (name === "label") {
147
+ this.#rendered = false;
148
+ this.render();
149
+ }
150
+ }
151
+ connectedCallback() {
152
+ this.#ensureShadowRoot();
153
+ this.#listenForMapReady();
154
+ this.#resolveMapFromContext();
155
+ this.render();
156
+ this.#ensureActive();
157
+ }
158
+ disconnectedCallback() {
159
+ this.#disposeMapReadyListener?.();
160
+ this.#disposeMapReadyListener = undefined;
161
+ }
162
+ /**
163
+ * Applies the pending `value` (attribute or property assignment made before
164
+ * bases were registered), falling back to the first base so the map is
165
+ * never left without an active base once wiring completes.
166
+ */
167
+ #ensureActive(removedActiveId) {
168
+ if (this.#binding.activeId !== undefined || this.bases.length === 0)
169
+ return;
170
+ const requested = this.#requestedValue ?? (typeof this.getAttribute === "function" ? this.getAttribute("value") : null);
171
+ if (requested !== null && requested !== undefined && requested !== removedActiveId && this.select(requested))
172
+ return;
173
+ const first = this.bases[0];
174
+ if (first)
175
+ this.select(first.id);
176
+ }
177
+ // ── map wiring (matches the web-components `for` + ready-event idiom) ──
178
+ #listenForMapReady() {
179
+ if (this.#disposeMapReadyListener)
180
+ return;
181
+ this.#disposeMapReadyListener = listenForHonuaMapReady(this, (map) => {
182
+ const forId = typeof this.getAttribute === "function" ? this.getAttribute("for") : null;
183
+ if (!forId && this.map)
184
+ return;
185
+ this.map = map;
186
+ });
187
+ }
188
+ #resolveMapFromContext() {
189
+ if (this.map)
190
+ return;
191
+ const map = resolveHonuaMapFromContext(this);
192
+ if (map)
193
+ this.map = map;
194
+ }
195
+ // ── rendering ──────────────────────────────────────────────
196
+ #ensureShadowRoot() {
197
+ if (!this.shadowRoot && typeof this.attachShadow === "function") {
198
+ this.attachShadow({ mode: "open" });
199
+ }
200
+ }
201
+ render() {
202
+ const root = this.shadowRoot;
203
+ if (!root)
204
+ return;
205
+ if (this.#rendered) {
206
+ this.#updateSelectionDom();
207
+ return;
208
+ }
209
+ const label = (typeof this.getAttribute === "function" ? this.getAttribute("label") : null) ?? "Basemaps";
210
+ root.innerHTML = `
211
+ <style>${structuralStyles()}</style>
212
+ <div part="group" class="group" role="radiogroup" aria-label="${escapeAttribute(label)}">
213
+ ${this.bases
214
+ .map((base) => `
215
+ <button
216
+ type="button"
217
+ part="radio"
218
+ class="radio"
219
+ role="radio"
220
+ aria-checked="false"
221
+ tabindex="-1"
222
+ data-base-id="${escapeAttribute(base.id)}"
223
+ data-kind="${escapeAttribute(base.kind)}"
224
+ >${escapeHtml(base.label)}</button>
225
+ `)
226
+ .join("")}
227
+ </div>
228
+ `;
229
+ this.#rendered = true;
230
+ this.#bindGroup(root);
231
+ this.#updateSelectionDom();
232
+ }
233
+ #bindGroup(root) {
234
+ root.querySelectorAll("button[data-base-id]").forEach((button) => {
235
+ button.addEventListener("click", () => {
236
+ const baseId = button.dataset.baseId;
237
+ if (baseId)
238
+ this.select(baseId);
239
+ });
240
+ });
241
+ root.querySelector(".group")?.addEventListener("keydown", (event) => {
242
+ this.#onGroupKeydown(event);
243
+ });
244
+ }
245
+ #onGroupKeydown(event) {
246
+ const radios = this.#radios();
247
+ if (radios.length === 0)
248
+ return;
249
+ const activeIndex = Math.max(0, radios.findIndex((radio) => radio.dataset.baseId === this.#binding.activeId));
250
+ let nextIndex;
251
+ switch (event.key) {
252
+ case "ArrowRight":
253
+ case "ArrowDown":
254
+ nextIndex = (activeIndex + 1) % radios.length;
255
+ break;
256
+ case "ArrowLeft":
257
+ case "ArrowUp":
258
+ nextIndex = (activeIndex - 1 + radios.length) % radios.length;
259
+ break;
260
+ case "Home":
261
+ nextIndex = 0;
262
+ break;
263
+ case "End":
264
+ nextIndex = radios.length - 1;
265
+ break;
266
+ default:
267
+ return;
268
+ }
269
+ event.preventDefault();
270
+ const next = radios[nextIndex];
271
+ const baseId = next?.dataset.baseId;
272
+ if (!baseId)
273
+ return;
274
+ this.select(baseId);
275
+ next.focus();
276
+ }
277
+ /** Roving tabindex + checked state, updated in place to preserve focus. */
278
+ #updateSelectionDom() {
279
+ const radios = this.#radios();
280
+ if (radios.length === 0)
281
+ return;
282
+ const activeId = this.#binding.activeId;
283
+ const fallbackTabStop = radios.some((radio) => radio.dataset.baseId === activeId) ? undefined : radios[0];
284
+ for (const radio of radios) {
285
+ const isActive = radio.dataset.baseId === activeId;
286
+ radio.setAttribute("aria-checked", String(isActive));
287
+ radio.setAttribute("part", isActive ? "radio radio-active" : "radio");
288
+ radio.tabIndex = isActive || radio === fallbackTabStop ? 0 : -1;
289
+ }
290
+ }
291
+ #radios() {
292
+ const root = this.shadowRoot;
293
+ if (!root || typeof root.querySelectorAll !== "function")
294
+ return [];
295
+ return [...root.querySelectorAll("button[data-base-id]")];
296
+ }
297
+ #reflectValue(baseId) {
298
+ if (typeof this.setAttribute !== "function" || typeof this.getAttribute !== "function")
299
+ return;
300
+ if (this.getAttribute("value") !== baseId)
301
+ this.setAttribute("value", baseId);
302
+ }
303
+ #dispatchChange(detail) {
304
+ if (!globalDom.CustomEvent || typeof this.dispatchEvent !== "function")
305
+ return;
306
+ this.dispatchEvent(new globalDom.CustomEvent("change", { bubbles: true, composed: true, detail }));
307
+ }
308
+ }
309
+ /**
310
+ * Registers the controls-entry custom elements (`honua-basemap-switcher`,
311
+ * `honua-legend`, `honua-swipe-control`). Invoked automatically on import when
312
+ * a global `customElements` registry is present; call explicitly when using a
313
+ * scoped registry.
314
+ *
315
+ * Registrations are skipped for tag names that are already defined. In
316
+ * particular the `web-components` entry registers its own (controller-driven)
317
+ * `honua-legend`; whichever entry is imported first owns that tag.
318
+ *
319
+ * `honua-layer-list` is intentionally NOT registered here — it collides with
320
+ * the `web-components` kit's own controller-driven `honua-layer-list`, so it is
321
+ * opt-in via {@link defineHonuaLayerList}.
322
+ */
323
+ export function defineHonuaControls(registry = globalDom.customElements) {
324
+ if (!registry)
325
+ return;
326
+ if (!registry.get("honua-basemap-switcher")) {
327
+ registry.define("honua-basemap-switcher", HonuaBasemapSwitcherElement);
328
+ }
329
+ if (!registry.get("honua-legend")) {
330
+ registry.define("honua-legend", HonuaLegendElement);
331
+ }
332
+ if (!registry.get("honua-swipe-control")) {
333
+ registry.define("honua-swipe-control", HonuaSwipeControlElement);
334
+ }
335
+ }
336
+ if (globalDom.customElements) {
337
+ defineHonuaControls(globalDom.customElements);
338
+ }
339
+ function parseBases(value) {
340
+ if (!value)
341
+ return undefined;
342
+ try {
343
+ const parsed = JSON.parse(value);
344
+ if (!Array.isArray(parsed))
345
+ return undefined;
346
+ return parsed.flatMap((item) => {
347
+ if (!item || typeof item !== "object")
348
+ return [];
349
+ const candidate = item;
350
+ if (typeof candidate.id !== "string" || typeof candidate.label !== "string")
351
+ return [];
352
+ return [
353
+ {
354
+ id: candidate.id,
355
+ label: candidate.label,
356
+ kind: isBasemapKind(candidate.kind) ? candidate.kind : "vector",
357
+ sources: candidate.sources && typeof candidate.sources === "object" ? candidate.sources : {},
358
+ layers: Array.isArray(candidate.layers)
359
+ ? candidate.layers.filter((layer) => typeof layer?.id === "string")
360
+ : [],
361
+ },
362
+ ];
363
+ });
364
+ }
365
+ catch {
366
+ return undefined;
367
+ }
368
+ }
369
+ function isBasemapKind(value) {
370
+ return value === "vector" || value === "raster" || value === "raster-dem-composite";
371
+ }
372
+ /** Structural-only styles; theme via `::part(group)` / `::part(radio)` / `::part(radio-active)`. */
373
+ function structuralStyles() {
374
+ return `
375
+ :host { display: inline-block; }
376
+ .group { display: inline-flex; flex-wrap: wrap; }
377
+ .radio { font: inherit; cursor: pointer; }
378
+ `;
379
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Internal helpers shared by the controls-entry custom elements.
3
+ *
4
+ * Controls never import `maplibre-gl` or the SDK core, and they must load
5
+ * safely under Node (no DOM): `globalDom` exposes the optional browser
6
+ * globals, and `HTMLElementBase` substitutes an empty class when
7
+ * `HTMLElement` is unavailable so element classes can still be unit-tested
8
+ * headlessly.
9
+ *
10
+ * The map-wiring helpers implement the `for="<honua-map id>"` idiom shared by
11
+ * every control: resolve the map from a sibling element exposing a `.map`
12
+ * property, and listen for the `honua-map-ready` event (matching the
13
+ * `web-components` entry).
14
+ *
15
+ * @module
16
+ */
17
+ export declare const globalDom: typeof globalThis & {
18
+ HTMLElement?: typeof HTMLElement;
19
+ CustomEvent?: typeof CustomEvent;
20
+ customElements?: CustomElementRegistry;
21
+ };
22
+ export declare const HTMLElementBase: typeof HTMLElement;
23
+ /**
24
+ * Minimal element surface required by the wiring helpers. Real elements
25
+ * always satisfy it; headless test stubs only need `getAttribute`.
26
+ */
27
+ export interface HostElementLike {
28
+ getAttribute?(name: string): string | null;
29
+ getRootNode?(): Node;
30
+ }
31
+ /** Event target used for `honua-map-ready` listening: the element's root (document or shadow root), falling back to `document`. */
32
+ export declare function rootEventTarget(element: HostElementLike): EventTarget | undefined;
33
+ /**
34
+ * Subscribes to `honua-map-ready` events on the element's root and invokes
35
+ * `assign` with the announced map. When the element has a `for` attribute,
36
+ * only events from the element with that id are honored. Returns a dispose
37
+ * function, or `undefined` when no event target exists (e.g. under Node).
38
+ */
39
+ export declare function listenForHonuaMapReady(element: HostElementLike, assign: (map: unknown) => void): (() => void) | undefined;
40
+ /**
41
+ * Resolves the map from the element referenced by the `for` attribute (an
42
+ * element exposing a `.map` property, e.g. `<honua-map>`), or `undefined`
43
+ * when the attribute is absent or the host has no map yet.
44
+ */
45
+ export declare function resolveHonuaMapFromContext(element: HostElementLike): unknown;
46
+ export declare function escapeHtml(value: string): string;
47
+ export declare function escapeAttribute(value: string): string;
48
+ //# sourceMappingURL=element-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element-utils.d.ts","sourceRoot":"","sources":["../../../src/controls/element-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,SAAS,EAAiB,OAAO,UAAU,GAAG;IACzD,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,WAAW,CAAC;IACjC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,OAAO,WAAkF,CAAC;AAExH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,IAAI,IAAI,CAAC;CACtB;AAED,mIAAmI;AACnI,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS,CAIjF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAC7B,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAY1B;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAY5E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Internal helpers shared by the controls-entry custom elements.
3
+ *
4
+ * Controls never import `maplibre-gl` or the SDK core, and they must load
5
+ * safely under Node (no DOM): `globalDom` exposes the optional browser
6
+ * globals, and `HTMLElementBase` substitutes an empty class when
7
+ * `HTMLElement` is unavailable so element classes can still be unit-tested
8
+ * headlessly.
9
+ *
10
+ * The map-wiring helpers implement the `for="<honua-map id>"` idiom shared by
11
+ * every control: resolve the map from a sibling element exposing a `.map`
12
+ * property, and listen for the `honua-map-ready` event (matching the
13
+ * `web-components` entry).
14
+ *
15
+ * @module
16
+ */
17
+ export const globalDom = globalThis;
18
+ export const HTMLElementBase = globalDom.HTMLElement ?? class {
19
+ };
20
+ /** Event target used for `honua-map-ready` listening: the element's root (document or shadow root), falling back to `document`. */
21
+ export function rootEventTarget(element) {
22
+ const root = element.getRootNode?.();
23
+ if (root && "addEventListener" in root)
24
+ return root;
25
+ return typeof document !== "undefined" ? document : undefined;
26
+ }
27
+ /**
28
+ * Subscribes to `honua-map-ready` events on the element's root and invokes
29
+ * `assign` with the announced map. When the element has a `for` attribute,
30
+ * only events from the element with that id are honored. Returns a dispose
31
+ * function, or `undefined` when no event target exists (e.g. under Node).
32
+ */
33
+ export function listenForHonuaMapReady(element, assign) {
34
+ const target = rootEventTarget(element);
35
+ if (!target)
36
+ return undefined;
37
+ const listener = (event) => {
38
+ const detail = event.detail;
39
+ if (!detail?.map)
40
+ return;
41
+ const forId = typeof element.getAttribute === "function" ? element.getAttribute("for") : null;
42
+ if (forId && event.target?.id !== forId)
43
+ return;
44
+ assign(detail.map);
45
+ };
46
+ target.addEventListener("honua-map-ready", listener);
47
+ return () => target.removeEventListener("honua-map-ready", listener);
48
+ }
49
+ /**
50
+ * Resolves the map from the element referenced by the `for` attribute (an
51
+ * element exposing a `.map` property, e.g. `<honua-map>`), or `undefined`
52
+ * when the attribute is absent or the host has no map yet.
53
+ */
54
+ export function resolveHonuaMapFromContext(element) {
55
+ if (typeof element.getAttribute !== "function")
56
+ return undefined;
57
+ const forId = element.getAttribute("for");
58
+ if (!forId)
59
+ return undefined;
60
+ const root = element.getRootNode?.();
61
+ const host = root && "getElementById" in root
62
+ ? root.getElementById(forId)
63
+ : typeof document !== "undefined"
64
+ ? document.getElementById(forId)
65
+ : null;
66
+ return host?.map;
67
+ }
68
+ export function escapeHtml(value) {
69
+ return value
70
+ .replaceAll("&", "&amp;")
71
+ .replaceAll("<", "&lt;")
72
+ .replaceAll(">", "&gt;")
73
+ .replaceAll('"', "&quot;")
74
+ .replaceAll("'", "&#39;");
75
+ }
76
+ export function escapeAttribute(value) {
77
+ return escapeHtml(value);
78
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
3
+ * framework-free custom elements for apps built on the native lane
4
+ * (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
5
+ * switcher, the legend, and the layer list.
6
+ *
7
+ * This entry is intentionally independent of the SDK core bundle (the same
8
+ * posture as `@honua/sdk-js/esri-compat`): it imports nothing from
9
+ * `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
10
+ * drive any MapLibre `Map` through a duck-typed interface.
11
+ *
12
+ * Importing this module registers the basemap switcher, legend, and swipe
13
+ * control when a browser `customElements` registry is present. Node imports are
14
+ * safe; call `defineHonuaControls()` explicitly when using a scoped registry.
15
+ * The layer list is opt-in via {@link defineHonuaLayerList} because its tag
16
+ * (`honua-layer-list`) collides with the `web-components` kit's own
17
+ * controller-driven element.
18
+ *
19
+ * @experimental This entrypoint is not yet covered by the SDK's semver
20
+ * contract — the surface may change in any minor release prior to `1.0.0`.
21
+ * @module
22
+ */
23
+ import "./basemap-switcher.js";
24
+ import "./swipe-control.js";
25
+ export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
26
+ export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
27
+ export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
28
+ export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
29
+ export type { HonuaLegendDeriveErrorCode } from "./legend-derive.js";
30
+ export { HonuaLegendElement } from "./legend.js";
31
+ export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
32
+ export type { HonuaBasemapDefinition, HonuaBasemapKind, HonuaBasemapLayerSpecification, HonuaBasemapSwitcherChangeDetail, HonuaBasemapSwitcherMap, HonuaLayerListChangeDetail, HonuaLayerListMap, HonuaLayerListOverlay, HonuaLegendEntry, HonuaLegendMap, HonuaLegendSection, HonuaLegendSwatchColor, HonuaLegendSwatchShape, HonuaSwipeChangeDetail, HonuaSwipeMap, HonuaSwipeOrientation, } from "./types.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACvF,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,8BAA8B,EAC9B,gCAAgC,EAChC,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
3
+ * framework-free custom elements for apps built on the native lane
4
+ * (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
5
+ * switcher, the legend, and the layer list.
6
+ *
7
+ * This entry is intentionally independent of the SDK core bundle (the same
8
+ * posture as `@honua/sdk-js/esri-compat`): it imports nothing from
9
+ * `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
10
+ * drive any MapLibre `Map` through a duck-typed interface.
11
+ *
12
+ * Importing this module registers the basemap switcher, legend, and swipe
13
+ * control when a browser `customElements` registry is present. Node imports are
14
+ * safe; call `defineHonuaControls()` explicitly when using a scoped registry.
15
+ * The layer list is opt-in via {@link defineHonuaLayerList} because its tag
16
+ * (`honua-layer-list`) collides with the `web-components` kit's own
17
+ * controller-driven element.
18
+ *
19
+ * @experimental This entrypoint is not yet covered by the SDK's semver
20
+ * contract — the surface may change in any minor release prior to `1.0.0`.
21
+ * @module
22
+ */
23
+ import "./basemap-switcher.js";
24
+ import "./swipe-control.js";
25
+ export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
26
+ export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
27
+ export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
28
+ export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
29
+ export { HonuaLegendElement } from "./legend.js";
30
+ export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
@@ -0,0 +1,98 @@
1
+ /**
2
+ * `<honua-layer-list>` — framework-free custom element rendering a checkbox
3
+ * row per overlay so users can toggle MapLibre overlay layers on and off
4
+ * (issue #280, closing umbrella #274).
5
+ *
6
+ * Each overlay groups one or more style layer ids; toggling a row writes each
7
+ * layer's `visibility` layout property (`"visible"` / `"none"`) on the map.
8
+ * The element never imports `maplibre-gl` or the SDK core — it drives any
9
+ * MapLibre `Map` through the duck-typed {@link HonuaLayerListMap} interface,
10
+ * keeping the `@honua/sdk-js/controls` entry independent of the core bundle.
11
+ *
12
+ * ## Input modes
13
+ * - **Property** (preferred) — assign the `overlays` property a
14
+ * {@link HonuaLayerListOverlay} array.
15
+ * - **Attribute** — set the `overlays` attribute to a JSON array of the same
16
+ * shape (matching how `<honua-basemap-switcher>` accepts `bases` JSON).
17
+ *
18
+ * ## Wiring
19
+ * - `element.map = map` (any MapLibre `Map`) or `element.connect(map)`;
20
+ * - declaratively via `for="<honua-map id>"` — same idiom as
21
+ * `<honua-basemap-switcher>` / `<honua-legend>` (resolves `.map` from the
22
+ * referenced element and listens for `honua-map-ready`).
23
+ *
24
+ * ## Reactivity
25
+ * - With the `auto-refresh` attribute the element subscribes to the map's
26
+ * `styledata` event while connected and re-syncs each checkbox's checked
27
+ * state from the map's current `visibility` (external style edits,
28
+ * visibility toggled elsewhere, layers seeded later).
29
+ *
30
+ * ## Attributes
31
+ * - `overlays` — JSON array of {@link HonuaLayerListOverlay} (the `overlays`
32
+ * property is preferred for non-trivial configs).
33
+ * - `for` — id of the map-providing element, see Wiring.
34
+ * - `label` — accessible name of the list (default "Layers").
35
+ * - `auto-refresh` — boolean; see Reactivity.
36
+ *
37
+ * ## CSS parts
38
+ * `root`, `row`, `checkbox`, `label`, and `badge` (the "not seeded" hint
39
+ * shown on a disabled row whose style layers are all missing). Structural CSS
40
+ * only — theme via `::part()`.
41
+ *
42
+ * ## Accessibility
43
+ * Rows are real `<label>` + `<input type="checkbox">` pairs; an overlay whose
44
+ * style layers are all missing renders disabled with a `badge` part/slot.
45
+ */
46
+ import { HTMLElementBase } from "./element-utils.js";
47
+ import type { HonuaLayerListMap, HonuaLayerListOverlay } from "./types.js";
48
+ /**
49
+ * Custom element implementing the overlay layer list. Registered as
50
+ * `honua-layer-list` by `defineHonuaControls` (which runs automatically on
51
+ * import of the controls entry when a `customElements` registry exists).
52
+ */
53
+ export declare class HonuaLayerListElement extends HTMLElementBase {
54
+ #private;
55
+ static get observedAttributes(): string[];
56
+ /** The MapLibre map this list toggles overlay visibility on. */
57
+ get map(): HonuaLayerListMap | undefined;
58
+ set map(map: HonuaLayerListMap | undefined);
59
+ /** Wires the list to a MapLibre map. Equivalent to setting `.map`. */
60
+ connect(map: HonuaLayerListMap): void;
61
+ /** The registered overlay definitions. */
62
+ get overlays(): readonly HonuaLayerListOverlay[];
63
+ set overlays(overlays: readonly HonuaLayerListOverlay[]);
64
+ /** Refresh automatically on the map's `styledata` event. Reflects `auto-refresh`. */
65
+ get autoRefresh(): boolean;
66
+ set autoRefresh(value: boolean);
67
+ /** Re-syncs checkbox state from the map and re-renders. */
68
+ refresh(): void;
69
+ /**
70
+ * Shows or hides the overlay with the given id, writing each of its style
71
+ * layers' `visibility`. Returns `true` when the overlay was found and at
72
+ * least one of its layers exists on the map. Dispatches `change`.
73
+ */
74
+ setVisible(overlayId: string, visible: boolean): boolean;
75
+ attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void;
76
+ connectedCallback(): void;
77
+ disconnectedCallback(): void;
78
+ protected render(): void;
79
+ }
80
+ /**
81
+ * Registers the layer-list custom element (`honua-layer-list`). Skips the
82
+ * registration when the tag is already defined.
83
+ *
84
+ * Unlike the other controls-kit elements, this is **opt-in** and is NOT run by
85
+ * the blanket `defineHonuaControls()` / module-load auto-registration. The
86
+ * `web-components` entry ships its own (controller-driven) `honua-layer-list`
87
+ * under the same tag, and that kit auto-registers on import. Auto-registering
88
+ * the controls variant too would let it silently win the tag in apps that load
89
+ * both kits (the order is import-dependent), so callers who want the native,
90
+ * overlay-definition-driven layer list register it explicitly:
91
+ *
92
+ * ```ts
93
+ * import { defineHonuaLayerList } from "@honua/sdk-js/controls";
94
+ * defineHonuaLayerList();
95
+ * ```
96
+ */
97
+ export declare function defineHonuaLayerList(registry?: CustomElementRegistry): void;
98
+ //# sourceMappingURL=layer-list.d.ts.map