@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,273 @@
1
+ /**
2
+ * Selection UI configuration
3
+ *
4
+ * Configuration related to rendering the UI of the selected state.
5
+ */
6
+ import type { PointStyle, StrokeStyle } from '../types/style.js';
7
+ /**
8
+ * How the box around the selection looks (part of {@link SelectionUIConfig})
9
+ */
10
+ export interface BoundingBoxStyle {
11
+ /**
12
+ * The line of the box
13
+ *
14
+ * @defaultValue `#FF2D55`, 2 px, solid
15
+ */
16
+ stroke: StrokeStyle;
17
+ /**
18
+ * The gap between the selected features and the box, in CSS pixels
19
+ *
20
+ * @defaultValue `10`
21
+ */
22
+ margin: number;
23
+ }
24
+ /**
25
+ * How the four corner handles that resize the selection look (part of
26
+ * {@link SelectionUIConfig})
27
+ */
28
+ export interface ResizeHandleStyle {
29
+ /**
30
+ * The handle
31
+ *
32
+ * @defaultValue a 10 px `#FF2D55` square without an outline
33
+ */
34
+ point: PointStyle;
35
+ }
36
+ /**
37
+ * How the handle that rotates the selection looks (part of {@link SelectionUIConfig})
38
+ *
39
+ * The handle sits above the middle of the top edge of the box, joined to it by a line.
40
+ */
41
+ export interface RotateHandleStyle {
42
+ /**
43
+ * The handle
44
+ *
45
+ * @defaultValue a 10 px `#FF2D55` circle without an outline
46
+ */
47
+ point: PointStyle;
48
+ /**
49
+ * The distance between the handle and the box, in CSS pixels
50
+ *
51
+ * @defaultValue `10`
52
+ */
53
+ distance: number;
54
+ /**
55
+ * The line that joins the handle to the box
56
+ *
57
+ * @defaultValue `#FF2D55`, 2 px, solid
58
+ */
59
+ connector: StrokeStyle;
60
+ }
61
+ /**
62
+ * How the vertex handles of the selected line or polygon look (part of
63
+ * {@link SelectionUIConfig})
64
+ */
65
+ export interface VertexHandleStyle {
66
+ /**
67
+ * A vertex handle
68
+ *
69
+ * @defaultValue a 12 px white circle with a 2 px `#FF2D55` outline
70
+ */
71
+ point: PointStyle;
72
+ /**
73
+ * A selected vertex
74
+ *
75
+ * @defaultValue a 12 px white circle with a 3 px `#FF2D55` outline
76
+ */
77
+ selected: PointStyle;
78
+ /**
79
+ * A vertex of another feature that follows along while shared vertices move together
80
+ *
81
+ * They are distinguished by inverting the fill while staying in the same color family as the
82
+ * selection (#FF2D55). No other hue is used, so that they are not confused with the snapping
83
+ * indicator (#00C7BE).
84
+ *
85
+ * @defaultValue a 12 px `#FF2D55` circle with a 2 px white outline
86
+ */
87
+ followed: PointStyle;
88
+ }
89
+ /**
90
+ * How the midpoint handles look: the handles at the middle of each edge, which add a vertex
91
+ * when dragged (part of {@link SelectionUIConfig})
92
+ */
93
+ export interface MidpointHandleStyle {
94
+ /**
95
+ * A midpoint handle
96
+ *
97
+ * @defaultValue an 8 px white circle with a 1.5 px `#FF2D55` outline
98
+ */
99
+ point: PointStyle;
100
+ }
101
+ /**
102
+ * How the handle that changes the radius of a selected Circle looks (part of
103
+ * {@link SelectionUIConfig})
104
+ */
105
+ export interface RadiusHandleStyle {
106
+ /**
107
+ * The handle
108
+ *
109
+ * @defaultValue a 10 px white circle with a 1 px `#FF2D55` outline
110
+ */
111
+ point: PointStyle;
112
+ }
113
+ /**
114
+ * How the marker at the center of a selected Circle looks (part of
115
+ * {@link SelectionUIConfig})
116
+ */
117
+ export interface CenterMarkerStyle {
118
+ /**
119
+ * The marker
120
+ *
121
+ * @defaultValue a 6 px white circle with a 1 px `#FF2D55` outline
122
+ */
123
+ point: PointStyle;
124
+ }
125
+ /**
126
+ * How the line from the center of a selected Circle to its radius handle looks (part of
127
+ * {@link SelectionUIConfig})
128
+ */
129
+ export interface RadiusLineStyle {
130
+ /**
131
+ * The line
132
+ *
133
+ * @defaultValue `#FF2D55`, 1 px, dashed with a 3 px dash and a 3 px gap
134
+ */
135
+ stroke: StrokeStyle;
136
+ }
137
+ /**
138
+ * How the selection UI looks: the box around the selection and its handles
139
+ *
140
+ * Give the parts to change through the `selectionStyle` option of `createMapLibreGLDraw`;
141
+ * the parts left out keep their defaults. Sizes and widths are in CSS pixels and stay the
142
+ * same at every zoom.
143
+ *
144
+ * A single selection shows the box with the resize handles at its corners and the rotate
145
+ * handle above it; a line or a polygon also shows its vertex and midpoint handles, and a Circle
146
+ * its center marker, radius line and radius handle. A multiple selection shows one box around
147
+ * every selected feature, with the resize and rotate handles, and a box without handles around
148
+ * each feature. A locked feature shows the box without handles.
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * const draw = createMapLibreGLDraw(map, {
153
+ * selectionStyle: {
154
+ * boundingBox: {
155
+ * stroke: { width: 1, color: [0, 0.4, 1, 1], opacity: 1, lineStyle: 'solid' },
156
+ * margin: 6,
157
+ * },
158
+ * },
159
+ * });
160
+ * ```
161
+ */
162
+ export interface SelectionUIConfig {
163
+ /**
164
+ * The box around the selection
165
+ *
166
+ * @defaultValue `#FF2D55`, 2 px, solid, 10 px from the features
167
+ */
168
+ boundingBox: BoundingBoxStyle;
169
+ /**
170
+ * The resize handles at the four corners of the box
171
+ *
172
+ * @defaultValue 10 px `#FF2D55` squares without an outline
173
+ */
174
+ resizeHandle: ResizeHandleStyle;
175
+ /**
176
+ * The rotate handle above the box
177
+ *
178
+ * @defaultValue a 10 px `#FF2D55` circle, 10 px above the box, joined by a 2 px line
179
+ */
180
+ rotateHandle: RotateHandleStyle;
181
+ /**
182
+ * The vertex handles
183
+ *
184
+ * @defaultValue 12 px white circles with a 2 px `#FF2D55` outline (3 px when selected)
185
+ */
186
+ vertexHandle: VertexHandleStyle;
187
+ /**
188
+ * The midpoint handles
189
+ *
190
+ * @defaultValue 8 px white circles with a 1.5 px `#FF2D55` outline
191
+ */
192
+ midpointHandle: MidpointHandleStyle;
193
+ /**
194
+ * For a Circle: the radius handle
195
+ *
196
+ * @defaultValue a 10 px white circle with a 1 px `#FF2D55` outline
197
+ */
198
+ radiusHandle: RadiusHandleStyle;
199
+ /**
200
+ * For a Circle: the center marker
201
+ *
202
+ * @defaultValue a 6 px white circle with a 1 px `#FF2D55` outline
203
+ */
204
+ centerMarker: CenterMarkerStyle;
205
+ /**
206
+ * For a Circle: the radius line (the dashed line from the center to the radius handle)
207
+ *
208
+ * @defaultValue `#FF2D55`, 1 px, dashed 3 px / 3 px
209
+ */
210
+ radiusLine: RadiusLineStyle;
211
+ }
212
+ /**
213
+ * Default selection UI configuration
214
+ */
215
+ export declare const DEFAULT_SELECTION_CONFIG: SelectionUIConfig;
216
+ /**
217
+ * Style changes on hover
218
+ */
219
+ export declare const HOVER_STYLE_MODIFIERS: {
220
+ /** Enlargement factor for the size */
221
+ sizeMultiplier: number;
222
+ /** Increase in opacity */
223
+ opacityIncrease: number;
224
+ };
225
+ /**
226
+ * Style changes while dragging
227
+ */
228
+ export declare const DRAGGING_STYLE_MODIFIERS: {
229
+ /** Reduction factor for the size */
230
+ sizeMultiplier: number;
231
+ /** Opacity */
232
+ opacity: number;
233
+ };
234
+ /**
235
+ * Threshold at which handle thinning kicks in
236
+ *
237
+ * Only features whose total number of vertex handles and midpoint handles exceeds this are
238
+ * thinned. Features at or below it do not run the thinning computation at all and show every
239
+ * handle, just as before.
240
+ */
241
+ export declare const HANDLE_THINNING_THRESHOLD = 400;
242
+ /**
243
+ * Minimum screen distance from an already adopted handle (pixels)
244
+ *
245
+ * A greedy algorithm adopts only the vertices that are at least this far from "the vertex
246
+ * adopted just before".
247
+ */
248
+ export declare const MIN_HANDLE_SPACING_PX = 14;
249
+ /**
250
+ * Minimum screen length of an edge that gets a midpoint handle (pixels)
251
+ *
252
+ * An edge shorter than this cannot be grabbed even if its midpoint is shown, so no midpoint is
253
+ * shown for it while thinning.
254
+ */
255
+ export declare const MIDPOINT_MIN_EDGE_PX = 32;
256
+ /**
257
+ * Debounce from the camera coming to rest until the thinning is recomputed (milliseconds)
258
+ *
259
+ * While the camera is moving, the old set is drawn as is; once it has been at rest for this
260
+ * long, the set is rebuilt.
261
+ */
262
+ export declare const THINNING_REFRESH_DEBOUNCE_MS = 150;
263
+ /**
264
+ * Margin of the viewport pre-filtering (pixels)
265
+ *
266
+ * Including vertices just outside the screen prevents the handles at the edge from
267
+ * disappearing on a slight pan.
268
+ */
269
+ export declare const THINNING_VIEWPORT_MARGIN_PX = 100;
270
+ /**
271
+ * Helper function that merges configurations
272
+ */
273
+ export declare function mergeSelectionUIConfig(base: SelectionUIConfig, override: Partial<SelectionUIConfig>): SelectionUIConfig;
@@ -0,0 +1,266 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Default selection UI configuration
5
+ */
6
+ export const DEFAULT_SELECTION_CONFIG = {
7
+ boundingBox: {
8
+ stroke: {
9
+ // 2px for better visibility (the documented specification is 1px, but that is too thin
10
+ // on high DPI)
11
+ width: 2,
12
+ color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
13
+ opacity: 1.0,
14
+ lineStyle: 'solid',
15
+ },
16
+ margin: 10, // Documented specification: default 10px
17
+ },
18
+ resizeHandle: {
19
+ point: {
20
+ shape: 'square',
21
+ size: 10,
22
+ fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
23
+ fillOpacity: 1.0,
24
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
25
+ strokeWidth: 0, // Documented specification: no border
26
+ strokeOpacity: 1.0,
27
+ },
28
+ },
29
+ rotateHandle: {
30
+ point: {
31
+ shape: 'circle',
32
+ size: 10,
33
+ fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
34
+ fillOpacity: 1.0,
35
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
36
+ strokeWidth: 0,
37
+ strokeOpacity: 1.0,
38
+ },
39
+ distance: 10, // Documented specification: default 10px
40
+ connector: {
41
+ width: 2, // Unified with the same width as the bounding box
42
+ color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
43
+ opacity: 1.0,
44
+ lineStyle: 'solid',
45
+ },
46
+ },
47
+ vertexHandle: {
48
+ point: {
49
+ shape: 'circle',
50
+ size: 12, // 12px for better visibility (the documented specification is 10px)
51
+ fillColor: [1.0, 1.0, 1.0, 1.0],
52
+ fillOpacity: 1.0,
53
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
54
+ strokeWidth: 2, // 2px for better visibility (the documented specification is 1px)
55
+ strokeOpacity: 1.0,
56
+ },
57
+ selected: {
58
+ shape: 'circle',
59
+ size: 12, // The same size as the normal state
60
+ fillColor: [1.0, 1.0, 1.0, 1.0], // white (the same as the normal state)
61
+ fillOpacity: 1.0,
62
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
63
+ strokeWidth: 3, // A slightly thicker line (normally 2px)
64
+ strokeOpacity: 1.0,
65
+ },
66
+ // Following vertices: the fill is inverted (#FF2D55 fill + white border). They are
67
+ // distinguishable at a glance from selected vertices (white fill + #FF2D55 border), while
68
+ // the color family is kept the same as the selection.
69
+ followed: {
70
+ shape: 'circle',
71
+ size: 12, // The same size as the normal and selected states
72
+ fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55 (fill)
73
+ fillOpacity: 1.0,
74
+ strokeColor: [1.0, 1.0, 1.0, 1.0], // white
75
+ strokeWidth: 2,
76
+ strokeOpacity: 1.0,
77
+ },
78
+ },
79
+ midpointHandle: {
80
+ point: {
81
+ shape: 'circle',
82
+ // 8px for better visibility and easier manipulation (the documented specification is 5px)
83
+ size: 8,
84
+ fillColor: [1.0, 1.0, 1.0, 1.0],
85
+ fillOpacity: 1.0,
86
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
87
+ strokeWidth: 1.5, // 1.5px for better visibility (the documented specification is 1px)
88
+ strokeOpacity: 1.0,
89
+ },
90
+ },
91
+ // For Circle: radius handle
92
+ // Specification: a 10px diameter circle, white fill, pink border (#FF2D55), 1px wide
93
+ radiusHandle: {
94
+ point: {
95
+ shape: 'circle',
96
+ size: 10,
97
+ fillColor: [1.0, 1.0, 1.0, 1.0], // white
98
+ fillOpacity: 1.0,
99
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
100
+ strokeWidth: 1,
101
+ strokeOpacity: 1.0,
102
+ },
103
+ },
104
+ // For Circle: center marker
105
+ // Specification: a 6px diameter circle, white fill, pink border (#FF2D55), 1px wide
106
+ centerMarker: {
107
+ point: {
108
+ shape: 'circle',
109
+ size: 6,
110
+ fillColor: [1.0, 1.0, 1.0, 1.0], // white
111
+ fillOpacity: 1.0,
112
+ strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
113
+ strokeWidth: 1,
114
+ strokeOpacity: 1.0,
115
+ },
116
+ },
117
+ // For Circle: radius line
118
+ // Specification: a pink (#FF2D55) dotted line, 1px wide, with a pattern of a 3px dash and a
119
+ // 3px gap
120
+ radiusLine: {
121
+ stroke: {
122
+ width: 1,
123
+ color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
124
+ opacity: 1.0,
125
+ lineStyle: 'dashed',
126
+ dashArray: [3, 3],
127
+ },
128
+ },
129
+ };
130
+ /**
131
+ * Style changes on hover
132
+ */
133
+ export const HOVER_STYLE_MODIFIERS = {
134
+ /** Enlargement factor for the size */
135
+ sizeMultiplier: 1.2,
136
+ /** Increase in opacity */
137
+ opacityIncrease: 0.2,
138
+ };
139
+ /**
140
+ * Style changes while dragging
141
+ */
142
+ export const DRAGGING_STYLE_MODIFIERS = {
143
+ /** Reduction factor for the size */
144
+ sizeMultiplier: 0.9,
145
+ /** Opacity */
146
+ opacity: 0.8,
147
+ };
148
+ /**
149
+ * Threshold at which handle thinning kicks in
150
+ *
151
+ * Only features whose total number of vertex handles and midpoint handles exceeds this are
152
+ * thinned. Features at or below it do not run the thinning computation at all and show every
153
+ * handle, just as before.
154
+ */
155
+ export const HANDLE_THINNING_THRESHOLD = 400;
156
+ /**
157
+ * Minimum screen distance from an already adopted handle (pixels)
158
+ *
159
+ * A greedy algorithm adopts only the vertices that are at least this far from "the vertex
160
+ * adopted just before".
161
+ */
162
+ export const MIN_HANDLE_SPACING_PX = 14;
163
+ /**
164
+ * Minimum screen length of an edge that gets a midpoint handle (pixels)
165
+ *
166
+ * An edge shorter than this cannot be grabbed even if its midpoint is shown, so no midpoint is
167
+ * shown for it while thinning.
168
+ */
169
+ export const MIDPOINT_MIN_EDGE_PX = 32;
170
+ /**
171
+ * Debounce from the camera coming to rest until the thinning is recomputed (milliseconds)
172
+ *
173
+ * While the camera is moving, the old set is drawn as is; once it has been at rest for this
174
+ * long, the set is rebuilt.
175
+ */
176
+ export const THINNING_REFRESH_DEBOUNCE_MS = 150;
177
+ /**
178
+ * Margin of the viewport pre-filtering (pixels)
179
+ *
180
+ * Including vertices just outside the screen prevents the handles at the edge from
181
+ * disappearing on a slight pan.
182
+ */
183
+ export const THINNING_VIEWPORT_MARGIN_PX = 100;
184
+ /**
185
+ * Helper function that merges configurations
186
+ */
187
+ export function mergeSelectionUIConfig(base, override) {
188
+ return {
189
+ boundingBox: {
190
+ ...base.boundingBox,
191
+ ...override.boundingBox,
192
+ stroke: {
193
+ ...base.boundingBox.stroke,
194
+ ...override.boundingBox?.stroke,
195
+ },
196
+ },
197
+ resizeHandle: {
198
+ ...base.resizeHandle,
199
+ ...override.resizeHandle,
200
+ point: {
201
+ ...base.resizeHandle.point,
202
+ ...override.resizeHandle?.point,
203
+ },
204
+ },
205
+ rotateHandle: {
206
+ ...base.rotateHandle,
207
+ ...override.rotateHandle,
208
+ point: {
209
+ ...base.rotateHandle.point,
210
+ ...override.rotateHandle?.point,
211
+ },
212
+ connector: {
213
+ ...base.rotateHandle.connector,
214
+ ...override.rotateHandle?.connector,
215
+ },
216
+ },
217
+ vertexHandle: {
218
+ ...base.vertexHandle,
219
+ ...override.vertexHandle,
220
+ point: {
221
+ ...base.vertexHandle.point,
222
+ ...override.vertexHandle?.point,
223
+ },
224
+ selected: {
225
+ ...base.vertexHandle.selected,
226
+ ...override.vertexHandle?.selected,
227
+ },
228
+ followed: {
229
+ ...base.vertexHandle.followed,
230
+ ...override.vertexHandle?.followed,
231
+ },
232
+ },
233
+ midpointHandle: {
234
+ ...base.midpointHandle,
235
+ ...override.midpointHandle,
236
+ point: {
237
+ ...base.midpointHandle.point,
238
+ ...override.midpointHandle?.point,
239
+ },
240
+ },
241
+ radiusHandle: {
242
+ ...base.radiusHandle,
243
+ ...override.radiusHandle,
244
+ point: {
245
+ ...base.radiusHandle.point,
246
+ ...override.radiusHandle?.point,
247
+ },
248
+ },
249
+ centerMarker: {
250
+ ...base.centerMarker,
251
+ ...override.centerMarker,
252
+ point: {
253
+ ...base.centerMarker.point,
254
+ ...override.centerMarker?.point,
255
+ },
256
+ },
257
+ radiusLine: {
258
+ ...base.radiusLine,
259
+ ...override.radiusLine,
260
+ stroke: {
261
+ ...base.radiusLine.stroke,
262
+ ...override.radiusLine?.stroke,
263
+ },
264
+ },
265
+ };
266
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Topology configuration
3
+ *
4
+ * Settings that keep the "boundary" where adjacent features share coordinates from breaking
5
+ * when it is edited. Everything is disabled by default, and is layered on top of the existing
6
+ * editing behavior only when enabled.
7
+ */
8
+ /**
9
+ * Settings that keep a boundary shared by adjacent features intact while it is edited
10
+ *
11
+ * Give them through the `topology` option of `createMapLibreGLDraw`, or change them later
12
+ * through `draw.topology`. Everything is off by default.
13
+ */
14
+ export interface TopologyConfig {
15
+ /**
16
+ * Whether dragging a vertex also moves the vertices of other features at the same position
17
+ *
18
+ * When true, dragging a vertex in the select mode also moves, by the same amount, any other
19
+ * feature that has a vertex exactly matching (tolerance 0) the dragged vertex.
20
+ * This lets the boundary of adjacent polygons be edited without creating gaps or overlaps.
21
+ *
22
+ * @defaultValue `false`
23
+ */
24
+ sharedVertexDrag: boolean;
25
+ }
26
+ /**
27
+ * Default topology configuration (everything disabled)
28
+ */
29
+ export declare const DEFAULT_TOPOLOGY_CONFIG: TopologyConfig;
30
+ /**
31
+ * Helper function that merges configurations
32
+ */
33
+ export declare function mergeTopologyConfig(base: TopologyConfig, override: Partial<TopologyConfig>): TopologyConfig;
@@ -0,0 +1,17 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Default topology configuration (everything disabled)
5
+ */
6
+ export const DEFAULT_TOPOLOGY_CONFIG = {
7
+ sharedVertexDrag: false,
8
+ };
9
+ /**
10
+ * Helper function that merges configurations
11
+ */
12
+ export function mergeTopologyConfig(base, override) {
13
+ return {
14
+ ...base,
15
+ ...override,
16
+ };
17
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Trace configuration
3
+ *
4
+ * Whether to enable the feature that follows the boundary of an existing feature while drawing
5
+ * and takes in its vertex sequence (edge tracing). It is enabled by default; when disabled,
6
+ * drawing behaves exactly as it did before tracing was introduced.
7
+ *
8
+ * The configuration object is shared as the same instance between Context and ModeContext.
9
+ * When `draw.tracing.setEnabled()` rewrites this object, the drawing modes run with the new
10
+ * value from the next click or move onward.
11
+ */
12
+ /**
13
+ * The setting of edge tracing: following the boundary of an existing feature while drawing
14
+ *
15
+ * Give it through the `trace` option of `createMapLibreGLDraw`, or change it later with
16
+ * `draw.tracing.setEnabled()`.
17
+ */
18
+ export interface TraceOptions {
19
+ /**
20
+ * Whether tracing is on
21
+ *
22
+ * @defaultValue `true`
23
+ */
24
+ enabled?: boolean;
25
+ }
26
+ /**
27
+ * The setting of edge tracing with its default filled in, as the drawing modes read it
28
+ */
29
+ export interface TraceConfig {
30
+ /** Whether to enable tracing */
31
+ enabled: boolean;
32
+ }
33
+ /**
34
+ * Default trace configuration (enabled)
35
+ */
36
+ export declare const DEFAULT_TRACE_CONFIG: TraceConfig;
37
+ /**
38
+ * Helper function that merges configurations
39
+ */
40
+ export declare function mergeTraceConfig(base: TraceConfig, override: TraceOptions): TraceConfig;
@@ -0,0 +1,17 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Default trace configuration (enabled)
5
+ */
6
+ export const DEFAULT_TRACE_CONFIG = {
7
+ enabled: true,
8
+ };
9
+ /**
10
+ * Helper function that merges configurations
11
+ */
12
+ export function mergeTraceConfig(base, override) {
13
+ return {
14
+ ...base,
15
+ ...override,
16
+ };
17
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Angle computation utilities
3
+ *
4
+ * Angle computation functions used when rendering circle features and when manipulating the
5
+ * radius handle.
6
+ */
7
+ import type { Coordinate } from '../types/model.js';
8
+ export { getPointAtAngle } from '../../geometry/index.js';
9
+ /**
10
+ * Computes the angle between two points (the bearing as seen from the center)
11
+ *
12
+ * The planar inverse of {@link getPointAtAngle}: the longitude difference is scaled by cos of
13
+ * the center latitude. It is not the great-circle bearing, so a point placed with
14
+ * destinationPoint (circles, buffers and the radius handle) must take its bearing from
15
+ * initialBearingDegrees in the geometry module instead.
16
+ *
17
+ * @param center Center coordinate
18
+ * @param point Coordinate of the target point
19
+ * @returns Angle (degrees, clockwise with north as 0, 0-360)
20
+ */
21
+ export declare function getAngleFromCenter(center: Coordinate, point: Coordinate): number;