@honua/react 0.0.20-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +9 -0
  3. package/contract/analytics-sources.d.ts +149 -0
  4. package/contract/analytics-sources.d.ts.map +1 -0
  5. package/contract/analytics-sources.js +235 -0
  6. package/contract/edit-session.d.ts +203 -0
  7. package/contract/edit-session.d.ts.map +1 -0
  8. package/contract/edit-session.js +760 -0
  9. package/contract/edit-sketch.d.ts +91 -0
  10. package/contract/edit-sketch.d.ts.map +1 -0
  11. package/contract/edit-sketch.js +281 -0
  12. package/contract/index.d.ts +61 -0
  13. package/contract/index.d.ts.map +1 -0
  14. package/contract/index.js +51 -0
  15. package/contract/jobs.d.ts +149 -0
  16. package/contract/jobs.d.ts.map +1 -0
  17. package/contract/jobs.js +40 -0
  18. package/contract/source.d.ts +423 -0
  19. package/contract/source.d.ts.map +1 -0
  20. package/contract/source.js +3802 -0
  21. package/contract/spatial-aggregation.d.ts +336 -0
  22. package/contract/spatial-aggregation.d.ts.map +1 -0
  23. package/contract/spatial-aggregation.js +298 -0
  24. package/contract/temporal.d.ts +455 -0
  25. package/contract/temporal.d.ts.map +1 -0
  26. package/contract/temporal.js +146 -0
  27. package/contract/tiles.d.ts +370 -0
  28. package/contract/tiles.d.ts.map +1 -0
  29. package/contract/tiles.js +519 -0
  30. package/contract/types.d.ts +665 -0
  31. package/contract/types.d.ts.map +1 -0
  32. package/contract/types.js +175 -0
  33. package/contract/widget-source.d.ts +205 -0
  34. package/contract/widget-source.d.ts.map +1 -0
  35. package/contract/widget-source.js +1473 -0
  36. package/control-plane/client.d.ts +95 -0
  37. package/control-plane/client.d.ts.map +1 -0
  38. package/control-plane/client.js +374 -0
  39. package/control-plane/index.d.ts +18 -0
  40. package/control-plane/index.d.ts.map +1 -0
  41. package/control-plane/index.js +14 -0
  42. package/control-plane/types.d.ts +233 -0
  43. package/control-plane/types.d.ts.map +1 -0
  44. package/control-plane/types.js +7 -0
  45. package/core/batch.d.ts +37 -0
  46. package/core/batch.d.ts.map +1 -0
  47. package/core/batch.js +79 -0
  48. package/core/cache-state.d.ts +79 -0
  49. package/core/cache-state.d.ts.map +1 -0
  50. package/core/cache-state.js +87 -0
  51. package/core/client.d.ts +577 -0
  52. package/core/client.d.ts.map +1 -0
  53. package/core/client.js +1664 -0
  54. package/core/compatibility.d.ts +18 -0
  55. package/core/compatibility.d.ts.map +1 -0
  56. package/core/compatibility.js +245 -0
  57. package/core/errors.d.ts +107 -0
  58. package/core/errors.d.ts.map +1 -0
  59. package/core/errors.js +156 -0
  60. package/core/esri-geojson.d.ts +66 -0
  61. package/core/esri-geojson.d.ts.map +1 -0
  62. package/core/esri-geojson.js +363 -0
  63. package/core/geoservices.d.ts +34 -0
  64. package/core/geoservices.d.ts.map +1 -0
  65. package/core/geoservices.js +434 -0
  66. package/core/grpc-adapter.d.ts +23 -0
  67. package/core/grpc-adapter.d.ts.map +1 -0
  68. package/core/grpc-adapter.js +688 -0
  69. package/core/odata.d.ts +347 -0
  70. package/core/odata.d.ts.map +1 -0
  71. package/core/odata.js +913 -0
  72. package/core/ogc-conformance.d.ts +35 -0
  73. package/core/ogc-conformance.d.ts.map +1 -0
  74. package/core/ogc-conformance.js +134 -0
  75. package/core/ogc-features.d.ts +23 -0
  76. package/core/ogc-features.d.ts.map +1 -0
  77. package/core/ogc-features.js +114 -0
  78. package/core/ogc-maps.d.ts +49 -0
  79. package/core/ogc-maps.d.ts.map +1 -0
  80. package/core/ogc-maps.js +126 -0
  81. package/core/ogc-processes.d.ts +118 -0
  82. package/core/ogc-processes.d.ts.map +1 -0
  83. package/core/ogc-processes.js +423 -0
  84. package/core/ogc-records.d.ts +75 -0
  85. package/core/ogc-records.d.ts.map +1 -0
  86. package/core/ogc-records.js +251 -0
  87. package/core/ogc-tiles.d.ts +125 -0
  88. package/core/ogc-tiles.d.ts.map +1 -0
  89. package/core/ogc-tiles.js +183 -0
  90. package/core/path-utils.d.ts +69 -0
  91. package/core/path-utils.d.ts.map +1 -0
  92. package/core/path-utils.js +123 -0
  93. package/core/pbf-decoder.d.ts +39 -0
  94. package/core/pbf-decoder.d.ts.map +1 -0
  95. package/core/pbf-decoder.js +702 -0
  96. package/core/process-runner.d.ts +104 -0
  97. package/core/process-runner.d.ts.map +1 -0
  98. package/core/process-runner.js +315 -0
  99. package/core/protocol-transport.d.ts +76 -0
  100. package/core/protocol-transport.d.ts.map +1 -0
  101. package/core/protocol-transport.js +15 -0
  102. package/core/query-builder.d.ts +261 -0
  103. package/core/query-builder.d.ts.map +1 -0
  104. package/core/query-builder.js +538 -0
  105. package/core/request-pipeline.d.ts +88 -0
  106. package/core/request-pipeline.d.ts.map +1 -0
  107. package/core/request-pipeline.js +273 -0
  108. package/core/spatial-filter.d.ts +93 -0
  109. package/core/spatial-filter.d.ts.map +1 -0
  110. package/core/spatial-filter.js +153 -0
  111. package/core/stac.d.ts +55 -0
  112. package/core/stac.d.ts.map +1 -0
  113. package/core/stac.js +229 -0
  114. package/core/surfaces.d.ts +527 -0
  115. package/core/surfaces.d.ts.map +1 -0
  116. package/core/surfaces.js +1917 -0
  117. package/core/terrain-elevation.d.ts +114 -0
  118. package/core/terrain-elevation.d.ts.map +1 -0
  119. package/core/terrain-elevation.js +150 -0
  120. package/core/types.d.ts +1355 -0
  121. package/core/types.d.ts.map +1 -0
  122. package/core/types.js +13 -0
  123. package/core/wfs-capabilities.d.ts +143 -0
  124. package/core/wfs-capabilities.d.ts.map +1 -0
  125. package/core/wfs-capabilities.js +478 -0
  126. package/core/wfs-filter.d.ts +118 -0
  127. package/core/wfs-filter.d.ts.map +1 -0
  128. package/core/wfs-filter.js +634 -0
  129. package/core/wfs.d.ts +219 -0
  130. package/core/wfs.d.ts.map +1 -0
  131. package/core/wfs.js +406 -0
  132. package/core/wire-shared.d.ts +32 -0
  133. package/core/wire-shared.d.ts.map +1 -0
  134. package/core/wire-shared.js +76 -0
  135. package/core/wms-axis.d.ts +36 -0
  136. package/core/wms-axis.d.ts.map +1 -0
  137. package/core/wms-axis.js +73 -0
  138. package/core/wms-capabilities.d.ts +110 -0
  139. package/core/wms-capabilities.d.ts.map +1 -0
  140. package/core/wms-capabilities.js +559 -0
  141. package/core/wms-types.d.ts +128 -0
  142. package/core/wms-types.d.ts.map +1 -0
  143. package/core/wms-types.js +32 -0
  144. package/core/wms.d.ts +144 -0
  145. package/core/wms.d.ts.map +1 -0
  146. package/core/wms.js +338 -0
  147. package/core/wmts-capabilities.d.ts +82 -0
  148. package/core/wmts-capabilities.d.ts.map +1 -0
  149. package/core/wmts-capabilities.js +402 -0
  150. package/core/wmts.d.ts +103 -0
  151. package/core/wmts.d.ts.map +1 -0
  152. package/core/wmts.js +332 -0
  153. package/core/xml-text.d.ts +20 -0
  154. package/core/xml-text.d.ts.map +1 -0
  155. package/core/xml-text.js +85 -0
  156. package/esri-compat/basemap-gallery.d.ts +38 -0
  157. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  158. package/esri-compat/basemap-gallery.js +159 -0
  159. package/esri-compat/basemap-layer-list.d.ts +35 -0
  160. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  161. package/esri-compat/basemap-layer-list.js +139 -0
  162. package/esri-compat/basemap.d.ts +32 -0
  163. package/esri-compat/basemap.d.ts.map +1 -0
  164. package/esri-compat/basemap.js +84 -0
  165. package/esri-compat/bookmarks.d.ts +36 -0
  166. package/esri-compat/bookmarks.d.ts.map +1 -0
  167. package/esri-compat/bookmarks.js +108 -0
  168. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  169. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  170. package/esri-compat/class-breaks-renderer.js +164 -0
  171. package/esri-compat/color.d.ts +22 -0
  172. package/esri-compat/color.d.ts.map +1 -0
  173. package/esri-compat/color.js +106 -0
  174. package/esri-compat/controls.d.ts +174 -0
  175. package/esri-compat/controls.d.ts.map +1 -0
  176. package/esri-compat/controls.js +479 -0
  177. package/esri-compat/coordinate-conversion.d.ts +41 -0
  178. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  179. package/esri-compat/coordinate-conversion.js +125 -0
  180. package/esri-compat/directions.d.ts +45 -0
  181. package/esri-compat/directions.d.ts.map +1 -0
  182. package/esri-compat/directions.js +123 -0
  183. package/esri-compat/editor.d.ts +47 -0
  184. package/esri-compat/editor.d.ts.map +1 -0
  185. package/esri-compat/editor.js +170 -0
  186. package/esri-compat/esri-config.d.ts +16 -0
  187. package/esri-compat/esri-config.d.ts.map +1 -0
  188. package/esri-compat/esri-config.js +23 -0
  189. package/esri-compat/esri-request.d.ts +17 -0
  190. package/esri-compat/esri-request.d.ts.map +1 -0
  191. package/esri-compat/esri-request.js +127 -0
  192. package/esri-compat/event-bus.d.ts +106 -0
  193. package/esri-compat/event-bus.d.ts.map +1 -0
  194. package/esri-compat/event-bus.js +90 -0
  195. package/esri-compat/expand.d.ts +36 -0
  196. package/esri-compat/expand.d.ts.map +1 -0
  197. package/esri-compat/expand.js +97 -0
  198. package/esri-compat/extent.d.ts +43 -0
  199. package/esri-compat/extent.d.ts.map +1 -0
  200. package/esri-compat/extent.js +140 -0
  201. package/esri-compat/feature-filter.d.ts +55 -0
  202. package/esri-compat/feature-filter.d.ts.map +1 -0
  203. package/esri-compat/feature-filter.js +109 -0
  204. package/esri-compat/feature-form.d.ts +64 -0
  205. package/esri-compat/feature-form.d.ts.map +1 -0
  206. package/esri-compat/feature-form.js +137 -0
  207. package/esri-compat/feature-layer.d.ts +173 -0
  208. package/esri-compat/feature-layer.d.ts.map +1 -0
  209. package/esri-compat/feature-layer.js +661 -0
  210. package/esri-compat/feature-set.d.ts +32 -0
  211. package/esri-compat/feature-set.d.ts.map +1 -0
  212. package/esri-compat/feature-set.js +80 -0
  213. package/esri-compat/feature-table.d.ts +141 -0
  214. package/esri-compat/feature-table.d.ts.map +1 -0
  215. package/esri-compat/feature-table.js +500 -0
  216. package/esri-compat/feature-templates.d.ts +41 -0
  217. package/esri-compat/feature-templates.d.ts.map +1 -0
  218. package/esri-compat/feature-templates.js +97 -0
  219. package/esri-compat/feature.d.ts +33 -0
  220. package/esri-compat/feature.d.ts.map +1 -0
  221. package/esri-compat/feature.js +83 -0
  222. package/esri-compat/geojson-layer.d.ts +86 -0
  223. package/esri-compat/geojson-layer.d.ts.map +1 -0
  224. package/esri-compat/geojson-layer.js +191 -0
  225. package/esri-compat/geometry-engine.d.ts +107 -0
  226. package/esri-compat/geometry-engine.d.ts.map +1 -0
  227. package/esri-compat/geometry-engine.js +266 -0
  228. package/esri-compat/graphic.d.ts +46 -0
  229. package/esri-compat/graphic.d.ts.map +1 -0
  230. package/esri-compat/graphic.js +103 -0
  231. package/esri-compat/graphics-layer.d.ts +49 -0
  232. package/esri-compat/graphics-layer.d.ts.map +1 -0
  233. package/esri-compat/graphics-layer.js +185 -0
  234. package/esri-compat/group-layer.d.ts +48 -0
  235. package/esri-compat/group-layer.d.ts.map +1 -0
  236. package/esri-compat/group-layer.js +212 -0
  237. package/esri-compat/identify.d.ts +71 -0
  238. package/esri-compat/identify.d.ts.map +1 -0
  239. package/esri-compat/identify.js +299 -0
  240. package/esri-compat/identity-manager.d.ts +31 -0
  241. package/esri-compat/identity-manager.d.ts.map +1 -0
  242. package/esri-compat/identity-manager.js +115 -0
  243. package/esri-compat/imagery-layer.d.ts +78 -0
  244. package/esri-compat/imagery-layer.d.ts.map +1 -0
  245. package/esri-compat/imagery-layer.js +167 -0
  246. package/esri-compat/label-class.d.ts +31 -0
  247. package/esri-compat/label-class.d.ts.map +1 -0
  248. package/esri-compat/label-class.js +102 -0
  249. package/esri-compat/layer-list.d.ts +77 -0
  250. package/esri-compat/layer-list.d.ts.map +1 -0
  251. package/esri-compat/layer-list.js +342 -0
  252. package/esri-compat/legend.d.ts +53 -0
  253. package/esri-compat/legend.d.ts.map +1 -0
  254. package/esri-compat/legend.js +254 -0
  255. package/esri-compat/map-image-layer.d.ts +162 -0
  256. package/esri-compat/map-image-layer.d.ts.map +1 -0
  257. package/esri-compat/map-image-layer.js +709 -0
  258. package/esri-compat/map-view.d.ts +323 -0
  259. package/esri-compat/map-view.d.ts.map +1 -0
  260. package/esri-compat/map-view.js +1175 -0
  261. package/esri-compat/map.d.ts +47 -0
  262. package/esri-compat/map.d.ts.map +1 -0
  263. package/esri-compat/map.js +209 -0
  264. package/esri-compat/measurement-2d.d.ts +61 -0
  265. package/esri-compat/measurement-2d.d.ts.map +1 -0
  266. package/esri-compat/measurement-2d.js +184 -0
  267. package/esri-compat/measurement.d.ts +45 -0
  268. package/esri-compat/measurement.d.ts.map +1 -0
  269. package/esri-compat/measurement.js +193 -0
  270. package/esri-compat/oauth-info.d.ts +35 -0
  271. package/esri-compat/oauth-info.d.ts.map +1 -0
  272. package/esri-compat/oauth-info.js +115 -0
  273. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  274. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  275. package/esri-compat/picture-marker-symbol.js +126 -0
  276. package/esri-compat/point.d.ts +31 -0
  277. package/esri-compat/point.d.ts.map +1 -0
  278. package/esri-compat/point.js +102 -0
  279. package/esri-compat/polygon.d.ts +31 -0
  280. package/esri-compat/polygon.d.ts.map +1 -0
  281. package/esri-compat/polygon.js +107 -0
  282. package/esri-compat/polyline.d.ts +31 -0
  283. package/esri-compat/polyline.d.ts.map +1 -0
  284. package/esri-compat/polyline.js +107 -0
  285. package/esri-compat/popup-template.d.ts +55 -0
  286. package/esri-compat/popup-template.d.ts.map +1 -0
  287. package/esri-compat/popup-template.js +128 -0
  288. package/esri-compat/popup.d.ts +54 -0
  289. package/esri-compat/popup.d.ts.map +1 -0
  290. package/esri-compat/popup.js +312 -0
  291. package/esri-compat/print.d.ts +47 -0
  292. package/esri-compat/print.d.ts.map +1 -0
  293. package/esri-compat/print.js +105 -0
  294. package/esri-compat/query.d.ts +58 -0
  295. package/esri-compat/query.d.ts.map +1 -0
  296. package/esri-compat/query.js +128 -0
  297. package/esri-compat/reactive-utils.d.ts +24 -0
  298. package/esri-compat/reactive-utils.d.ts.map +1 -0
  299. package/esri-compat/reactive-utils.js +193 -0
  300. package/esri-compat/request.d.ts +41 -0
  301. package/esri-compat/request.d.ts.map +1 -0
  302. package/esri-compat/request.js +253 -0
  303. package/esri-compat/route-layer.d.ts +59 -0
  304. package/esri-compat/route-layer.d.ts.map +1 -0
  305. package/esri-compat/route-layer.js +223 -0
  306. package/esri-compat/route-task.d.ts +88 -0
  307. package/esri-compat/route-task.d.ts.map +1 -0
  308. package/esri-compat/route-task.js +225 -0
  309. package/esri-compat/scene-view.d.ts +41 -0
  310. package/esri-compat/scene-view.d.ts.map +1 -0
  311. package/esri-compat/scene-view.js +68 -0
  312. package/esri-compat/search.d.ts +112 -0
  313. package/esri-compat/search.d.ts.map +1 -0
  314. package/esri-compat/search.js +820 -0
  315. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  316. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  317. package/esri-compat/simple-fill-symbol.js +85 -0
  318. package/esri-compat/simple-line-symbol.d.ts +27 -0
  319. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  320. package/esri-compat/simple-line-symbol.js +85 -0
  321. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  322. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  323. package/esri-compat/simple-marker-symbol.js +92 -0
  324. package/esri-compat/simple-renderer.d.ts +29 -0
  325. package/esri-compat/simple-renderer.d.ts.map +1 -0
  326. package/esri-compat/simple-renderer.js +92 -0
  327. package/esri-compat/sketch.d.ts +64 -0
  328. package/esri-compat/sketch.d.ts.map +1 -0
  329. package/esri-compat/sketch.js +227 -0
  330. package/esri-compat/spatial-reference.d.ts +31 -0
  331. package/esri-compat/spatial-reference.d.ts.map +1 -0
  332. package/esri-compat/spatial-reference.js +102 -0
  333. package/esri-compat/swipe.d.ts +34 -0
  334. package/esri-compat/swipe.d.ts.map +1 -0
  335. package/esri-compat/swipe.js +93 -0
  336. package/esri-compat/table-list.d.ts +36 -0
  337. package/esri-compat/table-list.d.ts.map +1 -0
  338. package/esri-compat/table-list.js +126 -0
  339. package/esri-compat/text-symbol.d.ts +37 -0
  340. package/esri-compat/text-symbol.d.ts.map +1 -0
  341. package/esri-compat/text-symbol.js +123 -0
  342. package/esri-compat/tile-layer.d.ts +52 -0
  343. package/esri-compat/tile-layer.d.ts.map +1 -0
  344. package/esri-compat/tile-layer.js +168 -0
  345. package/esri-compat/time-slider.d.ts +70 -0
  346. package/esri-compat/time-slider.d.ts.map +1 -0
  347. package/esri-compat/time-slider.js +208 -0
  348. package/esri-compat/track.d.ts +51 -0
  349. package/esri-compat/track.d.ts.map +1 -0
  350. package/esri-compat/track.js +174 -0
  351. package/esri-compat/unique-value-renderer.d.ts +41 -0
  352. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  353. package/esri-compat/unique-value-renderer.js +127 -0
  354. package/esri-compat/url.d.ts +13 -0
  355. package/esri-compat/url.d.ts.map +1 -0
  356. package/esri-compat/url.js +68 -0
  357. package/esri-compat/vector-tile-layer.d.ts +47 -0
  358. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  359. package/esri-compat/vector-tile-layer.js +130 -0
  360. package/esri-compat/web-map.d.ts +14 -0
  361. package/esri-compat/web-map.d.ts.map +1 -0
  362. package/esri-compat/web-map.js +24 -0
  363. package/esri-compat/wfs-layer.d.ts +64 -0
  364. package/esri-compat/wfs-layer.d.ts.map +1 -0
  365. package/esri-compat/wfs-layer.js +145 -0
  366. package/esri-compat/wms-layer.d.ts +76 -0
  367. package/esri-compat/wms-layer.d.ts.map +1 -0
  368. package/esri-compat/wms-layer.js +157 -0
  369. package/exploration/context.d.ts +25 -0
  370. package/exploration/context.d.ts.map +1 -0
  371. package/exploration/context.js +396 -0
  372. package/exploration/index.d.ts +27 -0
  373. package/exploration/index.d.ts.map +1 -0
  374. package/exploration/index.js +24 -0
  375. package/exploration/presets.d.ts +27 -0
  376. package/exploration/presets.d.ts.map +1 -0
  377. package/exploration/presets.js +114 -0
  378. package/exploration/reducer.d.ts +23 -0
  379. package/exploration/reducer.d.ts.map +1 -0
  380. package/exploration/reducer.js +332 -0
  381. package/exploration/selection.d.ts +25 -0
  382. package/exploration/selection.d.ts.map +1 -0
  383. package/exploration/selection.js +34 -0
  384. package/exploration/selectors.d.ts +56 -0
  385. package/exploration/selectors.d.ts.map +1 -0
  386. package/exploration/selectors.js +110 -0
  387. package/exploration/types.d.ts +294 -0
  388. package/exploration/types.d.ts.map +1 -0
  389. package/exploration/types.js +33 -0
  390. package/expr/expression.d.ts +457 -0
  391. package/expr/expression.d.ts.map +1 -0
  392. package/expr/expression.js +663 -0
  393. package/expr/index.d.ts +32 -0
  394. package/expr/index.d.ts.map +1 -0
  395. package/expr/index.js +30 -0
  396. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  397. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  398. package/gen/honua/v1/feature_service_pb.js +375 -0
  399. package/generated-app/errors.d.ts +41 -0
  400. package/generated-app/errors.d.ts.map +1 -0
  401. package/generated-app/errors.js +41 -0
  402. package/generated-app/index.d.ts +17 -0
  403. package/generated-app/index.d.ts.map +1 -0
  404. package/generated-app/index.js +12 -0
  405. package/generated-app/manifest.d.ts +183 -0
  406. package/generated-app/manifest.d.ts.map +1 -0
  407. package/generated-app/manifest.js +14 -0
  408. package/generated-app/projection.d.ts +44 -0
  409. package/generated-app/projection.d.ts.map +1 -0
  410. package/generated-app/projection.js +234 -0
  411. package/generated-app/runtime.d.ts +215 -0
  412. package/generated-app/runtime.d.ts.map +1 -0
  413. package/generated-app/runtime.js +1196 -0
  414. package/interactions/detail-model.d.ts +54 -0
  415. package/interactions/detail-model.d.ts.map +1 -0
  416. package/interactions/detail-model.js +105 -0
  417. package/interactions/exploration-bindings.d.ts +120 -0
  418. package/interactions/exploration-bindings.d.ts.map +1 -0
  419. package/interactions/exploration-bindings.js +218 -0
  420. package/interactions/feature-state.d.ts +144 -0
  421. package/interactions/feature-state.d.ts.map +1 -0
  422. package/interactions/feature-state.js +169 -0
  423. package/interactions/hit-test.d.ts +112 -0
  424. package/interactions/hit-test.d.ts.map +1 -0
  425. package/interactions/hit-test.js +291 -0
  426. package/interactions/index.d.ts +31 -0
  427. package/interactions/index.d.ts.map +1 -0
  428. package/interactions/index.js +24 -0
  429. package/interactions/share-state.d.ts +36 -0
  430. package/interactions/share-state.d.ts.map +1 -0
  431. package/interactions/share-state.js +123 -0
  432. package/map/feature-service-adapter.d.ts +138 -0
  433. package/map/feature-service-adapter.d.ts.map +1 -0
  434. package/map/feature-service-adapter.js +279 -0
  435. package/map/honua-map.d.ts +203 -0
  436. package/map/honua-map.d.ts.map +1 -0
  437. package/map/honua-map.js +347 -0
  438. package/map/index.d.ts +27 -0
  439. package/map/index.d.ts.map +1 -0
  440. package/map/index.js +22 -0
  441. package/map/maplibre-target.d.ts +103 -0
  442. package/map/maplibre-target.d.ts.map +1 -0
  443. package/map/maplibre-target.js +164 -0
  444. package/map/webmap-maplibre.d.ts +60 -0
  445. package/map/webmap-maplibre.d.ts.map +1 -0
  446. package/map/webmap-maplibre.js +212 -0
  447. package/package.json +37 -0
  448. package/react/context.d.ts +32 -0
  449. package/react/context.d.ts.map +1 -0
  450. package/react/context.js +19 -0
  451. package/react/honua-layer.d.ts +35 -0
  452. package/react/honua-layer.d.ts.map +1 -0
  453. package/react/honua-layer.js +47 -0
  454. package/react/honua-map.d.ts +83 -0
  455. package/react/honua-map.d.ts.map +1 -0
  456. package/react/honua-map.js +109 -0
  457. package/react/honua-popup.d.ts +26 -0
  458. package/react/honua-popup.d.ts.map +1 -0
  459. package/react/honua-popup.js +34 -0
  460. package/react/hooks.d.ts +127 -0
  461. package/react/hooks.d.ts.map +1 -0
  462. package/react/hooks.js +206 -0
  463. package/react/index.d.ts +42 -0
  464. package/react/index.d.ts.map +1 -0
  465. package/react/index.js +34 -0
  466. package/react/provider.d.ts +36 -0
  467. package/react/provider.d.ts.map +1 -0
  468. package/react/provider.js +35 -0
  469. package/react/query-cache.d.ts +76 -0
  470. package/react/query-cache.d.ts.map +1 -0
  471. package/react/query-cache.js +188 -0
  472. package/runtime/diff.d.ts +31 -0
  473. package/runtime/diff.d.ts.map +1 -0
  474. package/runtime/diff.js +143 -0
  475. package/runtime/errors.d.ts +40 -0
  476. package/runtime/errors.d.ts.map +1 -0
  477. package/runtime/errors.js +35 -0
  478. package/runtime/index.d.ts +59 -0
  479. package/runtime/index.d.ts.map +1 -0
  480. package/runtime/index.js +43 -0
  481. package/runtime/legend.d.ts +23 -0
  482. package/runtime/legend.d.ts.map +1 -0
  483. package/runtime/legend.js +38 -0
  484. package/runtime/load-package.d.ts +125 -0
  485. package/runtime/load-package.d.ts.map +1 -0
  486. package/runtime/load-package.js +264 -0
  487. package/runtime/map-package-fetch.d.ts +107 -0
  488. package/runtime/map-package-fetch.d.ts.map +1 -0
  489. package/runtime/map-package-fetch.js +336 -0
  490. package/runtime/map-package-realtime.d.ts +169 -0
  491. package/runtime/map-package-realtime.d.ts.map +1 -0
  492. package/runtime/map-package-realtime.js +350 -0
  493. package/runtime/map-package-validation.d.ts +43 -0
  494. package/runtime/map-package-validation.d.ts.map +1 -0
  495. package/runtime/map-package-validation.js +269 -0
  496. package/runtime/map-package-watch.d.ts +78 -0
  497. package/runtime/map-package-watch.d.ts.map +1 -0
  498. package/runtime/map-package-watch.js +695 -0
  499. package/runtime/map-package.d.ts +167 -0
  500. package/runtime/map-package.d.ts.map +1 -0
  501. package/runtime/map-package.js +15 -0
  502. package/runtime/ogc-styles.d.ts +110 -0
  503. package/runtime/ogc-styles.d.ts.map +1 -0
  504. package/runtime/ogc-styles.js +195 -0
  505. package/runtime/popups.d.ts +62 -0
  506. package/runtime/popups.d.ts.map +1 -0
  507. package/runtime/popups.js +95 -0
  508. package/runtime/query-tiles.d.ts +217 -0
  509. package/runtime/query-tiles.d.ts.map +1 -0
  510. package/runtime/query-tiles.js +801 -0
  511. package/runtime/runtime.d.ts +243 -0
  512. package/runtime/runtime.d.ts.map +1 -0
  513. package/runtime/runtime.js +1147 -0
  514. package/runtime/source-bridge.d.ts +99 -0
  515. package/runtime/source-bridge.d.ts.map +1 -0
  516. package/runtime/source-bridge.js +401 -0
  517. package/runtime/style-compose.d.ts +46 -0
  518. package/runtime/style-compose.d.ts.map +1 -0
  519. package/runtime/style-compose.js +144 -0
  520. package/runtime/style-interactions.d.ts +141 -0
  521. package/runtime/style-interactions.d.ts.map +1 -0
  522. package/runtime/style-interactions.js +574 -0
  523. package/runtime/style-spec-validation.d.ts +23 -0
  524. package/runtime/style-spec-validation.d.ts.map +1 -0
  525. package/runtime/style-spec-validation.js +357 -0
  526. package/studio/capability-manifest.d.ts +285 -0
  527. package/studio/capability-manifest.d.ts.map +1 -0
  528. package/studio/capability-manifest.js +59 -0
  529. package/studio/chart-spec.d.ts +85 -0
  530. package/studio/chart-spec.d.ts.map +1 -0
  531. package/studio/chart-spec.js +106 -0
  532. package/studio/index.d.ts +34 -0
  533. package/studio/index.d.ts.map +1 -0
  534. package/studio/index.js +27 -0
  535. package/studio/provenance.d.ts +131 -0
  536. package/studio/provenance.d.ts.map +1 -0
  537. package/studio/provenance.js +39 -0
  538. package/studio/publish.d.ts +64 -0
  539. package/studio/publish.d.ts.map +1 -0
  540. package/studio/publish.js +13 -0
  541. package/studio/types.d.ts +278 -0
  542. package/studio/types.d.ts.map +1 -0
  543. package/studio/types.js +71 -0
  544. package/studio/validate.d.ts +45 -0
  545. package/studio/validate.d.ts.map +1 -0
  546. package/studio/validate.js +255 -0
  547. package/studio/validation.d.ts +112 -0
  548. package/studio/validation.d.ts.map +1 -0
  549. package/studio/validation.js +42 -0
  550. package/style/factory.d.ts +30 -0
  551. package/style/factory.d.ts.map +1 -0
  552. package/style/factory.js +61 -0
  553. package/style/index.d.ts +25 -0
  554. package/style/index.d.ts.map +1 -0
  555. package/style/index.js +24 -0
  556. package/style/specification.d.ts +203 -0
  557. package/style/specification.d.ts.map +1 -0
  558. package/style/specification.js +178 -0
  559. package/style/wms-wmts-resolvers.d.ts +38 -0
  560. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  561. package/style/wms-wmts-resolvers.js +92 -0
  562. package/webmap/contract.d.ts +28 -0
  563. package/webmap/contract.d.ts.map +1 -0
  564. package/webmap/contract.js +130 -0
  565. package/webmap/convert-basemap.d.ts +17 -0
  566. package/webmap/convert-basemap.d.ts.map +1 -0
  567. package/webmap/convert-basemap.js +78 -0
  568. package/webmap/convert-extent.d.ts +17 -0
  569. package/webmap/convert-extent.d.ts.map +1 -0
  570. package/webmap/convert-extent.js +114 -0
  571. package/webmap/convert-label.d.ts +13 -0
  572. package/webmap/convert-label.d.ts.map +1 -0
  573. package/webmap/convert-label.js +125 -0
  574. package/webmap/convert-layer.d.ts +22 -0
  575. package/webmap/convert-layer.d.ts.map +1 -0
  576. package/webmap/convert-layer.js +181 -0
  577. package/webmap/convert-popup.d.ts +34 -0
  578. package/webmap/convert-popup.d.ts.map +1 -0
  579. package/webmap/convert-popup.js +68 -0
  580. package/webmap/convert-renderer.d.ts +17 -0
  581. package/webmap/convert-renderer.d.ts.map +1 -0
  582. package/webmap/convert-renderer.js +161 -0
  583. package/webmap/convert-symbol.d.ts +17 -0
  584. package/webmap/convert-symbol.d.ts.map +1 -0
  585. package/webmap/convert-symbol.js +122 -0
  586. package/webmap/index.d.ts +44 -0
  587. package/webmap/index.d.ts.map +1 -0
  588. package/webmap/index.js +33 -0
  589. package/webmap/parse.d.ts +25 -0
  590. package/webmap/parse.d.ts.map +1 -0
  591. package/webmap/parse.js +83 -0
  592. package/webmap/types.d.ts +264 -0
  593. package/webmap/types.d.ts.map +1 -0
  594. package/webmap/types.js +13 -0
  595. package/webmap/warnings.d.ts +30 -0
  596. package/webmap/warnings.d.ts.map +1 -0
  597. package/webmap/warnings.js +37 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Converts Esri WebMap extents/viewpoints to MapLibre center/zoom.
3
+ *
4
+ * Supports Web Mercator (WKID 3857 / 102100) and geographic (4326).
5
+ * Unsupported spatial references emit warnings and are skipped.
6
+ *
7
+ * @module
8
+ */
9
+ const WEB_MERCATOR_WKIDS = new Set([3857, 102100, 102113]);
10
+ const EARTH_RADIUS = 6378137;
11
+ const ORIGIN_SHIFT = Math.PI * EARTH_RADIUS; // ~20037508.34
12
+ export function convertInitialViewpoint(viewpoint, warn) {
13
+ if (!viewpoint?.targetGeometry)
14
+ return undefined;
15
+ const target = viewpoint.targetGeometry;
16
+ if (isExtent(target)) {
17
+ const extentResult = convertExtent(target, warn.child("targetGeometry"));
18
+ if (!extentResult)
19
+ return undefined;
20
+ if (viewpoint.scale != null) {
21
+ return {
22
+ center: extentResult.center,
23
+ zoom: scaleToZoom(viewpoint.scale),
24
+ };
25
+ }
26
+ return extentResult;
27
+ }
28
+ if (isPoint(target)) {
29
+ return convertPointViewpoint(target, viewpoint.scale, warn.child("targetGeometry"));
30
+ }
31
+ warn.warn("unsupported-viewpoint-geometry", "initialViewpoint.targetGeometry must be a point or extent");
32
+ return undefined;
33
+ }
34
+ export function convertExtent(extent, warn) {
35
+ if (!extent)
36
+ return undefined;
37
+ const wkid = extent.spatialReference?.latestWkid ?? extent.spatialReference?.wkid;
38
+ if (wkid && !WEB_MERCATOR_WKIDS.has(wkid)) {
39
+ // Check if it looks like geographic (4326)
40
+ if (wkid === 4326) {
41
+ return convertGeographicExtent(extent);
42
+ }
43
+ warn.warn("unsupported-spatial-reference", `Spatial reference WKID ${wkid} not supported; expected Web Mercator (3857)`, { wkid });
44
+ return undefined;
45
+ }
46
+ // Default assumption: if no SR specified and values are small, treat as geographic
47
+ if (!wkid && Math.abs(extent.xmin) <= 180 && Math.abs(extent.xmax) <= 180) {
48
+ return convertGeographicExtent(extent);
49
+ }
50
+ // Web Mercator → geographic
51
+ return convertMercatorExtent(extent);
52
+ }
53
+ function convertPointViewpoint(point, scale, warn) {
54
+ const wkid = point.spatialReference?.latestWkid ?? point.spatialReference?.wkid;
55
+ if (wkid && !WEB_MERCATOR_WKIDS.has(wkid) && wkid !== 4326) {
56
+ warn.warn("unsupported-spatial-reference", `Spatial reference WKID ${wkid} not supported; expected Web Mercator (3857) or WGS84 (4326)`, { wkid });
57
+ return undefined;
58
+ }
59
+ const isGeographic = wkid === 4326 || (!wkid && Math.abs(point.x) <= 180 && Math.abs(point.y) <= 90);
60
+ const center = isGeographic
61
+ ? [point.x, point.y]
62
+ : [round6(mercatorXToLng(point.x)), round6(mercatorYToLat(point.y))];
63
+ return {
64
+ center,
65
+ zoom: scale != null ? scaleToZoom(scale) : 10,
66
+ };
67
+ }
68
+ function convertGeographicExtent(extent) {
69
+ const centerLng = (extent.xmin + extent.xmax) / 2;
70
+ const centerLat = (extent.ymin + extent.ymax) / 2;
71
+ const lngSpan = extent.xmax - extent.xmin;
72
+ // Approximate zoom from longitude span: 360/2^zoom ≈ lngSpan
73
+ const zoom = lngSpan > 0 ? Math.round(Math.log2(360 / lngSpan) * 100) / 100 : 2;
74
+ return { center: [centerLng, centerLat], zoom };
75
+ }
76
+ function convertMercatorExtent(extent) {
77
+ const centerX = (extent.xmin + extent.xmax) / 2;
78
+ const centerY = (extent.ymin + extent.ymax) / 2;
79
+ const centerLng = mercatorXToLng(centerX);
80
+ const centerLat = mercatorYToLat(centerY);
81
+ // Zoom from mercator extent width
82
+ const xSpan = extent.xmax - extent.xmin;
83
+ const fullWidth = ORIGIN_SHIFT * 2;
84
+ const zoom = xSpan > 0 ? Math.round(Math.log2(fullWidth / xSpan) * 100) / 100 : 2;
85
+ return {
86
+ center: [round6(centerLng), round6(centerLat)],
87
+ zoom,
88
+ };
89
+ }
90
+ function scaleToZoom(scale) {
91
+ if (scale <= 0)
92
+ return 0;
93
+ return Math.round(Math.log2(559082264 / scale) * 100) / 100;
94
+ }
95
+ function round6(value) {
96
+ return Math.round(value * 1e6) / 1e6;
97
+ }
98
+ function isExtent(value) {
99
+ return (typeof value.xmin === "number" &&
100
+ typeof value.ymin === "number" &&
101
+ typeof value.xmax === "number" &&
102
+ typeof value.ymax === "number");
103
+ }
104
+ function isPoint(value) {
105
+ return typeof value.x === "number" && typeof value.y === "number";
106
+ }
107
+ function mercatorXToLng(x) {
108
+ return (x / ORIGIN_SHIFT) * 180;
109
+ }
110
+ function mercatorYToLat(y) {
111
+ let lat = (y / ORIGIN_SHIFT) * 180;
112
+ lat = (180 / Math.PI) * (2 * Math.atan(Math.exp((lat * Math.PI) / 180)) - Math.PI / 2);
113
+ return lat;
114
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Converts Esri labelingInfo to MapLibre symbol layers.
3
+ *
4
+ * Supports basic Arcade expressions like `$feature.FIELD_NAME`.
5
+ * Complex Arcade expressions emit a warning and are skipped.
6
+ *
7
+ * @module
8
+ */
9
+ import type { HonuaLayerSpecification } from "../style/specification.js";
10
+ import type { WebMapLabelClass } from "./types.js";
11
+ import type { WarningCollector } from "./warnings.js";
12
+ export declare function convertLabelingInfo(labelClasses: WebMapLabelClass[] | undefined, sourceId: string, baseLayerId: string, warn: WarningCollector): HonuaLayerSpecification[];
13
+ //# sourceMappingURL=convert-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-label.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-label.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,gBAAgB,EAAE,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,EAAE,CAyC3B"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Converts Esri labelingInfo to MapLibre symbol layers.
3
+ *
4
+ * Supports basic Arcade expressions like `$feature.FIELD_NAME`.
5
+ * Complex Arcade expressions emit a warning and are skipped.
6
+ *
7
+ * @module
8
+ */
9
+ import { esriColorToCss } from "./convert-symbol.js";
10
+ export function convertLabelingInfo(labelClasses, sourceId, baseLayerId, warn) {
11
+ if (!labelClasses || labelClasses.length === 0)
12
+ return [];
13
+ const layers = [];
14
+ for (let i = 0; i < labelClasses.length; i++) {
15
+ const lc = labelClasses[i];
16
+ const lcWarn = warn.child(`labelingInfo[${i}]`);
17
+ const textExpr = parseLabelExpression(lc, lcWarn);
18
+ if (!textExpr)
19
+ continue;
20
+ const layer = {
21
+ id: `${baseLayerId}-label-${i}`,
22
+ type: "symbol",
23
+ source: sourceId,
24
+ layout: {
25
+ "text-field": textExpr,
26
+ "text-size": 12,
27
+ },
28
+ paint: {},
29
+ };
30
+ // Apply symbol styling
31
+ if (lc.symbol) {
32
+ applyTextSymbolStyle(lc.symbol, layer);
33
+ }
34
+ // Apply scale constraints
35
+ if (lc.minScale)
36
+ layer.maxzoom = scaleToZoom(lc.minScale);
37
+ if (lc.maxScale)
38
+ layer.minzoom = scaleToZoom(lc.maxScale);
39
+ // Apply where clause as filter
40
+ if (lc.where) {
41
+ layer.metadata = { ...layer.metadata, esriWhere: lc.where };
42
+ }
43
+ layers.push(layer);
44
+ }
45
+ return layers;
46
+ }
47
+ const FEATURE_FIELD_RE = /^\$feature\.(\w+)$/;
48
+ const FEATURE_FIELD_GLOBAL_RE = /\$feature\.(\w+)/g;
49
+ function parseLabelExpression(lc, warn) {
50
+ // Prefer labelExpressionInfo (Arcade-based)
51
+ if (lc.labelExpressionInfo?.expression) {
52
+ const expr = lc.labelExpressionInfo.expression;
53
+ // Simple: $feature.FIELD_NAME
54
+ const simple = expr.match(FEATURE_FIELD_RE);
55
+ if (simple) {
56
+ return ["get", simple[1]];
57
+ }
58
+ // Try concatenation patterns: $feature.A + " " + $feature.B
59
+ if (expr.includes("$feature.") && !expr.includes("(")) {
60
+ return parseSimpleConcatExpression(expr, warn);
61
+ }
62
+ warn.warn("complex-arcade", `Complex Arcade expression not supported: ${expr}`);
63
+ return undefined;
64
+ }
65
+ // Fallback: labelExpression (e.g., "[FIELD_NAME]")
66
+ if (lc.labelExpression) {
67
+ const bracketMatch = lc.labelExpression.match(/^\[(\w+)\]$/);
68
+ if (bracketMatch) {
69
+ return ["get", bracketMatch[1]];
70
+ }
71
+ warn.warn("complex-label-expression", `Complex label expression not supported: ${lc.labelExpression}`);
72
+ return undefined;
73
+ }
74
+ // Fallback: value template
75
+ if (lc.labelExpressionInfo?.value) {
76
+ const value = lc.labelExpressionInfo.value;
77
+ const fieldMatch = value.match(/^\{(\w+)\}$/);
78
+ if (fieldMatch) {
79
+ return ["get", fieldMatch[1]];
80
+ }
81
+ }
82
+ return undefined;
83
+ }
84
+ function parseSimpleConcatExpression(expr, warn) {
85
+ // Handle: $feature.A + " " + $feature.B
86
+ const parts = expr.split("+").map((p) => p.trim());
87
+ const concatArgs = [];
88
+ for (const part of parts) {
89
+ const fieldMatch = part.match(FEATURE_FIELD_RE);
90
+ if (fieldMatch) {
91
+ concatArgs.push(["get", fieldMatch[1]]);
92
+ }
93
+ else if ((part.startsWith('"') && part.endsWith('"')) || (part.startsWith("'") && part.endsWith("'"))) {
94
+ concatArgs.push(part.slice(1, -1));
95
+ }
96
+ else {
97
+ warn.warn("complex-arcade", `Cannot parse Arcade expression part: ${part}`);
98
+ return undefined;
99
+ }
100
+ }
101
+ if (concatArgs.length === 1)
102
+ return concatArgs[0];
103
+ return ["concat", ...concatArgs];
104
+ }
105
+ function applyTextSymbolStyle(symbol, layer) {
106
+ if (symbol.color) {
107
+ const color = esriColorToCss(symbol.color);
108
+ if (color)
109
+ layer.paint["text-color"] = color;
110
+ }
111
+ if (symbol.font) {
112
+ const layout = layer.layout;
113
+ if (symbol.font.size != null)
114
+ layout["text-size"] = symbol.font.size;
115
+ if (symbol.font.family)
116
+ layout["text-font"] = [symbol.font.family];
117
+ }
118
+ }
119
+ /** Approximate Esri scale denominator to MapLibre zoom level. */
120
+ function scaleToZoom(scale) {
121
+ if (scale <= 0)
122
+ return 0;
123
+ // Esri uses 96 DPI; at zoom 0, scale ≈ 559082264
124
+ return Math.round(Math.log2(559082264 / scale) * 100) / 100;
125
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Converts a single WebMap operational layer to Honua source(s) and layer(s).
3
+ *
4
+ * Orchestrates per-layer conversion: determines source type from layerType/url,
5
+ * calls renderer/popup/label converters, applies opacity/visibility/min-maxScale.
6
+ *
7
+ * @module
8
+ */
9
+ import type { HonuaLayerSpecification, HonuaSourceSpecification } from "../style/specification.js";
10
+ import { type HonuaPopupConfig } from "./convert-popup.js";
11
+ import type { WebMapOperationalLayer } from "./types.js";
12
+ import { type WarningCollector } from "./warnings.js";
13
+ export interface LayerConversionResult {
14
+ sources: Record<string, HonuaSourceSpecification | {
15
+ type: string;
16
+ [key: string]: unknown;
17
+ }>;
18
+ layers: HonuaLayerSpecification[];
19
+ popup?: HonuaPopupConfig;
20
+ }
21
+ export declare function convertOperationalLayer(opLayer: WebMapOperationalLayer, index: number, warn: WarningCollector): LayerConversionResult;
22
+ //# sourceMappingURL=convert-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-layer.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-layer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,uBAAuB,EAEvB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7F,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,EAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,gBAAgB,GACrB,qBAAqB,CAmHvB"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Converts a single WebMap operational layer to Honua source(s) and layer(s).
3
+ *
4
+ * Orchestrates per-layer conversion: determines source type from layerType/url,
5
+ * calls renderer/popup/label converters, applies opacity/visibility/min-maxScale.
6
+ *
7
+ * @module
8
+ */
9
+ import { convertLabelingInfo } from "./convert-label.js";
10
+ import { convertPopupInfo } from "./convert-popup.js";
11
+ import { convertRenderer } from "./convert-renderer.js";
12
+ import { warnUnknownProperties } from "./warnings.js";
13
+ export function convertOperationalLayer(opLayer, index, warn) {
14
+ const result = { sources: {}, layers: [] };
15
+ const layerWarn = warn.child(`operationalLayers[${index}]`);
16
+ warnUnknownProperties(opLayer, OPERATIONAL_LAYER_PROPERTIES, layerWarn);
17
+ detectUnsupported3DLayerProperties(opLayer, layerWarn);
18
+ const sourceId = opLayer.id ?? `operational-${index}`;
19
+ const layerId = sourceId;
20
+ // Determine source type
21
+ const layerType = opLayer.layerType ?? "";
22
+ const url = opLayer.url ?? "";
23
+ if (layerType === "ArcGISFeatureLayer" || url.includes("FeatureServer")) {
24
+ const source = {
25
+ type: "honua-feature-service",
26
+ url,
27
+ };
28
+ if (opLayer.layerDefinition?.definitionExpression) {
29
+ source.definitionExpression = opLayer.layerDefinition.definitionExpression;
30
+ }
31
+ result.sources[sourceId] = source;
32
+ }
33
+ else if (layerType === "ArcGISMapServiceLayer" || url.includes("MapServer")) {
34
+ const source = {
35
+ type: "honua-map-service",
36
+ url,
37
+ };
38
+ result.sources[sourceId] = source;
39
+ }
40
+ else if (opLayer.featureCollection) {
41
+ layerWarn.warn("unsupported-feature-collection", "Inline feature collections are not supported");
42
+ return result;
43
+ }
44
+ else {
45
+ layerWarn.warn("unsupported-layer-type", `Unsupported layer type: ${layerType}`, { layerType, url });
46
+ return result;
47
+ }
48
+ warnUnknownProperties(opLayer.layerDefinition, LAYER_DEFINITION_PROPERTIES, layerWarn.child("layerDefinition"));
49
+ warnUnknownProperties(opLayer.layerDefinition?.drawingInfo, DRAWING_INFO_PROPERTIES, layerWarn.child("layerDefinition.drawingInfo"));
50
+ // Convert renderer
51
+ const renderer = opLayer.layerDefinition?.drawingInfo?.renderer;
52
+ const rendererResult = convertRenderer(renderer, layerWarn.child("layerDefinition.drawingInfo.renderer"));
53
+ if (rendererResult) {
54
+ const layer = {
55
+ id: layerId,
56
+ type: rendererResult.layerType,
57
+ source: sourceId,
58
+ paint: { ...rendererResult.paint },
59
+ layout: { ...rendererResult.layout },
60
+ };
61
+ // Apply transparency from drawingInfo
62
+ const transparency = opLayer.layerDefinition?.drawingInfo?.transparency;
63
+ if (transparency != null && transparency > 0) {
64
+ applyTransparency(layer, transparency);
65
+ }
66
+ // Apply layer-level opacity
67
+ if (opLayer.opacity != null && opLayer.opacity < 1) {
68
+ applyOpacity(layer, opLayer.opacity);
69
+ }
70
+ // Apply visibility
71
+ if (opLayer.visibility === false) {
72
+ layer.layout = { ...layer.layout, visibility: "none" };
73
+ }
74
+ // Apply scale constraints
75
+ if (opLayer.minScale)
76
+ layer.maxzoom = scaleToZoom(opLayer.minScale);
77
+ if (opLayer.maxScale)
78
+ layer.minzoom = scaleToZoom(opLayer.maxScale);
79
+ // Store title in metadata
80
+ if (opLayer.title) {
81
+ layer.metadata = { ...layer.metadata, title: opLayer.title };
82
+ }
83
+ result.layers.push(layer);
84
+ }
85
+ else if (!renderer) {
86
+ // No renderer — create a default layer so the source is referenced
87
+ const layer = {
88
+ id: layerId,
89
+ type: "circle",
90
+ source: sourceId,
91
+ paint: { "circle-radius": 4, "circle-color": "#007cbf" },
92
+ layout: {},
93
+ };
94
+ if (opLayer.visibility === false) {
95
+ layer.layout = { visibility: "none" };
96
+ }
97
+ if (opLayer.minScale)
98
+ layer.maxzoom = scaleToZoom(opLayer.minScale);
99
+ if (opLayer.maxScale)
100
+ layer.minzoom = scaleToZoom(opLayer.maxScale);
101
+ if (opLayer.title)
102
+ layer.metadata = { title: opLayer.title };
103
+ result.layers.push(layer);
104
+ }
105
+ // Convert labels
106
+ const labelLayers = convertLabelingInfo(opLayer.layerDefinition?.drawingInfo?.labelingInfo, sourceId, layerId, layerWarn.child("layerDefinition.drawingInfo"));
107
+ result.layers.push(...labelLayers);
108
+ // Convert popup
109
+ result.popup = convertPopupInfo(opLayer.popupInfo, layerWarn.child("popupInfo"));
110
+ return result;
111
+ }
112
+ function applyTransparency(layer, transparency) {
113
+ const opacity = 1 - transparency / 100;
114
+ applyOpacity(layer, opacity);
115
+ }
116
+ function applyOpacity(layer, opacity) {
117
+ const paint = layer.paint;
118
+ switch (layer.type) {
119
+ case "fill":
120
+ paint["fill-opacity"] = opacity;
121
+ break;
122
+ case "line":
123
+ paint["line-opacity"] = opacity;
124
+ break;
125
+ case "circle":
126
+ paint["circle-opacity"] = opacity;
127
+ break;
128
+ case "symbol":
129
+ paint["icon-opacity"] = opacity;
130
+ paint["text-opacity"] = opacity;
131
+ break;
132
+ case "raster":
133
+ paint["raster-opacity"] = opacity;
134
+ break;
135
+ }
136
+ }
137
+ function scaleToZoom(scale) {
138
+ if (scale <= 0)
139
+ return 0;
140
+ return Math.round(Math.log2(559082264 / scale) * 100) / 100;
141
+ }
142
+ const OPERATIONAL_LAYER_PROPERTIES = [
143
+ "id",
144
+ "title",
145
+ "url",
146
+ "layerType",
147
+ "itemId",
148
+ "visibility",
149
+ "opacity",
150
+ "minScale",
151
+ "maxScale",
152
+ "layerDefinition",
153
+ "popupInfo",
154
+ "featureCollection",
155
+ "layers",
156
+ "mode",
157
+ ];
158
+ const LAYER_DEFINITION_PROPERTIES = ["drawingInfo", "definitionExpression", "minScale", "maxScale"];
159
+ const DRAWING_INFO_PROPERTIES = ["renderer", "labelingInfo", "transparency"];
160
+ const LAYER_3D_PROPERTIES = ["elevationInfo", "heightInfo", "sceneProperties"];
161
+ function detectUnsupported3DLayerProperties(opLayer, warn) {
162
+ const layerType = typeof opLayer.layerType === "string" ? opLayer.layerType : "";
163
+ if (layerType.toLowerCase().includes("scene")) {
164
+ warn.warn("unsupported-3d-property", `Layer type '${layerType}' requires a scene renderer adapter`, {
165
+ layerType,
166
+ status: "unsupported",
167
+ fallback: "Preserve the service URL as scene-layer metadata or model-layer primitives; omit it from the 2D style.",
168
+ });
169
+ }
170
+ for (const key of LAYER_3D_PROPERTIES) {
171
+ if (Object.prototype.hasOwnProperty.call(opLayer, key)) {
172
+ warn.warn("unsupported-3d-property", `Layer property '${key}' is not supported by the 2D WebMap style path`, {
173
+ property: key,
174
+ status: key === "elevationInfo" || key === "heightInfo" ? "degraded" : "unsupported",
175
+ fallback: key === "elevationInfo" || key === "heightInfo"
176
+ ? "MapLibre extrusion/terrain primitives can represent simple height and elevation behavior."
177
+ : "Preserve this property for a scene renderer adapter.",
178
+ });
179
+ }
180
+ }
181
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Converts Esri popupInfo to Honua popup configuration.
3
+ *
4
+ * Since MapLibre has no popup specification, popup configuration is
5
+ * stored outside the style as metadata.
6
+ *
7
+ * @module
8
+ */
9
+ import type { WebMapPopupInfo } from "./types.js";
10
+ import { type WarningCollector } from "./warnings.js";
11
+ export interface HonuaPopupFieldInfo {
12
+ fieldName: string;
13
+ label?: string;
14
+ visible: boolean;
15
+ format?: {
16
+ places?: number;
17
+ digitSeparator?: boolean;
18
+ dateFormat?: string;
19
+ };
20
+ }
21
+ export interface HonuaPopupMediaInfo {
22
+ type: string;
23
+ title?: string;
24
+ caption?: string;
25
+ value?: Record<string, unknown>;
26
+ }
27
+ export interface HonuaPopupConfig {
28
+ title?: string;
29
+ description?: string;
30
+ fieldInfos: HonuaPopupFieldInfo[];
31
+ mediaInfos: HonuaPopupMediaInfo[];
32
+ }
33
+ export declare function convertPopupInfo(popupInfo: WebMapPopupInfo | undefined, warn?: WarningCollector): HonuaPopupConfig | undefined;
34
+ //# sourceMappingURL=convert-popup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-popup.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-popup.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,KAAK,gBAAgB,EAAyB,MAAM,eAAe,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,GAAG,SAAS,EACtC,IAAI,CAAC,EAAE,gBAAgB,GACtB,gBAAgB,GAAG,SAAS,CAyB9B"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Converts Esri popupInfo to Honua popup configuration.
3
+ *
4
+ * Since MapLibre has no popup specification, popup configuration is
5
+ * stored outside the style as metadata.
6
+ *
7
+ * @module
8
+ */
9
+ import { warnUnknownProperties } from "./warnings.js";
10
+ export function convertPopupInfo(popupInfo, warn) {
11
+ if (!popupInfo)
12
+ return undefined;
13
+ if (warn) {
14
+ warnUnknownProperties(popupInfo, POPUP_INFO_PROPERTIES, warn);
15
+ const expressionInfos = popupInfo.expressionInfos;
16
+ if (Array.isArray(expressionInfos) && expressionInfos.length > 0) {
17
+ warn.warn("unsupported-arcade-expression", "popupInfo.expressionInfos is not supported; Arcade expressions require manual intervention", { count: expressionInfos.length });
18
+ }
19
+ }
20
+ return {
21
+ title: popupInfo.title,
22
+ description: popupInfo.description,
23
+ fieldInfos: (popupInfo.fieldInfos ?? []).map((fieldInfo, index) => convertFieldInfo(fieldInfo, warn?.child(`fieldInfos[${index}]`))),
24
+ mediaInfos: (popupInfo.mediaInfos ?? []).map((mediaInfo, index) => convertMediaInfo(mediaInfo, warn?.child(`mediaInfos[${index}]`))),
25
+ };
26
+ }
27
+ function convertFieldInfo(info, warn) {
28
+ if (warn) {
29
+ warnUnknownProperties(info, POPUP_FIELD_INFO_PROPERTIES, warn);
30
+ warnUnknownProperties(info.format, POPUP_FIELD_FORMAT_PROPERTIES, warn.child("format"));
31
+ }
32
+ return {
33
+ fieldName: info.fieldName ?? "",
34
+ label: info.label,
35
+ visible: info.visible !== false,
36
+ ...(info.format
37
+ ? {
38
+ format: {
39
+ ...(info.format.places != null ? { places: info.format.places } : {}),
40
+ ...(info.format.digitSeparator != null ? { digitSeparator: info.format.digitSeparator } : {}),
41
+ ...(info.format.dateFormat ? { dateFormat: info.format.dateFormat } : {}),
42
+ },
43
+ }
44
+ : {}),
45
+ };
46
+ }
47
+ function convertMediaInfo(info, warn) {
48
+ if (warn) {
49
+ warnUnknownProperties(info, POPUP_MEDIA_INFO_PROPERTIES, warn);
50
+ }
51
+ return {
52
+ type: info.type ?? "unknown",
53
+ ...(info.title ? { title: info.title } : {}),
54
+ ...(info.caption ? { caption: info.caption } : {}),
55
+ ...(info.value ? { value: info.value } : {}),
56
+ };
57
+ }
58
+ const POPUP_INFO_PROPERTIES = [
59
+ "title",
60
+ "description",
61
+ "fieldInfos",
62
+ "mediaInfos",
63
+ "showAttachments",
64
+ "expressionInfos",
65
+ ];
66
+ const POPUP_FIELD_INFO_PROPERTIES = ["fieldName", "label", "tooltip", "visible", "isEditable", "format"];
67
+ const POPUP_FIELD_FORMAT_PROPERTIES = ["places", "digitSeparator", "dateFormat"];
68
+ const POPUP_MEDIA_INFO_PROPERTIES = ["type", "title", "caption", "value"];
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts Esri renderer JSON to MapLibre paint/layout properties.
3
+ *
4
+ * Handles simple, uniqueValue, and classBreaks renderers. Produces
5
+ * data-driven expressions (match, step) for categorized/graduated renderers.
6
+ *
7
+ * @module
8
+ */
9
+ import type { WebMapRenderer } from "./types.js";
10
+ import type { WarningCollector } from "./warnings.js";
11
+ export interface RendererConversionResult {
12
+ layerType: string;
13
+ paint: Record<string, unknown>;
14
+ layout: Record<string, unknown>;
15
+ }
16
+ export declare function convertRenderer(renderer: WebMapRenderer | undefined, warn: WarningCollector): RendererConversionResult | undefined;
17
+ //# sourceMappingURL=convert-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-renderer.d.ts","sourceRoot":"","sources":["../../../src/webmap/convert-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAA6B,cAAc,EAA2C,MAAM,YAAY,CAAC;AACrH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,IAAI,EAAE,gBAAgB,GACrB,wBAAwB,GAAG,SAAS,CActC"}