@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 @@
1
+ {"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/controls/layer-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,EACL,eAAe,EAMhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAA8B,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEvG;;;;GAIG;AACH,qBAAa,qBAAsB,SAAQ,eAAe;;IACxD,WAAkB,kBAAkB,IAAI,MAAM,EAAE,CAE/C;IAQD,gEAAgE;IAChE,IAAW,GAAG,IAAI,iBAAiB,GAAG,SAAS,CAE9C;IAED,IAAW,GAAG,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,EAMhD;IAED,sEAAsE;IAC/D,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAI5C,0CAA0C;IAC1C,IAAW,QAAQ,IAAI,SAAS,qBAAqB,EAAE,CAEtD;IAED,IAAW,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,EAG7D;IAED,qFAAqF;IACrF,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,WAAW,CAAC,KAAK,EAAE,OAAO,EAIpC;IAED,2DAA2D;IACpD,OAAO,IAAI,IAAI;IAItB;;;;OAIG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAiBxD,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAmB/F,iBAAiB,IAAI,IAAI;IASzB,oBAAoB,IAAI,IAAI;IA4EnC,SAAS,CAAC,MAAM,IAAI,IAAI;CAuEzB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,wBAA2B,GAAG,IAAI,CAK9E"}
@@ -0,0 +1,375 @@
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, escapeAttribute, escapeHtml, globalDom, listenForHonuaMapReady, resolveHonuaMapFromContext, } from "./element-utils.js";
47
+ /**
48
+ * Custom element implementing the overlay layer list. Registered as
49
+ * `honua-layer-list` by `defineHonuaControls` (which runs automatically on
50
+ * import of the controls entry when a `customElements` registry exists).
51
+ */
52
+ export class HonuaLayerListElement extends HTMLElementBase {
53
+ static get observedAttributes() {
54
+ return ["overlays", "for", "label", "auto-refresh"];
55
+ }
56
+ #map;
57
+ #overlays = [];
58
+ #connected = false;
59
+ #disposeMapReadyListener;
60
+ #styledataListener;
61
+ /** The MapLibre map this list toggles overlay visibility on. */
62
+ get map() {
63
+ return this.#map;
64
+ }
65
+ set map(map) {
66
+ if (this.#map === map)
67
+ return;
68
+ this.#unsubscribeStyledata();
69
+ this.#map = map;
70
+ this.#subscribeStyledata();
71
+ this.render();
72
+ }
73
+ /** Wires the list to a MapLibre map. Equivalent to setting `.map`. */
74
+ connect(map) {
75
+ this.map = map;
76
+ }
77
+ /** The registered overlay definitions. */
78
+ get overlays() {
79
+ return this.#overlays;
80
+ }
81
+ set overlays(overlays) {
82
+ this.#overlays = normalizeOverlays(overlays);
83
+ this.render();
84
+ }
85
+ /** Refresh automatically on the map's `styledata` event. Reflects `auto-refresh`. */
86
+ get autoRefresh() {
87
+ return this.#hasAttr("auto-refresh");
88
+ }
89
+ set autoRefresh(value) {
90
+ if (typeof this.setAttribute !== "function")
91
+ return;
92
+ if (value)
93
+ this.setAttribute("auto-refresh", "");
94
+ else
95
+ this.removeAttribute?.("auto-refresh");
96
+ }
97
+ /** Re-syncs checkbox state from the map and re-renders. */
98
+ refresh() {
99
+ this.render();
100
+ }
101
+ /**
102
+ * Shows or hides the overlay with the given id, writing each of its style
103
+ * layers' `visibility`. Returns `true` when the overlay was found and at
104
+ * least one of its layers exists on the map. Dispatches `change`.
105
+ */
106
+ setVisible(overlayId, visible) {
107
+ const overlay = this.#overlays.find((candidate) => candidate.id === overlayId);
108
+ if (!overlay)
109
+ return false;
110
+ const map = this.#map;
111
+ if (!map)
112
+ return false;
113
+ let applied = false;
114
+ for (const layerId of overlay.layers) {
115
+ if (!this.#layerExists(layerId))
116
+ continue;
117
+ map.setLayoutProperty(layerId, "visibility", visible ? "visible" : "none");
118
+ applied = true;
119
+ }
120
+ if (!applied)
121
+ return false;
122
+ this.#syncRow(overlayId);
123
+ this.#dispatchChange({ id: overlayId, visible });
124
+ return true;
125
+ }
126
+ attributeChangedCallback(name, _oldValue, newValue) {
127
+ if (name === "overlays") {
128
+ const parsed = parseOverlays(newValue);
129
+ if (parsed)
130
+ this.overlays = parsed;
131
+ return;
132
+ }
133
+ if (name === "for") {
134
+ this.#resolveMapFromContext();
135
+ return;
136
+ }
137
+ if (name === "auto-refresh") {
138
+ if (newValue === null)
139
+ this.#unsubscribeStyledata();
140
+ else
141
+ this.#subscribeStyledata();
142
+ return;
143
+ }
144
+ // "label" only changes the rendering.
145
+ this.render();
146
+ }
147
+ connectedCallback() {
148
+ this.#connected = true;
149
+ this.#ensureShadowRoot();
150
+ this.#listenForMapReady();
151
+ this.#resolveMapFromContext();
152
+ this.#subscribeStyledata();
153
+ this.render();
154
+ }
155
+ disconnectedCallback() {
156
+ this.#connected = false;
157
+ this.#disposeMapReadyListener?.();
158
+ this.#disposeMapReadyListener = undefined;
159
+ this.#unsubscribeStyledata();
160
+ }
161
+ // ── map wiring (matches the `for` + ready-event idiom) ──────
162
+ #listenForMapReady() {
163
+ if (this.#disposeMapReadyListener)
164
+ return;
165
+ this.#disposeMapReadyListener = listenForHonuaMapReady(this, (map) => {
166
+ const forId = this.#attr("for");
167
+ if (!forId && this.map)
168
+ return;
169
+ this.map = map;
170
+ });
171
+ }
172
+ #resolveMapFromContext() {
173
+ if (this.map)
174
+ return;
175
+ const map = resolveHonuaMapFromContext(this);
176
+ if (map)
177
+ this.map = map;
178
+ }
179
+ #subscribeStyledata() {
180
+ if (this.#styledataListener || !this.#connected || !this.autoRefresh)
181
+ return;
182
+ const map = this.#map;
183
+ if (!map || typeof map.on !== "function")
184
+ return;
185
+ const listener = () => this.refresh();
186
+ map.on("styledata", listener);
187
+ this.#styledataListener = listener;
188
+ }
189
+ #unsubscribeStyledata() {
190
+ const listener = this.#styledataListener;
191
+ if (!listener)
192
+ return;
193
+ this.#styledataListener = undefined;
194
+ this.#map?.off?.("styledata", listener);
195
+ }
196
+ // ── overlay state ──────────────────────────────────────────
197
+ /** Whether a style layer is present on the current map (drives not-seeded). */
198
+ #layerExists(layerId) {
199
+ const map = this.#map;
200
+ if (!map?.getLayer)
201
+ return false;
202
+ return map.getLayer(layerId) != null;
203
+ }
204
+ /** True when at least one of the overlay's style layers exists on the map. */
205
+ #isSeeded(overlay) {
206
+ return overlay.layers.some((layerId) => this.#layerExists(layerId));
207
+ }
208
+ /**
209
+ * Whether an overlay reads as visible: visible unless every present layer's
210
+ * `visibility` is `"none"`. Unseeded overlays read as unchecked.
211
+ */
212
+ #isVisible(overlay) {
213
+ const map = this.#map;
214
+ if (!map)
215
+ return false;
216
+ for (const layerId of overlay.layers) {
217
+ if (!this.#layerExists(layerId))
218
+ continue;
219
+ if (map.getLayoutProperty?.(layerId, "visibility") !== "none")
220
+ return true;
221
+ }
222
+ return false;
223
+ }
224
+ // ── rendering ──────────────────────────────────────────────
225
+ #ensureShadowRoot() {
226
+ if (!this.shadowRoot && typeof this.attachShadow === "function") {
227
+ this.attachShadow({ mode: "open" });
228
+ }
229
+ }
230
+ render() {
231
+ const root = this.shadowRoot;
232
+ if (!root)
233
+ return;
234
+ const label = this.#attr("label") ?? "Layers";
235
+ root.innerHTML = `
236
+ <style>${structuralStyles()}</style>
237
+ <div part="root" class="root" role="group" aria-label="${escapeAttribute(label)}">
238
+ ${this.#overlays.map((overlay) => this.#renderRow(overlay)).join("")}
239
+ </div>
240
+ `;
241
+ this.#bindRows(root);
242
+ }
243
+ #renderRow(overlay) {
244
+ const seeded = this.#isSeeded(overlay);
245
+ const checked = seeded && this.#isVisible(overlay);
246
+ const attribution = overlay.attribution
247
+ ? `<span part="attribution" class="attribution">${escapeHtml(overlay.attribution)}</span>`
248
+ : "";
249
+ const badge = seeded ? "" : `<span part="badge" class="badge"><slot name="not-seeded">Not seeded</slot></span>`;
250
+ return `
251
+ <label part="row" class="row" data-overlay-id="${escapeAttribute(overlay.id)}"${seeded ? "" : " data-not-seeded"}>
252
+ <input
253
+ part="checkbox"
254
+ class="checkbox"
255
+ type="checkbox"
256
+ ${checked ? "checked" : ""}
257
+ ${seeded ? "" : "disabled"}
258
+ data-overlay-id="${escapeAttribute(overlay.id)}"
259
+ />
260
+ <span part="label" class="label">${escapeHtml(overlay.label)}</span>
261
+ ${attribution}
262
+ ${badge}
263
+ </label>
264
+ `;
265
+ }
266
+ #bindRows(root) {
267
+ root.querySelectorAll("input[data-overlay-id]").forEach((input) => {
268
+ input.addEventListener("change", () => {
269
+ const overlayId = input.dataset.overlayId;
270
+ if (overlayId)
271
+ this.setVisible(overlayId, input.checked);
272
+ });
273
+ });
274
+ }
275
+ /** Re-syncs a single row's checked state in place (preserves focus). */
276
+ #syncRow(overlayId) {
277
+ const root = this.shadowRoot;
278
+ if (!root || typeof root.querySelector !== "function")
279
+ return;
280
+ const overlay = this.#overlays.find((candidate) => candidate.id === overlayId);
281
+ if (!overlay)
282
+ return;
283
+ const input = root.querySelector(`input[data-overlay-id="${cssEscape(overlayId)}"]`);
284
+ if (input)
285
+ input.checked = this.#isSeeded(overlay) && this.#isVisible(overlay);
286
+ }
287
+ // ── attribute helpers (safe under Node test stubs) ──────────
288
+ #attr(name) {
289
+ return typeof this.getAttribute === "function" ? this.getAttribute(name) : null;
290
+ }
291
+ #hasAttr(name) {
292
+ if (typeof this.hasAttribute === "function")
293
+ return this.hasAttribute(name);
294
+ return this.#attr(name) !== null;
295
+ }
296
+ #dispatchChange(detail) {
297
+ if (!globalDom.CustomEvent || typeof this.dispatchEvent !== "function")
298
+ return;
299
+ this.dispatchEvent(new globalDom.CustomEvent("change", { bubbles: true, composed: true, detail }));
300
+ }
301
+ }
302
+ /**
303
+ * Registers the layer-list custom element (`honua-layer-list`). Skips the
304
+ * registration when the tag is already defined.
305
+ *
306
+ * Unlike the other controls-kit elements, this is **opt-in** and is NOT run by
307
+ * the blanket `defineHonuaControls()` / module-load auto-registration. The
308
+ * `web-components` entry ships its own (controller-driven) `honua-layer-list`
309
+ * under the same tag, and that kit auto-registers on import. Auto-registering
310
+ * the controls variant too would let it silently win the tag in apps that load
311
+ * both kits (the order is import-dependent), so callers who want the native,
312
+ * overlay-definition-driven layer list register it explicitly:
313
+ *
314
+ * ```ts
315
+ * import { defineHonuaLayerList } from "@honua/sdk-js/controls";
316
+ * defineHonuaLayerList();
317
+ * ```
318
+ */
319
+ export function defineHonuaLayerList(registry = globalDom.customElements) {
320
+ if (!registry)
321
+ return;
322
+ if (!registry.get("honua-layer-list")) {
323
+ registry.define("honua-layer-list", HonuaLayerListElement);
324
+ }
325
+ }
326
+ function normalizeOverlays(value) {
327
+ if (!Array.isArray(value))
328
+ return [];
329
+ return value.flatMap((item) => {
330
+ if (!item || typeof item !== "object")
331
+ return [];
332
+ const candidate = item;
333
+ if (typeof candidate.id !== "string" || typeof candidate.label !== "string")
334
+ return [];
335
+ const layers = Array.isArray(candidate.layers)
336
+ ? candidate.layers.filter((layer) => typeof layer === "string")
337
+ : [];
338
+ return [
339
+ {
340
+ id: candidate.id,
341
+ label: candidate.label,
342
+ layers,
343
+ ...(typeof candidate.attribution === "string" ? { attribution: candidate.attribution } : {}),
344
+ },
345
+ ];
346
+ });
347
+ }
348
+ function parseOverlays(value) {
349
+ if (!value)
350
+ return undefined;
351
+ try {
352
+ const parsed = JSON.parse(value);
353
+ if (!Array.isArray(parsed))
354
+ return undefined;
355
+ return normalizeOverlays(parsed);
356
+ }
357
+ catch {
358
+ return undefined;
359
+ }
360
+ }
361
+ /** Minimal CSS identifier escape for the attribute selector in `#syncRow`. */
362
+ function cssEscape(value) {
363
+ return value.replace(/["\\]/g, "\\$&");
364
+ }
365
+ /** Structural-only styles; theme via `::part(root)`, `::part(row)`, `::part(checkbox)`, ... */
366
+ function structuralStyles() {
367
+ return `
368
+ :host { display: block; }
369
+ .root { display: flex; flex-direction: column; }
370
+ .row { display: flex; align-items: center; gap: 0.5em; }
371
+ .checkbox { flex: none; }
372
+ .badge { font-size: 0.75em; }
373
+ [data-not-seeded] { cursor: not-allowed; }
374
+ `;
375
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Derive-mode engine behind `<honua-legend>`: parses a style layer's
3
+ * categorical color paint expression into legend entries, so the map style
4
+ * stays the single source of truth and the legend cannot drift from it.
5
+ *
6
+ * ## Supported expression shapes
7
+ *
8
+ * The color paint property of the layer (`fill-color`, `line-color`, or
9
+ * `circle-color` depending on the layer type) may be:
10
+ *
11
+ * 1. A literal CSS color string — yields a single entry labeled with the
12
+ * layer id.
13
+ * 2. `["match", ["get", <attr>], in1, color1, ..., fallbackColor]` — the
14
+ * primary categorical shape. Branch inputs may be strings, numbers, or
15
+ * arrays thereof (an array branch becomes one row labeled with the values
16
+ * joined by `", "`). Every output, including the fallback, must be a
17
+ * literal color string; the fallback becomes a row labeled `"Other"`.
18
+ * 3. `["case", ["==", ["get", <attr>], <literal>], color1, ..., fallback]` —
19
+ * simple equality chains only; each condition labels its row with the
20
+ * compared literal, and the fallback becomes `"Other"`.
21
+ * 4. `["step", ["get", <attr>], color0, stop1, color1, ...]` — numeric breaks
22
+ * on a feature attribute, labeled `"< stop1"`, `"stop1–stop2"`, ...,
23
+ * `"≥ stopN"`.
24
+ *
25
+ * Anything else — `interpolate`, zoom- or feature-state-driven expressions,
26
+ * non-literal color outputs, nested expressions, unsupported layer types —
27
+ * throws {@link HonuaLegendDeriveError} with a `code` describing the failure,
28
+ * so callers can fall back gracefully instead of rendering a wrong legend.
29
+ *
30
+ * For `fill` layers, a literal `fill-outline-color` is propagated to every
31
+ * derived entry as the swatch outline.
32
+ *
33
+ * @module
34
+ */
35
+ import type { HonuaLegendEntry, HonuaLegendMap } from "./types.js";
36
+ /** Machine-readable reason a legend could not be derived. */
37
+ export type HonuaLegendDeriveErrorCode = "layer-not-found" | "unsupported-layer-type" | "missing-paint" | "unsupported-expression";
38
+ /** Thrown by {@link deriveLegendEntries} when a legend cannot be derived. */
39
+ export declare class HonuaLegendDeriveError extends Error {
40
+ readonly name = "HonuaLegendDeriveError";
41
+ /** Why derivation failed; `"layer-not-found"` is often transient (layer not added yet). */
42
+ readonly code: HonuaLegendDeriveErrorCode;
43
+ constructor(code: HonuaLegendDeriveErrorCode, message: string);
44
+ }
45
+ /** Label given to the `match`/`case` fallback branch. */
46
+ export declare const HONUA_LEGEND_FALLBACK_LABEL = "Other";
47
+ /**
48
+ * Derives legend entries from the categorical color expression of the given
49
+ * style layer. See the module docs for the supported expression shapes;
50
+ * throws {@link HonuaLegendDeriveError} on anything else.
51
+ */
52
+ export declare function deriveLegendEntries(map: HonuaLegendMap, layerId: string): HonuaLegendEntry[];
53
+ //# sourceMappingURL=legend-derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legend-derive.d.ts","sourceRoot":"","sources":["../../../src/controls/legend-derive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAA0B,MAAM,YAAY,CAAC;AAE3F,6DAA6D;AAC7D,MAAM,MAAM,0BAA0B,GAClC,iBAAiB,GACjB,wBAAwB,GACxB,eAAe,GACf,wBAAwB,CAAC;AAE7B,6EAA6E;AAC7E,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,SAAyB,IAAI,4BAA4B;IACzD,2FAA2F;IAC3F,SAAgB,IAAI,EAAE,0BAA0B,CAAC;gBAE9B,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM;CAIrE;AAQD,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,UAAU,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAuB5F"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Derive-mode engine behind `<honua-legend>`: parses a style layer's
3
+ * categorical color paint expression into legend entries, so the map style
4
+ * stays the single source of truth and the legend cannot drift from it.
5
+ *
6
+ * ## Supported expression shapes
7
+ *
8
+ * The color paint property of the layer (`fill-color`, `line-color`, or
9
+ * `circle-color` depending on the layer type) may be:
10
+ *
11
+ * 1. A literal CSS color string — yields a single entry labeled with the
12
+ * layer id.
13
+ * 2. `["match", ["get", <attr>], in1, color1, ..., fallbackColor]` — the
14
+ * primary categorical shape. Branch inputs may be strings, numbers, or
15
+ * arrays thereof (an array branch becomes one row labeled with the values
16
+ * joined by `", "`). Every output, including the fallback, must be a
17
+ * literal color string; the fallback becomes a row labeled `"Other"`.
18
+ * 3. `["case", ["==", ["get", <attr>], <literal>], color1, ..., fallback]` —
19
+ * simple equality chains only; each condition labels its row with the
20
+ * compared literal, and the fallback becomes `"Other"`.
21
+ * 4. `["step", ["get", <attr>], color0, stop1, color1, ...]` — numeric breaks
22
+ * on a feature attribute, labeled `"< stop1"`, `"stop1–stop2"`, ...,
23
+ * `"≥ stopN"`.
24
+ *
25
+ * Anything else — `interpolate`, zoom- or feature-state-driven expressions,
26
+ * non-literal color outputs, nested expressions, unsupported layer types —
27
+ * throws {@link HonuaLegendDeriveError} with a `code` describing the failure,
28
+ * so callers can fall back gracefully instead of rendering a wrong legend.
29
+ *
30
+ * For `fill` layers, a literal `fill-outline-color` is propagated to every
31
+ * derived entry as the swatch outline.
32
+ *
33
+ * @module
34
+ */
35
+ /** Thrown by {@link deriveLegendEntries} when a legend cannot be derived. */
36
+ export class HonuaLegendDeriveError extends Error {
37
+ name = "HonuaLegendDeriveError";
38
+ /** Why derivation failed; `"layer-not-found"` is often transient (layer not added yet). */
39
+ code;
40
+ constructor(code, message) {
41
+ super(message);
42
+ this.code = code;
43
+ }
44
+ }
45
+ const PAINT_BY_LAYER_TYPE = {
46
+ fill: { property: "fill-color", shape: "fill" },
47
+ line: { property: "line-color", shape: "line" },
48
+ circle: { property: "circle-color", shape: "circle" },
49
+ };
50
+ /** Label given to the `match`/`case` fallback branch. */
51
+ export const HONUA_LEGEND_FALLBACK_LABEL = "Other";
52
+ /**
53
+ * Derives legend entries from the categorical color expression of the given
54
+ * style layer. See the module docs for the supported expression shapes;
55
+ * throws {@link HonuaLegendDeriveError} on anything else.
56
+ */
57
+ export function deriveLegendEntries(map, layerId) {
58
+ const layer = typeof map.getLayer === "function" ? map.getLayer(layerId) : undefined;
59
+ if (!layer || typeof layer !== "object") {
60
+ throw new HonuaLegendDeriveError("layer-not-found", `Layer "${layerId}" does not exist on the map.`);
61
+ }
62
+ const layerType = layer.type;
63
+ const mapping = typeof layerType === "string" ? PAINT_BY_LAYER_TYPE[layerType] : undefined;
64
+ if (!mapping) {
65
+ throw new HonuaLegendDeriveError("unsupported-layer-type", `Cannot derive a legend for layer "${layerId}" of type "${String(layerType)}"; supported types: fill, line, circle.`);
66
+ }
67
+ const value = readPaintProperty(map, layer, layerId, mapping.property);
68
+ if (value === undefined || value === null) {
69
+ throw new HonuaLegendDeriveError("missing-paint", `Layer "${layerId}" has no "${mapping.property}" paint value to derive a legend from.`);
70
+ }
71
+ const outline = mapping.shape === "fill" ? literalColor(readPaintProperty(map, layer, layerId, "fill-outline-color")) : undefined;
72
+ return colorValueToEntries(value, layerId, mapping.shape, outline);
73
+ }
74
+ function readPaintProperty(map, layer, layerId, name) {
75
+ if (typeof map.getPaintProperty === "function") {
76
+ const value = map.getPaintProperty(layerId, name);
77
+ if (value !== undefined)
78
+ return value;
79
+ }
80
+ const paint = layer.paint;
81
+ if (typeof paint === "object" && paint !== null)
82
+ return paint[name];
83
+ return undefined;
84
+ }
85
+ function colorValueToEntries(value, layerId, shape, outline) {
86
+ if (typeof value === "string")
87
+ return [makeEntry(layerId, value, shape, outline)];
88
+ if (Array.isArray(value)) {
89
+ const operator = value[0];
90
+ if (operator === "match")
91
+ return matchToEntries(value, layerId, shape, outline);
92
+ if (operator === "case")
93
+ return caseToEntries(value, layerId, shape, outline);
94
+ if (operator === "step")
95
+ return stepToEntries(value, layerId, shape, outline);
96
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": unsupported color expression operator "${String(operator)}"; supported: literal color, match, case, step.`);
97
+ }
98
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": color paint value must be a literal color string or a match/case/step expression.`);
99
+ }
100
+ function matchToEntries(expression, layerId, shape, outline) {
101
+ requireGetInput(expression[1], layerId, "match");
102
+ const body = expression.slice(2);
103
+ if (body.length < 3 || body.length % 2 === 0) {
104
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": match expression must have branch input/output pairs plus a fallback color.`);
105
+ }
106
+ const entries = [];
107
+ for (let index = 0; index < body.length - 1; index += 2) {
108
+ const label = matchBranchLabel(body[index], layerId);
109
+ const color = requireLiteralColor(body[index + 1], layerId);
110
+ entries.push(makeEntry(label, color, shape, outline));
111
+ }
112
+ entries.push(makeEntry(HONUA_LEGEND_FALLBACK_LABEL, requireLiteralColor(body[body.length - 1], layerId), shape, outline));
113
+ return entries;
114
+ }
115
+ function matchBranchLabel(input, layerId) {
116
+ if (typeof input === "string" || typeof input === "number")
117
+ return String(input);
118
+ if (Array.isArray(input) &&
119
+ input.length > 0 &&
120
+ input.every((item) => typeof item === "string" || typeof item === "number")) {
121
+ return input.map((item) => String(item)).join(", ");
122
+ }
123
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": match branch inputs must be strings, numbers, or arrays of them.`);
124
+ }
125
+ function caseToEntries(expression, layerId, shape, outline) {
126
+ const body = expression.slice(1);
127
+ if (body.length < 3 || body.length % 2 === 0) {
128
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": case expression must have condition/output pairs plus a fallback color.`);
129
+ }
130
+ const entries = [];
131
+ for (let index = 0; index < body.length - 1; index += 2) {
132
+ const label = caseConditionLabel(body[index], layerId);
133
+ const color = requireLiteralColor(body[index + 1], layerId);
134
+ entries.push(makeEntry(label, color, shape, outline));
135
+ }
136
+ entries.push(makeEntry(HONUA_LEGEND_FALLBACK_LABEL, requireLiteralColor(body[body.length - 1], layerId), shape, outline));
137
+ return entries;
138
+ }
139
+ function caseConditionLabel(condition, layerId) {
140
+ if (Array.isArray(condition) && condition.length === 3 && condition[0] === "==") {
141
+ const compared = condition[2];
142
+ if (isGetExpression(condition[1]) &&
143
+ (typeof compared === "string" || typeof compared === "number" || typeof compared === "boolean")) {
144
+ return String(compared);
145
+ }
146
+ }
147
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": case conditions must be simple equalities ["==", ["get", <attribute>], <literal>].`);
148
+ }
149
+ function stepToEntries(expression, layerId, shape, outline) {
150
+ requireGetInput(expression[1], layerId, "step");
151
+ const body = expression.slice(2);
152
+ if (body.length < 3 || body.length % 2 === 0) {
153
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": step expression must have a base color plus stop/color pairs.`);
154
+ }
155
+ const stops = [];
156
+ const colors = [requireLiteralColor(body[0], layerId)];
157
+ for (let index = 1; index < body.length; index += 2) {
158
+ const stop = body[index];
159
+ if (typeof stop !== "number") {
160
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": step stops must be numeric literals.`);
161
+ }
162
+ stops.push(stop);
163
+ colors.push(requireLiteralColor(body[index + 1], layerId));
164
+ }
165
+ return colors.map((color, index) => {
166
+ const lower = index === 0 ? undefined : stops[index - 1];
167
+ const upper = index < stops.length ? stops[index] : undefined;
168
+ const label = lower === undefined
169
+ ? `< ${String(upper)}`
170
+ : upper === undefined
171
+ ? `≥ ${String(lower)}`
172
+ : `${String(lower)}–${String(upper)}`;
173
+ return makeEntry(label, color, shape, outline);
174
+ });
175
+ }
176
+ function requireGetInput(input, layerId, operator) {
177
+ if (!isGetExpression(input)) {
178
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": ${operator} input must be a ["get", <attribute>] expression on a feature attribute.`);
179
+ }
180
+ }
181
+ function isGetExpression(value) {
182
+ return Array.isArray(value) && value[0] === "get" && typeof value[1] === "string";
183
+ }
184
+ function requireLiteralColor(value, layerId) {
185
+ const color = literalColor(value);
186
+ if (color === undefined) {
187
+ throw new HonuaLegendDeriveError("unsupported-expression", `Layer "${layerId}": expression outputs must be literal color strings; got ${JSON.stringify(value)}.`);
188
+ }
189
+ return color;
190
+ }
191
+ function literalColor(value) {
192
+ return typeof value === "string" && value.length > 0 ? value : undefined;
193
+ }
194
+ function makeEntry(label, fill, shape, outline) {
195
+ return { label, color: outline === undefined ? fill : { fill, outline }, shape };
196
+ }