@honua/app-platform 0.1.2-beta.0 → 0.1.7-beta.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 (400) hide show
  1. package/app/index.d.ts.map +1 -1
  2. package/app/index.js +4 -0
  3. package/collaboration/client.d.ts.map +1 -1
  4. package/connect-url-safety.d.ts +53 -0
  5. package/connect-url-safety.js +189 -0
  6. package/contract/discovery.d.ts +34 -0
  7. package/contract/discovery.d.ts.map +1 -1
  8. package/contract/index.d.ts +7 -5
  9. package/contract/index.d.ts.map +1 -1
  10. package/contract/index.js +3 -2
  11. package/contract/pmtiles.d.ts +10 -1
  12. package/contract/pmtiles.d.ts.map +1 -1
  13. package/contract/pmtiles.js +10 -2
  14. package/contract/protocol-module.d.ts +84 -9
  15. package/contract/protocol-module.d.ts.map +1 -1
  16. package/contract/query-filter-fes.d.ts +18 -0
  17. package/contract/query-filter-fes.d.ts.map +1 -0
  18. package/contract/query-filter-fes.js +122 -0
  19. package/contract/query-filter.d.ts +300 -0
  20. package/contract/query-filter.d.ts.map +1 -0
  21. package/contract/query-filter.js +883 -0
  22. package/contract/schema.d.ts +12 -0
  23. package/contract/schema.d.ts.map +1 -1
  24. package/contract/schema.js +34 -0
  25. package/contract/source-capability-support.d.ts.map +1 -1
  26. package/contract/source-capability-support.js +15 -3
  27. package/contract/source.d.ts +45 -25
  28. package/contract/source.d.ts.map +1 -1
  29. package/contract/source.js +719 -479
  30. package/contract/types.d.ts +88 -19
  31. package/contract/types.d.ts.map +1 -1
  32. package/contract/types.js +4 -0
  33. package/contract/widget-source.d.ts.map +1 -1
  34. package/controls/basemap-switcher.d.ts +19 -11
  35. package/controls/basemap-switcher.d.ts.map +1 -1
  36. package/controls/basemap-switcher.js +58 -25
  37. package/controls/catalog.d.ts +105 -0
  38. package/controls/catalog.d.ts.map +1 -0
  39. package/controls/catalog.js +341 -0
  40. package/controls/element-utils.d.ts +9 -0
  41. package/controls/element-utils.d.ts.map +1 -1
  42. package/controls/element-utils.js +17 -0
  43. package/controls/index.d.ts +29 -8
  44. package/controls/index.d.ts.map +1 -1
  45. package/controls/index.js +26 -8
  46. package/controls/layer-list.d.ts +13 -5
  47. package/controls/layer-list.d.ts.map +1 -1
  48. package/controls/layer-list.js +72 -15
  49. package/controls/legend.d.ts +32 -5
  50. package/controls/legend.d.ts.map +1 -1
  51. package/controls/legend.js +95 -25
  52. package/controls/qualification.d.ts +152 -0
  53. package/controls/qualification.d.ts.map +1 -0
  54. package/controls/qualification.js +1265 -0
  55. package/controls/registry.d.ts +104 -0
  56. package/controls/registry.d.ts.map +1 -0
  57. package/controls/registry.js +150 -0
  58. package/controls/swipe-control.d.ts +6 -1
  59. package/controls/swipe-control.d.ts.map +1 -1
  60. package/controls/swipe-control.js +82 -20
  61. package/core/client.d.ts +51 -21
  62. package/core/client.d.ts.map +1 -1
  63. package/core/client.js +234 -54
  64. package/core/error-classifications.d.ts +23 -0
  65. package/core/error-classifications.d.ts.map +1 -1
  66. package/core/error-classifications.js +23 -0
  67. package/core/error-code-registry.d.ts +24 -1
  68. package/core/error-code-registry.d.ts.map +1 -1
  69. package/core/error-code-registry.js +23 -0
  70. package/core/error-envelope.js +2 -0
  71. package/core/errors.d.ts +2 -2
  72. package/core/errors.d.ts.map +1 -1
  73. package/core/errors.js +1 -1
  74. package/core/geoparquet-sql.d.ts +69 -5
  75. package/core/geoparquet-sql.d.ts.map +1 -1
  76. package/core/geoparquet-sql.js +327 -10
  77. package/core/odata-write-codec.d.ts.map +1 -1
  78. package/core/odata-write-codec.js +0 -1
  79. package/core/odata.d.ts +6 -0
  80. package/core/odata.d.ts.map +1 -1
  81. package/core/odata.js +6 -1
  82. package/core/ogc-processes.d.ts +182 -25
  83. package/core/ogc-processes.d.ts.map +1 -1
  84. package/core/ogc-processes.js +602 -30
  85. package/core/process-runner.d.ts +8 -1
  86. package/core/process-runner.d.ts.map +1 -1
  87. package/core/process-runner.js +1 -0
  88. package/core/protocol-transport.d.ts +2 -0
  89. package/core/protocol-transport.d.ts.map +1 -1
  90. package/core/stac.d.ts +32 -0
  91. package/core/stac.d.ts.map +1 -1
  92. package/core/stac.js +158 -23
  93. package/core/surfaces.d.ts.map +1 -1
  94. package/core/surfaces.js +273 -68
  95. package/core/types.d.ts +138 -11
  96. package/core/types.d.ts.map +1 -1
  97. package/core/wfs-axis-order.d.ts +18 -0
  98. package/core/wfs-axis-order.d.ts.map +1 -0
  99. package/core/wfs-axis-order.js +108 -0
  100. package/core/wfs-capabilities.d.ts +65 -24
  101. package/core/wfs-capabilities.d.ts.map +1 -1
  102. package/core/wfs-capabilities.js +237 -27
  103. package/core/wfs-filter.d.ts +26 -3
  104. package/core/wfs-filter.d.ts.map +1 -1
  105. package/core/wfs-filter.js +48 -53
  106. package/core/wfs-protocol-error.d.ts +12 -0
  107. package/core/wfs-protocol-error.d.ts.map +1 -0
  108. package/core/wfs-protocol-error.js +13 -0
  109. package/core/wfs.d.ts +53 -1
  110. package/core/wfs.d.ts.map +1 -1
  111. package/core/wfs.js +251 -29
  112. package/core/wms-feature-info.d.ts +92 -0
  113. package/core/wms-feature-info.d.ts.map +1 -0
  114. package/core/wms-feature-info.js +285 -0
  115. package/core/wms.d.ts +9 -0
  116. package/core/wms.d.ts.map +1 -1
  117. package/core/wms.js +17 -5
  118. package/esri-compat/event-bus.d.ts +20 -0
  119. package/esri-compat/event-bus.d.ts.map +1 -1
  120. package/esri-compat/feature-filter.d.ts +46 -1
  121. package/esri-compat/feature-filter.d.ts.map +1 -1
  122. package/esri-compat/feature-filter.js +49 -0
  123. package/esri-compat/geojson-layer.d.ts +4 -2
  124. package/esri-compat/geojson-layer.d.ts.map +1 -1
  125. package/esri-compat/geojson-layer.js +4 -2
  126. package/esri-compat/identity-manager.js +2 -2
  127. package/esri-compat/imagery-layer.d.ts +2 -1
  128. package/esri-compat/imagery-layer.d.ts.map +1 -1
  129. package/esri-compat/imagery-layer.js +2 -1
  130. package/esri-compat/layer-list.d.ts +8 -1
  131. package/esri-compat/layer-list.d.ts.map +1 -1
  132. package/esri-compat/layer-list.js +11 -4
  133. package/esri-compat/legend.d.ts.map +1 -1
  134. package/esri-compat/legend.js +1 -1
  135. package/esri-compat/locator.d.ts +297 -0
  136. package/esri-compat/locator.d.ts.map +1 -0
  137. package/esri-compat/locator.js +579 -0
  138. package/esri-compat/map-image-layer.d.ts.map +1 -1
  139. package/esri-compat/map-view.d.ts.map +1 -1
  140. package/esri-compat/map-view.js +1 -1
  141. package/esri-compat/scene-view.d.ts.map +1 -1
  142. package/esri-compat/time-slider.d.ts +29 -0
  143. package/esri-compat/time-slider.d.ts.map +1 -1
  144. package/esri-compat/time-slider.js +117 -0
  145. package/esri-compat/wfs-layer.d.ts +2 -1
  146. package/esri-compat/wfs-layer.d.ts.map +1 -1
  147. package/esri-compat/wfs-layer.js +2 -1
  148. package/esri-compat/widget-host.d.ts +42 -6
  149. package/esri-compat/widget-host.d.ts.map +1 -1
  150. package/esri-compat/widget-host.js +99 -10
  151. package/generated-app/projection.d.ts.map +1 -1
  152. package/generated-app/runtime.d.ts.map +1 -1
  153. package/interactions/declarative-contract.d.ts +149 -0
  154. package/interactions/declarative-contract.d.ts.map +1 -0
  155. package/interactions/declarative-contract.js +293 -0
  156. package/interactions/declarative.d.ts +198 -0
  157. package/interactions/declarative.d.ts.map +1 -0
  158. package/interactions/declarative.js +470 -0
  159. package/interactions/feature-state.d.ts +7 -0
  160. package/interactions/feature-state.d.ts.map +1 -1
  161. package/interactions/feature-state.js +10 -2
  162. package/map/data-to-map-bridge.d.ts +1 -1
  163. package/map/data-to-map-bridge.d.ts.map +1 -1
  164. package/map/data-to-map-bridge.js +1 -2
  165. package/map/honua-map.d.ts.map +1 -1
  166. package/map/honua-map.js +1 -1
  167. package/map/index.d.ts +2 -0
  168. package/map/index.d.ts.map +1 -1
  169. package/map/index.js +2 -0
  170. package/map/maplibre-target.js +1 -1
  171. package/map/realtime-reconciliation-adapter.d.ts +98 -0
  172. package/map/realtime-reconciliation-adapter.d.ts.map +1 -0
  173. package/map/realtime-reconciliation-adapter.js +84 -0
  174. package/map/temporal-playback.d.ts +25 -0
  175. package/map/temporal-playback.d.ts.map +1 -1
  176. package/map/temporal-playback.js +29 -1
  177. package/operator/workspace/workspace.d.ts.map +1 -1
  178. package/operator/workspace/workspace.js +0 -2
  179. package/package.json +4 -3
  180. package/query-planner/canonical-filter.d.ts +30 -0
  181. package/query-planner/canonical-filter.d.ts.map +1 -0
  182. package/query-planner/canonical-filter.js +30 -0
  183. package/query-planner/columnar-plan.d.ts +63 -0
  184. package/query-planner/columnar-plan.d.ts.map +1 -0
  185. package/query-planner/columnar-plan.js +94 -0
  186. package/query-planner/diagnostics.d.ts +3 -3
  187. package/query-planner/diagnostics.d.ts.map +1 -1
  188. package/query-planner/diagnostics.js +17 -4
  189. package/query-planner/duckdb.d.ts.map +1 -1
  190. package/query-planner/duckdb.js +16 -2
  191. package/query-planner/execution-context.d.ts.map +1 -1
  192. package/query-planner/execution-context.js +3 -1
  193. package/query-planner/executor.d.ts.map +1 -1
  194. package/query-planner/executor.js +7 -1
  195. package/query-planner/geoservices.d.ts.map +1 -1
  196. package/query-planner/geoservices.js +24 -5
  197. package/query-planner/grpc.d.ts.map +1 -1
  198. package/query-planner/grpc.js +29 -5
  199. package/query-planner/index.d.ts +20 -5
  200. package/query-planner/index.d.ts.map +1 -1
  201. package/query-planner/index.js +16 -3
  202. package/query-planner/ir.d.ts +6 -1
  203. package/query-planner/ir.d.ts.map +1 -1
  204. package/query-planner/ir.js +63 -1
  205. package/query-planner/odata-protocol-module.d.ts +54 -0
  206. package/query-planner/odata-protocol-module.d.ts.map +1 -0
  207. package/query-planner/odata-protocol-module.js +199 -0
  208. package/query-planner/odata-v1.d.ts +23 -0
  209. package/query-planner/odata-v1.d.ts.map +1 -0
  210. package/query-planner/odata-v1.js +202 -0
  211. package/query-planner/odata.d.ts +0 -3
  212. package/query-planner/odata.d.ts.map +1 -1
  213. package/query-planner/odata.js +0 -143
  214. package/query-planner/ogc-features.d.ts.map +1 -1
  215. package/query-planner/ogc-features.js +23 -1
  216. package/query-planner/planner.d.ts +2 -2
  217. package/query-planner/planner.d.ts.map +1 -1
  218. package/query-planner/planner.js +146 -27
  219. package/query-planner/representation.d.ts +59 -0
  220. package/query-planner/representation.d.ts.map +1 -0
  221. package/query-planner/representation.js +140 -0
  222. package/query-planner/types.d.ts +153 -3
  223. package/query-planner/types.d.ts.map +1 -1
  224. package/query-planner/wfs-protocol-module.d.ts +57 -0
  225. package/query-planner/wfs-protocol-module.d.ts.map +1 -0
  226. package/query-planner/wfs-protocol-module.js +731 -0
  227. package/query-planner/wfs-v1.d.ts +41 -0
  228. package/query-planner/wfs-v1.d.ts.map +1 -0
  229. package/query-planner/wfs-v1.js +366 -0
  230. package/query-planner/wfs.d.ts +1 -3
  231. package/query-planner/wfs.d.ts.map +1 -1
  232. package/query-planner/wfs.js +1 -70
  233. package/realtime/checkpoint-store.d.ts +206 -0
  234. package/realtime/checkpoint-store.d.ts.map +1 -0
  235. package/realtime/checkpoint-store.js +504 -0
  236. package/realtime/honua-server.d.ts +8 -0
  237. package/realtime/honua-server.d.ts.map +1 -1
  238. package/realtime/honua-server.js +123 -14
  239. package/realtime/index.d.ts +4 -0
  240. package/realtime/index.d.ts.map +1 -1
  241. package/realtime/index.js +2 -0
  242. package/realtime/reconciliation.d.ts +245 -0
  243. package/realtime/reconciliation.d.ts.map +1 -0
  244. package/realtime/reconciliation.js +377 -0
  245. package/realtime/resumable-transport.d.ts.map +1 -1
  246. package/realtime/sse.d.ts.map +1 -1
  247. package/realtime/sse.js +7 -1
  248. package/realtime/websocket.d.ts.map +1 -1
  249. package/realtime/wire.d.ts +2 -1
  250. package/realtime/wire.d.ts.map +1 -1
  251. package/realtime/wire.js +24 -8
  252. package/replica-sync/errors.d.ts +19 -1
  253. package/replica-sync/errors.d.ts.map +1 -1
  254. package/replica-sync/errors.js +16 -0
  255. package/replica-sync/geoservices.d.ts +260 -0
  256. package/replica-sync/geoservices.d.ts.map +1 -0
  257. package/replica-sync/geoservices.js +1093 -0
  258. package/replica-sync/index.d.ts +5 -1
  259. package/replica-sync/index.d.ts.map +1 -1
  260. package/replica-sync/index.js +3 -1
  261. package/replica-sync/transport-conformance.d.ts +58 -0
  262. package/replica-sync/transport-conformance.d.ts.map +1 -0
  263. package/replica-sync/transport-conformance.js +265 -0
  264. package/replica-sync/types.d.ts +22 -0
  265. package/replica-sync/types.d.ts.map +1 -1
  266. package/runtime/index.d.ts +6 -2
  267. package/runtime/index.d.ts.map +1 -1
  268. package/runtime/index.js +3 -1
  269. package/runtime/load-package.d.ts +24 -0
  270. package/runtime/load-package.d.ts.map +1 -1
  271. package/runtime/load-package.js +45 -1
  272. package/runtime/maplibre-renderer.d.ts +11 -0
  273. package/runtime/maplibre-renderer.d.ts.map +1 -1
  274. package/runtime/maplibre-renderer.js +32 -7
  275. package/runtime/offline-region-protocol.d.ts +73 -0
  276. package/runtime/offline-region-protocol.d.ts.map +1 -0
  277. package/runtime/offline-region-protocol.js +63 -0
  278. package/runtime/offline-region-style.d.ts +78 -0
  279. package/runtime/offline-region-style.d.ts.map +1 -0
  280. package/runtime/offline-region-style.js +147 -0
  281. package/runtime/pmtiles-protocol.d.ts +7 -8
  282. package/runtime/pmtiles-protocol.d.ts.map +1 -1
  283. package/runtime/pmtiles-protocol.js +19 -66
  284. package/runtime/protocol-registry.d.ts +55 -0
  285. package/runtime/protocol-registry.d.ts.map +1 -0
  286. package/runtime/protocol-registry.js +103 -0
  287. package/runtime/runtime.d.ts +2 -0
  288. package/runtime/runtime.d.ts.map +1 -1
  289. package/runtime/runtime.js +6 -1
  290. package/runtime/style-compose.d.ts.map +1 -1
  291. package/runtime/style-compose.js +78 -9
  292. package/scene-workspace/analysis-widgets.d.ts +4 -2
  293. package/scene-workspace/analysis-widgets.d.ts.map +1 -1
  294. package/scene-workspace/analysis-widgets.js +4 -2
  295. package/scene-workspace/camera-correspondence.d.ts +151 -0
  296. package/scene-workspace/camera-correspondence.d.ts.map +1 -0
  297. package/scene-workspace/camera-correspondence.js +220 -0
  298. package/scene-workspace/cesium-adapter.d.ts +230 -29
  299. package/scene-workspace/cesium-adapter.d.ts.map +1 -1
  300. package/scene-workspace/cesium-adapter.js +741 -56
  301. package/scene-workspace/cesium-mount.d.ts +205 -0
  302. package/scene-workspace/cesium-mount.d.ts.map +1 -0
  303. package/scene-workspace/cesium-mount.js +392 -0
  304. package/scene-workspace/cesium-scene-owner.d.ts +160 -0
  305. package/scene-workspace/cesium-scene-owner.d.ts.map +1 -0
  306. package/scene-workspace/cesium-scene-owner.js +205 -0
  307. package/scene-workspace/cesium-state-sync.d.ts +101 -0
  308. package/scene-workspace/cesium-state-sync.d.ts.map +1 -0
  309. package/scene-workspace/cesium-state-sync.js +432 -0
  310. package/scene-workspace/cesium-time.d.ts +346 -0
  311. package/scene-workspace/cesium-time.d.ts.map +1 -0
  312. package/scene-workspace/cesium-time.js +403 -0
  313. package/scene-workspace/index.d.ts +42 -10
  314. package/scene-workspace/index.d.ts.map +1 -1
  315. package/scene-workspace/index.js +32 -7
  316. package/scene-workspace/maplibre-state-sync.d.ts +112 -0
  317. package/scene-workspace/maplibre-state-sync.d.ts.map +1 -0
  318. package/scene-workspace/maplibre-state-sync.js +400 -0
  319. package/scene-workspace/primitives.d.ts +237 -3
  320. package/scene-workspace/primitives.d.ts.map +1 -1
  321. package/scene-workspace/primitives.js +1087 -17
  322. package/scene-workspace/scene-discovery.d.ts +5 -2
  323. package/scene-workspace/scene-discovery.d.ts.map +1 -1
  324. package/scene-workspace/scene-discovery.js +5 -2
  325. package/scene-workspace/scene-view.d.ts +5 -2
  326. package/scene-workspace/scene-view.d.ts.map +1 -1
  327. package/scene-workspace/scene-view.js +5 -2
  328. package/scene-workspace/source-to-cesium.d.ts +141 -8
  329. package/scene-workspace/source-to-cesium.d.ts.map +1 -1
  330. package/scene-workspace/source-to-cesium.js +497 -72
  331. package/scene-workspace/state-sync-port-kit.d.ts +156 -0
  332. package/scene-workspace/state-sync-port-kit.d.ts.map +1 -0
  333. package/scene-workspace/state-sync-port-kit.js +319 -0
  334. package/scene-workspace/state-sync.d.ts +34 -1
  335. package/scene-workspace/state-sync.d.ts.map +1 -1
  336. package/scene-workspace/state-sync.js +48 -0
  337. package/scene-workspace/types.d.ts +8 -0
  338. package/scene-workspace/types.d.ts.map +1 -1
  339. package/scene-workspace/types.js +2 -0
  340. package/scene-workspace/workspace.d.ts +12 -1
  341. package/scene-workspace/workspace.d.ts.map +1 -1
  342. package/scene-workspace/workspace.js +13 -0
  343. package/studio/index.d.ts +24 -7
  344. package/studio/index.d.ts.map +1 -1
  345. package/studio/index.js +21 -7
  346. package/studio/lifecycle-client.d.ts +164 -0
  347. package/studio/lifecycle-client.d.ts.map +1 -0
  348. package/studio/lifecycle-client.js +299 -0
  349. package/studio/lifecycle-errors.d.ts +91 -0
  350. package/studio/lifecycle-errors.d.ts.map +1 -0
  351. package/studio/lifecycle-errors.js +77 -0
  352. package/studio/lifecycle-types.d.ts +321 -0
  353. package/studio/lifecycle-types.d.ts.map +1 -0
  354. package/studio/lifecycle-types.js +22 -0
  355. package/web-components/controller.d.ts.map +1 -1
  356. package/web-components/csp-styles.d.ts +6 -0
  357. package/web-components/csp-styles.d.ts.map +1 -0
  358. package/web-components/csp-styles.js +53 -0
  359. package/web-components/elements.d.ts +158 -2
  360. package/web-components/elements.d.ts.map +1 -1
  361. package/web-components/elements.js +1302 -215
  362. package/web-components/export-redaction.d.ts +252 -0
  363. package/web-components/export-redaction.d.ts.map +1 -0
  364. package/web-components/export-redaction.js +588 -0
  365. package/web-components/export.d.ts +417 -0
  366. package/web-components/export.d.ts.map +1 -0
  367. package/web-components/export.js +719 -0
  368. package/web-components/feature-editor-model.d.ts +265 -0
  369. package/web-components/feature-editor-model.d.ts.map +1 -0
  370. package/web-components/feature-editor-model.js +438 -0
  371. package/web-components/feature-editor-sketch.d.ts +125 -0
  372. package/web-components/feature-editor-sketch.d.ts.map +1 -0
  373. package/web-components/feature-editor-sketch.js +194 -0
  374. package/web-components/feature-editor-workflow.d.ts +286 -0
  375. package/web-components/feature-editor-workflow.d.ts.map +1 -0
  376. package/web-components/feature-editor-workflow.js +889 -0
  377. package/web-components/feature-editor.d.ts +83 -0
  378. package/web-components/feature-editor.d.ts.map +1 -0
  379. package/web-components/feature-editor.js +829 -0
  380. package/web-components/feature-table-engine.d.ts +465 -0
  381. package/web-components/feature-table-engine.d.ts.map +1 -0
  382. package/web-components/feature-table-engine.js +1360 -0
  383. package/web-components/feature-table-view.d.ts +95 -0
  384. package/web-components/feature-table-view.d.ts.map +1 -0
  385. package/web-components/feature-table-view.js +343 -0
  386. package/web-components/index.d.ts +34 -3
  387. package/web-components/index.d.ts.map +1 -1
  388. package/web-components/index.js +35 -2
  389. package/web-components/maplibre-renderer.d.ts.map +1 -1
  390. package/web-components/maplibre-renderer.js +13 -4
  391. package/web-components/measurement.d.ts +3 -1
  392. package/web-components/measurement.d.ts.map +1 -1
  393. package/web-components/measurement.js +62 -18
  394. package/web-components/time-slider.d.ts +122 -0
  395. package/web-components/time-slider.d.ts.map +1 -0
  396. package/web-components/time-slider.js +740 -0
  397. package/web-components/types.d.ts +310 -0
  398. package/web-components/types.d.ts.map +1 -1
  399. package/webmap/convert-label.js +0 -1
  400. package/webmap/convert-symbol.d.ts.map +1 -1
@@ -0,0 +1,341 @@
1
+ /**
2
+ * Canonical component catalog for the Honua custom-element kit
3
+ * (`@honua/sdk-js/controls` + `@honua/sdk-js/web-components`; both moving to
4
+ * `@honua/app-platform` per `docs/decisions/scope-split-and-1.0.md`).
5
+ *
6
+ * Tracked by issue #679 (parent epic #678 "app-platform component production
7
+ * readiness"): before either kit's custom elements can be considered one
8
+ * coherent, production-supported surface, every shipped tag needs exactly one
9
+ * documented owner, described once, regardless of which subpath (or which
10
+ * import order) a consumer reaches it through.
11
+ *
12
+ * This module is pure metadata — it holds no reference to the actual element
13
+ * classes and performs no `customElements` registration. Importing it never
14
+ * touches DOM globals and carries none of either kit's runtime weight (in
15
+ * particular, none of `web-components`' `src/core` / `src/runtime`
16
+ * dependency), so it is safe to import from any environment — SSR, workers,
17
+ * either kit's bundle, or a lint/doc tool introspecting the catalog — without
18
+ * pulling in the other kit's closure. {@link "./registry.js"} is the
19
+ * companion module that turns catalog entries into actual registrations.
20
+ *
21
+ * @module
22
+ */
23
+ /**
24
+ * The full component catalog: every custom-element tag shipped by either
25
+ * kit. Two tags — `honua-legend` and `honua-layer-list` — have two competing
26
+ * implementations (`controls` and `web-components`); each is represented as
27
+ * its own entry with `collidesWithIds` naming the other, and exactly one of
28
+ * the two is `canonical: true`.
29
+ */
30
+ export const HONUA_COMPONENT_CATALOG = [
31
+ // ── controls kit (@honua/sdk-js/controls) ──────────────────────────────
32
+ {
33
+ id: "controls.basemap-switcher",
34
+ tag: "honua-basemap-switcher",
35
+ source: "controls",
36
+ className: "HonuaBasemapSwitcherElement",
37
+ supportTier: "survival-tier",
38
+ canonical: true,
39
+ requiredAdapters: ["maplibre-map"],
40
+ events: ["change"],
41
+ collidesWithIds: [],
42
+ },
43
+ {
44
+ id: "controls.swipe-control",
45
+ tag: "honua-swipe-control",
46
+ source: "controls",
47
+ className: "HonuaSwipeControlElement",
48
+ supportTier: "survival-tier",
49
+ canonical: true,
50
+ requiredAdapters: ["maplibre-map"],
51
+ events: ["change"],
52
+ collidesWithIds: [],
53
+ },
54
+ {
55
+ id: "controls.legend",
56
+ tag: "honua-legend",
57
+ source: "controls",
58
+ className: "HonuaLegendElement",
59
+ supportTier: "survival-tier",
60
+ canonical: false,
61
+ requiredAdapters: ["maplibre-map"],
62
+ events: [],
63
+ collidesWithIds: ["web-components.legend"],
64
+ },
65
+ {
66
+ id: "controls.layer-list",
67
+ tag: "honua-layer-list",
68
+ source: "controls",
69
+ className: "HonuaLayerListElement",
70
+ supportTier: "survival-tier",
71
+ canonical: false,
72
+ requiredAdapters: ["maplibre-map"],
73
+ events: ["change"],
74
+ collidesWithIds: ["web-components.layer-list"],
75
+ },
76
+ // ── web-components kit (@honua/sdk-js/web-components) ──────────────────
77
+ {
78
+ id: "web-components.map",
79
+ tag: "honua-map",
80
+ source: "web-components",
81
+ className: "HonuaMapElement",
82
+ supportTier: "survival-tier",
83
+ canonical: true,
84
+ requiredAdapters: [],
85
+ events: [
86
+ "honua-controller-ready",
87
+ "honua-map-ready",
88
+ "honua-map-error",
89
+ "honua-map-click",
90
+ "honua-map-hover",
91
+ "honua-selection-change",
92
+ "honua-viewport-change",
93
+ ],
94
+ collidesWithIds: [],
95
+ },
96
+ {
97
+ id: "web-components.layer-list",
98
+ tag: "honua-layer-list",
99
+ source: "web-components",
100
+ className: "HonuaLayerListElement",
101
+ supportTier: "survival-tier",
102
+ canonical: true,
103
+ requiredAdapters: ["web-component-controller"],
104
+ events: ["honua-layer-visibility-change", "honua-layer-opacity-change", "honua-layer-order-change"],
105
+ collidesWithIds: ["controls.layer-list"],
106
+ },
107
+ {
108
+ id: "web-components.legend",
109
+ tag: "honua-legend",
110
+ source: "web-components",
111
+ className: "HonuaLegendElement",
112
+ supportTier: "survival-tier",
113
+ canonical: true,
114
+ requiredAdapters: ["web-component-controller"],
115
+ events: [],
116
+ collidesWithIds: ["controls.legend"],
117
+ },
118
+ {
119
+ id: "web-components.feature-table",
120
+ tag: "honua-feature-table",
121
+ source: "web-components",
122
+ className: "HonuaFeatureTableElement",
123
+ supportTier: "survival-tier",
124
+ canonical: true,
125
+ requiredAdapters: ["web-component-controller"],
126
+ events: ["honua-filter-change", "honua-selection-change", "honua-table-conflict"],
127
+ collidesWithIds: [],
128
+ },
129
+ {
130
+ id: "web-components.search",
131
+ tag: "honua-search",
132
+ source: "web-components",
133
+ className: "HonuaSearchElement",
134
+ supportTier: "survival-tier",
135
+ canonical: true,
136
+ requiredAdapters: ["web-component-controller"],
137
+ events: ["honua-search", "honua-selection-change", "honua-geocode-select"],
138
+ collidesWithIds: [],
139
+ },
140
+ {
141
+ id: "web-components.editor",
142
+ tag: "honua-editor",
143
+ source: "web-components",
144
+ className: "HonuaEditorElement",
145
+ supportTier: "survival-tier",
146
+ canonical: true,
147
+ requiredAdapters: ["web-component-controller"],
148
+ events: ["honua-edit-change"],
149
+ collidesWithIds: [],
150
+ },
151
+ {
152
+ id: "web-components.feature-editor",
153
+ tag: "honua-feature-editor",
154
+ source: "web-components",
155
+ className: "HonuaFeatureEditorElement",
156
+ supportTier: "production-tier",
157
+ canonical: true,
158
+ requiredAdapters: ["edit-capable-source"],
159
+ events: ["honua-feature-edit-change", "honua-feature-edit-commit"],
160
+ collidesWithIds: [],
161
+ },
162
+ {
163
+ id: "web-components.chart",
164
+ tag: "honua-chart",
165
+ source: "web-components",
166
+ className: "HonuaChartElement",
167
+ supportTier: "survival-tier",
168
+ canonical: true,
169
+ requiredAdapters: ["web-component-controller"],
170
+ events: [],
171
+ collidesWithIds: [],
172
+ },
173
+ {
174
+ id: "web-components.basemap-control",
175
+ tag: "honua-basemap-control",
176
+ source: "web-components",
177
+ className: "HonuaBasemapControlElement",
178
+ supportTier: "survival-tier",
179
+ canonical: true,
180
+ requiredAdapters: ["web-component-controller"],
181
+ events: ["honua-basemap-change"],
182
+ collidesWithIds: [],
183
+ },
184
+ {
185
+ id: "web-components.bookmarks",
186
+ tag: "honua-bookmarks",
187
+ source: "web-components",
188
+ className: "HonuaBookmarksElement",
189
+ supportTier: "survival-tier",
190
+ canonical: true,
191
+ requiredAdapters: ["web-component-controller"],
192
+ events: ["honua-bookmark-change", "honua-viewport-change"],
193
+ collidesWithIds: [],
194
+ },
195
+ {
196
+ id: "web-components.locate-control",
197
+ tag: "honua-locate-control",
198
+ source: "web-components",
199
+ className: "HonuaLocateControlElement",
200
+ supportTier: "survival-tier",
201
+ canonical: true,
202
+ requiredAdapters: ["web-component-controller"],
203
+ events: ["honua-locate-change", "honua-viewport-change"],
204
+ collidesWithIds: [],
205
+ },
206
+ {
207
+ id: "web-components.measure-control",
208
+ tag: "honua-measure-control",
209
+ source: "web-components",
210
+ className: "HonuaMeasureControlElement",
211
+ supportTier: "survival-tier",
212
+ canonical: true,
213
+ requiredAdapters: ["web-component-controller", "measurement-geometry-provider"],
214
+ events: ["honua-measure-change"],
215
+ collidesWithIds: [],
216
+ },
217
+ {
218
+ id: "web-components.measurement",
219
+ tag: "honua-measurement",
220
+ source: "web-components",
221
+ className: "HonuaMeasurementElement",
222
+ supportTier: "survival-tier",
223
+ canonical: true,
224
+ requiredAdapters: [],
225
+ events: ["honua-measure-change"],
226
+ collidesWithIds: [],
227
+ },
228
+ {
229
+ id: "web-components.time-slider",
230
+ tag: "honua-time-slider",
231
+ source: "web-components",
232
+ className: "HonuaTimeSliderElement",
233
+ supportTier: "survival-tier",
234
+ canonical: true,
235
+ // The temporal playback controller (`createTemporalPlayback`, issue #497)
236
+ // is the required adapter: the element is a view over it and renders an
237
+ // honest degraded panel until one is bound.
238
+ requiredAdapters: ["temporal-playback-controller"],
239
+ events: ["honua-time-change", "honua-time-playback-change"],
240
+ collidesWithIds: [],
241
+ },
242
+ {
243
+ id: "web-components.sketch-control",
244
+ tag: "honua-sketch-control",
245
+ source: "web-components",
246
+ className: "HonuaSketchControlElement",
247
+ supportTier: "survival-tier",
248
+ canonical: true,
249
+ requiredAdapters: ["web-component-controller", "sketch-geometry-provider"],
250
+ events: ["honua-sketch-change"],
251
+ collidesWithIds: [],
252
+ },
253
+ {
254
+ id: "web-components.print-export",
255
+ tag: "honua-print-export",
256
+ source: "web-components",
257
+ className: "HonuaPrintExportElement",
258
+ supportTier: "survival-tier",
259
+ canonical: true,
260
+ requiredAdapters: ["web-component-controller"],
261
+ events: ["honua-export"],
262
+ collidesWithIds: [],
263
+ },
264
+ {
265
+ id: "web-components.map-status",
266
+ tag: "honua-map-status",
267
+ source: "web-components",
268
+ className: "HonuaMapStatusElement",
269
+ supportTier: "survival-tier",
270
+ canonical: true,
271
+ requiredAdapters: ["web-component-controller"],
272
+ events: ["honua-fullscreen-change"],
273
+ collidesWithIds: [],
274
+ },
275
+ {
276
+ id: "web-components.action-panel",
277
+ tag: "honua-action-panel",
278
+ source: "web-components",
279
+ className: "HonuaActionPanelElement",
280
+ supportTier: "survival-tier",
281
+ canonical: true,
282
+ requiredAdapters: ["web-component-controller"],
283
+ events: ["honua-action"],
284
+ collidesWithIds: [],
285
+ },
286
+ ];
287
+ /** Looks up one catalog entry by its stable id. */
288
+ export function getComponentCatalogEntry(id) {
289
+ return HONUA_COMPONENT_CATALOG.find((entry) => entry.id === id);
290
+ }
291
+ /** All catalog entries, optionally filtered by kit. */
292
+ export function listComponentCatalogEntries(source) {
293
+ if (!source)
294
+ return HONUA_COMPONENT_CATALOG;
295
+ return HONUA_COMPONENT_CATALOG.filter((entry) => entry.source === source);
296
+ }
297
+ /** Every entry that registers `tag` (one entry unless the tag is contested). */
298
+ export function getComponentCatalogEntriesForTag(tag) {
299
+ return HONUA_COMPONENT_CATALOG.filter((entry) => entry.tag === tag);
300
+ }
301
+ /** The single canonical/default entry for `tag`, or `undefined` for an unknown tag. */
302
+ export function getCanonicalComponentCatalogEntry(tag) {
303
+ return HONUA_COMPONENT_CATALOG.find((entry) => entry.tag === tag && entry.canonical);
304
+ }
305
+ const DEPRECATED_COMPONENT_ALIASES = [
306
+ {
307
+ specifier: "@honua/sdk-js/controls",
308
+ canonicalReplacement: "@honua/app-platform/controls",
309
+ removedIn: "0.2.0",
310
+ note: "Moved to @honua/app-platform/controls per docs/decisions/scope-split-and-1.0.md. The @honua/sdk-js/controls re-export is retained through the 0.1.x line and removed in 0.2.0.",
311
+ },
312
+ {
313
+ specifier: "@honua/sdk-js/web-components",
314
+ canonicalReplacement: "@honua/app-platform/web-components",
315
+ removedIn: "0.2.0",
316
+ note: "Moved to @honua/app-platform/web-components per docs/decisions/scope-split-and-1.0.md. The @honua/sdk-js/web-components re-export is retained through the 0.1.x line and removed in 0.2.0.",
317
+ },
318
+ {
319
+ specifier: "controls.legend",
320
+ canonicalReplacement: "web-components.legend",
321
+ note: 'honua-legend\'s canonical/default registrant is the web-components (controller-driven) implementation. The controls (map-style-derive) implementation no longer auto-registers on import — call defineHonuaLegend() explicitly (or registerComponent("controls.legend")) to claim the tag with it instead.',
322
+ },
323
+ {
324
+ specifier: "controls.layer-list",
325
+ canonicalReplacement: "web-components.layer-list",
326
+ note: 'honua-layer-list\'s canonical/default registrant is the web-components (controller-driven) implementation. Call defineHonuaLayerList() explicitly (or registerComponent("controls.layer-list")) to claim the tag with the controls (overlay-definition) implementation instead.',
327
+ },
328
+ ];
329
+ /**
330
+ * Looks up migration guidance for a deprecated `@honua/sdk-js` component
331
+ * subpath (e.g. `"@honua/sdk-js/controls"`) or a contested-tag catalog id
332
+ * (e.g. `"controls.legend"`). Returns `undefined` for specifiers the catalog
333
+ * has no recorded alias for.
334
+ */
335
+ export function describeDeprecatedComponentImport(specifier) {
336
+ return DEPRECATED_COMPONENT_ALIASES.find((alias) => alias.specifier === specifier);
337
+ }
338
+ /** Every recorded deprecated component import/alias and its canonical replacement. */
339
+ export function listDeprecatedComponentImports() {
340
+ return DEPRECATED_COMPONENT_ALIASES;
341
+ }
@@ -18,6 +18,8 @@ export declare const globalDom: typeof globalThis & {
18
18
  HTMLElement?: typeof HTMLElement;
19
19
  CustomEvent?: typeof CustomEvent;
20
20
  customElements?: CustomElementRegistry;
21
+ getComputedStyle?: typeof getComputedStyle;
22
+ CSSStyleSheet?: typeof CSSStyleSheet;
21
23
  };
22
24
  export declare const HTMLElementBase: typeof HTMLElement;
23
25
  /**
@@ -45,4 +47,11 @@ export declare function listenForHonuaMapReady(element: HostElementLike, assign:
45
47
  export declare function resolveHonuaMapFromContext(element: HostElementLike): unknown;
46
48
  export declare function escapeHtml(value: string): string;
47
49
  export declare function escapeAttribute(value: string): string;
50
+ interface ShadowRenderRoot {
51
+ innerHTML: string;
52
+ adoptedStyleSheets?: CSSStyleSheet[];
53
+ }
54
+ /** Render controls with a constructable stylesheet when CSP-safe DOM APIs exist. */
55
+ export declare function renderShadowRoot(root: ShadowRenderRoot, cssText: string, markup: string): void;
56
+ export {};
48
57
  //# sourceMappingURL=element-utils.d.ts.map
@@ -1 +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"}
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;IACvC,gBAAgB,CAAC,EAAE,OAAO,gBAAgB,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,aAAa,CAAC;CACtC,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;AAED,UAAU,gBAAgB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC;CACtC;AAID,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAe9F"}
@@ -76,3 +76,20 @@ export function escapeHtml(value) {
76
76
  export function escapeAttribute(value) {
77
77
  return escapeHtml(value);
78
78
  }
79
+ const adoptedSheets = new WeakMap();
80
+ /** Render controls with a constructable stylesheet when CSP-safe DOM APIs exist. */
81
+ export function renderShadowRoot(root, cssText, markup) {
82
+ const StyleSheet = globalDom.CSSStyleSheet;
83
+ if (StyleSheet && Array.isArray(root.adoptedStyleSheets) && typeof StyleSheet.prototype.replaceSync === "function") {
84
+ let sheet = adoptedSheets.get(root);
85
+ if (!sheet) {
86
+ sheet = new StyleSheet();
87
+ adoptedSheets.set(root, sheet);
88
+ root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];
89
+ }
90
+ sheet.replaceSync(cssText);
91
+ root.innerHTML = markup;
92
+ return;
93
+ }
94
+ root.innerHTML = `<style>${cssText}</style>${markup}`;
95
+ }
@@ -2,19 +2,34 @@
2
2
  * Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
3
3
  * framework-free custom elements for apps built on the native lane
4
4
  * (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
5
- * switcher, the legend, and the layer list.
5
+ * switcher, the legend, the layer list, and the swipe control.
6
6
  *
7
7
  * This entry is intentionally independent of the SDK core bundle (the same
8
8
  * posture as `@honua/sdk-js/esri-compat`): it imports nothing from
9
9
  * `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
10
10
  * drive any MapLibre `Map` through a duck-typed interface.
11
11
  *
12
- * Importing this module registers the basemap switcher, legend, and swipe
13
- * control when a browser `customElements` registry is present. Node imports are
12
+ * Importing this module registers the basemap switcher and the swipe control
13
+ * when a browser `customElements` registry is present. Node imports are
14
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.
15
+ * The legend and the layer list are opt-in via {@link defineHonuaLegend} /
16
+ * {@link defineHonuaLayerList} — both tags also have a controller-driven
17
+ * implementation in `@honua/sdk-js/web-components`, which is each tag's
18
+ * canonical/default registrant (see `./catalog.js`). Issue #679 consolidated
19
+ * component ownership so importing any combination of `./controls` and
20
+ * `./web-components`, in any order, always registers the same tags with the
21
+ * same constructors — claiming a controls-kit implementation for a contested
22
+ * tag is now always an explicit call, never an import-order accident.
23
+ *
24
+ * `./catalog.js` and `./registry.js` (re-exported below) are the
25
+ * consolidated component catalog and typed registration surface spanning
26
+ * both kits: `HONUA_COMPONENT_CATALOG` describes every shipped tag's
27
+ * ownership, support tier, required adapters, and events, and
28
+ * `registerComponent` / `registerComponents` / `registerAllComponents` /
29
+ * `createComponentRegistry` register by catalog id — individually, as a
30
+ * named subset, as the full canonical set, or against an isolated registry —
31
+ * regardless of which subpath (`./controls` or `./web-components`) a caller
32
+ * imports them from.
18
33
  *
19
34
  * @experimental This entrypoint is not yet covered by the SDK's semver
20
35
  * contract — the surface may change in any minor release prior to `1.0.0`.
@@ -23,11 +38,17 @@
23
38
  import "./basemap-switcher.js";
24
39
  import "./swipe-control.js";
25
40
  export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
26
- export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
41
+ export { HonuaBasemapSwitcherElement, defineHonuaBasemapSwitcher, defineHonuaControls } from "./basemap-switcher.js";
42
+ export { HONUA_COMPONENT_CATALOG, describeDeprecatedComponentImport, getCanonicalComponentCatalogEntry, getComponentCatalogEntriesForTag, getComponentCatalogEntry, listComponentCatalogEntries, listDeprecatedComponentImports, } from "./catalog.js";
43
+ export type { HonuaComponentCatalogEntry, HonuaComponentSource, HonuaComponentSupportTier, HonuaDeprecatedComponentDiagnostic, } from "./catalog.js";
27
44
  export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
28
45
  export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
29
46
  export type { HonuaLegendDeriveErrorCode } from "./legend-derive.js";
30
- export { HonuaLegendElement } from "./legend.js";
47
+ export { HonuaLegendElement, defineHonuaLegend } from "./legend.js";
48
+ export { HONUA_COMPONENT_QUALIFICATION_DATA_VERSION, HONUA_COMPONENT_QUALIFICATION_GATES, HONUA_COMPONENT_QUALIFICATION_STATUSES, describeComponentQualificationGate, getComponentQualification, isComponentProductionQualified, listOpenQualificationGates, listComponentQualifications, summarizeComponentQualification, } from "./qualification.js";
49
+ export type { HonuaComponentQualification, HonuaComponentQualificationCell, HonuaComponentQualificationGate, HonuaComponentQualificationGateId, HonuaComponentQualificationRequirement, HonuaComponentQualificationStatus, HonuaComponentQualificationSummary, } from "./qualification.js";
50
+ export { HonuaComponentCatalogError, createComponentRegistry, registerAllComponents, registerComponent, registerComponents, } from "./registry.js";
51
+ export type { HonuaComponentCatalogId, HonuaComponentRegistrationOptions, HonuaComponentRegistry, } from "./registry.js";
31
52
  export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
32
53
  export type { HonuaBasemapDefinition, HonuaBasemapKind, HonuaBasemapLayerSpecification, HonuaBasemapSwitcherChangeDetail, HonuaBasemapSwitcherMap, HonuaLayerListChangeDetail, HonuaLayerListMap, HonuaLayerListOverlay, HonuaLegendEntry, HonuaLegendMap, HonuaLegendSection, HonuaLegendSwatchColor, HonuaLegendSwatchShape, HonuaSwipeChangeDetail, HonuaSwipeMap, HonuaSwipeOrientation, } from "./types.js";
33
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrH,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EACjC,iCAAiC,EACjC,gCAAgC,EAChC,wBAAwB,EACxB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,kCAAkC,GACnC,MAAM,cAAc,CAAC;AACtB,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,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,0CAA0C,EAC1C,mCAAmC,EACnC,sCAAsC,EACtC,kCAAkC,EAClC,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,2BAA2B,EAC3B,+BAA+B,EAC/B,+BAA+B,EAC/B,iCAAiC,EACjC,sCAAsC,EACtC,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,uBAAuB,EACvB,iCAAiC,EACjC,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,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"}
package/controls/index.js CHANGED
@@ -2,19 +2,34 @@
2
2
  * Native Honua UI control kit (`@honua/sdk-js/controls`) — optional,
3
3
  * framework-free custom elements for apps built on the native lane
4
4
  * (HonuaClient + MapLibre). Tracked by issue #274; ships the basemap
5
- * switcher, the legend, and the layer list.
5
+ * switcher, the legend, the layer list, and the swipe control.
6
6
  *
7
7
  * This entry is intentionally independent of the SDK core bundle (the same
8
8
  * posture as `@honua/sdk-js/esri-compat`): it imports nothing from
9
9
  * `src/core`/`src/runtime` and has no dependency on `maplibre-gl` — controls
10
10
  * drive any MapLibre `Map` through a duck-typed interface.
11
11
  *
12
- * Importing this module registers the basemap switcher, legend, and swipe
13
- * control when a browser `customElements` registry is present. Node imports are
12
+ * Importing this module registers the basemap switcher and the swipe control
13
+ * when a browser `customElements` registry is present. Node imports are
14
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.
15
+ * The legend and the layer list are opt-in via {@link defineHonuaLegend} /
16
+ * {@link defineHonuaLayerList} — both tags also have a controller-driven
17
+ * implementation in `@honua/sdk-js/web-components`, which is each tag's
18
+ * canonical/default registrant (see `./catalog.js`). Issue #679 consolidated
19
+ * component ownership so importing any combination of `./controls` and
20
+ * `./web-components`, in any order, always registers the same tags with the
21
+ * same constructors — claiming a controls-kit implementation for a contested
22
+ * tag is now always an explicit call, never an import-order accident.
23
+ *
24
+ * `./catalog.js` and `./registry.js` (re-exported below) are the
25
+ * consolidated component catalog and typed registration surface spanning
26
+ * both kits: `HONUA_COMPONENT_CATALOG` describes every shipped tag's
27
+ * ownership, support tier, required adapters, and events, and
28
+ * `registerComponent` / `registerComponents` / `registerAllComponents` /
29
+ * `createComponentRegistry` register by catalog id — individually, as a
30
+ * named subset, as the full canonical set, or against an isolated registry —
31
+ * regardless of which subpath (`./controls` or `./web-components`) a caller
32
+ * imports them from.
18
33
  *
19
34
  * @experimental This entrypoint is not yet covered by the SDK's semver
20
35
  * contract — the surface may change in any minor release prior to `1.0.0`.
@@ -23,8 +38,11 @@
23
38
  import "./basemap-switcher.js";
24
39
  import "./swipe-control.js";
25
40
  export { HonuaBasemapStyleBinding } from "./basemap-style-binding.js";
26
- export { HonuaBasemapSwitcherElement, defineHonuaControls } from "./basemap-switcher.js";
41
+ export { HonuaBasemapSwitcherElement, defineHonuaBasemapSwitcher, defineHonuaControls } from "./basemap-switcher.js";
42
+ export { HONUA_COMPONENT_CATALOG, describeDeprecatedComponentImport, getCanonicalComponentCatalogEntry, getComponentCatalogEntriesForTag, getComponentCatalogEntry, listComponentCatalogEntries, listDeprecatedComponentImports, } from "./catalog.js";
27
43
  export { HonuaLayerListElement, defineHonuaLayerList } from "./layer-list.js";
28
44
  export { HonuaLegendDeriveError, deriveLegendEntries } from "./legend-derive.js";
29
- export { HonuaLegendElement } from "./legend.js";
45
+ export { HonuaLegendElement, defineHonuaLegend } from "./legend.js";
46
+ export { HONUA_COMPONENT_QUALIFICATION_DATA_VERSION, HONUA_COMPONENT_QUALIFICATION_GATES, HONUA_COMPONENT_QUALIFICATION_STATUSES, describeComponentQualificationGate, getComponentQualification, isComponentProductionQualified, listOpenQualificationGates, listComponentQualifications, summarizeComponentQualification, } from "./qualification.js";
47
+ export { HonuaComponentCatalogError, createComponentRegistry, registerAllComponents, registerComponent, registerComponents, } from "./registry.js";
30
48
  export { HonuaSwipeControlElement, defineHonuaSwipeControl } from "./swipe-control.js";
@@ -31,7 +31,10 @@
31
31
  * - `overlays` — JSON array of {@link HonuaLayerListOverlay} (the `overlays`
32
32
  * property is preferred for non-trivial configs).
33
33
  * - `for` — id of the map-providing element, see Wiring.
34
- * - `label` — accessible name of the list (default "Layers").
34
+ * - `label` — accessible name of the list (default "Layers"); reflects the
35
+ * `label` property.
36
+ * - `not-seeded-label` — fallback text for the disabled-row badge (default
37
+ * "Not seeded"); reflects `notSeededLabel`.
35
38
  * - `auto-refresh` — boolean; see Reactivity.
36
39
  *
37
40
  * ## CSS parts
@@ -58,6 +61,12 @@ export declare class HonuaLayerListElement extends HTMLElementBase {
58
61
  set map(map: HonuaLayerListMap | undefined);
59
62
  /** Wires the list to a MapLibre map. Equivalent to setting `.map`. */
60
63
  connect(map: HonuaLayerListMap): void;
64
+ /** Accessible name of the list. Reflects the `label` attribute. */
65
+ get label(): string;
66
+ set label(value: string | undefined);
67
+ /** Fallback text for an overlay whose style layers are not seeded. */
68
+ get notSeededLabel(): string;
69
+ set notSeededLabel(value: string | undefined);
61
70
  /** The registered overlay definitions. */
62
71
  get overlays(): readonly HonuaLayerListOverlay[];
63
72
  set overlays(overlays: readonly HonuaLayerListOverlay[]);
@@ -84,10 +93,9 @@ export declare class HonuaLayerListElement extends HTMLElementBase {
84
93
  * Unlike the other controls-kit elements, this is **opt-in** and is NOT run by
85
94
  * the blanket `defineHonuaControls()` / module-load auto-registration. The
86
95
  * `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:
96
+ * under the same tag and is that tag's canonical/default registrant (see
97
+ * `./catalog.js`), so callers who want the native, overlay-definition-driven
98
+ * layer list register it explicitly:
91
99
  *
92
100
  * ```ts
93
101
  * import { defineHonuaLayerList } from "@honua/sdk-js/controls";
@@ -1 +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"}
1
+ {"version":3,"file":"layer-list.d.ts","sourceRoot":"","sources":["../../../src/controls/layer-list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EACL,eAAe,EAOhB,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,mEAAmE;IACnE,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAIzC;IAED,sEAAsE;IACtE,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAIlD;IAED,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;CAkFzB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,wBAA2B,GAAG,IAAI,CAK9E"}