@sakuzu/maplibre-gl-draw 1.0.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 (636) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE +661 -0
  3. package/README.ja.md +248 -0
  4. package/README.md +255 -0
  5. package/THIRD_PARTY_NOTICES.md +275 -0
  6. package/dist/api/api.d.ts +1259 -0
  7. package/dist/api/api.js +86 -0
  8. package/dist/api/context.d.ts +173 -0
  9. package/dist/api/context.js +193 -0
  10. package/dist/api/display-api.d.ts +1 -0
  11. package/dist/api/display-api.js +23 -0
  12. package/dist/api/event-api.d.ts +13 -0
  13. package/dist/api/event-api.js +17 -0
  14. package/dist/api/extension-api.d.ts +46 -0
  15. package/dist/api/extension-api.js +85 -0
  16. package/dist/api/feature-api.d.ts +11 -0
  17. package/dist/api/feature-api.js +101 -0
  18. package/dist/api/geometry/apply.d.ts +51 -0
  19. package/dist/api/geometry/apply.js +114 -0
  20. package/dist/api/geometry/boolean.d.ts +28 -0
  21. package/dist/api/geometry/boolean.js +65 -0
  22. package/dist/api/geometry/buffer.d.ts +11 -0
  23. package/dist/api/geometry/buffer.js +105 -0
  24. package/dist/api/geometry/split.d.ts +16 -0
  25. package/dist/api/geometry/split.js +75 -0
  26. package/dist/api/geometry/targets.d.ts +76 -0
  27. package/dist/api/geometry/targets.js +158 -0
  28. package/dist/api/geometry/types.d.ts +31 -0
  29. package/dist/api/geometry/types.js +3 -0
  30. package/dist/api/geometry-operations.d.ts +162 -0
  31. package/dist/api/geometry-operations.js +94 -0
  32. package/dist/api/group-api.d.ts +10 -0
  33. package/dist/api/group-api.js +78 -0
  34. package/dist/api/import-export/constants.d.ts +29 -0
  35. package/dist/api/import-export/constants.js +40 -0
  36. package/dist/api/import-export/embedded-file.d.ts +13 -0
  37. package/dist/api/import-export/embedded-file.js +31 -0
  38. package/dist/api/import-export/file-name.d.ts +10 -0
  39. package/dist/api/import-export/file-name.js +20 -0
  40. package/dist/api/import-export/format-detection.d.ts +12 -0
  41. package/dist/api/import-export/format-detection.js +29 -0
  42. package/dist/api/import-export/geojson-export.d.ts +19 -0
  43. package/dist/api/import-export/geojson-export.js +262 -0
  44. package/dist/api/import-export/geojson-import.d.ts +34 -0
  45. package/dist/api/import-export/geojson-import.js +538 -0
  46. package/dist/api/import-export/geometry-validation.d.ts +20 -0
  47. package/dist/api/import-export/geometry-validation.js +107 -0
  48. package/dist/api/import-export/image-import.d.ts +12 -0
  49. package/dist/api/import-export/image-import.js +53 -0
  50. package/dist/api/import-export/index.d.ts +9 -0
  51. package/dist/api/import-export/index.js +107 -0
  52. package/dist/api/import-export/native-format.d.ts +15 -0
  53. package/dist/api/import-export/native-format.js +126 -0
  54. package/dist/api/import-export/native-validation.d.ts +28 -0
  55. package/dist/api/import-export/native-validation.js +212 -0
  56. package/dist/api/import-export/own-property.d.ts +10 -0
  57. package/dist/api/import-export/own-property.js +19 -0
  58. package/dist/api/import-export/style-validation.d.ts +27 -0
  59. package/dist/api/import-export/style-validation.js +49 -0
  60. package/dist/api/import-export/types.d.ts +26 -0
  61. package/dist/api/import-export/types.js +3 -0
  62. package/dist/api/index.d.ts +15 -0
  63. package/dist/api/index.js +3 -0
  64. package/dist/api/input-api.d.ts +158 -0
  65. package/dist/api/input-api.js +144 -0
  66. package/dist/api/instance-api.d.ts +38 -0
  67. package/dist/api/instance-api.js +136 -0
  68. package/dist/api/layer-api.d.ts +12 -0
  69. package/dist/api/layer-api.js +62 -0
  70. package/dist/api/selection-api.d.ts +7 -0
  71. package/dist/api/selection-api.js +78 -0
  72. package/dist/api/snapping-api.d.ts +125 -0
  73. package/dist/api/snapping-api.js +50 -0
  74. package/dist/api/topology-api.d.ts +30 -0
  75. package/dist/api/topology-api.js +16 -0
  76. package/dist/api/tracing-api.d.ts +31 -0
  77. package/dist/api/tracing-api.js +16 -0
  78. package/dist/dispatcher/hit-test/box-strategies.d.ts +19 -0
  79. package/dist/dispatcher/hit-test/box-strategies.js +275 -0
  80. package/dist/dispatcher/hit-test/box-strategy.d.ts +59 -0
  81. package/dist/dispatcher/hit-test/box-strategy.js +37 -0
  82. package/dist/dispatcher/hit-test/globe-shape.d.ts +46 -0
  83. package/dist/dispatcher/hit-test/globe-shape.js +70 -0
  84. package/dist/dispatcher/hit-test/index.d.ts +14 -0
  85. package/dist/dispatcher/hit-test/index.js +9 -0
  86. package/dist/dispatcher/hit-test/local-frame.d.ts +77 -0
  87. package/dist/dispatcher/hit-test/local-frame.js +112 -0
  88. package/dist/dispatcher/hit-test/segment-grid.d.ts +32 -0
  89. package/dist/dispatcher/hit-test/segment-grid.js +79 -0
  90. package/dist/dispatcher/hit-test/service.d.ts +120 -0
  91. package/dist/dispatcher/hit-test/service.js +333 -0
  92. package/dist/dispatcher/hit-test/strategies/base.d.ts +136 -0
  93. package/dist/dispatcher/hit-test/strategies/base.js +66 -0
  94. package/dist/dispatcher/hit-test/strategies/circle.d.ts +10 -0
  95. package/dist/dispatcher/hit-test/strategies/circle.js +56 -0
  96. package/dist/dispatcher/hit-test/strategies/image.d.ts +22 -0
  97. package/dist/dispatcher/hit-test/strategies/image.js +115 -0
  98. package/dist/dispatcher/hit-test/strategies/index.d.ts +11 -0
  99. package/dist/dispatcher/hit-test/strategies/index.js +10 -0
  100. package/dist/dispatcher/hit-test/strategies/line.d.ts +17 -0
  101. package/dist/dispatcher/hit-test/strategies/line.js +30 -0
  102. package/dist/dispatcher/hit-test/strategies/multi.d.ts +44 -0
  103. package/dist/dispatcher/hit-test/strategies/multi.js +141 -0
  104. package/dist/dispatcher/hit-test/strategies/point.d.ts +20 -0
  105. package/dist/dispatcher/hit-test/strategies/point.js +29 -0
  106. package/dist/dispatcher/hit-test/strategies/polygon.d.ts +52 -0
  107. package/dist/dispatcher/hit-test/strategies/polygon.js +138 -0
  108. package/dist/dispatcher/hit-test/topmost.d.ts +48 -0
  109. package/dist/dispatcher/hit-test/topmost.js +157 -0
  110. package/dist/dispatcher/hit-test/visibility-lookup.d.ts +23 -0
  111. package/dist/dispatcher/hit-test/visibility-lookup.js +40 -0
  112. package/dist/dispatcher/index.d.ts +15 -0
  113. package/dist/dispatcher/index.js +3 -0
  114. package/dist/dispatcher/input-router.d.ts +1 -0
  115. package/dist/dispatcher/input-router.js +288 -0
  116. package/dist/dispatcher/normalizer.d.ts +1 -0
  117. package/dist/dispatcher/normalizer.js +513 -0
  118. package/dist/dispatcher/types.d.ts +144 -0
  119. package/dist/dispatcher/types.js +15 -0
  120. package/dist/display/chunk-set.d.ts +24 -0
  121. package/dist/display/chunk-set.js +533 -0
  122. package/dist/display/chunk.d.ts +1 -0
  123. package/dist/display/chunk.js +104 -0
  124. package/dist/display/columnar/index.d.ts +12 -0
  125. package/dist/display/columnar/index.js +13 -0
  126. package/dist/display/columnar/prepare.d.ts +42 -0
  127. package/dist/display/columnar/prepare.js +116 -0
  128. package/dist/display/columnar/source.d.ts +1 -0
  129. package/dist/display/columnar/source.js +531 -0
  130. package/dist/display/columnar/table.d.ts +1 -0
  131. package/dist/display/columnar/table.js +471 -0
  132. package/dist/display/columnar/types.d.ts +223 -0
  133. package/dist/display/columnar/types.js +3 -0
  134. package/dist/display/dataset.d.ts +2 -0
  135. package/dist/display/dataset.js +891 -0
  136. package/dist/display/index.d.ts +13 -0
  137. package/dist/display/index.js +3 -0
  138. package/dist/display/interaction.d.ts +1 -0
  139. package/dist/display/interaction.js +90 -0
  140. package/dist/display/manager.d.ts +1 -0
  141. package/dist/display/manager.js +440 -0
  142. package/dist/display/packed-rtree.d.ts +1 -0
  143. package/dist/display/packed-rtree.js +244 -0
  144. package/dist/display/partition.d.ts +1 -0
  145. package/dist/display/partition.js +226 -0
  146. package/dist/display/provider.d.ts +1 -0
  147. package/dist/display/provider.js +342 -0
  148. package/dist/display/retained.d.ts +40 -0
  149. package/dist/display/retained.js +898 -0
  150. package/dist/display/selection.d.ts +13 -0
  151. package/dist/display/selection.js +226 -0
  152. package/dist/display/source.d.ts +1 -0
  153. package/dist/display/source.js +119 -0
  154. package/dist/display/spatial.d.ts +1 -0
  155. package/dist/display/spatial.js +71 -0
  156. package/dist/display/style.d.ts +1 -0
  157. package/dist/display/style.js +126 -0
  158. package/dist/display/thinning.d.ts +65 -0
  159. package/dist/display/thinning.js +910 -0
  160. package/dist/display/triangulation.d.ts +1 -0
  161. package/dist/display/triangulation.js +0 -0
  162. package/dist/display/types.d.ts +561 -0
  163. package/dist/display/types.js +43 -0
  164. package/dist/extension/feature-handler.d.ts +182 -0
  165. package/dist/extension/feature-handler.js +3 -0
  166. package/dist/extension/index.d.ts +9 -0
  167. package/dist/extension/index.js +3 -0
  168. package/dist/extension/renderers.d.ts +208 -0
  169. package/dist/extension/renderers.js +3 -0
  170. package/dist/geometry/angle.d.ts +47 -0
  171. package/dist/geometry/angle.js +44 -0
  172. package/dist/geometry/bbox.d.ts +48 -0
  173. package/dist/geometry/bbox.js +83 -0
  174. package/dist/geometry/boolean.d.ts +162 -0
  175. package/dist/geometry/boolean.js +331 -0
  176. package/dist/geometry/buffer.d.ts +72 -0
  177. package/dist/geometry/buffer.js +218 -0
  178. package/dist/geometry/circle.d.ts +55 -0
  179. package/dist/geometry/circle.js +107 -0
  180. package/dist/geometry/coords.d.ts +97 -0
  181. package/dist/geometry/coords.js +149 -0
  182. package/dist/geometry/distance.d.ts +79 -0
  183. package/dist/geometry/distance.js +111 -0
  184. package/dist/geometry/errors.d.ts +74 -0
  185. package/dist/geometry/errors.js +104 -0
  186. package/dist/geometry/index.d.ts +28 -0
  187. package/dist/geometry/index.js +38 -0
  188. package/dist/geometry/measure.d.ts +81 -0
  189. package/dist/geometry/measure.js +236 -0
  190. package/dist/geometry/predicates.d.ts +62 -0
  191. package/dist/geometry/predicates.js +132 -0
  192. package/dist/geometry/simplify.d.ts +74 -0
  193. package/dist/geometry/simplify.js +159 -0
  194. package/dist/geometry/split.d.ts +68 -0
  195. package/dist/geometry/split.js +430 -0
  196. package/dist/geometry/types.d.ts +95 -0
  197. package/dist/geometry/types.js +3 -0
  198. package/dist/geometry/units.d.ts +35 -0
  199. package/dist/geometry/units.js +41 -0
  200. package/dist/index.d.ts +72 -0
  201. package/dist/index.js +20 -0
  202. package/dist/maplibre-gl-draw.d.ts +47 -0
  203. package/dist/maplibre-gl-draw.js +407 -0
  204. package/dist/messages.d.ts +64 -0
  205. package/dist/messages.js +36 -0
  206. package/dist/modes/cursor.d.ts +1 -0
  207. package/dist/modes/cursor.js +72 -0
  208. package/dist/modes/draw/circle.d.ts +1 -0
  209. package/dist/modes/draw/circle.js +222 -0
  210. package/dist/modes/draw/commit-layer.d.ts +26 -0
  211. package/dist/modes/draw/commit-layer.js +31 -0
  212. package/dist/modes/draw/freehand.d.ts +1 -0
  213. package/dist/modes/draw/freehand.js +264 -0
  214. package/dist/modes/draw/image.d.ts +1 -0
  215. package/dist/modes/draw/image.js +60 -0
  216. package/dist/modes/draw/index.d.ts +9 -0
  217. package/dist/modes/draw/index.js +11 -0
  218. package/dist/modes/draw/line.d.ts +1 -0
  219. package/dist/modes/draw/line.js +363 -0
  220. package/dist/modes/draw/point.d.ts +1 -0
  221. package/dist/modes/draw/point.js +87 -0
  222. package/dist/modes/draw/polygon.d.ts +1 -0
  223. package/dist/modes/draw/polygon.js +378 -0
  224. package/dist/modes/draw/trace-support.d.ts +79 -0
  225. package/dist/modes/draw/trace-support.js +161 -0
  226. package/dist/modes/handler.d.ts +285 -0
  227. package/dist/modes/handler.js +3 -0
  228. package/dist/modes/index.d.ts +7 -0
  229. package/dist/modes/index.js +3 -0
  230. package/dist/modes/manager.d.ts +15 -0
  231. package/dist/modes/manager.js +196 -0
  232. package/dist/modes/select/box-selection.d.ts +52 -0
  233. package/dist/modes/select/box-selection.js +140 -0
  234. package/dist/modes/select/click-handler.d.ts +32 -0
  235. package/dist/modes/select/click-handler.js +166 -0
  236. package/dist/modes/select/cursor-handler.d.ts +15 -0
  237. package/dist/modes/select/cursor-handler.js +59 -0
  238. package/dist/modes/select/drag/auxiliary.d.ts +26 -0
  239. package/dist/modes/select/drag/auxiliary.js +56 -0
  240. package/dist/modes/select/drag/intermediate-writes.d.ts +1 -0
  241. package/dist/modes/select/drag/intermediate-writes.js +171 -0
  242. package/dist/modes/select/drag/move.d.ts +24 -0
  243. package/dist/modes/select/drag/move.js +59 -0
  244. package/dist/modes/select/drag/operation.d.ts +30 -0
  245. package/dist/modes/select/drag/operation.js +18 -0
  246. package/dist/modes/select/drag/radius.d.ts +15 -0
  247. package/dist/modes/select/drag/radius.js +49 -0
  248. package/dist/modes/select/drag/transform.d.ts +17 -0
  249. package/dist/modes/select/drag/transform.js +155 -0
  250. package/dist/modes/select/drag/vertex.d.ts +17 -0
  251. package/dist/modes/select/drag/vertex.js +163 -0
  252. package/dist/modes/select/drag-handler.d.ts +1 -0
  253. package/dist/modes/select/drag-handler.js +254 -0
  254. package/dist/modes/select/hit-helpers.d.ts +40 -0
  255. package/dist/modes/select/hit-helpers.js +51 -0
  256. package/dist/modes/select/mode.d.ts +1 -0
  257. package/dist/modes/select/mode.js +397 -0
  258. package/dist/modes/select/shortcut-handler.d.ts +40 -0
  259. package/dist/modes/select/shortcut-handler.js +128 -0
  260. package/dist/operations/index.d.ts +9 -0
  261. package/dist/operations/index.js +3 -0
  262. package/dist/operations/layer-operations.d.ts +1 -0
  263. package/dist/operations/layer-operations.js +350 -0
  264. package/dist/operations/resize.d.ts +71 -0
  265. package/dist/operations/resize.js +252 -0
  266. package/dist/operations/rotate.d.ts +17 -0
  267. package/dist/operations/rotate.js +166 -0
  268. package/dist/operations/selection-operations.d.ts +20 -0
  269. package/dist/operations/selection-operations.js +159 -0
  270. package/dist/operations/shared-vertex.d.ts +1 -0
  271. package/dist/operations/shared-vertex.js +210 -0
  272. package/dist/operations/trace-graph.d.ts +96 -0
  273. package/dist/operations/trace-graph.js +283 -0
  274. package/dist/operations/vertex.d.ts +1 -0
  275. package/dist/operations/vertex.js +538 -0
  276. package/dist/plugins/index.d.ts +10 -0
  277. package/dist/plugins/index.js +3 -0
  278. package/dist/plugins/mutation-hooks.d.ts +28 -0
  279. package/dist/plugins/mutation-hooks.js +84 -0
  280. package/dist/plugins/plugin-context.d.ts +1 -0
  281. package/dist/plugins/plugin-context.js +367 -0
  282. package/dist/plugins/plugin-manager.d.ts +103 -0
  283. package/dist/plugins/plugin-manager.js +316 -0
  284. package/dist/plugins/plugin.d.ts +529 -0
  285. package/dist/plugins/plugin.js +3 -0
  286. package/dist/shared/config/constants.d.ts +66 -0
  287. package/dist/shared/config/constants.js +60 -0
  288. package/dist/shared/config/feature-style.d.ts +155 -0
  289. package/dist/shared/config/feature-style.js +154 -0
  290. package/dist/shared/config/index.d.ts +17 -0
  291. package/dist/shared/config/index.js +8 -0
  292. package/dist/shared/config/rendering.d.ts +107 -0
  293. package/dist/shared/config/rendering.js +33 -0
  294. package/dist/shared/config/selection-highlight.d.ts +29 -0
  295. package/dist/shared/config/selection-highlight.js +35 -0
  296. package/dist/shared/config/selection.d.ts +273 -0
  297. package/dist/shared/config/selection.js +266 -0
  298. package/dist/shared/config/topology.d.ts +33 -0
  299. package/dist/shared/config/topology.js +17 -0
  300. package/dist/shared/config/trace.d.ts +40 -0
  301. package/dist/shared/config/trace.js +17 -0
  302. package/dist/shared/math/angle.d.ts +21 -0
  303. package/dist/shared/math/angle.js +34 -0
  304. package/dist/shared/math/circle.d.ts +6 -0
  305. package/dist/shared/math/circle.js +10 -0
  306. package/dist/shared/math/constants.d.ts +48 -0
  307. package/dist/shared/math/constants.js +59 -0
  308. package/dist/shared/math/distance.d.ts +78 -0
  309. package/dist/shared/math/distance.js +147 -0
  310. package/dist/shared/math/globe-subdivision.d.ts +62 -0
  311. package/dist/shared/math/globe-subdivision.js +99 -0
  312. package/dist/shared/math/index.d.ts +17 -0
  313. package/dist/shared/math/index.js +21 -0
  314. package/dist/shared/math/intersection.d.ts +63 -0
  315. package/dist/shared/math/intersection.js +236 -0
  316. package/dist/shared/math/longitude.d.ts +20 -0
  317. package/dist/shared/math/longitude.js +31 -0
  318. package/dist/shared/math/mercator-plane.d.ts +27 -0
  319. package/dist/shared/math/mercator-plane.js +26 -0
  320. package/dist/shared/math/obb.d.ts +65 -0
  321. package/dist/shared/math/obb.js +107 -0
  322. package/dist/shared/math/rotation.d.ts +93 -0
  323. package/dist/shared/math/rotation.js +186 -0
  324. package/dist/shared/math/segment-grid.d.ts +69 -0
  325. package/dist/shared/math/segment-grid.js +159 -0
  326. package/dist/shared/math/transform.d.ts +140 -0
  327. package/dist/shared/math/transform.js +189 -0
  328. package/dist/shared/types/events.d.ts +128 -0
  329. package/dist/shared/types/events.js +3 -0
  330. package/dist/shared/types/model.d.ts +950 -0
  331. package/dist/shared/types/model.js +3 -0
  332. package/dist/shared/types/selection-box.d.ts +23 -0
  333. package/dist/shared/types/selection-box.js +3 -0
  334. package/dist/shared/types/style.d.ts +68 -0
  335. package/dist/shared/types/style.js +3 -0
  336. package/dist/shared/utils/color.d.ts +49 -0
  337. package/dist/shared/utils/color.js +180 -0
  338. package/dist/shared/utils/coordinates.d.ts +52 -0
  339. package/dist/shared/utils/coordinates.js +75 -0
  340. package/dist/shared/utils/embedded-image.d.ts +34 -0
  341. package/dist/shared/utils/embedded-image.js +161 -0
  342. package/dist/shared/utils/event-emitter.d.ts +262 -0
  343. package/dist/shared/utils/event-emitter.js +44 -0
  344. package/dist/shared/utils/feature-bbox.d.ts +8 -0
  345. package/dist/shared/utils/feature-bbox.js +207 -0
  346. package/dist/shared/utils/feature-segments.d.ts +23 -0
  347. package/dist/shared/utils/feature-segments.js +179 -0
  348. package/dist/shared/utils/id.d.ts +1 -0
  349. package/dist/shared/utils/id.js +35 -0
  350. package/dist/shared/utils/image.d.ts +34 -0
  351. package/dist/shared/utils/image.js +106 -0
  352. package/dist/shared/utils/index.d.ts +15 -0
  353. package/dist/shared/utils/index.js +24 -0
  354. package/dist/shared/utils/map.d.ts +26 -0
  355. package/dist/shared/utils/map.js +35 -0
  356. package/dist/shared/utils/name-generator.d.ts +197 -0
  357. package/dist/shared/utils/name-generator.js +337 -0
  358. package/dist/shared/utils/pixel-ratio.d.ts +111 -0
  359. package/dist/shared/utils/pixel-ratio.js +85 -0
  360. package/dist/shared/utils/property.d.ts +88 -0
  361. package/dist/shared/utils/property.js +140 -0
  362. package/dist/shared/utils/vertex-ref.d.ts +23 -0
  363. package/dist/shared/utils/vertex-ref.js +20 -0
  364. package/dist/snapping/custom-targets.d.ts +1 -0
  365. package/dist/snapping/custom-targets.js +21 -0
  366. package/dist/snapping/geometry.d.ts +1 -0
  367. package/dist/snapping/geometry.js +61 -0
  368. package/dist/snapping/index.d.ts +14 -0
  369. package/dist/snapping/index.js +4 -0
  370. package/dist/snapping/indicator.d.ts +19 -0
  371. package/dist/snapping/indicator.js +145 -0
  372. package/dist/snapping/providers/display.d.ts +72 -0
  373. package/dist/snapping/providers/display.js +268 -0
  374. package/dist/snapping/providers/guide.d.ts +69 -0
  375. package/dist/snapping/providers/guide.js +187 -0
  376. package/dist/snapping/providers/intersection.d.ts +1 -0
  377. package/dist/snapping/providers/intersection.js +92 -0
  378. package/dist/snapping/providers/shared.d.ts +39 -0
  379. package/dist/snapping/providers/shared.js +146 -0
  380. package/dist/snapping/providers/store.d.ts +1 -0
  381. package/dist/snapping/providers/store.js +132 -0
  382. package/dist/snapping/service.d.ts +1 -0
  383. package/dist/snapping/service.js +272 -0
  384. package/dist/snapping/types.d.ts +267 -0
  385. package/dist/snapping/types.js +66 -0
  386. package/dist/store/change-merger.d.ts +1 -0
  387. package/dist/store/change-merger.js +102 -0
  388. package/dist/store/draw-store.d.ts +1 -0
  389. package/dist/store/draw-store.js +396 -0
  390. package/dist/store/event-bridge.d.ts +1 -0
  391. package/dist/store/event-bridge.js +161 -0
  392. package/dist/store/index.d.ts +12 -0
  393. package/dist/store/index.js +4 -0
  394. package/dist/store/local-visibility.d.ts +21 -0
  395. package/dist/store/local-visibility.js +27 -0
  396. package/dist/store/lock.d.ts +67 -0
  397. package/dist/store/lock.js +54 -0
  398. package/dist/store/memory/change-bus.d.ts +60 -0
  399. package/dist/store/memory/change-bus.js +232 -0
  400. package/dist/store/memory/file-store.d.ts +15 -0
  401. package/dist/store/memory/file-store.js +33 -0
  402. package/dist/store/memory/frozen.d.ts +21 -0
  403. package/dist/store/memory/frozen.js +51 -0
  404. package/dist/store/memory/ui-state.d.ts +51 -0
  405. package/dist/store/memory/ui-state.js +223 -0
  406. package/dist/store/memory.d.ts +26 -0
  407. package/dist/store/memory.js +708 -0
  408. package/dist/store/spatial/index.d.ts +6 -0
  409. package/dist/store/spatial/index.js +4 -0
  410. package/dist/store/spatial/spatial-index.d.ts +90 -0
  411. package/dist/store/spatial/spatial-index.js +148 -0
  412. package/dist/store/spatial/store-spatial-index.d.ts +60 -0
  413. package/dist/store/spatial/store-spatial-index.js +125 -0
  414. package/dist/store/store.d.ts +417 -0
  415. package/dist/store/store.js +3 -0
  416. package/dist/store/types.d.ts +8 -0
  417. package/dist/store/types.js +3 -0
  418. package/dist/store/writable-layer.d.ts +35 -0
  419. package/dist/store/writable-layer.js +20 -0
  420. package/dist/view/cache/buffer.d.ts +28 -0
  421. package/dist/view/cache/buffer.js +176 -0
  422. package/dist/view/cache/earcut.d.ts +1 -0
  423. package/dist/view/cache/earcut.js +122 -0
  424. package/dist/view/cache/style-rule.d.ts +1 -0
  425. package/dist/view/cache/style-rule.js +97 -0
  426. package/dist/view/cache/terrain-fill.d.ts +30 -0
  427. package/dist/view/cache/terrain-fill.js +60 -0
  428. package/dist/view/cache/texture.d.ts +14 -0
  429. package/dist/view/cache/texture.js +292 -0
  430. package/dist/view/coordinator.d.ts +27 -0
  431. package/dist/view/coordinator.js +72 -0
  432. package/dist/view/feature-companion.d.ts +173 -0
  433. package/dist/view/feature-companion.js +108 -0
  434. package/dist/view/globe-subdivision.d.ts +78 -0
  435. package/dist/view/globe-subdivision.js +128 -0
  436. package/dist/view/index.d.ts +47 -0
  437. package/dist/view/index.js +20 -0
  438. package/dist/view/layer/attach.d.ts +20 -0
  439. package/dist/view/layer/attach.js +47 -0
  440. package/dist/view/layer/blend.d.ts +57 -0
  441. package/dist/view/layer/blend.js +14 -0
  442. package/dist/view/layer/custom-layer.d.ts +1 -0
  443. package/dist/view/layer/custom-layer.js +509 -0
  444. package/dist/view/layer/depth-state.d.ts +14 -0
  445. package/dist/view/layer/depth-state.js +44 -0
  446. package/dist/view/layer/display-list.d.ts +1 -0
  447. package/dist/view/layer/display-list.js +111 -0
  448. package/dist/view/layer/drape-planner.d.ts +139 -0
  449. package/dist/view/layer/drape-planner.js +726 -0
  450. package/dist/view/layer/frame-render.d.ts +57 -0
  451. package/dist/view/layer/frame-render.js +209 -0
  452. package/dist/view/layer/frame-state.d.ts +147 -0
  453. package/dist/view/layer/frame-state.js +484 -0
  454. package/dist/view/layer/gl-state.d.ts +77 -0
  455. package/dist/view/layer/gl-state.js +132 -0
  456. package/dist/view/layer/index.d.ts +6 -0
  457. package/dist/view/layer/index.js +5 -0
  458. package/dist/view/layer/render-scope.d.ts +30 -0
  459. package/dist/view/layer/render-scope.js +28 -0
  460. package/dist/view/layer/render.d.ts +87 -0
  461. package/dist/view/layer/render.js +187 -0
  462. package/dist/view/layer/renderers.d.ts +81 -0
  463. package/dist/view/layer/renderers.js +142 -0
  464. package/dist/view/layer/slot-manager.d.ts +26 -0
  465. package/dist/view/layer/slot-manager.js +133 -0
  466. package/dist/view/layer/slots.d.ts +33 -0
  467. package/dist/view/layer/slots.js +50 -0
  468. package/dist/view/layer/store-retained-bbox.d.ts +36 -0
  469. package/dist/view/layer/store-retained-bbox.js +188 -0
  470. package/dist/view/layer/store-retained-chunk.d.ts +97 -0
  471. package/dist/view/layer/store-retained-chunk.js +94 -0
  472. package/dist/view/layer/store-retained-classify.d.ts +34 -0
  473. package/dist/view/layer/store-retained-classify.js +88 -0
  474. package/dist/view/layer/store-retained-collect.d.ts +24 -0
  475. package/dist/view/layer/store-retained-collect.js +121 -0
  476. package/dist/view/layer/store-retained-coord-patch.d.ts +119 -0
  477. package/dist/view/layer/store-retained-coord-patch.js +168 -0
  478. package/dist/view/layer/store-retained-immediate.d.ts +63 -0
  479. package/dist/view/layer/store-retained-immediate.js +49 -0
  480. package/dist/view/layer/store-retained-invalidation.d.ts +96 -0
  481. package/dist/view/layer/store-retained-invalidation.js +192 -0
  482. package/dist/view/layer/store-retained.d.ts +198 -0
  483. package/dist/view/layer/store-retained.js +430 -0
  484. package/dist/view/layer/terrain-resolver.d.ts +1 -0
  485. package/dist/view/layer/terrain-resolver.js +174 -0
  486. package/dist/view/renderers/batch-manager.d.ts +61 -0
  487. package/dist/view/renderers/batch-manager.js +718 -0
  488. package/dist/view/renderers/draw-factors.d.ts +60 -0
  489. package/dist/view/renderers/draw-factors.js +35 -0
  490. package/dist/view/renderers/drawer.d.ts +1 -0
  491. package/dist/view/renderers/drawer.js +346 -0
  492. package/dist/view/renderers/image.d.ts +1 -0
  493. package/dist/view/renderers/image.js +255 -0
  494. package/dist/view/renderers/line/dash.d.ts +31 -0
  495. package/dist/view/renderers/line/dash.js +152 -0
  496. package/dist/view/renderers/line/line-geometry.d.ts +39 -0
  497. package/dist/view/renderers/line/line-geometry.js +460 -0
  498. package/dist/view/renderers/line/line-gl.d.ts +1 -0
  499. package/dist/view/renderers/line/line-gl.js +236 -0
  500. package/dist/view/renderers/line/line-shader.d.ts +1 -0
  501. package/dist/view/renderers/line/line-shader.js +364 -0
  502. package/dist/view/renderers/line/line-types.d.ts +43 -0
  503. package/dist/view/renderers/line/line-types.js +3 -0
  504. package/dist/view/renderers/line/line-uniforms.d.ts +1 -0
  505. package/dist/view/renderers/line/line-uniforms.js +390 -0
  506. package/dist/view/renderers/line/sdf-line.d.ts +92 -0
  507. package/dist/view/renderers/line/sdf-line.js +567 -0
  508. package/dist/view/renderers/point/billboard-depth.d.ts +10 -0
  509. package/dist/view/renderers/point/billboard-depth.js +56 -0
  510. package/dist/view/renderers/point/point-instance.d.ts +124 -0
  511. package/dist/view/renderers/point/point-instance.js +738 -0
  512. package/dist/view/renderers/point/point-sdf.d.ts +58 -0
  513. package/dist/view/renderers/point/point-sdf.js +170 -0
  514. package/dist/view/renderers/point/point-shape.d.ts +99 -0
  515. package/dist/view/renderers/point/point-shape.js +504 -0
  516. package/dist/view/renderers/point/point-style.d.ts +1 -0
  517. package/dist/view/renderers/point/point-style.js +46 -0
  518. package/dist/view/renderers/polygon/batch.d.ts +26 -0
  519. package/dist/view/renderers/polygon/batch.js +336 -0
  520. package/dist/view/renderers/polygon/earcut-input.d.ts +37 -0
  521. package/dist/view/renderers/polygon/earcut-input.js +55 -0
  522. package/dist/view/renderers/polygon/earcut-sliced.d.ts +69 -0
  523. package/dist/view/renderers/polygon/earcut-sliced.js +960 -0
  524. package/dist/view/renderers/polygon/fill.d.ts +74 -0
  525. package/dist/view/renderers/polygon/fill.js +251 -0
  526. package/dist/view/renderers/polygon/sdf-polygon.d.ts +62 -0
  527. package/dist/view/renderers/polygon/sdf-polygon.js +919 -0
  528. package/dist/view/renderers/polygon/terrain-cull.d.ts +3 -0
  529. package/dist/view/renderers/polygon/terrain-cull.js +14 -0
  530. package/dist/view/renderers/polygon/triangulator.d.ts +41 -0
  531. package/dist/view/renderers/polygon/triangulator.js +3 -0
  532. package/dist/view/renderers/retained.d.ts +43 -0
  533. package/dist/view/renderers/retained.js +3 -0
  534. package/dist/view/renderers/stroke.d.ts +121 -0
  535. package/dist/view/renderers/stroke.js +621 -0
  536. package/dist/view/shaders/frame.d.ts +8 -0
  537. package/dist/view/shaders/frame.js +37 -0
  538. package/dist/view/shaders/helpers.d.ts +238 -0
  539. package/dist/view/shaders/helpers.js +611 -0
  540. package/dist/view/shaders/initializer.d.ts +27 -0
  541. package/dist/view/shaders/initializer.js +125 -0
  542. package/dist/view/shaders/projection.d.ts +123 -0
  543. package/dist/view/shaders/projection.js +299 -0
  544. package/dist/view/shaders/quad-grid.d.ts +77 -0
  545. package/dist/view/shaders/quad-grid.js +128 -0
  546. package/dist/view/shaders/quad.d.ts +189 -0
  547. package/dist/view/shaders/quad.js +582 -0
  548. package/dist/view/shaders/retained-origin.d.ts +50 -0
  549. package/dist/view/shaders/retained-origin.js +67 -0
  550. package/dist/view/shaders/terrain-shade.d.ts +23 -0
  551. package/dist/view/shaders/terrain-shade.js +93 -0
  552. package/dist/view/style-rule.d.ts +166 -0
  553. package/dist/view/style-rule.js +300 -0
  554. package/dist/view/terrain/anchor.d.ts +135 -0
  555. package/dist/view/terrain/anchor.js +226 -0
  556. package/dist/view/terrain/context.d.ts +132 -0
  557. package/dist/view/terrain/context.js +437 -0
  558. package/dist/view/terrain/dem-atlas.d.ts +97 -0
  559. package/dist/view/terrain/dem-atlas.js +534 -0
  560. package/dist/view/terrain/detect.d.ts +126 -0
  561. package/dist/view/terrain/detect.js +198 -0
  562. package/dist/view/terrain/drape/bin-store.d.ts +179 -0
  563. package/dist/view/terrain/drape/bin-store.js +529 -0
  564. package/dist/view/terrain/drape/binning.d.ts +259 -0
  565. package/dist/view/terrain/drape/binning.js +604 -0
  566. package/dist/view/terrain/drape/edge-constrain.d.ts +37 -0
  567. package/dist/view/terrain/drape/edge-constrain.js +175 -0
  568. package/dist/view/terrain/drape/geometry.d.ts +95 -0
  569. package/dist/view/terrain/drape/geometry.js +260 -0
  570. package/dist/view/terrain/drape/mesh.d.ts +50 -0
  571. package/dist/view/terrain/drape/mesh.js +86 -0
  572. package/dist/view/terrain/drape/pass.d.ts +122 -0
  573. package/dist/view/terrain/drape/pass.js +379 -0
  574. package/dist/view/terrain/drape/quad-glyphs.d.ts +64 -0
  575. package/dist/view/terrain/drape/quad-glyphs.js +117 -0
  576. package/dist/view/terrain/drape/quad.d.ts +249 -0
  577. package/dist/view/terrain/drape/quad.js +835 -0
  578. package/dist/view/terrain/drape/renderer.d.ts +184 -0
  579. package/dist/view/terrain/drape/renderer.js +706 -0
  580. package/dist/view/terrain/drape/shared.d.ts +80 -0
  581. package/dist/view/terrain/drape/shared.js +173 -0
  582. package/dist/view/terrain/drape/stitch.d.ts +155 -0
  583. package/dist/view/terrain/drape/stitch.js +228 -0
  584. package/dist/view/terrain/ground.d.ts +72 -0
  585. package/dist/view/terrain/ground.js +151 -0
  586. package/dist/view/terrain/metrics.d.ts +180 -0
  587. package/dist/view/terrain/metrics.js +231 -0
  588. package/dist/view/terrain/occlusion.d.ts +11 -0
  589. package/dist/view/terrain/occlusion.js +129 -0
  590. package/dist/view/terrain/polygon.d.ts +86 -0
  591. package/dist/view/terrain/polygon.js +301 -0
  592. package/dist/view/terrain/shade.d.ts +48 -0
  593. package/dist/view/terrain/shade.js +45 -0
  594. package/dist/view/terrain/state.d.ts +99 -0
  595. package/dist/view/terrain/state.js +186 -0
  596. package/dist/view/terrain/tessellation.d.ts +265 -0
  597. package/dist/view/terrain/tessellation.js +924 -0
  598. package/dist/view/terrain/tiling.d.ts +56 -0
  599. package/dist/view/terrain/tiling.js +155 -0
  600. package/dist/view/terrain/upstream-terrain.d.ts +82 -0
  601. package/dist/view/terrain/upstream-terrain.js +116 -0
  602. package/dist/view/ui/auxiliary-handles.d.ts +151 -0
  603. package/dist/view/ui/auxiliary-handles.js +22 -0
  604. package/dist/view/ui/bounds.d.ts +53 -0
  605. package/dist/view/ui/bounds.js +149 -0
  606. package/dist/view/ui/box-selection.d.ts +1 -0
  607. package/dist/view/ui/box-selection.js +83 -0
  608. package/dist/view/ui/handle-test.d.ts +1 -0
  609. package/dist/view/ui/handle-test.js +437 -0
  610. package/dist/view/ui/handle-thinning.d.ts +122 -0
  611. package/dist/view/ui/handle-thinning.js +430 -0
  612. package/dist/view/ui/handles.d.ts +25 -0
  613. package/dist/view/ui/handles.js +673 -0
  614. package/dist/view/ui/helper.d.ts +19 -0
  615. package/dist/view/ui/helper.js +76 -0
  616. package/dist/view/ui/index.d.ts +15 -0
  617. package/dist/view/ui/index.js +15 -0
  618. package/dist/view/ui/selection-scope.d.ts +25 -0
  619. package/dist/view/ui/selection-scope.js +34 -0
  620. package/dist/view/ui/selection-ui/bounding-box.d.ts +44 -0
  621. package/dist/view/ui/selection-ui/bounding-box.js +240 -0
  622. package/dist/view/ui/selection-ui/extension-registry.d.ts +76 -0
  623. package/dist/view/ui/selection-ui/extension-registry.js +78 -0
  624. package/dist/view/ui/selection-ui/index.d.ts +12 -0
  625. package/dist/view/ui/selection-ui/index.js +12 -0
  626. package/dist/view/ui/selection-ui/renderer.d.ts +29 -0
  627. package/dist/view/ui/selection-ui/renderer.js +227 -0
  628. package/dist/view/ui/selection-ui/types.d.ts +55 -0
  629. package/dist/view/ui/selection-ui/types.js +3 -0
  630. package/dist/view/ui/selection-ui-drawer.d.ts +52 -0
  631. package/dist/view/ui/selection-ui-drawer.js +329 -0
  632. package/dist/view/ui/tentative.d.ts +1 -0
  633. package/dist/view/ui/tentative.js +320 -0
  634. package/dist/view/viewport.d.ts +119 -0
  635. package/dist/view/viewport.js +254 -0
  636. package/package.json +113 -0
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Feature rendering style configuration
3
+ *
4
+ * Configuration related to rendering features.
5
+ * The selected state is expressed with a bounding box, so the style of the feature itself is
6
+ * not changed.
7
+ */
8
+ import type { Color, PointStyle, StrokeStyle } from '../types/style.js';
9
+ /**
10
+ * The fill of a polygon (part of {@link PolygonFeatureStyle})
11
+ */
12
+ export interface FillStyle {
13
+ /**
14
+ * The fill color; its alpha is the opacity of the fill
15
+ *
16
+ * @defaultValue `#FF0077` at an alpha of 0.25
17
+ */
18
+ color: Color;
19
+ }
20
+ /**
21
+ * How a point is drawn by default (part of {@link FeatureStyleConfig})
22
+ */
23
+ export interface PointFeatureStyle {
24
+ /**
25
+ * The marker
26
+ *
27
+ * @defaultValue a 12 px `#FF6633` circle with a 2 px white outline
28
+ */
29
+ point: PointStyle;
30
+ }
31
+ /**
32
+ * How a line is drawn by default (part of {@link FeatureStyleConfig})
33
+ */
34
+ export interface LineStringFeatureStyle {
35
+ /**
36
+ * The line
37
+ *
38
+ * @defaultValue `#FF0077`, 2 px, solid
39
+ */
40
+ stroke: StrokeStyle;
41
+ }
42
+ /**
43
+ * How a polygon is drawn by default (part of {@link FeatureStyleConfig})
44
+ */
45
+ export interface PolygonFeatureStyle {
46
+ /**
47
+ * The outline
48
+ *
49
+ * @defaultValue `#FF0077`, 2 px, solid
50
+ */
51
+ stroke: StrokeStyle;
52
+ /**
53
+ * The fill
54
+ *
55
+ * @defaultValue `#FF0077` at an alpha of 0.25
56
+ */
57
+ fill: FillStyle;
58
+ }
59
+ /**
60
+ * How the geometry being drawn looks, before it is committed as a feature (part of
61
+ * {@link FeatureStyleConfig})
62
+ */
63
+ export interface TentativeStyle {
64
+ /**
65
+ * The line through the vertices placed so far
66
+ *
67
+ * @defaultValue `#FF0077`, 2 px, solid
68
+ */
69
+ stroke: StrokeStyle;
70
+ /**
71
+ * The line from the last vertex to the cursor, not yet committed
72
+ *
73
+ * @defaultValue `#FF0077`, 2 px, dashed
74
+ */
75
+ tentativeStroke: StrokeStyle;
76
+ /**
77
+ * The vertices placed so far
78
+ *
79
+ * @defaultValue a 10 px white circle with a 2 px `#FF0077` outline
80
+ */
81
+ vertex: PointStyle;
82
+ /**
83
+ * A vertex the cursor is close to (clicking the first vertex closes a polygon)
84
+ *
85
+ * @defaultValue a 14 px `#FFCC00` circle with a 3 px `#FF0077` outline
86
+ */
87
+ highlightedVertex: PointStyle;
88
+ /**
89
+ * For a Circle: the marker at the center
90
+ *
91
+ * @defaultValue a 6 px white circle with a 1 px `#FF2D55` outline
92
+ */
93
+ circleCenterMarker: PointStyle;
94
+ /**
95
+ * For a Circle: the handle on the edge that sets the radius
96
+ *
97
+ * @defaultValue a 10 px white circle with a 1 px `#FF2D55` outline
98
+ */
99
+ circleRadiusHandle: PointStyle;
100
+ }
101
+ /**
102
+ * The default look of the features, and of the geometry being drawn
103
+ *
104
+ * A key the style of a feature ({@link FeatureStyle}) leaves unset takes its value from here,
105
+ * unless the style rule of the layer gives the color. Give the parts to change through the
106
+ * `style` option of `createMapLibreGLDraw`; the parts left out keep their defaults.
107
+ *
108
+ * The selection does not change how a feature is drawn; it is shown by the box and the
109
+ * handles of {@link SelectionUIConfig}.
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const draw = createMapLibreGLDraw(map, {
114
+ * style: {
115
+ * lineString: {
116
+ * stroke: { width: 3, color: [0, 0.33, 1, 1], opacity: 1, lineStyle: 'solid' },
117
+ * },
118
+ * },
119
+ * });
120
+ * ```
121
+ */
122
+ export interface FeatureStyleConfig {
123
+ /**
124
+ * Point and MultiPoint
125
+ *
126
+ * @defaultValue a 12 px `#FF6633` circle with a 2 px white outline
127
+ */
128
+ point: PointFeatureStyle;
129
+ /**
130
+ * LineString, MultiLineString and Freehand
131
+ *
132
+ * @defaultValue `#FF0077`, 2 px, solid
133
+ */
134
+ lineString: LineStringFeatureStyle;
135
+ /**
136
+ * Polygon, MultiPolygon and Circle
137
+ *
138
+ * @defaultValue a `#FF0077` 2 px outline and a `#FF0077` fill at an alpha of 0.25
139
+ */
140
+ polygon: PolygonFeatureStyle;
141
+ /**
142
+ * The geometry being drawn
143
+ *
144
+ * @defaultValue `#FF0077` 2 px lines (dashed to the cursor) and 10 px white vertices
145
+ */
146
+ tentative: TentativeStyle;
147
+ }
148
+ /**
149
+ * Default feature rendering style configuration
150
+ */
151
+ export declare const DEFAULT_FEATURE_STYLE_CONFIG: FeatureStyleConfig;
152
+ /**
153
+ * Helper function that merges configurations
154
+ */
155
+ export declare function mergeFeatureStyleConfig(base: FeatureStyleConfig, override: Partial<FeatureStyleConfig>): FeatureStyleConfig;
@@ -0,0 +1,154 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Default feature rendering style configuration
5
+ */
6
+ export const DEFAULT_FEATURE_STYLE_CONFIG = {
7
+ point: {
8
+ point: {
9
+ shape: 'circle',
10
+ size: 12,
11
+ fillColor: [1.0, 0.4, 0.2, 1.0],
12
+ fillOpacity: 1.0,
13
+ strokeColor: [1.0, 1.0, 1.0, 1.0],
14
+ strokeWidth: 2,
15
+ strokeOpacity: 1.0,
16
+ },
17
+ },
18
+ lineString: {
19
+ stroke: {
20
+ width: 2,
21
+ color: [1.0, 0.0, 0.467, 1.0], // #FF0077
22
+ opacity: 1.0,
23
+ lineStyle: 'solid',
24
+ },
25
+ },
26
+ polygon: {
27
+ stroke: {
28
+ width: 2,
29
+ color: [1.0, 0.0, 0.467, 1.0], // #FF0077
30
+ opacity: 1.0,
31
+ lineStyle: 'solid',
32
+ },
33
+ fill: {
34
+ color: [1.0, 0.0, 0.467, 0.25], // #FF0077, 25% opacity
35
+ },
36
+ },
37
+ tentative: {
38
+ stroke: {
39
+ width: 2,
40
+ color: [1.0, 0.0, 0.467, 1.0], // #FF0077
41
+ opacity: 1.0,
42
+ lineStyle: 'solid',
43
+ },
44
+ tentativeStroke: {
45
+ width: 2,
46
+ color: [1.0, 0.0, 0.467, 1.0], // #FF0077
47
+ opacity: 1.0,
48
+ lineStyle: 'dashed',
49
+ },
50
+ vertex: {
51
+ shape: 'circle',
52
+ size: 10,
53
+ fillColor: [1.0, 1.0, 1.0, 1.0],
54
+ fillOpacity: 1.0,
55
+ strokeColor: [1.0, 0.0, 0.467, 1.0], // #FF0077
56
+ strokeWidth: 2,
57
+ strokeOpacity: 1.0,
58
+ },
59
+ highlightedVertex: {
60
+ shape: 'circle',
61
+ size: 14,
62
+ fillColor: [1.0, 0.8, 0.0, 1.0], // yellow
63
+ fillOpacity: 1.0,
64
+ strokeColor: [1.0, 0.0, 0.467, 1.0], // #FF0077
65
+ strokeWidth: 3,
66
+ strokeOpacity: 1.0,
67
+ },
68
+ // For Circle: center marker
69
+ // Specification: a 6px diameter circle, white fill, pink border (#FF2D55), 1px wide
70
+ circleCenterMarker: {
71
+ shape: 'circle',
72
+ size: 6,
73
+ fillColor: [1.0, 1.0, 1.0, 1.0], // white
74
+ fillOpacity: 1.0,
75
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
76
+ strokeWidth: 1,
77
+ strokeOpacity: 1.0,
78
+ },
79
+ // For Circle: radius handle
80
+ // Specification: a 10px diameter circle, white fill, pink border (#FF2D55), 1px wide
81
+ circleRadiusHandle: {
82
+ shape: 'circle',
83
+ size: 10,
84
+ fillColor: [1.0, 1.0, 1.0, 1.0], // white
85
+ fillOpacity: 1.0,
86
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
87
+ strokeWidth: 1,
88
+ strokeOpacity: 1.0,
89
+ },
90
+ },
91
+ };
92
+ /**
93
+ * Helper function that merges configurations
94
+ */
95
+ export function mergeFeatureStyleConfig(base, override) {
96
+ return {
97
+ point: {
98
+ ...base.point,
99
+ ...override.point,
100
+ point: {
101
+ ...base.point.point,
102
+ ...override.point?.point,
103
+ },
104
+ },
105
+ lineString: {
106
+ ...base.lineString,
107
+ ...override.lineString,
108
+ stroke: {
109
+ ...base.lineString.stroke,
110
+ ...override.lineString?.stroke,
111
+ },
112
+ },
113
+ polygon: {
114
+ ...base.polygon,
115
+ ...override.polygon,
116
+ stroke: {
117
+ ...base.polygon.stroke,
118
+ ...override.polygon?.stroke,
119
+ },
120
+ fill: {
121
+ ...base.polygon.fill,
122
+ ...override.polygon?.fill,
123
+ },
124
+ },
125
+ tentative: {
126
+ ...base.tentative,
127
+ ...override.tentative,
128
+ stroke: {
129
+ ...base.tentative.stroke,
130
+ ...override.tentative?.stroke,
131
+ },
132
+ tentativeStroke: {
133
+ ...base.tentative.tentativeStroke,
134
+ ...override.tentative?.tentativeStroke,
135
+ },
136
+ vertex: {
137
+ ...base.tentative.vertex,
138
+ ...override.tentative?.vertex,
139
+ },
140
+ highlightedVertex: {
141
+ ...base.tentative.highlightedVertex,
142
+ ...override.tentative?.highlightedVertex,
143
+ },
144
+ circleCenterMarker: {
145
+ ...base.tentative.circleCenterMarker,
146
+ ...override.tentative?.circleCenterMarker,
147
+ },
148
+ circleRadiusHandle: {
149
+ ...base.tentative.circleRadiusHandle,
150
+ ...override.tentative?.circleRadiusHandle,
151
+ },
152
+ },
153
+ };
154
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Config module
3
+ *
4
+ * Exports configuration-related types and constants.
5
+ */
6
+ export type { HandleType } from './constants.js';
7
+ export { CURSOR_STYLES, HANDLE_POSITIONS, INTERNAL_PROPERTIES, MOUSE_STATE, } from './constants.js';
8
+ export type { FeatureStyleConfig, FillStyle, LineStringFeatureStyle, PointFeatureStyle, PolygonFeatureStyle, TentativeStyle, } from './feature-style.js';
9
+ export { DEFAULT_FEATURE_STYLE_CONFIG, mergeFeatureStyleConfig } from './feature-style.js';
10
+ export type { BoxSelectionStyleConfig, RenderingConfig, } from './rendering.js';
11
+ export { DEFAULT_BOX_SELECTION_STYLE_CONFIG, DEFAULT_RENDERING_CONFIG, mergeRenderingConfig, } from './rendering.js';
12
+ export type { BoundingBoxStyle, CenterMarkerStyle, MidpointHandleStyle, RadiusHandleStyle, RadiusLineStyle, ResizeHandleStyle, RotateHandleStyle, SelectionUIConfig, VertexHandleStyle, } from './selection.js';
13
+ export { DEFAULT_SELECTION_CONFIG, DRAGGING_STYLE_MODIFIERS, HOVER_STYLE_MODIFIERS, mergeSelectionUIConfig, } from './selection.js';
14
+ export type { TopologyConfig } from './topology.js';
15
+ export { DEFAULT_TOPOLOGY_CONFIG, mergeTopologyConfig } from './topology.js';
16
+ export type { TraceConfig, TraceOptions } from './trace.js';
17
+ export { DEFAULT_TRACE_CONFIG, mergeTraceConfig } from './trace.js';
@@ -0,0 +1,8 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ export { CURSOR_STYLES, HANDLE_POSITIONS, INTERNAL_PROPERTIES, MOUSE_STATE, } from './constants.js';
4
+ export { DEFAULT_FEATURE_STYLE_CONFIG, mergeFeatureStyleConfig } from './feature-style.js';
5
+ export { DEFAULT_BOX_SELECTION_STYLE_CONFIG, DEFAULT_RENDERING_CONFIG, mergeRenderingConfig, } from './rendering.js';
6
+ export { DEFAULT_SELECTION_CONFIG, DRAGGING_STYLE_MODIFIERS, HOVER_STYLE_MODIFIERS, mergeSelectionUIConfig, } from './selection.js';
7
+ export { DEFAULT_TOPOLOGY_CONFIG, mergeTopologyConfig } from './topology.js';
8
+ export { DEFAULT_TRACE_CONFIG, mergeTraceConfig } from './trace.js';
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Rendering configuration
3
+ *
4
+ * Makes the default style of the box selection UI configurable.
5
+ */
6
+ import type { Color } from '../types/style.js';
7
+ /**
8
+ * How the rectangle of a box selection (a Shift-drag in the select mode) looks (part of
9
+ * {@link RenderingConfig})
10
+ */
11
+ export interface BoxSelectionStyleConfig {
12
+ /**
13
+ * The fill; its alpha is the opacity of the fill
14
+ *
15
+ * @defaultValue `#FF0099` at an alpha of 0.2
16
+ */
17
+ fillColor: Color;
18
+ /**
19
+ * The color of the outline
20
+ *
21
+ * @defaultValue `#FF0099`
22
+ */
23
+ strokeColor: Color;
24
+ /**
25
+ * The width of the outline in CSS pixels
26
+ *
27
+ * @defaultValue `2`
28
+ */
29
+ strokeWidth: number;
30
+ /**
31
+ * The opacity of the outline, from 0 to 1
32
+ *
33
+ * @defaultValue `1`
34
+ */
35
+ strokeOpacity: number;
36
+ /**
37
+ * The dash pattern of the outline in CSS pixels, `[dash, gap]`
38
+ *
39
+ * @defaultValue `[6, 4]`
40
+ */
41
+ dashArray: [number, number];
42
+ }
43
+ /**
44
+ * Rendering settings: the look of the box selection and two switches of the renderer
45
+ *
46
+ * Give the settings to change through the `renderingStyle` option of `createMapLibreGLDraw`;
47
+ * the ones left out keep their defaults.
48
+ */
49
+ export interface RenderingConfig {
50
+ /**
51
+ * The rectangle of a box selection
52
+ *
53
+ * @defaultValue a `#FF0099` 2 px outline dashed 6 px / 4 px, filled at an alpha of 0.2
54
+ */
55
+ boxSelectionStyle: BoxSelectionStyleConfig;
56
+ /**
57
+ * Retained-mode rendering of Store features
58
+ *
59
+ * When true (the default), Store features are drawn from retained batches prepared per
60
+ * layer. Features that stay still are no longer rebuilt every frame.
61
+ * Setting it to false goes back to the previous immediate-mode rendering (an escape hatch).
62
+ *
63
+ * The rendering result (including z-order) is the same either way.
64
+ *
65
+ * @defaultValue `true`
66
+ */
67
+ storeRetained?: boolean;
68
+ /**
69
+ * Whether work that does not fit in one frame is spread over the following frames
70
+ *
71
+ * When true (the default), the renderer keeps every frame short while the picture fills in
72
+ * over a few frames, much like tiles arriving:
73
+ *
74
+ * - the retained batches of the datasets are built within a time budget per frame, the
75
+ * chunks in view first (the ones left over appear in the next frames)
76
+ * - polygons of a dataset with more than 10,000 vertices are triangulated in slices across
77
+ * frames; their fill appears when the triangulation ends (the outline appears at once)
78
+ * - the tile index of the terrain drape is built within a time budget per frame
79
+ *
80
+ * Set it to false to draw frames that are complete: everything above is done in the frame
81
+ * that needs it, however long that frame takes. It is meant for a map that draws a frame to
82
+ * read the picture back (printing, thumbnails, exports), not for an interactive map. While
83
+ * the camera moves, the rebuilds that wait for the camera to stop still wait (a capture is
84
+ * taken with the camera still).
85
+ *
86
+ * A complete frame is not yet a complete picture: the map's tiles and the DEM arrive
87
+ * asynchronously. Wait for the map's `idle`, then for
88
+ * {@link MapLibreGLDraw.hasPendingWork} to return false, which also covers the work that no
89
+ * setting can make synchronous (the responses of a provider, an overlay renderer that
90
+ * prepares resources over several frames).
91
+ *
92
+ * @defaultValue `true`
93
+ */
94
+ timeSlicing?: boolean;
95
+ }
96
+ /**
97
+ * Default style configuration for the box selection UI
98
+ */
99
+ export declare const DEFAULT_BOX_SELECTION_STYLE_CONFIG: BoxSelectionStyleConfig;
100
+ /**
101
+ * Default rendering configuration
102
+ */
103
+ export declare const DEFAULT_RENDERING_CONFIG: RenderingConfig;
104
+ /**
105
+ * Helper function that merges configurations
106
+ */
107
+ export declare function mergeRenderingConfig(base: RenderingConfig, override: Partial<RenderingConfig>): RenderingConfig;
@@ -0,0 +1,33 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Default style configuration for the box selection UI
5
+ */
6
+ export const DEFAULT_BOX_SELECTION_STYLE_CONFIG = {
7
+ fillColor: [1.0, 0.0, 0.6, 0.2],
8
+ strokeColor: [1.0, 0.0, 0.6, 1.0],
9
+ strokeWidth: 2,
10
+ strokeOpacity: 1.0,
11
+ dashArray: [6, 4],
12
+ };
13
+ /**
14
+ * Default rendering configuration
15
+ */
16
+ export const DEFAULT_RENDERING_CONFIG = {
17
+ boxSelectionStyle: DEFAULT_BOX_SELECTION_STYLE_CONFIG,
18
+ storeRetained: true,
19
+ timeSlicing: true,
20
+ };
21
+ /**
22
+ * Helper function that merges configurations
23
+ */
24
+ export function mergeRenderingConfig(base, override) {
25
+ return {
26
+ boxSelectionStyle: {
27
+ ...base.boxSelectionStyle,
28
+ ...override.boxSelectionStyle,
29
+ },
30
+ storeRetained: override.storeRetained ?? base.storeRetained,
31
+ timeSlicing: override.timeSlicing ?? base.timeSlicing,
32
+ };
33
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * How the selection highlight of datasets looks
3
+ *
4
+ * Two rendering paths read the same values.
5
+ *
6
+ * - Immediate mode (`highlightFeature` in `display/selection.ts`). Draws points, and the
7
+ * polygons and lines that do not go through the analysis drape (dashed outlines and so on)
8
+ * - Analysis drape (`view/terrain/drape/renderer.ts`). Draws the selection highlight for the
9
+ * band (z > 11) that draws polygons and lines as pixels of the ground surface
10
+ *
11
+ * Putting separate constants in the two places would make the color or the width change when
12
+ * crossing a band. This single file owns the values.
13
+ *
14
+ * This file imports nothing, so that it depends on neither path.
15
+ */
16
+ /** Base color of the selection highlight (#FF2D55, the same as the selection UI) */
17
+ export declare const SELECTION_HIGHLIGHT_COLOR = "#FF2D55";
18
+ /** Opacity of the polygon fill of the selection highlight */
19
+ export declare const SELECTION_HIGHLIGHT_FILL_OPACITY = 0.25;
20
+ /** Extra line width added by the selection highlight (CSS pixels) */
21
+ export declare const SELECTION_HIGHLIGHT_STROKE_EXTRA = 2;
22
+ /** Extra ring width added to points by the selection highlight (CSS pixels) */
23
+ export declare const SELECTION_HIGHLIGHT_RING_EXTRA = 3;
24
+ /**
25
+ * Resolves the base color into an RGB triple in the range 0 to 1
26
+ *
27
+ * Used to pass it to a shader uniform (the color is a constant, so it is parsed only once).
28
+ */
29
+ export declare const SELECTION_HIGHLIGHT_RGB: readonly [number, number, number];
@@ -0,0 +1,35 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * How the selection highlight of datasets looks
5
+ *
6
+ * Two rendering paths read the same values.
7
+ *
8
+ * - Immediate mode (`highlightFeature` in `display/selection.ts`). Draws points, and the
9
+ * polygons and lines that do not go through the analysis drape (dashed outlines and so on)
10
+ * - Analysis drape (`view/terrain/drape/renderer.ts`). Draws the selection highlight for the
11
+ * band (z > 11) that draws polygons and lines as pixels of the ground surface
12
+ *
13
+ * Putting separate constants in the two places would make the color or the width change when
14
+ * crossing a band. This single file owns the values.
15
+ *
16
+ * This file imports nothing, so that it depends on neither path.
17
+ */
18
+ /** Base color of the selection highlight (#FF2D55, the same as the selection UI) */
19
+ export const SELECTION_HIGHLIGHT_COLOR = '#FF2D55';
20
+ /** Opacity of the polygon fill of the selection highlight */
21
+ export const SELECTION_HIGHLIGHT_FILL_OPACITY = 0.25;
22
+ /** Extra line width added by the selection highlight (CSS pixels) */
23
+ export const SELECTION_HIGHLIGHT_STROKE_EXTRA = 2;
24
+ /** Extra ring width added to points by the selection highlight (CSS pixels) */
25
+ export const SELECTION_HIGHLIGHT_RING_EXTRA = 3;
26
+ /**
27
+ * Resolves the base color into an RGB triple in the range 0 to 1
28
+ *
29
+ * Used to pass it to a shader uniform (the color is a constant, so it is parsed only once).
30
+ */
31
+ export const SELECTION_HIGHLIGHT_RGB = [
32
+ Number.parseInt(SELECTION_HIGHLIGHT_COLOR.slice(1, 3), 16) / 255,
33
+ Number.parseInt(SELECTION_HIGHLIGHT_COLOR.slice(3, 5), 16) / 255,
34
+ Number.parseInt(SELECTION_HIGHLIGHT_COLOR.slice(5, 7), 16) / 255,
35
+ ];