@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
@@ -0,0 +1,466 @@
1
+ /**
2
+ * The options: `DrawOptions` when the instance is created, and the part of them that
3
+ * `draw.options` changes while it runs
4
+ */
5
+ import type { Messages } from '../messages.js';
6
+ import type { Store } from './extension/store.js';
7
+ import type { FeatureStyle, FeatureType, LineStyle } from './model.js';
8
+ import type { Mode } from './state.js';
9
+ /** The options of snapping to vertices, edges, intersections and guides. */
10
+ export interface SnappingOptions {
11
+ /** Whether snapping is on; true when it is left out */
12
+ enabled?: boolean;
13
+ /** How close the pointer must come to a candidate, in screen pixels; 10 when it is left out */
14
+ tolerancePx?: number;
15
+ /** The key that turns snapping off while it is held; `alt` when it is left out */
16
+ disableKey?: 'alt' | 'shift' | 'ctrl' | 'meta' | 'none';
17
+ /** Whether each kind of candidate is on; a kind left out is on */
18
+ kinds?: Partial<Record<'vertex' | 'edge' | 'intersection' | 'guide', boolean>>;
19
+ /** Whether the rows of datasets are candidates; true when it is left out */
20
+ datasets?: boolean;
21
+ /** The angle between the guides from north, in degrees; 45 when it is left out */
22
+ guideStepDegrees?: number;
23
+ /**
24
+ * The mark drawn at the snapped point, per kind of target; the keys given replace those of
25
+ * the default. By default every mark is `#00C7BE`: `vertex` an outlined circle of 14 px,
26
+ * `edge` an outlined square of 12 px, `intersection` a filled circle of 8 px and `guide` an
27
+ * outlined circle of 10 px. A kind of a snap provider's own takes the mark of `vertex`
28
+ */
29
+ indicator?: {
30
+ /** The mark of a vertex */
31
+ vertex?: {
32
+ /** The shape */
33
+ shape?: 'circle' | 'square' | 'triangle' | 'star';
34
+ /** The size in CSS pixels */
35
+ size?: number;
36
+ /** The fill color (a CSS color) */
37
+ fillColor?: string;
38
+ /** The opacity of the fill, from 0 to 1 */
39
+ fillOpacity?: number;
40
+ /** The color of the outline (a CSS color) */
41
+ strokeColor?: string;
42
+ /** The width of the outline in CSS pixels (0 for none) */
43
+ strokeWidth?: number;
44
+ /** The opacity of the outline, from 0 to 1 */
45
+ strokeOpacity?: number;
46
+ };
47
+ /** The mark of a point on an edge */
48
+ edge?: {
49
+ /** The shape */
50
+ shape?: 'circle' | 'square' | 'triangle' | 'star';
51
+ /** The size in CSS pixels */
52
+ size?: number;
53
+ /** The fill color (a CSS color) */
54
+ fillColor?: string;
55
+ /** The opacity of the fill, from 0 to 1 */
56
+ fillOpacity?: number;
57
+ /** The color of the outline (a CSS color) */
58
+ strokeColor?: string;
59
+ /** The width of the outline in CSS pixels (0 for none) */
60
+ strokeWidth?: number;
61
+ /** The opacity of the outline, from 0 to 1 */
62
+ strokeOpacity?: number;
63
+ };
64
+ /** The mark of an intersection of edges */
65
+ intersection?: {
66
+ /** The shape */
67
+ shape?: 'circle' | 'square' | 'triangle' | 'star';
68
+ /** The size in CSS pixels */
69
+ size?: number;
70
+ /** The fill color (a CSS color) */
71
+ fillColor?: string;
72
+ /** The opacity of the fill, from 0 to 1 */
73
+ fillOpacity?: number;
74
+ /** The color of the outline (a CSS color) */
75
+ strokeColor?: string;
76
+ /** The width of the outline in CSS pixels (0 for none) */
77
+ strokeWidth?: number;
78
+ /** The opacity of the outline, from 0 to 1 */
79
+ strokeOpacity?: number;
80
+ };
81
+ /** The mark of a point on a guide */
82
+ guide?: {
83
+ /** The shape */
84
+ shape?: 'circle' | 'square' | 'triangle' | 'star';
85
+ /** The size in CSS pixels */
86
+ size?: number;
87
+ /** The fill color (a CSS color) */
88
+ fillColor?: string;
89
+ /** The opacity of the fill, from 0 to 1 */
90
+ fillOpacity?: number;
91
+ /** The color of the outline (a CSS color) */
92
+ strokeColor?: string;
93
+ /** The width of the outline in CSS pixels (0 for none) */
94
+ strokeWidth?: number;
95
+ /** The opacity of the outline, from 0 to 1 */
96
+ strokeOpacity?: number;
97
+ };
98
+ };
99
+ /**
100
+ * The line drawn along a guide while the pointer snaps to it; the keys given replace those
101
+ * of the default, a 1 px `#00C7BE` line dashed `[4, 4]`
102
+ */
103
+ guideLine?: {
104
+ /** The width in CSS pixels */
105
+ width?: number;
106
+ /** The color (a CSS color) */
107
+ color?: string;
108
+ /** The opacity, from 0 to 1 */
109
+ opacity?: number;
110
+ /** The dash pattern */
111
+ lineStyle?: LineStyle;
112
+ /** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
113
+ dashArray?: number[];
114
+ };
115
+ }
116
+ /** The options of tracing the boundary of an existing feature while drawing. */
117
+ export interface TracingOptions {
118
+ /** Whether tracing is on; true when it is left out */
119
+ enabled?: boolean;
120
+ }
121
+ /** The options of moving the vertices that features share. */
122
+ export interface TopologyOptions {
123
+ /** Whether dragging a vertex also moves the vertices of other features at the same position */
124
+ sharedVertexDrag?: boolean;
125
+ }
126
+ /** The switches of the drawing. */
127
+ export interface RenderingOptions {
128
+ /**
129
+ * The factor for the sizes this library draws in screen pixels (line widths, point sizes);
130
+ * 0.5 while the map is shown at half size. 1 when it is left out
131
+ */
132
+ renderScale?: number;
133
+ /** The pixel ratio to draw with; that of the map when it is left out */
134
+ pixelRatio?: number;
135
+ /**
136
+ * Whether the geometry of the features that do not change is kept between drawings; true
137
+ * when it is left out
138
+ */
139
+ cacheGeometry?: boolean;
140
+ /** Whether work that does not fit in one drawing is spread over the next ones; true when it is left out */
141
+ timeSlicing?: boolean;
142
+ }
143
+ /**
144
+ * The look of the box around the selected features and of their handles. Each part given
145
+ * replaces the default of that part. Colors are CSS colors, and sizes and widths are in CSS
146
+ * pixels.
147
+ */
148
+ export interface SelectionStyleOptions {
149
+ /** The box around the selection */
150
+ boundingBox?: {
151
+ /** The line of the box */
152
+ stroke: {
153
+ /** The width in CSS pixels */
154
+ width: number;
155
+ /** The color (a CSS color) */
156
+ color: string;
157
+ /** The opacity, from 0 to 1 */
158
+ opacity: number;
159
+ /** The dash pattern */
160
+ lineStyle: LineStyle;
161
+ /** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
162
+ dashArray?: number[];
163
+ };
164
+ /**
165
+ * The gap between the features and the box, in CSS pixels: every edge of the box stands
166
+ * this far outside the outline of the selection (`ScreenContext.outline`), and the resize
167
+ * and rotate handles sit on the box
168
+ */
169
+ margin: number;
170
+ };
171
+ /** The resize handles at the corners of the box */
172
+ resizeHandle?: {
173
+ /** The handle */
174
+ point: {
175
+ /** The shape */
176
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
177
+ /** The size in CSS pixels */
178
+ size: number;
179
+ /** The fill color (a CSS color) */
180
+ fillColor: string;
181
+ /** The opacity of the fill, from 0 to 1 */
182
+ fillOpacity: number;
183
+ /** The color of the outline (a CSS color) */
184
+ strokeColor: string;
185
+ /** The width of the outline in CSS pixels (0 for none) */
186
+ strokeWidth: number;
187
+ /** The opacity of the outline, from 0 to 1 */
188
+ strokeOpacity: number;
189
+ /** The icon, for the `icon` shape */
190
+ iconId?: string;
191
+ };
192
+ };
193
+ /** The rotate handle above the box */
194
+ rotateHandle?: {
195
+ /** The handle */
196
+ point: {
197
+ /** The shape */
198
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
199
+ /** The size in CSS pixels */
200
+ size: number;
201
+ /** The fill color (a CSS color) */
202
+ fillColor: string;
203
+ /** The opacity of the fill, from 0 to 1 */
204
+ fillOpacity: number;
205
+ /** The color of the outline (a CSS color) */
206
+ strokeColor: string;
207
+ /** The width of the outline in CSS pixels (0 for none) */
208
+ strokeWidth: number;
209
+ /** The opacity of the outline, from 0 to 1 */
210
+ strokeOpacity: number;
211
+ /** The icon, for the `icon` shape */
212
+ iconId?: string;
213
+ };
214
+ /** The distance between the handle and the box, in CSS pixels */
215
+ distance: number;
216
+ /** The line that joins the handle to the box */
217
+ connector: {
218
+ /** The width in CSS pixels */
219
+ width: number;
220
+ /** The color (a CSS color) */
221
+ color: string;
222
+ /** The opacity, from 0 to 1 */
223
+ opacity: number;
224
+ /** The dash pattern */
225
+ lineStyle: LineStyle;
226
+ /** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
227
+ dashArray?: number[];
228
+ };
229
+ };
230
+ /** The vertex handles */
231
+ vertexHandle?: {
232
+ /** A vertex handle */
233
+ point: {
234
+ /** The shape */
235
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
236
+ /** The size in CSS pixels */
237
+ size: number;
238
+ /** The fill color (a CSS color) */
239
+ fillColor: string;
240
+ /** The opacity of the fill, from 0 to 1 */
241
+ fillOpacity: number;
242
+ /** The color of the outline (a CSS color) */
243
+ strokeColor: string;
244
+ /** The width of the outline in CSS pixels (0 for none) */
245
+ strokeWidth: number;
246
+ /** The opacity of the outline, from 0 to 1 */
247
+ strokeOpacity: number;
248
+ /** The icon, for the `icon` shape */
249
+ iconId?: string;
250
+ };
251
+ /** A selected vertex */
252
+ selected: {
253
+ /** The shape */
254
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
255
+ /** The size in CSS pixels */
256
+ size: number;
257
+ /** The fill color (a CSS color) */
258
+ fillColor: string;
259
+ /** The opacity of the fill, from 0 to 1 */
260
+ fillOpacity: number;
261
+ /** The color of the outline (a CSS color) */
262
+ strokeColor: string;
263
+ /** The width of the outline in CSS pixels (0 for none) */
264
+ strokeWidth: number;
265
+ /** The opacity of the outline, from 0 to 1 */
266
+ strokeOpacity: number;
267
+ /** The icon, for the `icon` shape */
268
+ iconId?: string;
269
+ };
270
+ /** A vertex of another feature that moves along with a shared vertex */
271
+ followed: {
272
+ /** The shape */
273
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
274
+ /** The size in CSS pixels */
275
+ size: number;
276
+ /** The fill color (a CSS color) */
277
+ fillColor: string;
278
+ /** The opacity of the fill, from 0 to 1 */
279
+ fillOpacity: number;
280
+ /** The color of the outline (a CSS color) */
281
+ strokeColor: string;
282
+ /** The width of the outline in CSS pixels (0 for none) */
283
+ strokeWidth: number;
284
+ /** The opacity of the outline, from 0 to 1 */
285
+ strokeOpacity: number;
286
+ /** The icon, for the `icon` shape */
287
+ iconId?: string;
288
+ };
289
+ };
290
+ /** The midpoint handles, which add a vertex when dragged */
291
+ midpointHandle?: {
292
+ /** The handle */
293
+ point: {
294
+ /** The shape */
295
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
296
+ /** The size in CSS pixels */
297
+ size: number;
298
+ /** The fill color (a CSS color) */
299
+ fillColor: string;
300
+ /** The opacity of the fill, from 0 to 1 */
301
+ fillOpacity: number;
302
+ /** The color of the outline (a CSS color) */
303
+ strokeColor: string;
304
+ /** The width of the outline in CSS pixels (0 for none) */
305
+ strokeWidth: number;
306
+ /** The opacity of the outline, from 0 to 1 */
307
+ strokeOpacity: number;
308
+ /** The icon, for the `icon` shape */
309
+ iconId?: string;
310
+ };
311
+ };
312
+ /** The radius handle of a circle */
313
+ radiusHandle?: {
314
+ /** The handle */
315
+ point: {
316
+ /** The shape */
317
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
318
+ /** The size in CSS pixels */
319
+ size: number;
320
+ /** The fill color (a CSS color) */
321
+ fillColor: string;
322
+ /** The opacity of the fill, from 0 to 1 */
323
+ fillOpacity: number;
324
+ /** The color of the outline (a CSS color) */
325
+ strokeColor: string;
326
+ /** The width of the outline in CSS pixels (0 for none) */
327
+ strokeWidth: number;
328
+ /** The opacity of the outline, from 0 to 1 */
329
+ strokeOpacity: number;
330
+ /** The icon, for the `icon` shape */
331
+ iconId?: string;
332
+ };
333
+ };
334
+ /** The center marker of a circle */
335
+ centerMarker?: {
336
+ /** The marker */
337
+ point: {
338
+ /** The shape */
339
+ shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
340
+ /** The size in CSS pixels */
341
+ size: number;
342
+ /** The fill color (a CSS color) */
343
+ fillColor: string;
344
+ /** The opacity of the fill, from 0 to 1 */
345
+ fillOpacity: number;
346
+ /** The color of the outline (a CSS color) */
347
+ strokeColor: string;
348
+ /** The width of the outline in CSS pixels (0 for none) */
349
+ strokeWidth: number;
350
+ /** The opacity of the outline, from 0 to 1 */
351
+ strokeOpacity: number;
352
+ /** The icon, for the `icon` shape */
353
+ iconId?: string;
354
+ };
355
+ };
356
+ /** The rectangle of a box selection (Shift and a drag) */
357
+ boxSelection?: {
358
+ /** The fill color (a CSS color) */
359
+ fillColor: string;
360
+ /** The opacity of the fill, from 0 to 1 */
361
+ fillOpacity: number;
362
+ /** The color of the outline (a CSS color) */
363
+ strokeColor: string;
364
+ /** The width of the outline in CSS pixels */
365
+ strokeWidth: number;
366
+ };
367
+ /** The line from the center of a circle to its radius handle */
368
+ radiusLine?: {
369
+ /** The line */
370
+ stroke: {
371
+ /** The width in CSS pixels */
372
+ width: number;
373
+ /** The color (a CSS color) */
374
+ color: string;
375
+ /** The opacity, from 0 to 1 */
376
+ opacity: number;
377
+ /** The dash pattern */
378
+ lineStyle: LineStyle;
379
+ /** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
380
+ dashArray?: number[];
381
+ };
382
+ };
383
+ }
384
+ /** How new features, layers and groups are named ("Point 1", "Layer 2"). */
385
+ export interface AutoNameOptions {
386
+ /** The word used for each type in the name */
387
+ typeNames?: Partial<Record<FeatureType | 'Layer' | 'Group', string>>;
388
+ /** Builds the name from the word of the type and the number */
389
+ formatter?: (typeName: string, number: number) => string;
390
+ }
391
+ /**
392
+ * The options that can change while the instance runs, with `draw.options.update`: every
393
+ * option but `defaultMode`, `store` and `initDefaultLayer`.
394
+ */
395
+ export interface RuntimeOptions {
396
+ /** Replaces the words the library shows */
397
+ messages?: Partial<Messages>;
398
+ /** The names of new features; `false` turns them off */
399
+ autoName?: AutoNameOptions | false;
400
+ /**
401
+ * The default look of each type, with the same keys and CSS colors as the style of a
402
+ * feature
403
+ */
404
+ style?: {
405
+ point?: FeatureStyle;
406
+ line?: FeatureStyle;
407
+ polygon?: FeatureStyle;
408
+ circle?: FeatureStyle;
409
+ image?: FeatureStyle;
410
+ };
411
+ /**
412
+ * The look of the geometry being drawn, with the keys of the style of a feature: the stroke
413
+ * keys give its lines, the point keys its vertices (`pointStrokeColor` and
414
+ * `pointStrokeWidth` their outlines)
415
+ */
416
+ previewStyle?: Partial<FeatureStyle>;
417
+ /** The look of the box and the handles of the selection */
418
+ selectionStyle?: SelectionStyleOptions;
419
+ /**
420
+ * Whether a feature grows and shrinks with the zoom from its look at its reference zoom;
421
+ * true when it is left out
422
+ */
423
+ scaleWithZoom?: boolean;
424
+ /** Snapping */
425
+ snapping?: SnappingOptions;
426
+ /** Tracing of boundaries */
427
+ tracing?: TracingOptions;
428
+ /** Moving shared vertices together */
429
+ topology?: TopologyOptions;
430
+ /** How far the pointer may move and still click, in pixels */
431
+ clickTolerance?: number;
432
+ /** How far the pointer must move to start a drag, in pixels */
433
+ dragThreshold?: number;
434
+ /** The switches of the drawing */
435
+ rendering?: RenderingOptions;
436
+ /**
437
+ * Whether an entry of the stacking order comes from outside the document, such as a layer
438
+ * of the base map; the stacking order is divided at those entries
439
+ */
440
+ isExternalEntry?: (id: string) => boolean;
441
+ }
442
+ /**
443
+ * The options given when the instance is created.
444
+ */
445
+ export interface DrawOptions extends RuntimeOptions {
446
+ /** The mode to start in */
447
+ defaultMode?: Mode;
448
+ /** The Store that keeps the document, instead of the built-in one; only at creation */
449
+ store?: Store;
450
+ /** Whether a layer is created when there is none; only at creation */
451
+ initDefaultLayer?: boolean;
452
+ }
453
+ /**
454
+ * The options that can change while the instance runs.
455
+ */
456
+ export interface OptionsResource {
457
+ /** The current values. */
458
+ get(): Readonly<RuntimeOptions>;
459
+ /**
460
+ * Changes the options given: snapping, tracing, shared vertices, the scale of the drawing
461
+ * and the rest of {@link RuntimeOptions}.
462
+ *
463
+ * @throws `DrawError` with the code `invalid-input` when a value has the wrong type
464
+ */
465
+ update(patch: Partial<RuntimeOptions>): void;
466
+ }
@@ -0,0 +1,3 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ export {};
@@ -0,0 +1,94 @@
1
+ /**
2
+ * `draw.selection` and `draw.vertexSelection`: what this client has selected
3
+ */
4
+ import type { Feature, Group, MoveTarget } from './model.js';
5
+ import type { Selection, SelectionType, VertexRef, VertexSelection } from './state.js';
6
+ /**
7
+ * The selection of this client: features, groups or layers, one type at a time, and the
8
+ * verbs that act on what is selected.
9
+ */
10
+ export interface SelectionResource {
11
+ /** The type and the IDs of what is selected. */
12
+ get(): Selection;
13
+ /**
14
+ * Selects these items instead of the current selection.
15
+ *
16
+ * @param type - The type of the items
17
+ * @returns False when none of the items can be selected
18
+ * @throws `DrawError` with the code `not-found` when one of the IDs is not an item of this
19
+ * type
20
+ */
21
+ set(type: SelectionType, ids: readonly string[]): boolean;
22
+ /**
23
+ * Adds items of the selected type to the selection.
24
+ *
25
+ * @returns False when none of them can be added
26
+ * @throws `DrawError` with the code `not-found` when one of the IDs is not an item of the
27
+ * selected type
28
+ */
29
+ add(ids: readonly string[]): boolean;
30
+ /**
31
+ * Removes items from the selection.
32
+ *
33
+ * @returns False when none of them was selected
34
+ */
35
+ remove(ids: readonly string[]): boolean;
36
+ /** Clears the selection. */
37
+ clear(): void;
38
+ /** The selected features; for a group or a layer, the features in it. */
39
+ features(): Feature[];
40
+ /**
41
+ * Deletes what is selected.
42
+ *
43
+ * @returns False when nothing is selected or the deletion is refused (read-only, a lock)
44
+ */
45
+ delete(): boolean;
46
+ /**
47
+ * Makes a group of the selected features.
48
+ *
49
+ * @returns The new group, or `null` when the features cannot be grouped
50
+ */
51
+ group(): Group | null;
52
+ /**
53
+ * Takes what is selected out of the groups, as the shortcut Shift+Cmd+G (Shift+Ctrl+G) does:
54
+ * the selected groups are dissolved, their features taking their place in the layer, and
55
+ * selected features that are in a group leave it (the group stays unless it becomes empty).
56
+ *
57
+ * @returns False when nothing selected is a group or in one, or the document is read-only
58
+ */
59
+ ungroup(): boolean;
60
+ /**
61
+ * Moves what is selected.
62
+ *
63
+ * @returns False when nothing is selected or the move is refused
64
+ * @throws `DrawError` with the code `not-found` when the target does not exist
65
+ */
66
+ move(to: MoveTarget): boolean;
67
+ }
68
+ /**
69
+ * The selected vertices of one feature in this client.
70
+ */
71
+ export interface VertexSelectionResource {
72
+ /**
73
+ * The selected vertices.
74
+ *
75
+ * @returns The vertices, or `null` when no vertex is selected
76
+ */
77
+ get(): VertexSelection | null;
78
+ /**
79
+ * Selects vertices of a feature.
80
+ *
81
+ * @returns False when the vertices cannot be selected (a lock)
82
+ * @throws `DrawError` with the code `not-found` when the feature or one of the vertices
83
+ * does not exist
84
+ */
85
+ set(featureId: string, vertices: readonly VertexRef[]): boolean;
86
+ /** Clears the vertex selection. */
87
+ clear(): void;
88
+ /**
89
+ * Deletes the selected vertices.
90
+ *
91
+ * @returns False when no vertex is selected or the deletion is refused (read-only, a lock)
92
+ */
93
+ delete(): boolean;
94
+ }
@@ -0,0 +1,3 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ export {};