@sakuzu/maplibre-gl-draw 1.0.0 → 2.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 (540) hide show
  1. package/CHANGELOG.md +1016 -2
  2. package/README.ja.md +39 -19
  3. package/README.md +41 -21
  4. package/dist/api/datasets.d.ts +258 -0
  5. package/dist/api/document.d.ts +66 -0
  6. package/dist/api/draw.d.ts +135 -0
  7. package/dist/api/draw.js +18 -0
  8. package/dist/api/drawing.d.ts +87 -0
  9. package/dist/api/errors.d.ts +35 -0
  10. package/dist/api/errors.js +35 -0
  11. package/dist/api/events.d.ts +306 -0
  12. package/dist/api/extension/context.d.ts +247 -0
  13. package/dist/api/extension/feature-type.d.ts +129 -0
  14. package/dist/api/extension/mode.d.ts +123 -0
  15. package/dist/api/extension/plugin.d.ts +51 -0
  16. package/dist/api/extension/plugin.js +3 -0
  17. package/dist/api/extension/provider.d.ts +119 -0
  18. package/dist/api/extension/provider.js +3 -0
  19. package/dist/api/extension/render.d.ts +176 -0
  20. package/dist/api/extension/render.js +3 -0
  21. package/dist/api/extension/store.d.ts +190 -0
  22. package/dist/api/extension/store.js +3 -0
  23. package/dist/api/extensions.d.ts +306 -0
  24. package/dist/api/extensions.js +3 -0
  25. package/dist/api/features.d.ts +188 -0
  26. package/dist/api/features.js +3 -0
  27. package/dist/api/groups.d.ts +111 -0
  28. package/dist/api/groups.js +3 -0
  29. package/dist/api/hidden.d.ts +45 -0
  30. package/dist/api/hidden.js +3 -0
  31. package/dist/api/impl/adapters.js +463 -0
  32. package/dist/api/impl/contexts.js +466 -0
  33. package/dist/api/impl/create-draw.js +124 -0
  34. package/dist/api/impl/datasets.js +404 -0
  35. package/dist/api/impl/destroy-guard.js +74 -0
  36. package/dist/api/impl/document.js +280 -0
  37. package/dist/api/impl/drawing.js +180 -0
  38. package/dist/api/impl/engine-context.d.ts +7 -0
  39. package/dist/api/{context.js → impl/engine-context.js} +49 -38
  40. package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
  41. package/dist/api/impl/events.js +422 -0
  42. package/dist/api/impl/extension-host.js +361 -0
  43. package/dist/api/impl/extensions.js +229 -0
  44. package/dist/api/impl/features.js +445 -0
  45. package/dist/api/impl/geometry/apply.d.ts +32 -0
  46. package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
  47. package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
  48. package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
  49. package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
  50. package/dist/api/{geometry → impl/geometry}/split.js +10 -21
  51. package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
  52. package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
  53. package/dist/api/impl/geometry/types.js +3 -0
  54. package/dist/api/impl/groups.d.ts +3 -0
  55. package/dist/api/impl/groups.js +268 -0
  56. package/dist/api/impl/hidden.js +60 -0
  57. package/dist/api/impl/import-export/constants.d.ts +22 -0
  58. package/dist/api/impl/import-export/constants.js +24 -0
  59. package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
  60. package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
  61. package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
  62. package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
  63. package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
  64. package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
  65. package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
  66. package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
  67. package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
  68. package/dist/api/impl/import-export/image-import.d.ts +16 -0
  69. package/dist/api/impl/import-export/image-import.js +73 -0
  70. package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
  71. package/dist/api/impl/import-export/legacy-image-style.js +49 -0
  72. package/dist/api/impl/import-export/native-format.d.ts +14 -0
  73. package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
  74. package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
  75. package/dist/api/impl/import-export/native-upgrade.js +139 -0
  76. package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
  77. package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
  78. package/dist/api/impl/import-export/style-validation.d.ts +24 -0
  79. package/dist/api/impl/import-export/style-validation.js +86 -0
  80. package/dist/api/impl/import-export/types.d.ts +52 -0
  81. package/dist/api/impl/import-export/types.js +3 -0
  82. package/dist/api/impl/input.js +180 -0
  83. package/dist/api/impl/layers.js +307 -0
  84. package/dist/api/impl/metadata.d.ts +1 -0
  85. package/dist/api/impl/metadata.js +22 -0
  86. package/dist/api/impl/options.d.ts +1 -0
  87. package/dist/api/impl/options.js +822 -0
  88. package/dist/api/impl/placement.d.ts +1 -0
  89. package/dist/api/impl/placement.js +138 -0
  90. package/dist/api/impl/render-context.d.ts +13 -0
  91. package/dist/api/impl/render-context.js +272 -0
  92. package/dist/api/impl/rows.d.ts +1 -0
  93. package/dist/api/impl/rows.js +46 -0
  94. package/dist/api/impl/selection.d.ts +1 -0
  95. package/dist/api/impl/selection.js +186 -0
  96. package/dist/api/impl/shared.d.ts +64 -0
  97. package/dist/api/impl/shared.js +178 -0
  98. package/dist/api/impl/validate-extension.d.ts +1 -0
  99. package/dist/api/impl/validate-extension.js +159 -0
  100. package/dist/api/layers.d.ts +130 -0
  101. package/dist/api/layers.js +3 -0
  102. package/dist/api/metadata.d.ts +18 -0
  103. package/dist/api/metadata.js +3 -0
  104. package/dist/api/model.d.ts +487 -0
  105. package/dist/api/model.js +47 -0
  106. package/dist/api/options.d.ts +466 -0
  107. package/dist/api/options.js +3 -0
  108. package/dist/api/selection.d.ts +94 -0
  109. package/dist/api/selection.js +3 -0
  110. package/dist/api/state.d.ts +155 -0
  111. package/dist/api/state.js +12 -0
  112. package/dist/{display → dataset}/chunk.d.ts +1 -1
  113. package/dist/{display → dataset}/chunk.js +4 -3
  114. package/dist/{display → dataset}/dataset.js +18 -21
  115. package/dist/dataset/interaction.d.ts +1 -0
  116. package/dist/{display → dataset}/interaction.js +18 -6
  117. package/dist/dataset/manager.d.ts +1 -0
  118. package/dist/dataset/provider.d.ts +1 -0
  119. package/dist/{display → dataset}/retained.d.ts +1 -1
  120. package/dist/{display → dataset}/retained.js +8 -7
  121. package/dist/dataset/source.d.ts +1 -0
  122. package/dist/{display → dataset}/source.js +17 -4
  123. package/dist/dataset/spatial.d.ts +1 -0
  124. package/dist/{display → dataset}/spatial.js +1 -1
  125. package/dist/dataset/style.d.ts +1 -0
  126. package/dist/{display → dataset}/style.js +1 -1
  127. package/dist/dataset/table-source.d.ts +1 -0
  128. package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
  129. package/dist/{display → dataset}/thinning.d.ts +0 -10
  130. package/dist/{display → dataset}/thinning.js +3 -2
  131. package/dist/dataset/triangulation.d.ts +1 -0
  132. package/dist/{display → dataset}/triangulation.js +0 -0
  133. package/dist/{display → dataset}/types.d.ts +82 -121
  134. package/dist/dataset/types.js +61 -0
  135. package/dist/dispatcher/hit-test/box-strategies.js +13 -13
  136. package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
  137. package/dist/dispatcher/hit-test/globe-shape.js +5 -4
  138. package/dist/dispatcher/hit-test/service.d.ts +17 -0
  139. package/dist/dispatcher/hit-test/service.js +80 -16
  140. package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
  141. package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
  142. package/dist/dispatcher/hit-test/strategies/image.js +6 -18
  143. package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
  144. package/dist/dispatcher/hit-test/strategies/line.js +9 -2
  145. package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
  146. package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
  147. package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
  148. package/dist/dispatcher/hit-test/strategies/point.js +8 -4
  149. package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
  150. package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
  151. package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
  152. package/dist/dispatcher/input-router.js +152 -69
  153. package/dist/dispatcher/normalizer.js +6 -2
  154. package/dist/dispatcher/types.d.ts +6 -1
  155. package/dist/extension/feature-handler.d.ts +1 -182
  156. package/dist/extension/index.d.ts +4 -7
  157. package/dist/extension/renderers.d.ts +1 -208
  158. package/dist/geometry/angle.d.ts +0 -8
  159. package/dist/geometry/angle.js +0 -8
  160. package/dist/geometry/bbox.d.ts +4 -12
  161. package/dist/geometry/bbox.js +4 -12
  162. package/dist/geometry/boolean.d.ts +0 -51
  163. package/dist/geometry/boolean.js +0 -51
  164. package/dist/geometry/buffer.d.ts +0 -26
  165. package/dist/geometry/buffer.js +0 -26
  166. package/dist/geometry/circle.d.ts +0 -9
  167. package/dist/geometry/circle.js +0 -9
  168. package/dist/geometry/coords.d.ts +0 -16
  169. package/dist/geometry/coords.js +0 -16
  170. package/dist/geometry/distance.d.ts +0 -24
  171. package/dist/geometry/distance.js +0 -24
  172. package/dist/geometry/errors.d.ts +21 -36
  173. package/dist/geometry/errors.js +49 -29
  174. package/dist/geometry/geojson.d.ts +81 -0
  175. package/dist/geometry/geojson.js +164 -0
  176. package/dist/geometry/index.d.ts +38 -23
  177. package/dist/geometry/index.js +43 -31
  178. package/dist/geometry/measure.d.ts +0 -27
  179. package/dist/geometry/measure.js +0 -27
  180. package/dist/geometry/predicates.d.ts +0 -9
  181. package/dist/geometry/predicates.js +0 -9
  182. package/dist/geometry/public-bounds.d.ts +26 -0
  183. package/dist/geometry/public-bounds.js +30 -0
  184. package/dist/geometry/public-combine.d.ts +78 -0
  185. package/dist/geometry/public-combine.js +82 -0
  186. package/dist/geometry/public-create.d.ts +54 -0
  187. package/dist/geometry/public-create.js +70 -0
  188. package/dist/geometry/public-measure.d.ts +170 -0
  189. package/dist/geometry/public-measure.js +283 -0
  190. package/dist/geometry/public-predicates.d.ts +54 -0
  191. package/dist/geometry/public-predicates.js +144 -0
  192. package/dist/geometry/public-repair.d.ts +75 -0
  193. package/dist/geometry/public-repair.js +77 -0
  194. package/dist/geometry/simplify.d.ts +0 -7
  195. package/dist/geometry/simplify.js +0 -7
  196. package/dist/geometry/split.d.ts +0 -20
  197. package/dist/geometry/split.js +0 -20
  198. package/dist/geometry/units.d.ts +20 -12
  199. package/dist/geometry/units.js +20 -12
  200. package/dist/index.d.ts +52 -66
  201. package/dist/index.js +6 -18
  202. package/dist/messages.d.ts +7 -7
  203. package/dist/modes/draw/circle.js +83 -207
  204. package/dist/modes/draw/commit-layer.d.ts +5 -16
  205. package/dist/modes/draw/commit-layer.js +2 -13
  206. package/dist/modes/draw/freehand.js +108 -246
  207. package/dist/modes/draw/image.js +4 -2
  208. package/dist/modes/draw/index.d.ts +5 -5
  209. package/dist/modes/draw/index.js +5 -5
  210. package/dist/modes/draw/line.js +18 -354
  211. package/dist/modes/draw/point.js +29 -78
  212. package/dist/modes/draw/polygon.js +23 -368
  213. package/dist/modes/draw/trace-support.d.ts +43 -36
  214. package/dist/modes/draw/trace-support.js +95 -98
  215. package/dist/modes/draw/vertex-drawing.d.ts +1 -0
  216. package/dist/modes/draw/vertex-drawing.js +176 -0
  217. package/dist/modes/handler.d.ts +1 -285
  218. package/dist/modes/manager.d.ts +2 -2
  219. package/dist/modes/manager.js +3 -0
  220. package/dist/modes/select/box-selection.d.ts +3 -3
  221. package/dist/modes/select/box-selection.js +2 -1
  222. package/dist/modes/select/click-handler.d.ts +5 -5
  223. package/dist/modes/select/click-handler.js +22 -20
  224. package/dist/modes/select/cursor-handler.d.ts +2 -2
  225. package/dist/modes/select/drag/intermediate-writes.js +1 -1
  226. package/dist/modes/select/drag/move.js +3 -3
  227. package/dist/modes/select/drag/operation.d.ts +3 -3
  228. package/dist/modes/select/drag/radius.js +5 -4
  229. package/dist/modes/select/drag/transform.d.ts +2 -2
  230. package/dist/modes/select/drag/transform.js +11 -5
  231. package/dist/modes/select/drag/vertex.d.ts +2 -2
  232. package/dist/modes/select/drag/vertex.js +13 -8
  233. package/dist/modes/select/drag-handler.js +44 -25
  234. package/dist/modes/select/mode.js +17 -17
  235. package/dist/modes/select/shortcut-handler.d.ts +8 -8
  236. package/dist/modes/select/shortcut-handler.js +9 -7
  237. package/dist/operations/layer-operations.js +29 -168
  238. package/dist/operations/resize.d.ts +2 -2
  239. package/dist/operations/resize.js +5 -5
  240. package/dist/operations/rotate.js +5 -5
  241. package/dist/operations/selection-operations.d.ts +16 -1
  242. package/dist/operations/selection-operations.js +28 -13
  243. package/dist/operations/shared-vertex.js +4 -2
  244. package/dist/operations/trace-graph.d.ts +0 -18
  245. package/dist/operations/trace-graph.js +0 -18
  246. package/dist/operations/vertex.js +36 -35
  247. package/dist/shared/color.d.ts +1 -0
  248. package/dist/shared/color.js +245 -0
  249. package/dist/shared/config/constants.d.ts +1 -54
  250. package/dist/shared/config/constants.js +1 -58
  251. package/dist/shared/config/feature-style.d.ts +16 -13
  252. package/dist/shared/config/feature-style.js +9 -0
  253. package/dist/shared/config/rendering.d.ts +3 -3
  254. package/dist/shared/config/selection-highlight.d.ts +0 -15
  255. package/dist/shared/config/selection-highlight.js +4 -7
  256. package/dist/shared/config/selection.d.ts +2 -32
  257. package/dist/shared/config/selection.js +0 -18
  258. package/dist/shared/config/topology.d.ts +2 -2
  259. package/dist/shared/config/trace.d.ts +4 -4
  260. package/dist/shared/math/angle.d.ts +1 -1
  261. package/dist/shared/math/angle.js +1 -1
  262. package/dist/shared/math/circle.d.ts +1 -1
  263. package/dist/shared/math/circle.js +1 -1
  264. package/dist/shared/math/distance.d.ts +2 -1
  265. package/dist/shared/math/distance.js +3 -2
  266. package/dist/shared/math/index.d.ts +1 -1
  267. package/dist/shared/math/index.js +1 -1
  268. package/dist/shared/math/transform.d.ts +23 -0
  269. package/dist/shared/math/transform.js +47 -28
  270. package/dist/shared/properties.d.ts +18 -0
  271. package/dist/shared/properties.js +129 -0
  272. package/dist/shared/types/events.d.ts +15 -7
  273. package/dist/shared/types/model.d.ts +109 -159
  274. package/dist/shared/types/style.d.ts +1 -1
  275. package/dist/shared/utils/color.d.ts +2 -36
  276. package/dist/shared/utils/color.js +13 -70
  277. package/dist/shared/utils/coordinates.d.ts +30 -4
  278. package/dist/shared/utils/coordinates.js +56 -10
  279. package/dist/shared/utils/event-emitter.d.ts +1 -262
  280. package/dist/shared/utils/event-emitter.js +4 -3
  281. package/dist/shared/utils/feature-bbox.js +8 -7
  282. package/dist/shared/utils/feature-segments.js +5 -4
  283. package/dist/shared/utils/image.d.ts +0 -4
  284. package/dist/shared/utils/image.js +0 -6
  285. package/dist/shared/utils/name-generator.d.ts +14 -20
  286. package/dist/shared/utils/name-generator.js +20 -3
  287. package/dist/shared/utils/pixel-ratio.d.ts +9 -3
  288. package/dist/shared/utils/pixel-ratio.js +13 -4
  289. package/dist/shared/utils/property.d.ts +7 -50
  290. package/dist/shared/utils/property.js +22 -87
  291. package/dist/snapping/custom-targets.js +21 -4
  292. package/dist/snapping/indicator.js +20 -11
  293. package/dist/snapping/providers/display.d.ts +6 -1
  294. package/dist/snapping/providers/display.js +2 -1
  295. package/dist/snapping/providers/guide.d.ts +3 -43
  296. package/dist/snapping/providers/guide.js +1 -44
  297. package/dist/snapping/providers/intersection.js +1 -1
  298. package/dist/snapping/providers/store.js +3 -3
  299. package/dist/snapping/service.js +18 -7
  300. package/dist/snapping/types.d.ts +9 -35
  301. package/dist/store/draw-store.js +233 -142
  302. package/dist/store/local-visibility.d.ts +11 -6
  303. package/dist/store/local-visibility.js +38 -7
  304. package/dist/store/lock.d.ts +0 -6
  305. package/dist/store/lock.js +0 -6
  306. package/dist/store/memory/change-bus.d.ts +3 -3
  307. package/dist/store/memory/change-bus.js +12 -0
  308. package/dist/store/memory/file-store.d.ts +2 -2
  309. package/dist/store/memory/ui-state.d.ts +1 -51
  310. package/dist/store/memory/ui-state.js +122 -134
  311. package/dist/store/memory.d.ts +1 -8
  312. package/dist/store/memory.js +249 -45
  313. package/dist/store/ordering.d.ts +9 -0
  314. package/dist/store/ordering.js +17 -0
  315. package/dist/store/spatial/spatial-index.d.ts +1 -1
  316. package/dist/store/spatial/spatial-index.js +1 -1
  317. package/dist/store/spatial/store-spatial-index.d.ts +3 -1
  318. package/dist/store/spatial/store-spatial-index.js +9 -3
  319. package/dist/store/store.d.ts +66 -107
  320. package/dist/store/types.d.ts +1 -1
  321. package/dist/store/writable-layer.d.ts +1 -1
  322. package/dist/store/writable-layer.js +2 -2
  323. package/dist/table/builder.d.ts +83 -0
  324. package/dist/table/builder.js +381 -0
  325. package/dist/table/index.d.ts +37 -0
  326. package/dist/table/index.js +5 -0
  327. package/dist/table/packed-rtree.d.ts +1 -0
  328. package/dist/{display → table}/packed-rtree.js +1 -1
  329. package/dist/table/partition.d.ts +1 -0
  330. package/dist/{display → table}/partition.js +3 -3
  331. package/dist/table/prepare.d.ts +44 -0
  332. package/dist/table/prepare.js +136 -0
  333. package/dist/table/table.d.ts +1 -0
  334. package/dist/{display/columnar → table}/table.js +29 -25
  335. package/dist/{display/columnar → table}/types.d.ts +68 -72
  336. package/dist/table/types.js +3 -0
  337. package/dist/view/coordinator.js +4 -3
  338. package/dist/view/feature-companion.d.ts +13 -7
  339. package/dist/view/feature-companion.js +11 -3
  340. package/dist/view/globe-subdivision.js +3 -3
  341. package/dist/view/layer/attach.d.ts +1 -1
  342. package/dist/view/layer/attach.js +1 -1
  343. package/dist/view/layer/custom-layer.js +40 -11
  344. package/dist/view/layer/display-list.js +2 -1
  345. package/dist/view/layer/drape-planner.d.ts +2 -2
  346. package/dist/view/layer/frame-render.d.ts +3 -3
  347. package/dist/view/layer/frame-render.js +7 -2
  348. package/dist/view/layer/frame-state.d.ts +6 -6
  349. package/dist/view/layer/index.d.ts +2 -2
  350. package/dist/view/layer/index.js +1 -1
  351. package/dist/view/layer/render.d.ts +4 -4
  352. package/dist/view/layer/render.js +3 -8
  353. package/dist/view/layer/renderers.d.ts +2 -2
  354. package/dist/view/layer/renderers.js +1 -1
  355. package/dist/view/layer/slot-manager.d.ts +2 -2
  356. package/dist/view/layer/slot-manager.js +4 -4
  357. package/dist/view/layer/slots.d.ts +2 -2
  358. package/dist/view/layer/slots.js +1 -1
  359. package/dist/view/layer/store-retained-bbox.js +3 -2
  360. package/dist/view/layer/store-retained-classify.d.ts +5 -7
  361. package/dist/view/layer/store-retained-classify.js +19 -7
  362. package/dist/view/layer/store-retained-collect.js +8 -7
  363. package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
  364. package/dist/view/layer/store-retained-coord-patch.js +13 -4
  365. package/dist/view/layer/store-retained-immediate.d.ts +3 -3
  366. package/dist/view/layer/store-retained-immediate.js +3 -8
  367. package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
  368. package/dist/view/layer/store-retained.d.ts +2 -2
  369. package/dist/view/layer/store-retained.js +1 -1
  370. package/dist/view/renderers/batch-manager.js +8 -7
  371. package/dist/view/renderers/drawer.js +21 -15
  372. package/dist/view/renderers/image.js +13 -39
  373. package/dist/view/renderers/line/line-types.d.ts +3 -3
  374. package/dist/view/renderers/line/sdf-line.js +3 -1
  375. package/dist/view/renderers/point/billboard-depth.js +1 -1
  376. package/dist/view/renderers/point/point-instance.js +1 -1
  377. package/dist/view/renderers/point/point-shape.js +2 -2
  378. package/dist/view/renderers/point/point-style.js +48 -4
  379. package/dist/view/renderers/polygon/batch.js +1 -2
  380. package/dist/view/renderers/polygon/fill.js +3 -1
  381. package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
  382. package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
  383. package/dist/view/renderers/stroke.js +3 -1
  384. package/dist/view/shaders/helpers.d.ts +2 -42
  385. package/dist/view/shaders/helpers.js +0 -6
  386. package/dist/view/shaders/projection.d.ts +15 -7
  387. package/dist/view/shaders/projection.js +23 -6
  388. package/dist/view/shaders/quad.d.ts +16 -12
  389. package/dist/view/shaders/quad.js +34 -13
  390. package/dist/view/style-rule.d.ts +5 -42
  391. package/dist/view/style-rule.js +20 -44
  392. package/dist/view/terrain/binding.d.ts +1 -0
  393. package/dist/view/terrain/binding.js +29 -0
  394. package/dist/view/terrain/context.d.ts +3 -4
  395. package/dist/view/terrain/context.js +4 -5
  396. package/dist/view/terrain/drape/geometry.js +1 -1
  397. package/dist/view/terrain/drape/pass.d.ts +1 -1
  398. package/dist/view/terrain/drape/pass.js +8 -7
  399. package/dist/view/terrain/polygon.d.ts +9 -5
  400. package/dist/view/terrain/polygon.js +16 -2
  401. package/dist/view/terrain/state.d.ts +1 -1
  402. package/dist/view/terrain/state.js +1 -1
  403. package/dist/view/terrain/tessellation.d.ts +2 -2
  404. package/dist/view/terrain/tessellation.js +1 -1
  405. package/dist/view/ui/auxiliary-handles.d.ts +6 -29
  406. package/dist/view/ui/bounds.js +8 -12
  407. package/dist/view/ui/handle-test.js +2 -2
  408. package/dist/view/ui/handle-thinning.js +17 -17
  409. package/dist/view/ui/handles.js +21 -13
  410. package/dist/view/ui/helper.d.ts +1 -1
  411. package/dist/view/ui/helper.js +1 -1
  412. package/dist/view/ui/index.d.ts +1 -1
  413. package/dist/view/ui/selection-scope.js +4 -2
  414. package/dist/view/ui/selection-ui/bounding-box.js +6 -6
  415. package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
  416. package/dist/view/ui/selection-ui/extension-registry.js +70 -7
  417. package/dist/view/ui/selection-ui/index.d.ts +2 -2
  418. package/dist/view/ui/selection-ui/index.js +1 -1
  419. package/dist/view/ui/selection-ui/renderer.js +15 -38
  420. package/dist/view/ui/selection-ui/types.d.ts +17 -2
  421. package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
  422. package/dist/view/ui/selection-ui-drawer.js +63 -2
  423. package/dist/view/ui/tentative.js +1 -1
  424. package/dist/webgl/index.d.ts +65 -0
  425. package/dist/webgl/index.js +62 -0
  426. package/package.json +20 -9
  427. package/dist/api/api.d.ts +0 -1259
  428. package/dist/api/api.js +0 -86
  429. package/dist/api/context.d.ts +0 -173
  430. package/dist/api/display-api.js +0 -23
  431. package/dist/api/event-api.d.ts +0 -13
  432. package/dist/api/event-api.js +0 -17
  433. package/dist/api/extension-api.d.ts +0 -46
  434. package/dist/api/extension-api.js +0 -85
  435. package/dist/api/feature-api.d.ts +0 -11
  436. package/dist/api/feature-api.js +0 -101
  437. package/dist/api/geometry/apply.d.ts +0 -51
  438. package/dist/api/geometry/boolean.d.ts +0 -28
  439. package/dist/api/geometry/boolean.js +0 -65
  440. package/dist/api/geometry/types.d.ts +0 -31
  441. package/dist/api/geometry-operations.d.ts +0 -162
  442. package/dist/api/geometry-operations.js +0 -94
  443. package/dist/api/group-api.d.ts +0 -10
  444. package/dist/api/group-api.js +0 -78
  445. package/dist/api/import-export/constants.d.ts +0 -29
  446. package/dist/api/import-export/constants.js +0 -40
  447. package/dist/api/import-export/file-name.d.ts +0 -10
  448. package/dist/api/import-export/file-name.js +0 -20
  449. package/dist/api/import-export/geojson-export.d.ts +0 -19
  450. package/dist/api/import-export/image-import.d.ts +0 -12
  451. package/dist/api/import-export/image-import.js +0 -53
  452. package/dist/api/import-export/index.d.ts +0 -9
  453. package/dist/api/import-export/index.js +0 -107
  454. package/dist/api/import-export/native-format.d.ts +0 -15
  455. package/dist/api/import-export/style-validation.d.ts +0 -27
  456. package/dist/api/import-export/style-validation.js +0 -49
  457. package/dist/api/import-export/types.d.ts +0 -26
  458. package/dist/api/index.d.ts +0 -15
  459. package/dist/api/index.js +0 -3
  460. package/dist/api/input-api.d.ts +0 -158
  461. package/dist/api/input-api.js +0 -144
  462. package/dist/api/instance-api.d.ts +0 -38
  463. package/dist/api/instance-api.js +0 -136
  464. package/dist/api/layer-api.d.ts +0 -12
  465. package/dist/api/layer-api.js +0 -62
  466. package/dist/api/selection-api.d.ts +0 -7
  467. package/dist/api/selection-api.js +0 -78
  468. package/dist/api/snapping-api.d.ts +0 -125
  469. package/dist/api/snapping-api.js +0 -50
  470. package/dist/api/topology-api.d.ts +0 -30
  471. package/dist/api/topology-api.js +0 -16
  472. package/dist/api/tracing-api.d.ts +0 -31
  473. package/dist/api/tracing-api.js +0 -16
  474. package/dist/dispatcher/hit-test/index.d.ts +0 -14
  475. package/dist/dispatcher/hit-test/index.js +0 -9
  476. package/dist/dispatcher/index.d.ts +0 -15
  477. package/dist/dispatcher/index.js +0 -3
  478. package/dist/display/columnar/index.d.ts +0 -12
  479. package/dist/display/columnar/index.js +0 -13
  480. package/dist/display/columnar/prepare.d.ts +0 -42
  481. package/dist/display/columnar/prepare.js +0 -116
  482. package/dist/display/index.d.ts +0 -13
  483. package/dist/display/types.js +0 -43
  484. package/dist/maplibre-gl-draw.d.ts +0 -47
  485. package/dist/modes/cursor.js +0 -72
  486. package/dist/modes/index.d.ts +0 -7
  487. package/dist/operations/index.d.ts +0 -9
  488. package/dist/operations/index.js +0 -3
  489. package/dist/plugins/index.d.ts +0 -10
  490. package/dist/plugins/mutation-hooks.d.ts +0 -28
  491. package/dist/plugins/mutation-hooks.js +0 -84
  492. package/dist/plugins/plugin-context.js +0 -367
  493. package/dist/plugins/plugin-manager.d.ts +0 -103
  494. package/dist/plugins/plugin-manager.js +0 -316
  495. package/dist/plugins/plugin.d.ts +0 -529
  496. package/dist/shared/config/index.d.ts +0 -17
  497. package/dist/shared/config/index.js +0 -8
  498. package/dist/shared/utils/index.d.ts +0 -15
  499. package/dist/shared/utils/index.js +0 -24
  500. package/dist/snapping/index.d.ts +0 -14
  501. package/dist/snapping/index.js +0 -4
  502. package/dist/store/change-merger.js +0 -102
  503. package/dist/store/event-bridge.js +0 -161
  504. package/dist/store/index.d.ts +0 -12
  505. package/dist/store/index.js +0 -4
  506. package/dist/view/index.d.ts +0 -47
  507. package/dist/view/index.js +0 -20
  508. /package/dist/api/{geometry/types.js → datasets.js} +0 -0
  509. /package/dist/api/{import-export/types.js → document.js} +0 -0
  510. /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
  511. /package/dist/{display/index.js → api/events.js} +0 -0
  512. /package/dist/{modes/index.js → api/extension/context.js} +0 -0
  513. /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
  514. /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
  515. /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
  516. /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
  517. /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
  518. /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
  519. /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
  520. /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
  521. /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
  522. /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
  523. /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
  524. /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
  525. /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
  526. /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
  527. /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
  528. /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
  529. /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
  530. /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
  531. /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
  532. /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
  533. /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
  534. /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
  535. /package/dist/{display → dataset}/chunk-set.js +0 -0
  536. /package/dist/{display → dataset}/dataset.d.ts +0 -0
  537. /package/dist/{display → dataset}/manager.js +0 -0
  538. /package/dist/{display → dataset}/provider.js +0 -0
  539. /package/dist/{display → dataset}/selection.d.ts +0 -0
  540. /package/dist/{display → dataset}/selection.js +0 -0
@@ -1,136 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- import { INITIAL_DRAPE_DEBUG } from '../view/terrain/context.js';
4
- import { getTerrainDrapeDebug, getTerrainRenderState, INACTIVE_TERRAIN_STATE, } from '../view/terrain/state.js';
5
- export function createInstanceApi(deps) {
6
- const { map, store, modeManager, eventBridge, renderCoordinator, inputRouter, inputNormalizer, customLayer, autoNameGenerator, pixelRatioSource, pluginManager, } = deps;
7
- return {
8
- getMap() {
9
- return map;
10
- },
11
- getStore() {
12
- return store;
13
- },
14
- getMode() {
15
- return modeManager.getMode();
16
- },
17
- setMode(mode) {
18
- // Following the SSoT, call Store.setMode() through the ModeManager
19
- // The event is emitted from the Store through the EventBridge
20
- return modeManager.setMode(mode);
21
- },
22
- getMetadata() {
23
- return store.getMetadata();
24
- },
25
- setMetadata(metadata) {
26
- return store.setMetadata(metadata);
27
- },
28
- isReadOnly() {
29
- return store.isReadOnly();
30
- },
31
- setReadOnly(value) {
32
- store.setReadOnly(value);
33
- },
34
- isInteractionLocked() {
35
- return store.isInteractionLocked();
36
- },
37
- setInteractionLock(value) {
38
- store.setInteractionLock(value);
39
- // If drawing is in progress at the moment the interaction lock is applied, discard the
40
- // tentative geometry and go back to select. Switching to select through the modeManager
41
- // makes the onStop of the drawing handler clean up the tentative geometry. The setMode
42
- // gate lets a transition to select through, so this holds naturally.
43
- if (value && store.getMode() !== 'select') {
44
- modeManager.setMode('select');
45
- }
46
- },
47
- getRenderSlots() {
48
- // For a CustomLayer without frames (an external implementation), return the single
49
- // conventional layer as one interval
50
- if ('getRenderSlots' in customLayer && typeof customLayer.getRenderSlots === 'function') {
51
- return customLayer.getRenderSlots();
52
- }
53
- return [{ layerId: customLayer.id, from: 0, to: store.getLayerOrder().length }];
54
- },
55
- getRenderScale() {
56
- return pixelRatioSource.getRenderScale();
57
- },
58
- setRenderScale(scale) {
59
- // The retained batches that have already been baked are rebuilt by looking at the
60
- // scale, so prompt a redraw only when it has changed (on the next frame the CustomLayer
61
- // and the datasets each start rebuilding).
62
- if (!pixelRatioSource.setRenderScale(scale))
63
- return;
64
- map.triggerRepaint();
65
- },
66
- getPixelRatio() {
67
- return pixelRatioSource.resolve();
68
- },
69
- getTerrainDiagnostics() {
70
- // The terrain state is held by the CustomLayer of this instance (an external
71
- // implementation without one reports the inactive state)
72
- const terrain = 'getTerrainContext' in customLayer && typeof customLayer.getTerrainContext === 'function'
73
- ? customLayer.getTerrainContext()
74
- : null;
75
- return Object.freeze({
76
- render: toRenderDiagnostics(terrain ? getTerrainRenderState(terrain) : INACTIVE_TERRAIN_STATE),
77
- drape: Object.freeze({
78
- ...(terrain ? getTerrainDrapeDebug(terrain) : INITIAL_DRAPE_DEBUG),
79
- }),
80
- });
81
- },
82
- hasPendingWork() {
83
- // The engine of this instance knows its deferred work (an external implementation of the
84
- // layer reports none)
85
- return ('hasPendingWork' in customLayer &&
86
- typeof customLayer.hasPendingWork === 'function' &&
87
- customLayer.hasPendingWork());
88
- },
89
- isLocallyHidden(id) {
90
- return store.isLocallyHidden(id);
91
- },
92
- getLocallyHidden() {
93
- return store.getLocallyHidden();
94
- },
95
- setLocallyHidden(id, hidden) {
96
- store.setLocallyHidden(id, hidden);
97
- },
98
- destroy() {
99
- inputRouter.stop();
100
- inputNormalizer.detach();
101
- eventBridge.stop();
102
- modeManager.stop();
103
- renderCoordinator.stop();
104
- autoNameGenerator.dispose();
105
- // Unregister the plugins so that each one runs its onUninstall (timers, subscriptions and
106
- // anything else it holds outside the draw instance). The extension point registries
107
- // themselves belong to this instance and are cleared with it, so no provider of the
108
- // destroyed instance can reach a live one.
109
- for (const name of pluginManager.getPluginNames()) {
110
- pluginManager.unregister(name);
111
- }
112
- // There can be several frames, so remove all of them
113
- const slotLayers = 'getSlotLayers' in customLayer && typeof customLayer.getSlotLayers === 'function'
114
- ? customLayer.getSlotLayers()
115
- : [customLayer];
116
- for (const slotLayer of slotLayers) {
117
- if (map.getLayer(slotLayer.id)) {
118
- map.removeLayer(slotLayer.id);
119
- }
120
- }
121
- },
122
- };
123
- }
124
- /** The plain numbers of a terrain state, without the GL objects and the internal plans */
125
- function toRenderDiagnostics(state) {
126
- return Object.freeze({
127
- active: state.active,
128
- atlasRect: [...state.atlasRect],
129
- atlasSize: [...state.atlasSize],
130
- elevationScale: state.elevationScale,
131
- liftMeters: state.liftMeters,
132
- stepMeters: state.stepMeters,
133
- stepGrid: state.stepGrid,
134
- generation: state.generation,
135
- });
136
- }
@@ -1,12 +0,0 @@
1
- import type { AutoNameGenerator } from '../shared/utils/name-generator.js';
2
- import type { Store } from '../store/store.js';
3
- import type { MapLibreGLDraw } from './api.js';
4
- export type LayerApi = Pick<MapLibreGLDraw, 'getAllLayers' | 'getLayer' | 'addLayer' | 'updateLayer' | 'deleteLayer' | 'getLayerOrder' | 'setLayerOrder' | 'reorderInLayer' | 'moveToLayer' | 'getActiveLayer' | 'setActiveLayer'>;
5
- export interface LayerApiDeps {
6
- store: Store;
7
- generateFeatureId: () => string;
8
- autoNameGenerator: AutoNameGenerator;
9
- getActiveLayerId: () => string;
10
- setActiveLayerId: (id: string) => void;
11
- }
12
- export declare function createLayerApi(deps: LayerApiDeps): LayerApi;
@@ -1,62 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * Layer API
5
- *
6
- * Provides the Layer CRUD and Active Layer operations of MapLibreGLDraw.
7
- */
8
- import { moveToLayer as moveToLayerImpl } from '../operations/layer-operations.js';
9
- import { onlyLockOrVisibility } from './feature-api.js';
10
- export function createLayerApi(deps) {
11
- const { store, generateFeatureId, autoNameGenerator, getActiveLayerId, setActiveLayerId } = deps;
12
- return {
13
- getAllLayers() {
14
- return store.getAllLayers();
15
- },
16
- getLayer(id) {
17
- return store.getLayer(id);
18
- },
19
- addLayer(name) {
20
- const id = generateFeatureId();
21
- const layerName = name || autoNameGenerator.generateLayerName();
22
- const layer = {
23
- id,
24
- name: layerName,
25
- visible: true,
26
- locked: false,
27
- opacity: 1,
28
- order: [],
29
- };
30
- // A write refused because the Store is read-only returns null
31
- return store.createLayer(layer) ? id : null;
32
- },
33
- updateLayer(id, updates) {
34
- // While locked, reject any change other than locked/visible (full protection)
35
- const layer = store.getLayer(id);
36
- if (layer?.locked && !onlyLockOrVisibility(updates))
37
- return false;
38
- return store.updateLayer(id, updates);
39
- },
40
- deleteLayer(id) {
41
- return store.deleteLayer(id);
42
- },
43
- getLayerOrder() {
44
- return store.getLayerOrder();
45
- },
46
- setLayerOrder(order) {
47
- return store.setLayerOrder(order);
48
- },
49
- reorderInLayer(itemId, layerId, newIndex) {
50
- return store.reorderInLayer(itemId, layerId, newIndex);
51
- },
52
- moveToLayer(itemId, targetLayerId) {
53
- moveToLayerImpl(store, itemId, targetLayerId);
54
- },
55
- getActiveLayer() {
56
- return getActiveLayerId();
57
- },
58
- setActiveLayer(layerId) {
59
- setActiveLayerId(layerId);
60
- },
61
- };
62
- }
@@ -1,7 +0,0 @@
1
- import type { Store } from '../store/store.js';
2
- import type { MapLibreGLDraw } from './api.js';
3
- export type SelectionApi = Pick<MapLibreGLDraw, 'getSelection' | 'select' | 'deselect' | 'getSelectedFeatures' | 'getSelectedIds' | 'deleteSelection' | 'selectVertices' | 'deselectVertices' | 'getSelectedVertices' | 'deleteVertices'>;
4
- export interface SelectionApiDeps {
5
- store: Store;
6
- }
7
- export declare function createSelectionApi(deps: SelectionApiDeps): SelectionApi;
@@ -1,78 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * Selection API
5
- *
6
- * Provides the Selection and Vertex Selection operations of MapLibreGLDraw.
7
- */
8
- import { deleteSelection } from '../operations/selection-operations.js';
9
- import { deleteVertex as deleteVertexOp, sortVertexRefsForDeletion } from '../operations/vertex.js';
10
- export function createSelectionApi(deps) {
11
- const { store } = deps;
12
- return {
13
- getSelection() {
14
- return store.getSelection();
15
- },
16
- select(ids, type = 'feature') {
17
- const idsArray = Array.isArray(ids) ? ids : [ids];
18
- store.setSelection(type, idsArray);
19
- },
20
- deselect() {
21
- store.setSelection(null, []);
22
- },
23
- getSelectedFeatures() {
24
- const selection = store.getSelection();
25
- if (selection.type !== 'feature')
26
- return [];
27
- return selection.ids
28
- .map((id) => store.getFeature(id))
29
- .filter((f) => f !== undefined);
30
- },
31
- getSelectedIds() {
32
- return [...store.getSelection().ids];
33
- },
34
- deleteSelection() {
35
- return deleteSelection(store);
36
- },
37
- selectVertices(featureId, vertices) {
38
- store.setSelectedVertices({ featureId, vertexIndices: vertices });
39
- },
40
- deselectVertices() {
41
- store.setSelectedVertices(null);
42
- },
43
- getSelectedVertices() {
44
- return store.getSelectedVertices();
45
- },
46
- deleteVertices(featureId, vertices) {
47
- if (vertices.length === 0)
48
- return 0;
49
- const feature = store.getFeature(featureId);
50
- if (!feature)
51
- return 0;
52
- // Within the same part and the same ring, delete in descending index order
53
- // (avoids the shift caused by earlier deletions; for MultiPoint the part itself
54
- // disappears, so parts are in descending order too)
55
- const sortedRefs = sortVertexRefsForDeletion(vertices);
56
- let coords = JSON.parse(JSON.stringify(feature.coordinates));
57
- let deletedCount = 0;
58
- for (const ref of sortedRefs) {
59
- const result = deleteVertexOp({ ...feature, coordinates: coords }, ref);
60
- if (result !== null) {
61
- coords = result;
62
- deletedCount++;
63
- }
64
- }
65
- if (deletedCount > 0) {
66
- store.transact(() => {
67
- store.updateFeature(featureId, { coordinates: coords });
68
- // If the deleted vertices were selected, clear the selection
69
- const selectedVertices = store.getSelectedVertices();
70
- if (selectedVertices?.featureId === featureId) {
71
- store.setSelectedVertices(null);
72
- }
73
- });
74
- }
75
- return deletedCount;
76
- },
77
- };
78
- }
@@ -1,125 +0,0 @@
1
- import type { ScreenPoint } from '../shared/math/index.js';
2
- import type { ResolvedSnapOptions, SnapContext, SnapLngLat, SnapProvider, SnapResult, SnapTargetKind } from '../snapping/types.js';
3
- /**
4
- * The snapping of a draw instance, reached as `draw.snapping`: switching it at runtime,
5
- * reading its settings and adding candidates.
6
- *
7
- * Snapping replaces the coordinate of a click, a move or a drag with the nearest candidate
8
- * within the tolerance, before any mode sees it, so it works the same way in every mode and
9
- * for vertex dragging. The initial settings come from {@link Options.snap}. Holding the
10
- * modifier of `disableKey` (Alt by default) releases it while held. Every change of the
11
- * result is announced by the `draw.snap.change` event.
12
- *
13
- * @example
14
- * ```typescript
15
- * draw.snapping.setEnabled(false);
16
- * draw.snapping.setKindEnabled('guide', false); // turn off guides only
17
- * const unregister = draw.snapping.register(myProvider);
18
- * unregister();
19
- * ```
20
- */
21
- export interface SnappingOperations {
22
- /**
23
- * Registers a provider of snapping candidates.
24
- *
25
- * The candidates are mixed in on top of the built-in providers (the vertices and edges of
26
- * the Store) and compete with them by distance and priority. On a destroyed instance the
27
- * registration is ignored.
28
- *
29
- * @param provider the provider to register
30
- * @returns a function that unregisters it
31
- */
32
- register(provider: SnapProvider): () => void;
33
- /**
34
- * Enables or disables snapping.
35
- *
36
- * The initial value is `options.snap.enabled` (default true). A change takes effect from the
37
- * next input.
38
- *
39
- * @param enabled true to snap, false to pass every coordinate through as it is
40
- */
41
- setEnabled(enabled: boolean): void;
42
- /** Whether snapping is enabled */
43
- isEnabled(): boolean;
44
- /**
45
- * Enables or disables snapping per kind (vertex / edge / intersection / guide).
46
- *
47
- * The initial value is `options.snap.kinds` (all true by default). The candidates of a
48
- * disabled kind are excluded from the evaluation, even when a provider returns them.
49
- *
50
- * @param kind the kind of target
51
- * @param enabled whether that kind is snapped to
52
- */
53
- setKindEnabled(kind: SnapTargetKind, enabled: boolean): void;
54
- /**
55
- * Whether the kind is enabled
56
- *
57
- * @param kind the kind of target
58
- */
59
- isKindEnabled(kind: SnapTargetKind): boolean;
60
- /**
61
- * Switches whether datasets (data that is only displayed) are included as
62
- * snapping targets.
63
- *
64
- * The initial value is `options.snap.datasets` (default true). Setting it to false stops
65
- * only the snapping to that data; snapping to the features of the Store remains.
66
- *
67
- * @param enabled whether datasets are snapping targets
68
- */
69
- setDatasetsEnabled(enabled: boolean): void;
70
- /** Whether datasets are snapping targets */
71
- isDatasetsEnabled(): boolean;
72
- /**
73
- * Sets the step angle of the built-in north-based guides.
74
- *
75
- * The initial value is `options.snap.guideStepDegrees` (default 45, which gives 8 guides).
76
- * The change takes effect from the next snapping query. A value of 0 or less, or a
77
- * non-finite value, gives the default 45. The current value is in
78
- * `getOptions().guideStepDegrees`. Guides added with `createGuideSnapProvider` keep their
79
- * own step.
80
- *
81
- * @param degrees the step angle in degrees, counted from true north
82
- *
83
- * @example
84
- * ```typescript
85
- * draw.snapping.setGuideStep(15); // 24 guides, every 15 degrees
86
- * ```
87
- */
88
- setGuideStep(degrees: number): void;
89
- /**
90
- * Gets the snapping options with the defaults filled in.
91
- *
92
- * enabled, kinds, display and guideStepDegrees are the current values, reflecting the changes made at runtime.
93
- * `kinds` is a copy with every kind filled in, so changing it has no effect. A settings UI
94
- * reads its current values here.
95
- */
96
- getOptions(): ResolvedSnapOptions;
97
- /**
98
- * Gets the most recent snapping result.
99
- *
100
- * null if nothing has been resolved yet. When nothing is snapped, it returns a SnapResult
101
- * with no target.
102
- */
103
- getResult(): SnapResult | null;
104
- /**
105
- * Resolves snapping for a coordinate.
106
- *
107
- * There is no need to call it for normal input, because the InputRouter passes it through
108
- * automatically. It is the entry point for when a coordinate produced outside the library,
109
- * such as numeric input or synthetic input, should be passed through snapping.
110
- *
111
- * @param lngLat the input coordinate
112
- * @param point the screen coordinate (when omitted, it is computed with map.project)
113
- * @param ctx overrides for the context (when omitted, zoom is the current zoom and
114
- * modifiers are all false)
115
- * @returns the snapped coordinate and what it snapped to; the input coordinate with no
116
- * target when nothing is within the tolerance
117
- *
118
- * @example
119
- * ```typescript
120
- * const { lngLat, target } = draw.snapping.resolve({ lng: 139.7, lat: 35.68 });
121
- * if (target) console.log('snapped to a', target.kind);
122
- * ```
123
- */
124
- resolve(lngLat: SnapLngLat, point?: ScreenPoint, ctx?: Partial<SnapContext>): SnapResult;
125
- }
@@ -1,50 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /** The state in which no modifier key is pressed */
4
- const NO_MODIFIERS = { shift: false, ctrl: false, alt: false, meta: false };
5
- /** @internal */
6
- export function createSnappingApi(deps) {
7
- const { snapService, map } = deps;
8
- return {
9
- snapping: {
10
- register(provider) {
11
- return snapService.register(provider);
12
- },
13
- setEnabled(enabled) {
14
- snapService.setEnabled(enabled);
15
- },
16
- isEnabled() {
17
- return snapService.isEnabled();
18
- },
19
- setKindEnabled(kind, enabled) {
20
- snapService.setKindEnabled(kind, enabled);
21
- },
22
- isKindEnabled(kind) {
23
- return snapService.isKindEnabled(kind);
24
- },
25
- setDatasetsEnabled(enabled) {
26
- snapService.setDatasetsEnabled(enabled);
27
- },
28
- isDatasetsEnabled() {
29
- return snapService.isDatasetsEnabled();
30
- },
31
- setGuideStep(degrees) {
32
- snapService.setGuideStep(degrees);
33
- },
34
- getOptions() {
35
- return snapService.getOptions();
36
- },
37
- getResult() {
38
- return snapService.getResult();
39
- },
40
- resolve(lngLat, point, ctx) {
41
- const screenPoint = point ?? map.project([lngLat.lng, lngLat.lat]);
42
- return snapService.resolve(lngLat, { x: screenPoint.x, y: screenPoint.y }, {
43
- zoom: map.getZoom(),
44
- modifiers: { ...NO_MODIFIERS },
45
- ...ctx,
46
- });
47
- },
48
- },
49
- };
50
- }
@@ -1,30 +0,0 @@
1
- /**
2
- * The topology settings of a draw instance, reached as `draw.topology`: switching at runtime
3
- * the settings that keep editing from breaking boundaries shared by adjacent features.
4
- *
5
- * The initial values come from {@link Options.topology}. A switch takes effect from the next
6
- * drag start and does not affect a drag in progress.
7
- *
8
- * @example
9
- * ```typescript
10
- * sharedVertexToggle.onchange = () => {
11
- * draw.topology.setSharedVertexDrag(sharedVertexToggle.checked);
12
- * };
13
- * ```
14
- */
15
- export interface TopologyOperations {
16
- /**
17
- * Enables or disables simultaneous movement of shared vertices.
18
- *
19
- * The initial value is `options.topology.sharedVertexDrag` (the core default is false).
20
- * While it is enabled, dragging a vertex also moves other features that have a vertex at
21
- * an exact match (tolerance 0), and the following vertices are highlighted during the drag.
22
- * The following features must be visible and unlocked, and be of a type whose vertices can
23
- * be edited (not Circle, Image or Freehand). The drag commits as one change, one notification.
24
- *
25
- * @param enabled whether shared vertices move together
26
- */
27
- setSharedVertexDrag(enabled: boolean): void;
28
- /** Whether simultaneous movement of shared vertices is enabled */
29
- isSharedVertexDrag(): boolean;
30
- }
@@ -1,16 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /** @internal */
4
- export function createTopologyApi(deps) {
5
- const { topology } = deps;
6
- return {
7
- topology: {
8
- setSharedVertexDrag(enabled) {
9
- topology.sharedVertexDrag = enabled;
10
- },
11
- isSharedVertexDrag() {
12
- return topology.sharedVertexDrag;
13
- },
14
- },
15
- };
16
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * The edge tracing of a draw instance, reached as `draw.tracing`.
3
- *
4
- * In draw_line / draw_polygon, when the previous click and this click both snapped to the
5
- * boundary (a vertex or an edge) of the same feature, the boundary vertices between them are
6
- * inserted: the shortest path along the edges of the visible features nearby, across shared
7
- * vertices. It needs snapping, so it does not hold while snapping is off or released. The
8
- * path is previewed while the pointer moves.
9
- * The initial value comes from {@link Options.trace}; the path itself is computed by
10
- * {@link buildTraceGraph} and {@link findTracePath}.
11
- *
12
- * @example
13
- * ```typescript
14
- * draw.tracing.setEnabled(false);
15
- * draw.tracing.isEnabled(); // false
16
- * ```
17
- */
18
- export interface TracingOperations {
19
- /**
20
- * Enables or disables tracing.
21
- *
22
- * The initial value is `options.trace.enabled` (default true). When it is disabled, the
23
- * clicks and the preview while drawing add only the point clicked. A change takes effect
24
- * from the next click or move.
25
- *
26
- * @param enabled whether to trace
27
- */
28
- setEnabled(enabled: boolean): void;
29
- /** Whether tracing is enabled */
30
- isEnabled(): boolean;
31
- }
@@ -1,16 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /** @internal */
4
- export function createTracingApi(deps) {
5
- const { trace } = deps;
6
- return {
7
- tracing: {
8
- setEnabled(enabled) {
9
- trace.enabled = enabled;
10
- },
11
- isEnabled() {
12
- return trace.enabled;
13
- },
14
- },
15
- };
16
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Hit Test module
3
- */
4
- export type { OBB, ScreenPoint } from '../../shared/math/index.js';
5
- export { createOBB, distanceToOBB, getOBBAABB, getOBBCorners, pointInOBB, } from '../../shared/math/index.js';
6
- export { createCoreBoxSelectionStrategies, ImageBoxSelectionStrategy, LineStringBoxSelectionStrategy, MultiLineStringBoxSelectionStrategy, MultiPointBoxSelectionStrategy, MultiPolygonBoxSelectionStrategy, PointBoxSelectionStrategy, PolygonBoxSelectionStrategy, } from './box-strategies.js';
7
- export type { BoxSelectionStrategy } from './box-strategy.js';
8
- export { BoxSelectionStrategyRegistry } from './box-strategy.js';
9
- export type { HitTestService, UnprojectFunction } from './service.js';
10
- export { HitTestServiceImpl } from './service.js';
11
- export type { HitTestOptions, HitTestResult, HitTestStrategy, VertexHit, } from './strategies/index.js';
12
- export { CircleHitTestStrategy, DEFAULT_HIT_TEST_OPTIONS, HitTestStrategyRegistry, ImageHitTestStrategy, LineHitTestStrategy, MultiLineStringHitTestStrategy, MultiPointHitTestStrategy, MultiPolygonHitTestStrategy, PointHitTestStrategy, PolygonHitTestStrategy, } from './strategies/index.js';
13
- export type { HitTestTopmost, TopHit, TopmostHitTestDeps, TopmostHitTestOptions, } from './topmost.js';
14
- export { createTopmostHitTester } from './topmost.js';
@@ -1,9 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- export { createOBB, distanceToOBB, getOBBAABB, getOBBCorners, pointInOBB, } from '../../shared/math/index.js';
4
- // Box selection strategies
5
- export { createCoreBoxSelectionStrategies, ImageBoxSelectionStrategy, LineStringBoxSelectionStrategy, MultiLineStringBoxSelectionStrategy, MultiPointBoxSelectionStrategy, MultiPolygonBoxSelectionStrategy, PointBoxSelectionStrategy, PolygonBoxSelectionStrategy, } from './box-strategies.js';
6
- export { BoxSelectionStrategyRegistry } from './box-strategy.js';
7
- export { HitTestServiceImpl } from './service.js';
8
- export { CircleHitTestStrategy, DEFAULT_HIT_TEST_OPTIONS, HitTestStrategyRegistry, ImageHitTestStrategy, LineHitTestStrategy, MultiLineStringHitTestStrategy, MultiPointHitTestStrategy, MultiPolygonHitTestStrategy, PointHitTestStrategy, PolygonHitTestStrategy, } from './strategies/index.js';
9
- export { createTopmostHitTester } from './topmost.js';
@@ -1,15 +0,0 @@
1
- /**
2
- * Dispatcher module
3
- *
4
- * Responsible for accepting user input and routing it to modes.
5
- * The input handling layer of the Flux architecture.
6
- *
7
- * Only the symbols that src/index.ts publishes are listed here (see "The public
8
- * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
9
- */
10
- export type { BoxSelectionStrategy, BoxSelectionStrategyRegistry, } from './hit-test/box-strategy.js';
11
- export type { HitTestService, UnprojectFunction } from './hit-test/service.js';
12
- export type { HitTestOptions, HitTestResult, HitTestStrategy, VertexHit, } from './hit-test/strategies/base.js';
13
- export { PointHitTestStrategy } from './hit-test/strategies/point.js';
14
- export type { HitTestTopmost, TopHit, TopmostHitTestOptions } from './hit-test/topmost.js';
15
- export type { DragNormalizedEvent, KeyNormalizedEvent, MapClickEventPayload, ModifierKeys, MouseNormalizedEvent, NormalizedEvent, PointerOriginalEvent, PointerType, } from './types.js';
@@ -1,3 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- export { PointHitTestStrategy } from './hit-test/strategies/point.js';
@@ -1,12 +0,0 @@
1
- /**
2
- * The subpath `@sakuzu/maplibre-gl-draw/columnar`
3
- *
4
- * The parts of the columnar input of the datasets that can run in a Worker: the
5
- * preparation of a table and the list of its buffers for `postMessage`, with the types of the
6
- * table. It depends on neither maplibre nor WebGL nor the DOM, so a Worker that reads a file can
7
- * import it without pulling in the engine.
8
- *
9
- * @module columnar
10
- */
11
- export { columnarTransferables, prepareDatasetColumnar } from './prepare.js';
12
- export type { DatasetColumn, DatasetColumnarGeometry, DatasetColumnarGeometryType, DatasetColumnarInput, DatasetColumnarMixedGeometry, DatasetColumnarPrepared, DatasetDictionaryCodes, DatasetDictionaryColumn, } from './types.js';
@@ -1,13 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * The subpath `@sakuzu/maplibre-gl-draw/columnar`
5
- *
6
- * The parts of the columnar input of the datasets that can run in a Worker: the
7
- * preparation of a table and the list of its buffers for `postMessage`, with the types of the
8
- * table. It depends on neither maplibre nor WebGL nor the DOM, so a Worker that reads a file can
9
- * import it without pulling in the engine.
10
- *
11
- * @module columnar
12
- */
13
- export { columnarTransferables, prepareDatasetColumnar } from './prepare.js';