@honua/react 0.0.20-alpha.0 → 0.1.1-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 (363) hide show
  1. package/contract/discovery.d.ts +231 -0
  2. package/contract/discovery.d.ts.map +1 -0
  3. package/contract/discovery.js +554 -0
  4. package/contract/edit-sketch.d.ts +8 -0
  5. package/contract/edit-sketch.d.ts.map +1 -1
  6. package/contract/edit-sketch.js +15 -0
  7. package/contract/edit-snapping.d.ts +160 -0
  8. package/contract/edit-snapping.d.ts.map +1 -0
  9. package/contract/edit-snapping.js +675 -0
  10. package/contract/generated/projjson-v0.7-crs-validator.d.ts +35 -0
  11. package/contract/generated/projjson-v0.7-crs-validator.d.ts.map +1 -0
  12. package/contract/generated/projjson-v0.7-crs-validator.js +3941 -0
  13. package/contract/index.d.ts +12 -1
  14. package/contract/index.d.ts.map +1 -1
  15. package/contract/index.js +4 -0
  16. package/contract/pmtiles.d.ts +193 -0
  17. package/contract/pmtiles.d.ts.map +1 -0
  18. package/contract/pmtiles.js +195 -0
  19. package/contract/protocol-module.d.ts +70 -0
  20. package/contract/protocol-module.d.ts.map +1 -0
  21. package/contract/protocol-module.js +1 -0
  22. package/contract/schema-envelope.d.ts +26 -0
  23. package/contract/schema-envelope.d.ts.map +1 -0
  24. package/contract/schema-envelope.js +25 -0
  25. package/contract/schema.d.ts +582 -0
  26. package/contract/schema.d.ts.map +1 -0
  27. package/contract/schema.js +2483 -0
  28. package/contract/source-capability-support.d.ts +6 -0
  29. package/contract/source-capability-support.d.ts.map +1 -0
  30. package/contract/source-capability-support.js +154 -0
  31. package/contract/source.d.ts +57 -15
  32. package/contract/source.d.ts.map +1 -1
  33. package/contract/source.js +368 -65
  34. package/contract/types.d.ts +171 -6
  35. package/contract/types.d.ts.map +1 -1
  36. package/contract/types.js +14 -14
  37. package/core/auth/client-credentials-provider.d.ts +51 -0
  38. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  39. package/core/auth/client-credentials-provider.js +115 -0
  40. package/core/auth/credential-store.d.ts +52 -0
  41. package/core/auth/credential-store.d.ts.map +1 -0
  42. package/core/auth/credential-store.js +82 -0
  43. package/core/auth/index.d.ts +23 -0
  44. package/core/auth/index.d.ts.map +1 -0
  45. package/core/auth/index.js +20 -0
  46. package/core/auth/oauth2-provider.d.ts +114 -0
  47. package/core/auth/oauth2-provider.d.ts.map +1 -0
  48. package/core/auth/oauth2-provider.js +408 -0
  49. package/core/auth/pkce.d.ts +25 -0
  50. package/core/auth/pkce.d.ts.map +1 -0
  51. package/core/auth/pkce.js +46 -0
  52. package/core/auth/static-providers.d.ts +20 -0
  53. package/core/auth/static-providers.d.ts.map +1 -0
  54. package/core/auth/static-providers.js +26 -0
  55. package/core/auth/token-endpoint.d.ts +40 -0
  56. package/core/auth/token-endpoint.d.ts.map +1 -0
  57. package/core/auth/token-endpoint.js +133 -0
  58. package/core/auth/types.d.ts +144 -0
  59. package/core/auth/types.d.ts.map +1 -0
  60. package/core/auth/types.js +8 -0
  61. package/core/bounded-json.d.ts +4 -0
  62. package/core/bounded-json.d.ts.map +1 -0
  63. package/core/bounded-json.js +38 -0
  64. package/core/cache-state.d.ts +9 -0
  65. package/core/cache-state.d.ts.map +1 -1
  66. package/core/cache-state.js +10 -0
  67. package/core/capabilities-xml.d.ts +33 -0
  68. package/core/capabilities-xml.d.ts.map +1 -0
  69. package/core/capabilities-xml.js +331 -0
  70. package/core/client.d.ts +35 -2
  71. package/core/client.d.ts.map +1 -1
  72. package/core/client.js +167 -29
  73. package/core/error-classifications.d.ts +153 -0
  74. package/core/error-classifications.d.ts.map +1 -0
  75. package/core/error-classifications.js +140 -0
  76. package/core/error-code-registry.d.ts +158 -0
  77. package/core/error-code-registry.d.ts.map +1 -0
  78. package/core/error-code-registry.js +143 -0
  79. package/core/error-envelope.d.ts +68 -0
  80. package/core/error-envelope.d.ts.map +1 -0
  81. package/core/error-envelope.js +357 -0
  82. package/core/errors.d.ts +73 -25
  83. package/core/errors.d.ts.map +1 -1
  84. package/core/errors.js +113 -46
  85. package/core/geoparquet-sql.d.ts +190 -0
  86. package/core/geoparquet-sql.d.ts.map +1 -0
  87. package/core/geoparquet-sql.js +368 -0
  88. package/core/odata-key-path.d.ts +12 -0
  89. package/core/odata-key-path.d.ts.map +1 -0
  90. package/core/odata-key-path.js +28 -0
  91. package/core/odata-write-codec.d.ts +66 -0
  92. package/core/odata-write-codec.d.ts.map +1 -0
  93. package/core/odata-write-codec.js +1083 -0
  94. package/core/odata.d.ts +59 -7
  95. package/core/odata.d.ts.map +1 -1
  96. package/core/odata.js +431 -99
  97. package/core/ogc-endpoint-layout.d.ts +70 -0
  98. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  99. package/core/ogc-endpoint-layout.js +173 -0
  100. package/core/ogc-features.d.ts.map +1 -1
  101. package/core/ogc-features.js +35 -17
  102. package/core/ogc-maps.d.ts +7 -0
  103. package/core/ogc-maps.d.ts.map +1 -1
  104. package/core/ogc-maps.js +46 -7
  105. package/core/ogc-processes.d.ts +2 -1
  106. package/core/ogc-processes.d.ts.map +1 -1
  107. package/core/ogc-processes.js +33 -5
  108. package/core/ogc-records.d.ts +9 -0
  109. package/core/ogc-records.d.ts.map +1 -1
  110. package/core/ogc-records.js +78 -29
  111. package/core/ogc-tiles.d.ts +10 -1
  112. package/core/ogc-tiles.d.ts.map +1 -1
  113. package/core/ogc-tiles.js +56 -17
  114. package/core/path-utils.d.ts +9 -0
  115. package/core/path-utils.d.ts.map +1 -1
  116. package/core/path-utils.js +19 -0
  117. package/core/protocol-transport.d.ts +1 -0
  118. package/core/protocol-transport.d.ts.map +1 -1
  119. package/core/request-pipeline.d.ts.map +1 -1
  120. package/core/request-pipeline.js +1 -1
  121. package/core/spatial-filter.d.ts +8 -4
  122. package/core/spatial-filter.d.ts.map +1 -1
  123. package/core/spatial-filter.js +206 -16
  124. package/core/stac-static.d.ts +55 -0
  125. package/core/stac-static.d.ts.map +1 -0
  126. package/core/stac-static.js +386 -0
  127. package/core/stac.d.ts +12 -0
  128. package/core/stac.d.ts.map +1 -1
  129. package/core/stac.js +45 -15
  130. package/core/surfaces.d.ts +13 -0
  131. package/core/surfaces.d.ts.map +1 -1
  132. package/core/surfaces.js +127 -16
  133. package/core/types.d.ts +174 -7
  134. package/core/types.d.ts.map +1 -1
  135. package/core/wfs-capabilities.d.ts +12 -0
  136. package/core/wfs-capabilities.d.ts.map +1 -1
  137. package/core/wfs-capabilities.js +22 -3
  138. package/core/wfs.d.ts +13 -0
  139. package/core/wfs.d.ts.map +1 -1
  140. package/core/wfs.js +35 -5
  141. package/core/wms-capabilities.d.ts +56 -84
  142. package/core/wms-capabilities.d.ts.map +1 -1
  143. package/core/wms-capabilities.js +212 -509
  144. package/core/wmts-capabilities.d.ts +62 -62
  145. package/core/wmts-capabilities.d.ts.map +1 -1
  146. package/core/wmts-capabilities.js +224 -371
  147. package/esri-compat/editor.d.ts +8 -0
  148. package/esri-compat/editor.d.ts.map +1 -1
  149. package/esri-compat/editor.js +13 -0
  150. package/esri-compat/feature-layer.d.ts +2 -0
  151. package/esri-compat/feature-layer.d.ts.map +1 -1
  152. package/esri-compat/feature-layer.js +1 -0
  153. package/esri-compat/identity-manager.d.ts +43 -0
  154. package/esri-compat/identity-manager.d.ts.map +1 -1
  155. package/esri-compat/identity-manager.js +131 -1
  156. package/esri-compat/layer-list.d.ts +11 -0
  157. package/esri-compat/layer-list.d.ts.map +1 -1
  158. package/esri-compat/layer-list.js +49 -0
  159. package/esri-compat/legend.d.ts +10 -0
  160. package/esri-compat/legend.d.ts.map +1 -1
  161. package/esri-compat/legend.js +27 -0
  162. package/esri-compat/oauth-info.d.ts +15 -0
  163. package/esri-compat/oauth-info.d.ts.map +1 -1
  164. package/esri-compat/oauth-info.js +27 -0
  165. package/esri-compat/portal.d.ts +197 -0
  166. package/esri-compat/portal.d.ts.map +1 -0
  167. package/esri-compat/portal.js +251 -0
  168. package/esri-compat/renderer-objects.d.ts +40 -0
  169. package/esri-compat/renderer-objects.d.ts.map +1 -0
  170. package/esri-compat/renderer-objects.js +62 -0
  171. package/esri-compat/sketch.d.ts +43 -0
  172. package/esri-compat/sketch.d.ts.map +1 -1
  173. package/esri-compat/sketch.js +46 -0
  174. package/esri-compat/snapping.d.ts +43 -0
  175. package/esri-compat/snapping.d.ts.map +1 -0
  176. package/esri-compat/snapping.js +45 -0
  177. package/esri-compat/url.d.ts.map +1 -1
  178. package/esri-compat/url.js +1 -1
  179. package/esri-compat/widget-host.d.ts +84 -0
  180. package/esri-compat/widget-host.d.ts.map +1 -0
  181. package/esri-compat/widget-host.js +159 -0
  182. package/filter-registry/index.d.ts +145 -0
  183. package/filter-registry/index.d.ts.map +1 -0
  184. package/filter-registry/index.js +531 -0
  185. package/generated-app/errors.d.ts +18 -2
  186. package/generated-app/errors.d.ts.map +1 -1
  187. package/generated-app/errors.js +44 -11
  188. package/map/automatic-mount-integration.d.ts +134 -0
  189. package/map/automatic-mount-integration.d.ts.map +1 -0
  190. package/map/automatic-mount-integration.js +305 -0
  191. package/map/automatic-source-strategy.d.ts +125 -0
  192. package/map/automatic-source-strategy.d.ts.map +1 -0
  193. package/map/automatic-source-strategy.js +494 -0
  194. package/map/data-to-map-bridge.d.ts +293 -0
  195. package/map/data-to-map-bridge.d.ts.map +1 -0
  196. package/map/data-to-map-bridge.js +817 -0
  197. package/map/geojson-projection.d.ts +33 -0
  198. package/map/geojson-projection.d.ts.map +1 -0
  199. package/map/geojson-projection.js +118 -0
  200. package/map/index.d.ts +14 -0
  201. package/map/index.d.ts.map +1 -1
  202. package/map/index.js +8 -0
  203. package/map/raster-source-spec.d.ts +30 -0
  204. package/map/raster-source-spec.d.ts.map +1 -0
  205. package/map/raster-source-spec.js +190 -0
  206. package/map/raster-source-strategy.d.ts +65 -0
  207. package/map/raster-source-strategy.d.ts.map +1 -0
  208. package/map/raster-source-strategy.js +232 -0
  209. package/map/source-to-maplibre.d.ts +91 -0
  210. package/map/source-to-maplibre.d.ts.map +1 -0
  211. package/map/source-to-maplibre.js +454 -0
  212. package/map/temporal-playback.d.ts +139 -0
  213. package/map/temporal-playback.d.ts.map +1 -0
  214. package/map/temporal-playback.js +247 -0
  215. package/package.json +19 -1
  216. package/query-planner/canonical.d.ts +7 -0
  217. package/query-planner/canonical.d.ts.map +1 -0
  218. package/query-planner/canonical.js +145 -0
  219. package/query-planner/cql2-json.d.ts +17 -0
  220. package/query-planner/cql2-json.d.ts.map +1 -0
  221. package/query-planner/cql2-json.js +646 -0
  222. package/query-planner/diagnostics.d.ts +35 -0
  223. package/query-planner/diagnostics.d.ts.map +1 -0
  224. package/query-planner/diagnostics.js +373 -0
  225. package/query-planner/duckdb.d.ts +79 -0
  226. package/query-planner/duckdb.d.ts.map +1 -0
  227. package/query-planner/duckdb.js +758 -0
  228. package/query-planner/execution-context.d.ts +5 -0
  229. package/query-planner/execution-context.d.ts.map +1 -0
  230. package/query-planner/execution-context.js +50 -0
  231. package/query-planner/executor.d.ts +5 -0
  232. package/query-planner/executor.d.ts.map +1 -0
  233. package/query-planner/executor.js +223 -0
  234. package/query-planner/geoservices.d.ts +91 -0
  235. package/query-planner/geoservices.d.ts.map +1 -0
  236. package/query-planner/geoservices.js +667 -0
  237. package/query-planner/grpc.d.ts +100 -0
  238. package/query-planner/grpc.d.ts.map +1 -0
  239. package/query-planner/grpc.js +736 -0
  240. package/query-planner/index.d.ts +44 -0
  241. package/query-planner/index.d.ts.map +1 -0
  242. package/query-planner/index.js +30 -0
  243. package/query-planner/ir.d.ts +20 -0
  244. package/query-planner/ir.d.ts.map +1 -0
  245. package/query-planner/ir.js +417 -0
  246. package/query-planner/local-aggregate.d.ts +5 -0
  247. package/query-planner/local-aggregate.d.ts.map +1 -0
  248. package/query-planner/local-aggregate.js +126 -0
  249. package/query-planner/odata.d.ts +48 -0
  250. package/query-planner/odata.d.ts.map +1 -0
  251. package/query-planner/odata.js +662 -0
  252. package/query-planner/ogc-compiler.d.ts +55 -0
  253. package/query-planner/ogc-compiler.d.ts.map +1 -0
  254. package/query-planner/ogc-compiler.js +480 -0
  255. package/query-planner/ogc-features.d.ts +53 -0
  256. package/query-planner/ogc-features.d.ts.map +1 -0
  257. package/query-planner/ogc-features.js +617 -0
  258. package/query-planner/planner.d.ts +17 -0
  259. package/query-planner/planner.d.ts.map +1 -0
  260. package/query-planner/planner.js +818 -0
  261. package/query-planner/resource.d.ts +94 -0
  262. package/query-planner/resource.d.ts.map +1 -0
  263. package/query-planner/resource.js +526 -0
  264. package/query-planner/semantic-canonical.d.ts +15 -0
  265. package/query-planner/semantic-canonical.d.ts.map +1 -0
  266. package/query-planner/semantic-canonical.js +62 -0
  267. package/query-planner/semantic-compat.d.ts +10 -0
  268. package/query-planner/semantic-compat.d.ts.map +1 -0
  269. package/query-planner/semantic-compat.js +35 -0
  270. package/query-planner/semantic-compiler.d.ts +64 -0
  271. package/query-planner/semantic-compiler.d.ts.map +1 -0
  272. package/query-planner/semantic-compiler.js +81 -0
  273. package/query-planner/semantic-literals.d.ts +30 -0
  274. package/query-planner/semantic-literals.d.ts.map +1 -0
  275. package/query-planner/semantic-literals.js +133 -0
  276. package/query-planner/semantic-types.d.ts +265 -0
  277. package/query-planner/semantic-types.d.ts.map +1 -0
  278. package/query-planner/semantic-types.js +1 -0
  279. package/query-planner/semantic.d.ts +54 -0
  280. package/query-planner/semantic.d.ts.map +1 -0
  281. package/query-planner/semantic.js +1421 -0
  282. package/query-planner/types.d.ts +560 -0
  283. package/query-planner/types.d.ts.map +1 -0
  284. package/query-planner/types.js +49 -0
  285. package/query-planner/wfs-semantic.d.ts +58 -0
  286. package/query-planner/wfs-semantic.d.ts.map +1 -0
  287. package/query-planner/wfs-semantic.js +547 -0
  288. package/query-planner/wfs.d.ts +6 -0
  289. package/query-planner/wfs.d.ts.map +1 -0
  290. package/query-planner/wfs.js +71 -0
  291. package/react/external-map.d.ts +67 -0
  292. package/react/external-map.d.ts.map +1 -0
  293. package/react/external-map.js +63 -0
  294. package/react/honua-map.d.ts.map +1 -1
  295. package/react/honua-map.js +3 -2
  296. package/react/honua-source-layer.d.ts +110 -0
  297. package/react/honua-source-layer.d.ts.map +1 -0
  298. package/react/honua-source-layer.js +101 -0
  299. package/react/hooks.d.ts +28 -0
  300. package/react/hooks.d.ts.map +1 -1
  301. package/react/hooks.js +26 -4
  302. package/react/index.d.ts +8 -0
  303. package/react/index.d.ts.map +1 -1
  304. package/react/index.js +5 -0
  305. package/react/query-cache.d.ts +26 -4
  306. package/react/query-cache.d.ts.map +1 -1
  307. package/react/query-cache.js +51 -8
  308. package/react/selection.d.ts +177 -0
  309. package/react/selection.d.ts.map +1 -0
  310. package/react/selection.js +0 -0
  311. package/react/use-mounted-source.d.ts +69 -0
  312. package/react/use-mounted-source.d.ts.map +1 -0
  313. package/react/use-mounted-source.js +346 -0
  314. package/runtime/edit-snapping.d.ts +107 -0
  315. package/runtime/edit-snapping.d.ts.map +1 -0
  316. package/runtime/edit-snapping.js +190 -0
  317. package/runtime/errors.d.ts +3 -2
  318. package/runtime/errors.d.ts.map +1 -1
  319. package/runtime/errors.js +19 -2
  320. package/runtime/index.d.ts +8 -2
  321. package/runtime/index.d.ts.map +1 -1
  322. package/runtime/index.js +4 -4
  323. package/runtime/load-package.d.ts.map +1 -1
  324. package/runtime/load-package.js +8 -0
  325. package/runtime/map-package-validation.d.ts +0 -13
  326. package/runtime/map-package-validation.d.ts.map +1 -1
  327. package/runtime/map-package-validation.js +0 -12
  328. package/runtime/map-package.d.ts +1 -1
  329. package/runtime/map-package.d.ts.map +1 -1
  330. package/runtime/maplibre-renderer.d.ts +41 -0
  331. package/runtime/maplibre-renderer.d.ts.map +1 -0
  332. package/runtime/maplibre-renderer.js +322 -0
  333. package/runtime/pmtiles-protocol.d.ts +77 -0
  334. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  335. package/runtime/pmtiles-protocol.js +120 -0
  336. package/runtime/query-tiles.d.ts +2 -1
  337. package/runtime/query-tiles.d.ts.map +1 -1
  338. package/runtime/query-tiles.js +6 -2
  339. package/runtime/source-bridge.d.ts +4 -4
  340. package/runtime/source-bridge.d.ts.map +1 -1
  341. package/runtime/source-bridge.js +36 -56
  342. package/runtime/style-interactions.d.ts +3 -2
  343. package/runtime/style-interactions.d.ts.map +1 -1
  344. package/runtime/style-interactions.js +11 -3
  345. package/runtime/terra-draw-sketch.d.ts +275 -0
  346. package/runtime/terra-draw-sketch.d.ts.map +1 -0
  347. package/runtime/terra-draw-sketch.js +404 -0
  348. package/source-capability-registry.d.ts +1 -0
  349. package/source-capability-registry.js +1 -0
  350. package/source-capability-types.d.ts +186 -0
  351. package/source-capability-types.js +7 -0
  352. package/style/index.d.ts +2 -0
  353. package/style/index.d.ts.map +1 -1
  354. package/style/index.js +2 -0
  355. package/style/renderers.d.ts +326 -0
  356. package/style/renderers.d.ts.map +1 -0
  357. package/style/renderers.js +517 -0
  358. package/webmap/convert-renderer.d.ts +24 -3
  359. package/webmap/convert-renderer.d.ts.map +1 -1
  360. package/webmap/convert-renderer.js +93 -112
  361. package/webmap/index.d.ts +1 -1
  362. package/webmap/index.d.ts.map +1 -1
  363. package/webmap/index.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/sketch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sketch.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/sketch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,26 @@
1
1
  import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from "./event-bus.js";
2
+ import { snappingOptionsToSnappingConfig } from "./snapping.js";
3
+ const SKETCH_COMPAT_TOOL_TO_EDIT_TOOL = Object.freeze({
4
+ point: "point",
5
+ polyline: "line",
6
+ polygon: "polygon",
7
+ rectangle: "rectangle",
8
+ circle: "circle",
9
+ });
10
+ /**
11
+ * Feature-detect a terra-draw sketch binding: any object exposing a callable
12
+ * `setTool` qualifies; anything else (including `undefined` when terra-draw
13
+ * is not installed) resolves to `undefined` and the shim keeps its current
14
+ * headless behavior.
15
+ *
16
+ * @experimental
17
+ */
18
+ export function resolveSketchToolBindingCompat(value) {
19
+ if (value !== null && typeof value === "object" && typeof value.setTool === "function") {
20
+ return value;
21
+ }
22
+ return undefined;
23
+ }
2
24
  export class SketchCompat {
3
25
  view;
4
26
  layer;
@@ -15,7 +37,9 @@ export class SketchCompat {
15
37
  activeCreateOptions;
16
38
  activeUpdateGraphics;
17
39
  activeUpdateOptions;
40
+ snappingOptions;
18
41
  watchListeners;
42
+ sketchBinding;
19
43
  constructor(options = {}) {
20
44
  this.view = options.view;
21
45
  this.layer = options.layer;
@@ -32,7 +56,23 @@ export class SketchCompat {
32
56
  this.activeCreateOptions = undefined;
33
57
  this.activeUpdateGraphics = [];
34
58
  this.activeUpdateOptions = undefined;
59
+ this.snappingOptions = { ...(options.snappingOptions ?? {}) };
35
60
  this.watchListeners = new Map();
61
+ this.sketchBinding = resolveSketchToolBindingCompat(options.sketchBinding);
62
+ }
63
+ /** Whether tool modes delegate to a terra-draw sketch binding. @experimental */
64
+ delegatesToSketchBinding() {
65
+ return this.sketchBinding !== undefined;
66
+ }
67
+ /** Replace the ArcGIS-shaped snapping options and notify watchers. */
68
+ setSnappingOptions(options) {
69
+ this.snappingOptions = { ...options };
70
+ this.notifyWatchers("snappingOptions", this.snappingOptions);
71
+ this.eventBus.emit("sketch.snapping-options-changed", { options: this.snappingOptions }, this);
72
+ }
73
+ /** The snapping options mapped onto the contract `SnappingConfig`. */
74
+ snappingConfig() {
75
+ return snappingOptionsToSnappingConfig(this.snappingOptions);
36
76
  }
37
77
  async load() {
38
78
  if (this.loaded) {
@@ -83,6 +123,7 @@ export class SketchCompat {
83
123
  creationMode: this.creationMode,
84
124
  options: this.activeCreateOptions,
85
125
  }, this);
126
+ this.sketchBinding?.setTool(SKETCH_COMPAT_TOOL_TO_EDIT_TOOL[tool]);
86
127
  }
87
128
  complete(graphic) {
88
129
  if (this.state !== "active" || !this.activeTool) {
@@ -97,6 +138,8 @@ export class SketchCompat {
97
138
  graphic: createdGraphic,
98
139
  layerGraphicCount: getLayerGraphics(this.layer).length,
99
140
  }, this);
141
+ if (this.creationMode !== "continuous")
142
+ this.sketchBinding?.cancel?.();
100
143
  return {
101
144
  state: "complete",
102
145
  tool,
@@ -110,6 +153,7 @@ export class SketchCompat {
110
153
  const tool = this.activeTool;
111
154
  this.clearActiveState();
112
155
  this.eventBus.emit("sketch.create-cancelled", { tool }, this);
156
+ this.sketchBinding?.cancel?.();
113
157
  return {
114
158
  state: "cancel",
115
159
  tool,
@@ -128,6 +172,7 @@ export class SketchCompat {
128
172
  count: normalizedGraphics.length,
129
173
  options: this.activeUpdateOptions,
130
174
  }, this);
175
+ this.sketchBinding?.select?.();
131
176
  return this.activeUpdateGraphics;
132
177
  }
133
178
  delete(graphics) {
@@ -157,6 +202,7 @@ export class SketchCompat {
157
202
  this.activeUpdateOptions = undefined;
158
203
  this.notifyWatchers("activeUpdateOptions", this.activeUpdateOptions);
159
204
  this.eventBus.emit("sketch.reset", undefined, this);
205
+ this.sketchBinding?.cancel?.();
160
206
  }
161
207
  clearActiveState() {
162
208
  this.state = "ready";
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ArcGIS `SnappingOptions`-shaped compat surface, mapped onto the
3
+ * renderer-neutral `SnappingConfig` from `contract/edit-snapping.ts`.
4
+ *
5
+ * @module
6
+ */
7
+ import { type SnappingConfig } from "../contract/edit-snapping.js";
8
+ /** ArcGIS `FeatureSnappingLayerSource`-shaped entry. */
9
+ export interface SnappingFeatureSourceCompat {
10
+ /** Layer (or layer-like object) providing snap features. */
11
+ layer?: unknown;
12
+ /** Explicit Honua source id when no layer id is derivable. */
13
+ id?: string;
14
+ /** @default true */
15
+ enabled?: boolean;
16
+ }
17
+ /** ArcGIS `SnappingOptions`-shaped configuration accepted by the shims. */
18
+ export interface SnappingOptionsCompat {
19
+ /** Master switch. ArcGIS defaults snapping off. @default false */
20
+ enabled?: boolean;
21
+ /** Snap distance in pixels; maps to `SnappingConfig.tolerance`. */
22
+ distance?: number;
23
+ /** Snap to features from `featureSources`. @default true */
24
+ featureEnabled?: boolean;
25
+ /**
26
+ * Snap to the geometry being drawn. Stored for parity; self snapping is a
27
+ * runtime concern (index the active sketch source to approximate it).
28
+ * @default true
29
+ */
30
+ selfEnabled?: boolean;
31
+ featureSources?: readonly SnappingFeatureSourceCompat[];
32
+ }
33
+ /**
34
+ * Map ArcGIS-shaped snapping options to the contract `SnappingConfig`.
35
+ *
36
+ * `distance` maps to pixel tolerance; `featureSources` map to per-source
37
+ * enablement keyed by `source.id` (falling back to a duck-typed `layer.id` /
38
+ * `layer.sourceId`); `featureEnabled: false` disables every listed source.
39
+ * Vertex and edge candidates are enabled — matching ArcGIS 2D snapping,
40
+ * which always resolves both.
41
+ */
42
+ export declare function snappingOptionsToSnappingConfig(options?: SnappingOptionsCompat): SnappingConfig;
43
+ //# sourceMappingURL=snapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapping.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/snapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,8BAA8B,CAAC;AAEtC,wDAAwD;AACxD,MAAM,WAAW,2BAA2B;IAC1C,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAcnG"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * ArcGIS `SnappingOptions`-shaped compat surface, mapped onto the
3
+ * renderer-neutral `SnappingConfig` from `contract/edit-snapping.ts`.
4
+ *
5
+ * @module
6
+ */
7
+ import { DEFAULT_SNAPPING_CONFIG, resolveSnappingConfig, } from "../contract/edit-snapping.js";
8
+ /**
9
+ * Map ArcGIS-shaped snapping options to the contract `SnappingConfig`.
10
+ *
11
+ * `distance` maps to pixel tolerance; `featureSources` map to per-source
12
+ * enablement keyed by `source.id` (falling back to a duck-typed `layer.id` /
13
+ * `layer.sourceId`); `featureEnabled: false` disables every listed source.
14
+ * Vertex and edge candidates are enabled — matching ArcGIS 2D snapping,
15
+ * which always resolves both.
16
+ */
17
+ export function snappingOptionsToSnappingConfig(options = {}) {
18
+ const kinds = ["vertex", "edge"];
19
+ const sources = {};
20
+ for (const featureSource of options.featureSources ?? []) {
21
+ const sourceId = featureSourceId(featureSource);
22
+ if (sourceId === undefined)
23
+ continue;
24
+ sources[sourceId] = options.featureEnabled === false ? false : (featureSource.enabled ?? true);
25
+ }
26
+ return resolveSnappingConfig({
27
+ enabled: options.enabled ?? false,
28
+ tolerance: options.distance ?? DEFAULT_SNAPPING_CONFIG.tolerance,
29
+ kinds,
30
+ sources,
31
+ });
32
+ }
33
+ function featureSourceId(featureSource) {
34
+ if (featureSource.id !== undefined)
35
+ return featureSource.id;
36
+ const layer = featureSource.layer;
37
+ if (layer && typeof layer === "object") {
38
+ const candidate = layer;
39
+ if (typeof candidate.id === "string")
40
+ return candidate.id;
41
+ if (typeof candidate.sourceId === "string")
42
+ return candidate.sourceId;
43
+ }
44
+ return undefined;
45
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAkBvE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAanE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAarE"}
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/url.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAkBvE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAanE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAarE"}
@@ -1,7 +1,7 @@
1
1
  const ABSOLUTE_URL_RE = /^[A-Za-z][A-Za-z\d+.-]*:\/\//;
2
2
  const PROTOCOL_RELATIVE_URL_RE = /^\/\//;
3
3
  const RELATIVE_URL_BASE = "https://honua.invalid";
4
- const FEATURE_LAYER_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/FeatureServer\/(?<layerId>\d+)\/?$/;
4
+ const FEATURE_LAYER_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+(?:\/[^/]+)*)\/FeatureServer\/(?<layerId>\d+)\/?$/;
5
5
  const MAP_SERVICE_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/MapServer(?:\/\d+)?\/?$/;
6
6
  const IMAGE_SERVICE_PATH_RE = /^(?<prefix>.*)\/rest\/services\/(?<serviceId>[^/]+)\/ImageServer(?:\/\d+)?\/?$/;
7
7
  export function parseFeatureLayerUrl(url) {
@@ -0,0 +1,84 @@
1
+ /**
2
+ * `HonuaWidgetHost` — mounts the app-platform survival-tier web components
3
+ * (`@honua/sdk-js/web-components`, moving to `@honua/app-platform`) into the
4
+ * `container` an esri-compat widget shim was constructed with, so shim UI
5
+ * renders through the shared component set instead of shim-only markup
6
+ * (issue #493, REQ-004).
7
+ *
8
+ * The host **never imports the web-component kit** — not even dynamically:
9
+ * the `/esri-compat` entrypoint is bundle-budgeted, and any intra-package
10
+ * import (static or `import()`) would pull the whole kit plus its geometry
11
+ * closure into every compat bundle. Instead the application injects the kit
12
+ * once via {@link registerHonuaWidgetKit}:
13
+ *
14
+ * ```ts doc-test=skip reason="wiring snippet requires an application host"
15
+ * import { registerHonuaWidgetKit } from "@honua/sdk-esri-compat";
16
+ *
17
+ * // Eager (module object) or lazy (loader) — both work:
18
+ * registerHonuaWidgetKit(() => import("@honua/sdk-js/web-components"));
19
+ * ```
20
+ *
21
+ * The host is deliberately defensive:
22
+ *
23
+ * - It resolves the ArcGIS-style `container` option (an `HTMLElement` or an
24
+ * element id) only when a DOM is present; headless (Node) shim usage keeps
25
+ * working with no DOM side effects.
26
+ * - Without a registered kit — the default, and the only possibility in the
27
+ * standalone `@honua/sdk-esri-compat` split package unless the app installs
28
+ * the kit — mounting quietly no-ops and the shims stay state-model-only,
29
+ * exactly their pre-delegation behavior.
30
+ * - The delegation tag must be owned by the kit's own element class; a
31
+ * foreign registrant (e.g. the controls kit's `honua-legend`, which has a
32
+ * different `entries` API) also falls back to the headless behavior.
33
+ *
34
+ * @module
35
+ */
36
+ /** Element surface the host hands back to shim update callbacks. */
37
+ export interface HonuaWidgetHostElement extends HTMLElement {
38
+ [key: string]: unknown;
39
+ }
40
+ /**
41
+ * Structural slice of the `@honua/sdk-js/web-components` module the host
42
+ * needs: the element classes (to verify tag ownership) and the registration
43
+ * helper. Passing the whole module object satisfies this interface.
44
+ */
45
+ export interface HonuaWidgetKitLike {
46
+ HonuaLegendElement?: CustomElementConstructor;
47
+ HonuaLayerListElement?: CustomElementConstructor;
48
+ HonuaSearchElement?: CustomElementConstructor;
49
+ HonuaMeasurementElement?: CustomElementConstructor;
50
+ defineHonuaWebComponents?: (registry?: CustomElementRegistry) => void;
51
+ }
52
+ /** A kit module object, or a (possibly async) loader for one. */
53
+ export type HonuaWidgetKitSource = HonuaWidgetKitLike | (() => HonuaWidgetKitLike | Promise<HonuaWidgetKitLike>);
54
+ /**
55
+ * Injects the web-component kit that {@link HonuaWidgetHost} delegates to.
56
+ * Call once from application code with the `@honua/sdk-js/web-components`
57
+ * (or `@honua/app-platform/web-components`) module — eagerly or as a lazy
58
+ * loader. Pass `undefined` to unregister (shims return to headless mode).
59
+ */
60
+ export declare function registerHonuaWidgetKit(source: HonuaWidgetKitSource | undefined): void;
61
+ export declare class HonuaWidgetHost {
62
+ #private;
63
+ constructor(tagName: string, container: unknown);
64
+ /** Whether a usable container was resolved (requires a DOM). */
65
+ get available(): boolean;
66
+ /** The mounted element, when {@link mount} has completed. */
67
+ get element(): HonuaWidgetHostElement | undefined;
68
+ /**
69
+ * Ensures the injected web-component kit is registered and the element is
70
+ * mounted into the container. Returns the element, or `undefined` when no
71
+ * DOM / container / kit is available (headless shims, or an application
72
+ * that never called {@link registerHonuaWidgetKit}).
73
+ */
74
+ mount(): Promise<HonuaWidgetHostElement | undefined>;
75
+ /**
76
+ * Mounts (when needed) and applies `assign` to the element. Fire-and-forget
77
+ * friendly: shims call `void host.update(...)` from synchronous refresh
78
+ * paths.
79
+ */
80
+ update(assign: (element: HonuaWidgetHostElement) => void): Promise<void>;
81
+ /** Removes the mounted element from the container. */
82
+ destroy(): void;
83
+ }
84
+ //# sourceMappingURL=widget-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-host.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/widget-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AASH,oEAAoE;AACpE,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,wBAAwB,CAAC;IACjD,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,uBAAuB,CAAC,EAAE,wBAAwB,CAAC;IACnD,wBAAwB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACvE;AAED,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAIjH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAErF;AAED,qBAAa,eAAe;;gBAOP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAKtD,gEAAgE;IAChE,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,6DAA6D;IAC7D,IAAW,OAAO,IAAI,sBAAsB,GAAG,SAAS,CAEvD;IAED;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAYjE;;;;OAIG;IACU,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrF,sDAAsD;IAC/C,OAAO,IAAI,IAAI;CAmCvB"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * `HonuaWidgetHost` — mounts the app-platform survival-tier web components
3
+ * (`@honua/sdk-js/web-components`, moving to `@honua/app-platform`) into the
4
+ * `container` an esri-compat widget shim was constructed with, so shim UI
5
+ * renders through the shared component set instead of shim-only markup
6
+ * (issue #493, REQ-004).
7
+ *
8
+ * The host **never imports the web-component kit** — not even dynamically:
9
+ * the `/esri-compat` entrypoint is bundle-budgeted, and any intra-package
10
+ * import (static or `import()`) would pull the whole kit plus its geometry
11
+ * closure into every compat bundle. Instead the application injects the kit
12
+ * once via {@link registerHonuaWidgetKit}:
13
+ *
14
+ * ```ts doc-test=skip reason="wiring snippet requires an application host"
15
+ * import { registerHonuaWidgetKit } from "@honua/sdk-esri-compat";
16
+ *
17
+ * // Eager (module object) or lazy (loader) — both work:
18
+ * registerHonuaWidgetKit(() => import("@honua/sdk-js/web-components"));
19
+ * ```
20
+ *
21
+ * The host is deliberately defensive:
22
+ *
23
+ * - It resolves the ArcGIS-style `container` option (an `HTMLElement` or an
24
+ * element id) only when a DOM is present; headless (Node) shim usage keeps
25
+ * working with no DOM side effects.
26
+ * - Without a registered kit — the default, and the only possibility in the
27
+ * standalone `@honua/sdk-esri-compat` split package unless the app installs
28
+ * the kit — mounting quietly no-ops and the shims stay state-model-only,
29
+ * exactly their pre-delegation behavior.
30
+ * - The delegation tag must be owned by the kit's own element class; a
31
+ * foreign registrant (e.g. the controls kit's `honua-legend`, which has a
32
+ * different `entries` API) also falls back to the headless behavior.
33
+ *
34
+ * @module
35
+ */
36
+ const globalDom = globalThis;
37
+ let widgetKitSource;
38
+ /**
39
+ * Injects the web-component kit that {@link HonuaWidgetHost} delegates to.
40
+ * Call once from application code with the `@honua/sdk-js/web-components`
41
+ * (or `@honua/app-platform/web-components`) module — eagerly or as a lazy
42
+ * loader. Pass `undefined` to unregister (shims return to headless mode).
43
+ */
44
+ export function registerHonuaWidgetKit(source) {
45
+ widgetKitSource = source;
46
+ }
47
+ export class HonuaWidgetHost {
48
+ #tagName;
49
+ #container;
50
+ #element;
51
+ #kitLoad;
52
+ #kitLoadSource;
53
+ constructor(tagName, container) {
54
+ this.#tagName = tagName;
55
+ this.#container = resolveContainer(container);
56
+ }
57
+ /** Whether a usable container was resolved (requires a DOM). */
58
+ get available() {
59
+ return this.#container !== undefined;
60
+ }
61
+ /** The mounted element, when {@link mount} has completed. */
62
+ get element() {
63
+ return this.#element;
64
+ }
65
+ /**
66
+ * Ensures the injected web-component kit is registered and the element is
67
+ * mounted into the container. Returns the element, or `undefined` when no
68
+ * DOM / container / kit is available (headless shims, or an application
69
+ * that never called {@link registerHonuaWidgetKit}).
70
+ */
71
+ async mount() {
72
+ const container = this.#container;
73
+ if (!container || !globalDom.document)
74
+ return undefined;
75
+ if (!(await this.#loadKit()))
76
+ return undefined;
77
+ if (!this.#element || !this.#element.isConnected) {
78
+ const element = globalDom.document.createElement(this.#tagName);
79
+ container.replaceChildren(element);
80
+ this.#element = element;
81
+ }
82
+ return this.#element;
83
+ }
84
+ /**
85
+ * Mounts (when needed) and applies `assign` to the element. Fire-and-forget
86
+ * friendly: shims call `void host.update(...)` from synchronous refresh
87
+ * paths.
88
+ */
89
+ async update(assign) {
90
+ const element = await this.mount();
91
+ if (element)
92
+ assign(element);
93
+ }
94
+ /** Removes the mounted element from the container. */
95
+ destroy() {
96
+ this.#element?.remove();
97
+ this.#element = undefined;
98
+ }
99
+ #loadKit() {
100
+ const source = widgetKitSource;
101
+ // No kit injected (yet): stay headless without caching, so a later
102
+ // registerHonuaWidgetKit call is picked up by the next refresh.
103
+ if (!source)
104
+ return Promise.resolve(false);
105
+ if (!this.#kitLoad || this.#kitLoadSource !== source) {
106
+ this.#kitLoadSource = source;
107
+ this.#kitLoad = (async () => {
108
+ let kit;
109
+ try {
110
+ kit = typeof source === "function" ? await source() : source;
111
+ // Importing the kit module registers the elements as a side effect;
112
+ // calling the helper again is an if-missing no-op, but covers kits
113
+ // handed over as plain objects in scoped-registry setups.
114
+ kit.defineHonuaWebComponents?.();
115
+ }
116
+ catch {
117
+ return false;
118
+ }
119
+ // The tag must be owned by the kit's own class. Another registrant
120
+ // can win the tag (e.g. the controls kit registers its own
121
+ // `honua-legend` with a different `entries` API when imported first);
122
+ // mounting that element and assigning the web-components properties
123
+ // would render nothing, so fall back to the headless shim behavior.
124
+ const expected = expectedKitConstructor(kit, this.#tagName);
125
+ const registered = globalDom.customElements?.get(this.#tagName);
126
+ return expected !== undefined && registered === expected;
127
+ })();
128
+ }
129
+ return this.#kitLoad;
130
+ }
131
+ }
132
+ /** Resolves the web-components kit class that must own `tagName` for delegation. */
133
+ function expectedKitConstructor(kit, tagName) {
134
+ switch (tagName) {
135
+ case "honua-legend":
136
+ return kit.HonuaLegendElement;
137
+ case "honua-layer-list":
138
+ return kit.HonuaLayerListElement;
139
+ case "honua-search":
140
+ return kit.HonuaSearchElement;
141
+ case "honua-measurement":
142
+ return kit.HonuaMeasurementElement;
143
+ default:
144
+ return undefined;
145
+ }
146
+ }
147
+ function resolveContainer(container) {
148
+ if (!globalDom.document)
149
+ return undefined;
150
+ if (typeof container === "string") {
151
+ return globalDom.document.getElementById(container) ?? undefined;
152
+ }
153
+ if (typeof container === "object" &&
154
+ container !== null &&
155
+ typeof container.appendChild === "function") {
156
+ return container;
157
+ }
158
+ return undefined;
159
+ }
@@ -0,0 +1,145 @@
1
+ /**
2
+ * `@honua/sdk-js/filter-registry` — shared filter / crossfilter registry.
3
+ *
4
+ * Protocol-neutral state container for map, chart, table, search, and control
5
+ * filters. Projection helpers translate active clauses into existing SDK
6
+ * query, linked-view, widget, runtime-style, and URL state.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createFilterRegistry, projectFilterRegistryToQuery } from "@honua/sdk-js/filter-registry";
11
+ *
12
+ * const registry = createFilterRegistry();
13
+ * registry.set("status", { field: "STATUS", op: "=", value: "ACTIVE" });
14
+ * registry.set("severity", { field: "SEVERITY", op: ">=", value: 3 });
15
+ *
16
+ * const query = projectFilterRegistryToQuery(registry, { sourceId: "incidents" });
17
+ * const { features } = await dataset.source("incidents")!.queryAll(query);
18
+ * ```
19
+ *
20
+ * @packageDocumentation
21
+ */
22
+ import type { DegradedReason, Query, SourceDescriptor, SourceId } from "../contract/types.js";
23
+ import type { WidgetSourceProjection } from "../contract/widget-source.js";
24
+ import type { SpatialFilter } from "../core/spatial-filter.js";
25
+ import type { HonuaExtent } from "../core/types.js";
26
+ import type { LinkedViewQueryProjection } from "../exploration/selectors.js";
27
+ import type { FilterOperator } from "../exploration/types.js";
28
+ export type FilterRegistryOwner = {
29
+ readonly kind: "map";
30
+ readonly id: string;
31
+ } | {
32
+ readonly kind: "chart";
33
+ readonly id: string;
34
+ } | {
35
+ readonly kind: "table";
36
+ readonly id: string;
37
+ } | {
38
+ readonly kind: "search";
39
+ readonly id: string;
40
+ } | {
41
+ readonly kind: "control";
42
+ readonly id: string;
43
+ } | {
44
+ readonly kind: "component";
45
+ readonly id: string;
46
+ };
47
+ export type FilterLifecycle = "persistent" | "session" | "transient";
48
+ export type FilterEffect = "filter" | "crossfilter" | "selection" | "search" | "spatial-mask";
49
+ export type FilterSourceScope = "all" | readonly SourceId[];
50
+ export type FilterRuntimeApplyMode = "server" | "runtime" | "client";
51
+ export type RuntimeStyleFilterExpression = readonly unknown[];
52
+ export interface FilterValuePolicy {
53
+ /** Omit this value from URL/share serialization. */
54
+ readonly secret?: boolean;
55
+ /** Omit values whose stable JSON representation exceeds this size. @default 2048 */
56
+ readonly maxSerializedBytes?: number;
57
+ }
58
+ export interface RegistrySpatialScope {
59
+ readonly filter?: SpatialFilter;
60
+ readonly extent?: HonuaExtent;
61
+ }
62
+ export interface FilterClause {
63
+ readonly id: string;
64
+ readonly owner: FilterRegistryOwner;
65
+ readonly sourceScope?: FilterSourceScope;
66
+ readonly field?: string;
67
+ readonly operator?: FilterOperator;
68
+ readonly value?: unknown;
69
+ readonly spatialScope?: RegistrySpatialScope;
70
+ readonly lifecycle?: FilterLifecycle;
71
+ readonly effect?: FilterEffect;
72
+ readonly enabled?: boolean;
73
+ readonly cacheable?: boolean;
74
+ readonly valuePolicy?: FilterValuePolicy;
75
+ }
76
+ export interface FilterRegistrySnapshot {
77
+ readonly version: 1;
78
+ readonly clauses: readonly FilterClause[];
79
+ }
80
+ export interface ShareableFilterRegistryState {
81
+ readonly version: 1;
82
+ readonly clauses: readonly FilterClause[];
83
+ }
84
+ export interface FilterRegistryChangeEvent {
85
+ readonly snapshot: FilterRegistrySnapshot;
86
+ readonly previous: FilterRegistrySnapshot;
87
+ readonly changedIds: ReadonlySet<string>;
88
+ }
89
+ export type FilterRegistryListener = (event: FilterRegistryChangeEvent) => void;
90
+ export type FilterRegistrySelector<T> = (snapshot: FilterRegistrySnapshot) => T;
91
+ export type FilterRegistrySelectorListener<T> = (value: T, event: FilterRegistryChangeEvent | undefined) => void;
92
+ export type FilterRegistryUnsubscribe = () => void;
93
+ export interface FilterRegistrySelectorOptions<T> {
94
+ readonly fireImmediately?: boolean;
95
+ readonly equals?: (left: T, right: T) => boolean;
96
+ }
97
+ export interface FilterRegistry {
98
+ readonly snapshot: FilterRegistrySnapshot;
99
+ upsert(clause: FilterClause): void;
100
+ remove(id: string): void;
101
+ clearOwner(owner: FilterRegistryOwner): void;
102
+ clearSource(sourceId: SourceId): void;
103
+ setEnabled(id: string, enabled: boolean): void;
104
+ replace(snapshot: FilterRegistrySnapshot): void;
105
+ subscribe(listener: FilterRegistryListener): FilterRegistryUnsubscribe;
106
+ select<T>(selector: FilterRegistrySelector<T>, listener: FilterRegistrySelectorListener<T>, options?: FilterRegistrySelectorOptions<T>): FilterRegistryUnsubscribe;
107
+ }
108
+ export interface CreateFilterRegistryOptions {
109
+ readonly initialClauses?: readonly FilterClause[];
110
+ }
111
+ export interface FilterRegistryProjectionOptions {
112
+ readonly sourceId?: SourceId;
113
+ readonly includeDisabled?: boolean;
114
+ }
115
+ export interface FilterRegistryQueryProjectionOptions extends FilterRegistryProjectionOptions {
116
+ readonly baseQuery?: Query;
117
+ readonly source?: Pick<SourceDescriptor, "id" | "protocol" | "capabilities">;
118
+ }
119
+ export interface FilterRegistryQueryProjection {
120
+ readonly query: Query;
121
+ readonly where?: string;
122
+ readonly projection: WidgetSourceProjection;
123
+ readonly linkedView: LinkedViewQueryProjection;
124
+ readonly runtimeFilter?: RuntimeStyleFilterExpression;
125
+ readonly degraded?: readonly DegradedReason[];
126
+ readonly cacheKey: string;
127
+ readonly cacheable: boolean;
128
+ }
129
+ /** Create an in-memory filter registry with owner-scoped mutation helpers. */
130
+ export declare function createFilterRegistry(options?: CreateFilterRegistryOptions): FilterRegistry;
131
+ /** Return active clauses in deterministic id order, optionally source-scoped. */
132
+ export declare function selectActiveFilterClauses(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): readonly FilterClause[];
133
+ /** Project active registry clauses into query/widget/linked-view/runtime state. */
134
+ export declare function projectFilterRegistryToQuery(snapshot: FilterRegistrySnapshot, options?: FilterRegistryQueryProjectionOptions): FilterRegistryQueryProjection;
135
+ /** Project active clauses directly into a `WidgetSourceProjection`. */
136
+ export declare function projectFilterRegistryToWidgetProjection(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): WidgetSourceProjection;
137
+ /** Project active clauses into the linked-view projection consumed by existing helpers. */
138
+ export declare function projectFilterRegistryToLinkedView(snapshot: FilterRegistrySnapshot, options?: FilterRegistryQueryProjectionOptions): LinkedViewQueryProjection;
139
+ /** Compile active field clauses into a MapLibre-compatible expression tree. */
140
+ export declare function compileRuntimeStyleFilter(clauses: readonly FilterClause[]): RuntimeStyleFilterExpression | undefined;
141
+ /** Deterministic URL/cache serialization. Secret or large values are omitted. */
142
+ export declare function serializeFilterRegistry(snapshot: FilterRegistrySnapshot, options?: FilterRegistryProjectionOptions): string;
143
+ /** Parse a registry serialization produced by `serializeFilterRegistry`. */
144
+ export declare function parseFilterRegistry(value: string | null | undefined): FilterRegistrySnapshot;
145
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filter-registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAEV,cAAc,EAGd,KAAK,EAEL,gBAAgB,EAChB,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;AAC9F,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,SAAS,QAAQ,EAAE,CAAC;AAC5D,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AACrE,MAAM,MAAM,4BAA4B,GAAG,SAAS,OAAO,EAAE,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;AAChF,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,KAAK,CAAC,CAAC;AAChF,MAAM,MAAM,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,yBAAyB,GAAG,SAAS,KAAK,IAAI,CAAC;AACjH,MAAM,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC;AAEnD,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC7C,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,OAAO,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,QAAQ,EAAE,sBAAsB,GAAG,yBAAyB,CAAC;IACvE,MAAM,CAAC,CAAC,EACN,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACnC,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC,EAC3C,OAAO,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,GACzC,yBAAyB,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,oCAAqC,SAAQ,+BAA+B;IAC3F,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,GAAG,cAAc,CAAC,CAAC;CAC9E;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAoCD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,cAAc,CAuF9F;AAED,iFAAiF;AACjF,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,+BAAoC,GAC5C,SAAS,YAAY,EAAE,CAOzB;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,oCAAyC,GACjD,6BAA6B,CAsC/B;AAED,uEAAuE;AACvE,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,+BAAoC,GAC5C,sBAAsB,CAGxB;AAED,2FAA2F;AAC3F,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,oCAAyC,GACjD,yBAAyB,CAE3B;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,4BAA4B,GAAG,SAAS,CAOpH;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,GAAE,+BAAoC,GAC5C,MAAM,CAQR;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,sBAAsB,CAS5F"}