@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,487 @@
1
+ /**
2
+ * The document model: features, layers, groups, metadata, their inputs, patches and filters
3
+ *
4
+ * Geometries and attributes are GeoJSON as they are. The values the library keeps on a
5
+ * feature are keys of `properties` that start with {@link DRAW_PROPERTY_PREFIX}; every other
6
+ * key is an attribute of the user.
7
+ */
8
+ import type { Feature as GeoJSONFeature, FeatureCollection as GeoJSONFeatureCollection, Geometry, Position } from 'geojson';
9
+ import type { BBox } from '../geometry/types.js';
10
+ import type { Messages } from '../messages.js';
11
+ import type { LineStyle } from '../shared/types/style.js';
12
+ /**
13
+ * The type of a feature: a built-in type, or the name of a custom type.
14
+ *
15
+ * The built-in types are Point, LineString, Polygon, MultiPoint, MultiLineString,
16
+ * MultiPolygon, Circle, Freehand and Image. Any other string names a custom type.
17
+ */
18
+ export type FeatureType = 'Point' | 'LineString' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'Circle' | 'Freehand' | 'Image' | (string & {});
19
+ export type { LineStyle };
20
+ /** The shape of a point marker. */
21
+ export type PointShape = 'circle' | 'square' | 'triangle' | 'star';
22
+ /**
23
+ * How a feature looks; every key is optional, and a key left out takes the value of the
24
+ * layer rule or the default.
25
+ *
26
+ * Colors are CSS colors. Widths and radii are in CSS pixels at the reference zoom of the
27
+ * feature.
28
+ */
29
+ export interface FeatureStyle {
30
+ /** The fill color */
31
+ fillColor?: string;
32
+ /** The opacity of the fill, from 0 to 1 */
33
+ fillOpacity?: number;
34
+ /** The color of a line or of the outline of an area (`pointStrokeColor` for a point) */
35
+ strokeColor?: string;
36
+ /**
37
+ * The width of a line or of the outline of an area, in pixels at the reference zoom
38
+ * (`pointStrokeWidth` for a point)
39
+ */
40
+ strokeWidth?: number;
41
+ /** The opacity of a line or of the outline of an area, from 0 to 1 */
42
+ strokeOpacity?: number;
43
+ /** The dash pattern of a line or an outline */
44
+ lineStyle?: LineStyle;
45
+ /** The color of a point marker */
46
+ pointColor?: string;
47
+ /** The radius of a point marker, in pixels */
48
+ pointRadius?: number;
49
+ /** The shape of a point marker */
50
+ pointShape?: PointShape;
51
+ /** The opacity of a point marker, its fill and its outline, from 0 to 1 */
52
+ pointOpacity?: number;
53
+ /** The color of the outline of a point marker; `#ffffff` by default */
54
+ pointStrokeColor?: string;
55
+ /** The width of the outline of a point marker, in pixels (0 for none); 2 by default */
56
+ pointStrokeWidth?: number;
57
+ /** The opacity of an image, from 0 to 1 */
58
+ imageOpacity?: number;
59
+ }
60
+ /**
61
+ * The look a feature is drawn with: the default, the layer rule and the style of the feature
62
+ * put on top of each other.
63
+ */
64
+ export type FeatureStyleResolved = Required<FeatureStyle>;
65
+ export { DRAW_PROPERTY_PREFIX } from '../shared/properties.js';
66
+ /**
67
+ * The `properties` of a feature: the GeoJSON properties themselves, with the keys of the
68
+ * library typed.
69
+ *
70
+ * A key that starts with {@link DRAW_PROPERTY_PREFIX} holds a value of the library; any other
71
+ * key is an attribute of the user. Export and load keep the keys as they are.
72
+ */
73
+ export type DrawProperties = Record<string, unknown> & {
74
+ /** The reference zoom: the zoom the feature was drawn or created at */
75
+ 'maplibre-gl-draw:createdZoom'?: number;
76
+ /** The rotation, in degrees */
77
+ 'maplibre-gl-draw:rotation'?: number;
78
+ /** The scale factor */
79
+ 'maplibre-gl-draw:scale'?: number;
80
+ /** The radius of a circle, in meters */
81
+ 'maplibre-gl-draw:radiusMeters'?: number;
82
+ /** The direction of the radius handle of a circle, in degrees */
83
+ 'maplibre-gl-draw:radiusHandleAngle'?: number;
84
+ /** The ID of the file of an image feature */
85
+ 'maplibre-gl-draw:imageFileId'?: string;
86
+ /** The width of the image of an image feature, in pixels */
87
+ 'maplibre-gl-draw:imageWidth'?: number;
88
+ /** The height of the image of an image feature, in pixels */
89
+ 'maplibre-gl-draw:imageHeight'?: number;
90
+ };
91
+ /**
92
+ * Whether a key of `properties` holds a value of the library, so that an attribute panel can
93
+ * leave it out.
94
+ *
95
+ * @param key - A key of `properties`
96
+ * @returns True when the key starts with {@link DRAW_PROPERTY_PREFIX}
97
+ */
98
+ export declare function isDrawProperty(key: string): boolean;
99
+ /**
100
+ * A shape that can be drawn and edited, with its layer, group, attributes and look.
101
+ */
102
+ export interface Feature {
103
+ /** The ID */
104
+ id: string;
105
+ /** The type */
106
+ type: FeatureType;
107
+ /** The GeoJSON geometry */
108
+ geometry: Geometry;
109
+ /** The ID of the layer it is in */
110
+ layerId: string;
111
+ /** The ID of the group it is in */
112
+ groupId: string | undefined;
113
+ /** The GeoJSON properties: the attributes of the user and the values of the library */
114
+ properties: DrawProperties;
115
+ /** The look of the feature */
116
+ style: FeatureStyle;
117
+ /** Whether it is visible */
118
+ visible: boolean;
119
+ /** Whether it is locked */
120
+ locked: boolean;
121
+ }
122
+ /**
123
+ * A rule that colors the features of a layer from the value of an attribute.
124
+ *
125
+ * - `single`: one color for every feature
126
+ * - `categorical`: the color of the value of `property` in `map`
127
+ * - `graduated`: the class of the number in `property` by the ascending `breaks`, with
128
+ * `colors` holding one more color than `breaks`
129
+ * - `continuous`: the color between the two colors of `ramp`, from `min` to `max`
130
+ *
131
+ * A feature without the attribute, or with a value of the wrong type, takes `other`.
132
+ */
133
+ export type StyleRule = {
134
+ kind: 'single';
135
+ color: string;
136
+ } | {
137
+ kind: 'categorical';
138
+ property: string;
139
+ map: Record<string, string>;
140
+ other: string;
141
+ } | {
142
+ kind: 'graduated';
143
+ property: string;
144
+ breaks: number[];
145
+ colors: string[];
146
+ other: string;
147
+ } | {
148
+ kind: 'continuous';
149
+ property: string;
150
+ min: number;
151
+ max: number;
152
+ ramp: [string, string];
153
+ other: string;
154
+ };
155
+ /** One row of the legend of a style rule. */
156
+ export interface LegendEntry {
157
+ /** The label to show */
158
+ label: string;
159
+ /** The color, as `#rrggbb` */
160
+ color: string;
161
+ }
162
+ /**
163
+ * A unit of the stacking order that holds features and groups.
164
+ */
165
+ export interface Layer {
166
+ /** The ID */
167
+ id: string;
168
+ /** The name */
169
+ name: string;
170
+ /** Whether it is visible */
171
+ visible: boolean;
172
+ /** Whether it is locked */
173
+ locked: boolean;
174
+ /** The opacity of the whole layer, from 0 to 1 */
175
+ opacity: number;
176
+ /**
177
+ * The IDs of the features and groups in the layer, from the back. `features.move` and
178
+ * `groups.move` change it
179
+ */
180
+ items: readonly string[];
181
+ /** The rule that colors its features from their attributes */
182
+ styleRule: StyleRule | undefined;
183
+ /** Values of the user */
184
+ metadata: Record<string, unknown> | undefined;
185
+ }
186
+ /**
187
+ * A set of features in one layer.
188
+ */
189
+ export interface Group {
190
+ /** The ID */
191
+ id: string;
192
+ /** The ID of the layer it is in */
193
+ layerId: string;
194
+ /** The name */
195
+ name: string;
196
+ /** The IDs of its features, from the back */
197
+ featureIds: readonly string[];
198
+ /** Whether it is visible */
199
+ visible: boolean;
200
+ /** Whether it is locked */
201
+ locked: boolean;
202
+ }
203
+ /**
204
+ * The title and the description of the document.
205
+ *
206
+ * An application can add fields of its own by declaration merging.
207
+ */
208
+ export interface Metadata {
209
+ /** The title */
210
+ title?: string;
211
+ /** The description */
212
+ description?: string;
213
+ }
214
+ /** A file embedded in the document, such as the data of an image. */
215
+ export interface FileData {
216
+ /** The ID, unique within the document */
217
+ id: string;
218
+ /** The MIME type, such as `image/webp` */
219
+ mimeType: string;
220
+ /** The content as a data URL */
221
+ dataURL: string;
222
+ }
223
+ /**
224
+ * The whole document in the format of the library, as `document.toJSON` writes it and
225
+ * `document.load` reads it.
226
+ */
227
+ export interface DrawDocument {
228
+ /** The version of the format */
229
+ version: string;
230
+ /** When it was written, as an ISO 8601 timestamp */
231
+ created?: string;
232
+ /** When it was last changed, as an ISO 8601 timestamp */
233
+ modified?: string;
234
+ /** The title and the description */
235
+ metadata?: Metadata;
236
+ /** The layers */
237
+ layers?: Layer[];
238
+ /** The IDs of the layers in stacking order, from the back */
239
+ layerOrder: string[];
240
+ /** The groups */
241
+ groups?: Group[];
242
+ /** The features */
243
+ features: Feature[];
244
+ /** The embedded files, by ID */
245
+ files?: Record<string, FileData>;
246
+ }
247
+ /**
248
+ * What `features.create` takes. The radius of a circle and the other values of the library
249
+ * go into `properties` under their prefixed keys.
250
+ */
251
+ export interface FeatureInput {
252
+ /** The type */
253
+ type: FeatureType;
254
+ /** The GeoJSON geometry */
255
+ geometry: Geometry;
256
+ /** The ID; one is generated when it is left out */
257
+ id?: string;
258
+ /** The layer to put it in; the active layer when it is left out */
259
+ layerId?: string;
260
+ /** The group to put it in */
261
+ groupId?: string;
262
+ /** The GeoJSON properties */
263
+ properties?: DrawProperties;
264
+ /** The look */
265
+ style?: FeatureStyle;
266
+ /** Whether it is visible */
267
+ visible?: boolean;
268
+ /** Whether it is locked */
269
+ locked?: boolean;
270
+ }
271
+ /**
272
+ * What `features.update` takes: only the keys given change.
273
+ *
274
+ * `properties` and `style` are merged key by key, and a key given as `undefined` is removed.
275
+ * The ID and the layer cannot change here; `features.move` moves a feature.
276
+ *
277
+ * A patch has no `type`: the type of a feature cannot change. To turn a feature into another
278
+ * type, or to undo such a change, delete it and create it again.
279
+ */
280
+ export interface FeaturePatch {
281
+ /** The new GeoJSON geometry */
282
+ geometry?: Geometry;
283
+ /** The keys of `properties` to set, or to remove with `undefined` */
284
+ properties?: Partial<DrawProperties>;
285
+ /** The keys of `style` to set, or to remove with `undefined` */
286
+ style?: FeatureStyle;
287
+ /** Whether it is visible */
288
+ visible?: boolean;
289
+ /** Whether it is locked */
290
+ locked?: boolean;
291
+ }
292
+ /** What `features.list` and `features.count` keep: every key given must match. */
293
+ export interface FeatureFilter {
294
+ /** Only the features in this layer */
295
+ layerId?: string;
296
+ /** Only the features in this group */
297
+ groupId?: string;
298
+ /** Only the features of this type */
299
+ type?: FeatureType;
300
+ /**
301
+ * Only the features whose own `visible` is true (true) or false (false). A feature can be
302
+ * visible itself and still not be drawn, when its group or its layer is hidden: `shown`
303
+ * answers for that.
304
+ */
305
+ visible?: boolean;
306
+ /**
307
+ * Only the features that are shown (true): their own `visible`, the one of their group and
308
+ * the one of their layer are all true; or only the ones that are not (false). What this
309
+ * client hides with `draw.hidden` is not consulted.
310
+ */
311
+ shown?: boolean;
312
+ /** Only the locked (true) or unlocked (false) features */
313
+ locked?: boolean;
314
+ /**
315
+ * Only the features whose extent meets this extent, as `[west, south, east, north]` in
316
+ * degrees
317
+ */
318
+ bbox?: BBox;
319
+ }
320
+ /** What `layers.create` takes. */
321
+ export interface LayerInput {
322
+ /** The ID; one is generated when it is left out */
323
+ id?: string;
324
+ /** The name; one is generated when it is left out */
325
+ name?: string;
326
+ /** Whether it is visible */
327
+ visible?: boolean;
328
+ /** Whether it is locked */
329
+ locked?: boolean;
330
+ /** The opacity of the whole layer, from 0 to 1 */
331
+ opacity?: number;
332
+ /** The rule that colors its features */
333
+ styleRule?: StyleRule;
334
+ /** Values of the user */
335
+ metadata?: Record<string, unknown>;
336
+ /** The position in the stacking order, 0 at the back; the front when it is left out */
337
+ index?: number;
338
+ }
339
+ /** What `layers.update` takes: only the keys given change. */
340
+ export interface LayerPatch {
341
+ /** The name */
342
+ name?: string;
343
+ /** Whether it is visible */
344
+ visible?: boolean;
345
+ /** Whether it is locked */
346
+ locked?: boolean;
347
+ /** The opacity of the whole layer, from 0 to 1 */
348
+ opacity?: number;
349
+ /** The rule that colors its features; `undefined` removes it */
350
+ styleRule?: StyleRule;
351
+ /** Values of the user */
352
+ metadata?: Record<string, unknown>;
353
+ }
354
+ /** What `layers.list` and `layers.count` keep: every key given must match. */
355
+ export interface LayerFilter {
356
+ /** Only the visible (true) or hidden (false) layers */
357
+ visible?: boolean;
358
+ /** Only the locked (true) or unlocked (false) layers */
359
+ locked?: boolean;
360
+ }
361
+ /** What `groups.create` takes. The features must be in the same layer. */
362
+ export interface GroupInput {
363
+ /** The IDs of the features to put in the group */
364
+ featureIds: readonly string[];
365
+ /** The ID; one is generated when it is left out */
366
+ id?: string;
367
+ /** The name; one is generated when it is left out */
368
+ name?: string;
369
+ /** Whether it is visible */
370
+ visible?: boolean;
371
+ /** Whether it is locked */
372
+ locked?: boolean;
373
+ }
374
+ /** What `groups.update` takes: only the keys given change. */
375
+ export interface GroupPatch {
376
+ /** The name */
377
+ name?: string;
378
+ /** Whether it is visible */
379
+ visible?: boolean;
380
+ /** Whether it is locked */
381
+ locked?: boolean;
382
+ }
383
+ /** What `groups.list` and `groups.count` keep: every key given must match. */
384
+ export interface GroupFilter {
385
+ /** Only the groups in this layer */
386
+ layerId?: string;
387
+ /** Only the visible (true) or hidden (false) groups */
388
+ visible?: boolean;
389
+ /** Only the locked (true) or unlocked (false) groups */
390
+ locked?: boolean;
391
+ }
392
+ /**
393
+ * Where a move goes: a layer, or into a group.
394
+ *
395
+ * `{ groupId: null }` takes a feature out of its group: it stays in its layer, just in front
396
+ * of the group. `index` is the position within the destination, 0 at the back; the front
397
+ * when it is left out.
398
+ */
399
+ export type MoveTarget = {
400
+ layerId: string;
401
+ index?: number;
402
+ } | {
403
+ groupId: string | null;
404
+ index?: number;
405
+ };
406
+ /** What `document.load` reads: a file, a JSON string, a document of the library, or GeoJSON. */
407
+ export type LoadSource = File | Blob | string | DrawDocument | GeoJSONFeatureCollection | GeoJSONFeature | Geometry;
408
+ /** The options of `document.load`. */
409
+ export interface LoadOptions {
410
+ /**
411
+ * Whether the document is replaced or the features are added; `replace` for a document of
412
+ * the library and `merge` for GeoJSON when it is left out
413
+ */
414
+ mode?: 'replace' | 'merge';
415
+ /**
416
+ * The layer to add the features to. It wins over the layer a GeoJSON feature names with
417
+ * `maplibre-gl-draw:layerId`; when it is left out, that layer is used, or else the active one.
418
+ * In `document.loadMany` it may also be a layer an earlier item creates with `layer`.
419
+ */
420
+ layerId?: string;
421
+ /**
422
+ * A layer to create for the features, written in the same transaction as them; every
423
+ * feature goes into it, as with `layerId`, and `LoadResult.layerId` gives its ID. It cannot
424
+ * be given together with `layerId` (`invalid-input`), nor with a document of the library,
425
+ * which brings its own layers.
426
+ */
427
+ layer?: LayerInput;
428
+ /**
429
+ * A group to create for the features, written in the same transaction as them: every
430
+ * feature read goes into it, and it stands where they land in their layer. The features all
431
+ * go into one layer (the one of `layer` or `layerId`, else the active one), and a group a
432
+ * GeoJSON feature names is not kept. `LoadResult.groupId` gives its ID; no group is created
433
+ * when nothing is read. It cannot be given with a document of the library.
434
+ */
435
+ group?: Omit<GroupInput, 'featureIds'>;
436
+ /** Where to place an image */
437
+ coordinate?: Position;
438
+ /** The zoom an image is placed at */
439
+ zoom?: number;
440
+ /** Whether the Multi geometries of GeoJSON are split into one feature per part */
441
+ flattenMulti?: boolean;
442
+ }
443
+ /** A GeoJSON feature that `document.load` left out, and why. */
444
+ export interface SkippedFeature {
445
+ /** The index of the feature in the input */
446
+ index: number;
447
+ /** Why it was left out, in English, for logs */
448
+ reason: string;
449
+ }
450
+ /** What `document.load` read. */
451
+ export interface LoadResult {
452
+ /** The format that was detected */
453
+ format: 'native' | 'geojson' | 'image';
454
+ /** The IDs of the features that were read */
455
+ featureIds: string[];
456
+ /** Whether the document was replaced */
457
+ replaced: boolean;
458
+ /** The GeoJSON features that were left out */
459
+ skipped?: SkippedFeature[];
460
+ /** The ID of the layer created from `LoadOptions.layer` */
461
+ layerId?: string;
462
+ /** The ID of the group created from `LoadOptions.group`, when something was read */
463
+ groupId?: string;
464
+ }
465
+ /**
466
+ * The color a style rule gives to a feature with these properties.
467
+ *
468
+ * @param rule - The rule
469
+ * @param properties - The properties of the feature
470
+ * @returns The color, as `#rrggbb`
471
+ */
472
+ export declare function evaluateStyleRule(rule: StyleRule, properties: Record<string, unknown> | undefined): string;
473
+ /**
474
+ * The legend rows of a style rule, in the order to show them.
475
+ *
476
+ * @param rule - The rule
477
+ * @param messages - The words of the labels, to show them in another language
478
+ * @returns The legend rows, their colors as `#rrggbb`
479
+ */
480
+ export declare function deriveLegend(rule: StyleRule, messages?: Partial<Messages>): LegendEntry[];
481
+ /**
482
+ * The part of the look a style rule colors for a type: the point, the stroke or the fill.
483
+ *
484
+ * @param type - The type of the feature
485
+ * @returns `point` for points, `stroke` for lines and `fill` for areas
486
+ */
487
+ export declare function getStyleRuleChannel(type: FeatureType): 'point' | 'stroke' | 'fill';
@@ -0,0 +1,47 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ import { isDrawProperty as isLibraryKey } from '../shared/properties.js';
4
+ import { deriveLegend as deriveRuleLegend, evaluateStyleRule as evaluateRule, getStyleRuleChannel as getRuleChannel, } from '../view/style-rule.js';
5
+ export { DRAW_PROPERTY_PREFIX } from '../shared/properties.js';
6
+ /**
7
+ * Whether a key of `properties` holds a value of the library, so that an attribute panel can
8
+ * leave it out.
9
+ *
10
+ * @param key - A key of `properties`
11
+ * @returns True when the key starts with {@link DRAW_PROPERTY_PREFIX}
12
+ */
13
+ export function isDrawProperty(key) {
14
+ return isLibraryKey(key);
15
+ }
16
+ // ============================================================================
17
+ // Style rule functions
18
+ // ============================================================================
19
+ /**
20
+ * The color a style rule gives to a feature with these properties.
21
+ *
22
+ * @param rule - The rule
23
+ * @param properties - The properties of the feature
24
+ * @returns The color, as `#rrggbb`
25
+ */
26
+ export function evaluateStyleRule(rule, properties) {
27
+ return evaluateRule(rule, properties);
28
+ }
29
+ /**
30
+ * The legend rows of a style rule, in the order to show them.
31
+ *
32
+ * @param rule - The rule
33
+ * @param messages - The words of the labels, to show them in another language
34
+ * @returns The legend rows, their colors as `#rrggbb`
35
+ */
36
+ export function deriveLegend(rule, messages) {
37
+ return deriveRuleLegend(rule, messages);
38
+ }
39
+ /**
40
+ * The part of the look a style rule colors for a type: the point, the stroke or the fill.
41
+ *
42
+ * @param type - The type of the feature
43
+ * @returns `point` for points, `stroke` for lines and `fill` for areas
44
+ */
45
+ export function getStyleRuleChannel(type) {
46
+ return getRuleChannel(type);
47
+ }