@sakuzu/maplibre-gl-draw 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/CHANGELOG.md +1016 -2
  2. package/README.ja.md +39 -19
  3. package/README.md +41 -21
  4. package/dist/api/datasets.d.ts +258 -0
  5. package/dist/api/document.d.ts +66 -0
  6. package/dist/api/draw.d.ts +135 -0
  7. package/dist/api/draw.js +18 -0
  8. package/dist/api/drawing.d.ts +87 -0
  9. package/dist/api/errors.d.ts +35 -0
  10. package/dist/api/errors.js +35 -0
  11. package/dist/api/events.d.ts +306 -0
  12. package/dist/api/extension/context.d.ts +247 -0
  13. package/dist/api/extension/feature-type.d.ts +129 -0
  14. package/dist/api/extension/mode.d.ts +123 -0
  15. package/dist/api/extension/plugin.d.ts +51 -0
  16. package/dist/api/extension/plugin.js +3 -0
  17. package/dist/api/extension/provider.d.ts +119 -0
  18. package/dist/api/extension/provider.js +3 -0
  19. package/dist/api/extension/render.d.ts +176 -0
  20. package/dist/api/extension/render.js +3 -0
  21. package/dist/api/extension/store.d.ts +190 -0
  22. package/dist/api/extension/store.js +3 -0
  23. package/dist/api/extensions.d.ts +306 -0
  24. package/dist/api/extensions.js +3 -0
  25. package/dist/api/features.d.ts +188 -0
  26. package/dist/api/features.js +3 -0
  27. package/dist/api/groups.d.ts +111 -0
  28. package/dist/api/groups.js +3 -0
  29. package/dist/api/hidden.d.ts +45 -0
  30. package/dist/api/hidden.js +3 -0
  31. package/dist/api/impl/adapters.js +463 -0
  32. package/dist/api/impl/contexts.js +466 -0
  33. package/dist/api/impl/create-draw.js +124 -0
  34. package/dist/api/impl/datasets.js +404 -0
  35. package/dist/api/impl/destroy-guard.js +74 -0
  36. package/dist/api/impl/document.js +280 -0
  37. package/dist/api/impl/drawing.js +180 -0
  38. package/dist/api/impl/engine-context.d.ts +7 -0
  39. package/dist/api/{context.js → impl/engine-context.js} +49 -38
  40. package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
  41. package/dist/api/impl/events.js +422 -0
  42. package/dist/api/impl/extension-host.js +361 -0
  43. package/dist/api/impl/extensions.js +229 -0
  44. package/dist/api/impl/features.js +445 -0
  45. package/dist/api/impl/geometry/apply.d.ts +32 -0
  46. package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
  47. package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
  48. package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
  49. package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
  50. package/dist/api/{geometry → impl/geometry}/split.js +10 -21
  51. package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
  52. package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
  53. package/dist/api/impl/geometry/types.js +3 -0
  54. package/dist/api/impl/groups.d.ts +3 -0
  55. package/dist/api/impl/groups.js +268 -0
  56. package/dist/api/impl/hidden.js +60 -0
  57. package/dist/api/impl/import-export/constants.d.ts +22 -0
  58. package/dist/api/impl/import-export/constants.js +24 -0
  59. package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
  60. package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
  61. package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
  62. package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
  63. package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
  64. package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
  65. package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
  66. package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
  67. package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
  68. package/dist/api/impl/import-export/image-import.d.ts +16 -0
  69. package/dist/api/impl/import-export/image-import.js +73 -0
  70. package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
  71. package/dist/api/impl/import-export/legacy-image-style.js +49 -0
  72. package/dist/api/impl/import-export/native-format.d.ts +14 -0
  73. package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
  74. package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
  75. package/dist/api/impl/import-export/native-upgrade.js +139 -0
  76. package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
  77. package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
  78. package/dist/api/impl/import-export/style-validation.d.ts +24 -0
  79. package/dist/api/impl/import-export/style-validation.js +86 -0
  80. package/dist/api/impl/import-export/types.d.ts +52 -0
  81. package/dist/api/impl/import-export/types.js +3 -0
  82. package/dist/api/impl/input.js +180 -0
  83. package/dist/api/impl/layers.js +307 -0
  84. package/dist/api/impl/metadata.d.ts +1 -0
  85. package/dist/api/impl/metadata.js +22 -0
  86. package/dist/api/impl/options.d.ts +1 -0
  87. package/dist/api/impl/options.js +822 -0
  88. package/dist/api/impl/placement.d.ts +1 -0
  89. package/dist/api/impl/placement.js +138 -0
  90. package/dist/api/impl/render-context.d.ts +13 -0
  91. package/dist/api/impl/render-context.js +272 -0
  92. package/dist/api/impl/rows.d.ts +1 -0
  93. package/dist/api/impl/rows.js +46 -0
  94. package/dist/api/impl/selection.d.ts +1 -0
  95. package/dist/api/impl/selection.js +186 -0
  96. package/dist/api/impl/shared.d.ts +64 -0
  97. package/dist/api/impl/shared.js +178 -0
  98. package/dist/api/impl/validate-extension.d.ts +1 -0
  99. package/dist/api/impl/validate-extension.js +159 -0
  100. package/dist/api/layers.d.ts +130 -0
  101. package/dist/api/layers.js +3 -0
  102. package/dist/api/metadata.d.ts +18 -0
  103. package/dist/api/metadata.js +3 -0
  104. package/dist/api/model.d.ts +487 -0
  105. package/dist/api/model.js +47 -0
  106. package/dist/api/options.d.ts +466 -0
  107. package/dist/api/options.js +3 -0
  108. package/dist/api/selection.d.ts +94 -0
  109. package/dist/api/selection.js +3 -0
  110. package/dist/api/state.d.ts +155 -0
  111. package/dist/api/state.js +12 -0
  112. package/dist/{display → dataset}/chunk.d.ts +1 -1
  113. package/dist/{display → dataset}/chunk.js +4 -3
  114. package/dist/{display → dataset}/dataset.js +18 -21
  115. package/dist/dataset/interaction.d.ts +1 -0
  116. package/dist/{display → dataset}/interaction.js +18 -6
  117. package/dist/dataset/manager.d.ts +1 -0
  118. package/dist/dataset/provider.d.ts +1 -0
  119. package/dist/{display → dataset}/retained.d.ts +1 -1
  120. package/dist/{display → dataset}/retained.js +8 -7
  121. package/dist/dataset/source.d.ts +1 -0
  122. package/dist/{display → dataset}/source.js +17 -4
  123. package/dist/dataset/spatial.d.ts +1 -0
  124. package/dist/{display → dataset}/spatial.js +1 -1
  125. package/dist/dataset/style.d.ts +1 -0
  126. package/dist/{display → dataset}/style.js +1 -1
  127. package/dist/dataset/table-source.d.ts +1 -0
  128. package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
  129. package/dist/{display → dataset}/thinning.d.ts +0 -10
  130. package/dist/{display → dataset}/thinning.js +3 -2
  131. package/dist/dataset/triangulation.d.ts +1 -0
  132. package/dist/{display → dataset}/triangulation.js +0 -0
  133. package/dist/{display → dataset}/types.d.ts +82 -121
  134. package/dist/dataset/types.js +61 -0
  135. package/dist/dispatcher/hit-test/box-strategies.js +13 -13
  136. package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
  137. package/dist/dispatcher/hit-test/globe-shape.js +5 -4
  138. package/dist/dispatcher/hit-test/service.d.ts +17 -0
  139. package/dist/dispatcher/hit-test/service.js +80 -16
  140. package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
  141. package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
  142. package/dist/dispatcher/hit-test/strategies/image.js +6 -18
  143. package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
  144. package/dist/dispatcher/hit-test/strategies/line.js +9 -2
  145. package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
  146. package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
  147. package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
  148. package/dist/dispatcher/hit-test/strategies/point.js +8 -4
  149. package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
  150. package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
  151. package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
  152. package/dist/dispatcher/input-router.js +152 -69
  153. package/dist/dispatcher/normalizer.js +6 -2
  154. package/dist/dispatcher/types.d.ts +6 -1
  155. package/dist/extension/feature-handler.d.ts +1 -182
  156. package/dist/extension/index.d.ts +4 -7
  157. package/dist/extension/renderers.d.ts +1 -208
  158. package/dist/geometry/angle.d.ts +0 -8
  159. package/dist/geometry/angle.js +0 -8
  160. package/dist/geometry/bbox.d.ts +4 -12
  161. package/dist/geometry/bbox.js +4 -12
  162. package/dist/geometry/boolean.d.ts +0 -51
  163. package/dist/geometry/boolean.js +0 -51
  164. package/dist/geometry/buffer.d.ts +0 -26
  165. package/dist/geometry/buffer.js +0 -26
  166. package/dist/geometry/circle.d.ts +0 -9
  167. package/dist/geometry/circle.js +0 -9
  168. package/dist/geometry/coords.d.ts +0 -16
  169. package/dist/geometry/coords.js +0 -16
  170. package/dist/geometry/distance.d.ts +0 -24
  171. package/dist/geometry/distance.js +0 -24
  172. package/dist/geometry/errors.d.ts +21 -36
  173. package/dist/geometry/errors.js +49 -29
  174. package/dist/geometry/geojson.d.ts +81 -0
  175. package/dist/geometry/geojson.js +164 -0
  176. package/dist/geometry/index.d.ts +38 -23
  177. package/dist/geometry/index.js +43 -31
  178. package/dist/geometry/measure.d.ts +0 -27
  179. package/dist/geometry/measure.js +0 -27
  180. package/dist/geometry/predicates.d.ts +0 -9
  181. package/dist/geometry/predicates.js +0 -9
  182. package/dist/geometry/public-bounds.d.ts +26 -0
  183. package/dist/geometry/public-bounds.js +30 -0
  184. package/dist/geometry/public-combine.d.ts +78 -0
  185. package/dist/geometry/public-combine.js +82 -0
  186. package/dist/geometry/public-create.d.ts +54 -0
  187. package/dist/geometry/public-create.js +70 -0
  188. package/dist/geometry/public-measure.d.ts +170 -0
  189. package/dist/geometry/public-measure.js +283 -0
  190. package/dist/geometry/public-predicates.d.ts +54 -0
  191. package/dist/geometry/public-predicates.js +144 -0
  192. package/dist/geometry/public-repair.d.ts +75 -0
  193. package/dist/geometry/public-repair.js +77 -0
  194. package/dist/geometry/simplify.d.ts +0 -7
  195. package/dist/geometry/simplify.js +0 -7
  196. package/dist/geometry/split.d.ts +0 -20
  197. package/dist/geometry/split.js +0 -20
  198. package/dist/geometry/units.d.ts +20 -12
  199. package/dist/geometry/units.js +20 -12
  200. package/dist/index.d.ts +52 -66
  201. package/dist/index.js +6 -18
  202. package/dist/messages.d.ts +7 -7
  203. package/dist/modes/draw/circle.js +83 -207
  204. package/dist/modes/draw/commit-layer.d.ts +5 -16
  205. package/dist/modes/draw/commit-layer.js +2 -13
  206. package/dist/modes/draw/freehand.js +108 -246
  207. package/dist/modes/draw/image.js +4 -2
  208. package/dist/modes/draw/index.d.ts +5 -5
  209. package/dist/modes/draw/index.js +5 -5
  210. package/dist/modes/draw/line.js +18 -354
  211. package/dist/modes/draw/point.js +29 -78
  212. package/dist/modes/draw/polygon.js +23 -368
  213. package/dist/modes/draw/trace-support.d.ts +43 -36
  214. package/dist/modes/draw/trace-support.js +95 -98
  215. package/dist/modes/draw/vertex-drawing.d.ts +1 -0
  216. package/dist/modes/draw/vertex-drawing.js +176 -0
  217. package/dist/modes/handler.d.ts +1 -285
  218. package/dist/modes/manager.d.ts +2 -2
  219. package/dist/modes/manager.js +3 -0
  220. package/dist/modes/select/box-selection.d.ts +3 -3
  221. package/dist/modes/select/box-selection.js +2 -1
  222. package/dist/modes/select/click-handler.d.ts +5 -5
  223. package/dist/modes/select/click-handler.js +22 -20
  224. package/dist/modes/select/cursor-handler.d.ts +2 -2
  225. package/dist/modes/select/drag/intermediate-writes.js +1 -1
  226. package/dist/modes/select/drag/move.js +3 -3
  227. package/dist/modes/select/drag/operation.d.ts +3 -3
  228. package/dist/modes/select/drag/radius.js +5 -4
  229. package/dist/modes/select/drag/transform.d.ts +2 -2
  230. package/dist/modes/select/drag/transform.js +11 -5
  231. package/dist/modes/select/drag/vertex.d.ts +2 -2
  232. package/dist/modes/select/drag/vertex.js +13 -8
  233. package/dist/modes/select/drag-handler.js +44 -25
  234. package/dist/modes/select/mode.js +17 -17
  235. package/dist/modes/select/shortcut-handler.d.ts +8 -8
  236. package/dist/modes/select/shortcut-handler.js +9 -7
  237. package/dist/operations/layer-operations.js +29 -168
  238. package/dist/operations/resize.d.ts +2 -2
  239. package/dist/operations/resize.js +5 -5
  240. package/dist/operations/rotate.js +5 -5
  241. package/dist/operations/selection-operations.d.ts +16 -1
  242. package/dist/operations/selection-operations.js +28 -13
  243. package/dist/operations/shared-vertex.js +4 -2
  244. package/dist/operations/trace-graph.d.ts +0 -18
  245. package/dist/operations/trace-graph.js +0 -18
  246. package/dist/operations/vertex.js +36 -35
  247. package/dist/shared/color.d.ts +1 -0
  248. package/dist/shared/color.js +245 -0
  249. package/dist/shared/config/constants.d.ts +1 -54
  250. package/dist/shared/config/constants.js +1 -58
  251. package/dist/shared/config/feature-style.d.ts +16 -13
  252. package/dist/shared/config/feature-style.js +9 -0
  253. package/dist/shared/config/rendering.d.ts +3 -3
  254. package/dist/shared/config/selection-highlight.d.ts +0 -15
  255. package/dist/shared/config/selection-highlight.js +4 -7
  256. package/dist/shared/config/selection.d.ts +2 -32
  257. package/dist/shared/config/selection.js +0 -18
  258. package/dist/shared/config/topology.d.ts +2 -2
  259. package/dist/shared/config/trace.d.ts +4 -4
  260. package/dist/shared/math/angle.d.ts +1 -1
  261. package/dist/shared/math/angle.js +1 -1
  262. package/dist/shared/math/circle.d.ts +1 -1
  263. package/dist/shared/math/circle.js +1 -1
  264. package/dist/shared/math/distance.d.ts +2 -1
  265. package/dist/shared/math/distance.js +3 -2
  266. package/dist/shared/math/index.d.ts +1 -1
  267. package/dist/shared/math/index.js +1 -1
  268. package/dist/shared/math/transform.d.ts +23 -0
  269. package/dist/shared/math/transform.js +47 -28
  270. package/dist/shared/properties.d.ts +18 -0
  271. package/dist/shared/properties.js +129 -0
  272. package/dist/shared/types/events.d.ts +15 -7
  273. package/dist/shared/types/model.d.ts +109 -159
  274. package/dist/shared/types/style.d.ts +1 -1
  275. package/dist/shared/utils/color.d.ts +2 -36
  276. package/dist/shared/utils/color.js +13 -70
  277. package/dist/shared/utils/coordinates.d.ts +30 -4
  278. package/dist/shared/utils/coordinates.js +56 -10
  279. package/dist/shared/utils/event-emitter.d.ts +1 -262
  280. package/dist/shared/utils/event-emitter.js +4 -3
  281. package/dist/shared/utils/feature-bbox.js +8 -7
  282. package/dist/shared/utils/feature-segments.js +5 -4
  283. package/dist/shared/utils/image.d.ts +0 -4
  284. package/dist/shared/utils/image.js +0 -6
  285. package/dist/shared/utils/name-generator.d.ts +14 -20
  286. package/dist/shared/utils/name-generator.js +20 -3
  287. package/dist/shared/utils/pixel-ratio.d.ts +9 -3
  288. package/dist/shared/utils/pixel-ratio.js +13 -4
  289. package/dist/shared/utils/property.d.ts +7 -50
  290. package/dist/shared/utils/property.js +22 -87
  291. package/dist/snapping/custom-targets.js +21 -4
  292. package/dist/snapping/indicator.js +20 -11
  293. package/dist/snapping/providers/display.d.ts +6 -1
  294. package/dist/snapping/providers/display.js +2 -1
  295. package/dist/snapping/providers/guide.d.ts +3 -43
  296. package/dist/snapping/providers/guide.js +1 -44
  297. package/dist/snapping/providers/intersection.js +1 -1
  298. package/dist/snapping/providers/store.js +3 -3
  299. package/dist/snapping/service.js +18 -7
  300. package/dist/snapping/types.d.ts +9 -35
  301. package/dist/store/draw-store.js +233 -142
  302. package/dist/store/local-visibility.d.ts +11 -6
  303. package/dist/store/local-visibility.js +38 -7
  304. package/dist/store/lock.d.ts +0 -6
  305. package/dist/store/lock.js +0 -6
  306. package/dist/store/memory/change-bus.d.ts +3 -3
  307. package/dist/store/memory/change-bus.js +12 -0
  308. package/dist/store/memory/file-store.d.ts +2 -2
  309. package/dist/store/memory/ui-state.d.ts +1 -51
  310. package/dist/store/memory/ui-state.js +122 -134
  311. package/dist/store/memory.d.ts +1 -8
  312. package/dist/store/memory.js +249 -45
  313. package/dist/store/ordering.d.ts +9 -0
  314. package/dist/store/ordering.js +17 -0
  315. package/dist/store/spatial/spatial-index.d.ts +1 -1
  316. package/dist/store/spatial/spatial-index.js +1 -1
  317. package/dist/store/spatial/store-spatial-index.d.ts +3 -1
  318. package/dist/store/spatial/store-spatial-index.js +9 -3
  319. package/dist/store/store.d.ts +66 -107
  320. package/dist/store/types.d.ts +1 -1
  321. package/dist/store/writable-layer.d.ts +1 -1
  322. package/dist/store/writable-layer.js +2 -2
  323. package/dist/table/builder.d.ts +83 -0
  324. package/dist/table/builder.js +381 -0
  325. package/dist/table/index.d.ts +37 -0
  326. package/dist/table/index.js +5 -0
  327. package/dist/table/packed-rtree.d.ts +1 -0
  328. package/dist/{display → table}/packed-rtree.js +1 -1
  329. package/dist/table/partition.d.ts +1 -0
  330. package/dist/{display → table}/partition.js +3 -3
  331. package/dist/table/prepare.d.ts +44 -0
  332. package/dist/table/prepare.js +136 -0
  333. package/dist/table/table.d.ts +1 -0
  334. package/dist/{display/columnar → table}/table.js +29 -25
  335. package/dist/{display/columnar → table}/types.d.ts +68 -72
  336. package/dist/table/types.js +3 -0
  337. package/dist/view/coordinator.js +4 -3
  338. package/dist/view/feature-companion.d.ts +13 -7
  339. package/dist/view/feature-companion.js +11 -3
  340. package/dist/view/globe-subdivision.js +3 -3
  341. package/dist/view/layer/attach.d.ts +1 -1
  342. package/dist/view/layer/attach.js +1 -1
  343. package/dist/view/layer/custom-layer.js +40 -11
  344. package/dist/view/layer/display-list.js +2 -1
  345. package/dist/view/layer/drape-planner.d.ts +2 -2
  346. package/dist/view/layer/frame-render.d.ts +3 -3
  347. package/dist/view/layer/frame-render.js +7 -2
  348. package/dist/view/layer/frame-state.d.ts +6 -6
  349. package/dist/view/layer/index.d.ts +2 -2
  350. package/dist/view/layer/index.js +1 -1
  351. package/dist/view/layer/render.d.ts +4 -4
  352. package/dist/view/layer/render.js +3 -8
  353. package/dist/view/layer/renderers.d.ts +2 -2
  354. package/dist/view/layer/renderers.js +1 -1
  355. package/dist/view/layer/slot-manager.d.ts +2 -2
  356. package/dist/view/layer/slot-manager.js +4 -4
  357. package/dist/view/layer/slots.d.ts +2 -2
  358. package/dist/view/layer/slots.js +1 -1
  359. package/dist/view/layer/store-retained-bbox.js +3 -2
  360. package/dist/view/layer/store-retained-classify.d.ts +5 -7
  361. package/dist/view/layer/store-retained-classify.js +19 -7
  362. package/dist/view/layer/store-retained-collect.js +8 -7
  363. package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
  364. package/dist/view/layer/store-retained-coord-patch.js +13 -4
  365. package/dist/view/layer/store-retained-immediate.d.ts +3 -3
  366. package/dist/view/layer/store-retained-immediate.js +3 -8
  367. package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
  368. package/dist/view/layer/store-retained.d.ts +2 -2
  369. package/dist/view/layer/store-retained.js +1 -1
  370. package/dist/view/renderers/batch-manager.js +8 -7
  371. package/dist/view/renderers/drawer.js +21 -15
  372. package/dist/view/renderers/image.js +13 -39
  373. package/dist/view/renderers/line/line-types.d.ts +3 -3
  374. package/dist/view/renderers/line/sdf-line.js +3 -1
  375. package/dist/view/renderers/point/billboard-depth.js +1 -1
  376. package/dist/view/renderers/point/point-instance.js +1 -1
  377. package/dist/view/renderers/point/point-shape.js +2 -2
  378. package/dist/view/renderers/point/point-style.js +48 -4
  379. package/dist/view/renderers/polygon/batch.js +1 -2
  380. package/dist/view/renderers/polygon/fill.js +3 -1
  381. package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
  382. package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
  383. package/dist/view/renderers/stroke.js +3 -1
  384. package/dist/view/shaders/helpers.d.ts +2 -42
  385. package/dist/view/shaders/helpers.js +0 -6
  386. package/dist/view/shaders/projection.d.ts +15 -7
  387. package/dist/view/shaders/projection.js +23 -6
  388. package/dist/view/shaders/quad.d.ts +16 -12
  389. package/dist/view/shaders/quad.js +34 -13
  390. package/dist/view/style-rule.d.ts +5 -42
  391. package/dist/view/style-rule.js +20 -44
  392. package/dist/view/terrain/binding.d.ts +1 -0
  393. package/dist/view/terrain/binding.js +29 -0
  394. package/dist/view/terrain/context.d.ts +3 -4
  395. package/dist/view/terrain/context.js +4 -5
  396. package/dist/view/terrain/drape/geometry.js +1 -1
  397. package/dist/view/terrain/drape/pass.d.ts +1 -1
  398. package/dist/view/terrain/drape/pass.js +8 -7
  399. package/dist/view/terrain/polygon.d.ts +9 -5
  400. package/dist/view/terrain/polygon.js +16 -2
  401. package/dist/view/terrain/state.d.ts +1 -1
  402. package/dist/view/terrain/state.js +1 -1
  403. package/dist/view/terrain/tessellation.d.ts +2 -2
  404. package/dist/view/terrain/tessellation.js +1 -1
  405. package/dist/view/ui/auxiliary-handles.d.ts +6 -29
  406. package/dist/view/ui/bounds.js +8 -12
  407. package/dist/view/ui/handle-test.js +2 -2
  408. package/dist/view/ui/handle-thinning.js +17 -17
  409. package/dist/view/ui/handles.js +21 -13
  410. package/dist/view/ui/helper.d.ts +1 -1
  411. package/dist/view/ui/helper.js +1 -1
  412. package/dist/view/ui/index.d.ts +1 -1
  413. package/dist/view/ui/selection-scope.js +4 -2
  414. package/dist/view/ui/selection-ui/bounding-box.js +6 -6
  415. package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
  416. package/dist/view/ui/selection-ui/extension-registry.js +70 -7
  417. package/dist/view/ui/selection-ui/index.d.ts +2 -2
  418. package/dist/view/ui/selection-ui/index.js +1 -1
  419. package/dist/view/ui/selection-ui/renderer.js +15 -38
  420. package/dist/view/ui/selection-ui/types.d.ts +17 -2
  421. package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
  422. package/dist/view/ui/selection-ui-drawer.js +63 -2
  423. package/dist/view/ui/tentative.js +1 -1
  424. package/dist/webgl/index.d.ts +65 -0
  425. package/dist/webgl/index.js +62 -0
  426. package/package.json +20 -9
  427. package/dist/api/api.d.ts +0 -1259
  428. package/dist/api/api.js +0 -86
  429. package/dist/api/context.d.ts +0 -173
  430. package/dist/api/display-api.js +0 -23
  431. package/dist/api/event-api.d.ts +0 -13
  432. package/dist/api/event-api.js +0 -17
  433. package/dist/api/extension-api.d.ts +0 -46
  434. package/dist/api/extension-api.js +0 -85
  435. package/dist/api/feature-api.d.ts +0 -11
  436. package/dist/api/feature-api.js +0 -101
  437. package/dist/api/geometry/apply.d.ts +0 -51
  438. package/dist/api/geometry/boolean.d.ts +0 -28
  439. package/dist/api/geometry/boolean.js +0 -65
  440. package/dist/api/geometry/types.d.ts +0 -31
  441. package/dist/api/geometry-operations.d.ts +0 -162
  442. package/dist/api/geometry-operations.js +0 -94
  443. package/dist/api/group-api.d.ts +0 -10
  444. package/dist/api/group-api.js +0 -78
  445. package/dist/api/import-export/constants.d.ts +0 -29
  446. package/dist/api/import-export/constants.js +0 -40
  447. package/dist/api/import-export/file-name.d.ts +0 -10
  448. package/dist/api/import-export/file-name.js +0 -20
  449. package/dist/api/import-export/geojson-export.d.ts +0 -19
  450. package/dist/api/import-export/image-import.d.ts +0 -12
  451. package/dist/api/import-export/image-import.js +0 -53
  452. package/dist/api/import-export/index.d.ts +0 -9
  453. package/dist/api/import-export/index.js +0 -107
  454. package/dist/api/import-export/native-format.d.ts +0 -15
  455. package/dist/api/import-export/style-validation.d.ts +0 -27
  456. package/dist/api/import-export/style-validation.js +0 -49
  457. package/dist/api/import-export/types.d.ts +0 -26
  458. package/dist/api/index.d.ts +0 -15
  459. package/dist/api/index.js +0 -3
  460. package/dist/api/input-api.d.ts +0 -158
  461. package/dist/api/input-api.js +0 -144
  462. package/dist/api/instance-api.d.ts +0 -38
  463. package/dist/api/instance-api.js +0 -136
  464. package/dist/api/layer-api.d.ts +0 -12
  465. package/dist/api/layer-api.js +0 -62
  466. package/dist/api/selection-api.d.ts +0 -7
  467. package/dist/api/selection-api.js +0 -78
  468. package/dist/api/snapping-api.d.ts +0 -125
  469. package/dist/api/snapping-api.js +0 -50
  470. package/dist/api/topology-api.d.ts +0 -30
  471. package/dist/api/topology-api.js +0 -16
  472. package/dist/api/tracing-api.d.ts +0 -31
  473. package/dist/api/tracing-api.js +0 -16
  474. package/dist/dispatcher/hit-test/index.d.ts +0 -14
  475. package/dist/dispatcher/hit-test/index.js +0 -9
  476. package/dist/dispatcher/index.d.ts +0 -15
  477. package/dist/dispatcher/index.js +0 -3
  478. package/dist/display/columnar/index.d.ts +0 -12
  479. package/dist/display/columnar/index.js +0 -13
  480. package/dist/display/columnar/prepare.d.ts +0 -42
  481. package/dist/display/columnar/prepare.js +0 -116
  482. package/dist/display/index.d.ts +0 -13
  483. package/dist/display/types.js +0 -43
  484. package/dist/maplibre-gl-draw.d.ts +0 -47
  485. package/dist/modes/cursor.js +0 -72
  486. package/dist/modes/index.d.ts +0 -7
  487. package/dist/operations/index.d.ts +0 -9
  488. package/dist/operations/index.js +0 -3
  489. package/dist/plugins/index.d.ts +0 -10
  490. package/dist/plugins/mutation-hooks.d.ts +0 -28
  491. package/dist/plugins/mutation-hooks.js +0 -84
  492. package/dist/plugins/plugin-context.js +0 -367
  493. package/dist/plugins/plugin-manager.d.ts +0 -103
  494. package/dist/plugins/plugin-manager.js +0 -316
  495. package/dist/plugins/plugin.d.ts +0 -529
  496. package/dist/shared/config/index.d.ts +0 -17
  497. package/dist/shared/config/index.js +0 -8
  498. package/dist/shared/utils/index.d.ts +0 -15
  499. package/dist/shared/utils/index.js +0 -24
  500. package/dist/snapping/index.d.ts +0 -14
  501. package/dist/snapping/index.js +0 -4
  502. package/dist/store/change-merger.js +0 -102
  503. package/dist/store/event-bridge.js +0 -161
  504. package/dist/store/index.d.ts +0 -12
  505. package/dist/store/index.js +0 -4
  506. package/dist/view/index.d.ts +0 -47
  507. package/dist/view/index.js +0 -20
  508. /package/dist/api/{geometry/types.js → datasets.js} +0 -0
  509. /package/dist/api/{import-export/types.js → document.js} +0 -0
  510. /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
  511. /package/dist/{display/index.js → api/events.js} +0 -0
  512. /package/dist/{modes/index.js → api/extension/context.js} +0 -0
  513. /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
  514. /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
  515. /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
  516. /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
  517. /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
  518. /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
  519. /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
  520. /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
  521. /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
  522. /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
  523. /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
  524. /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
  525. /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
  526. /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
  527. /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
  528. /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
  529. /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
  530. /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
  531. /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
  532. /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
  533. /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
  534. /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
  535. /package/dist/{display → dataset}/chunk-set.js +0 -0
  536. /package/dist/{display → dataset}/dataset.d.ts +0 -0
  537. /package/dist/{display → dataset}/manager.js +0 -0
  538. /package/dist/{display → dataset}/provider.js +0 -0
  539. /package/dist/{display → dataset}/selection.d.ts +0 -0
  540. /package/dist/{display → dataset}/selection.js +0 -0
@@ -1,208 +1 @@
1
- /**
2
- * The renderer contracts of an extension
3
- *
4
- * The shapes an extension implements to draw with the WebGL context of a draw instance: the
5
- * renderer of a custom feature type and the overlay renderers. They are types only and sit low
6
- * in the layer order, so the view and snapping layers read them without reaching up into api.
7
- */
8
- import type { Map as MapLibreMap, ProjectionData } from 'maplibre-gl';
9
- import type { SDFLineRenderer } from '../view/renderers/line/sdf-line.js';
10
- import type { PointShapeRenderer } from '../view/renderers/point/point-shape.js';
11
- import type { FillShaderManager } from '../view/renderers/polygon/fill.js';
12
- import type { TerrainContext } from '../view/terrain/context.js';
13
- /**
14
- * Rendering context for custom renderers
15
- *
16
- * Provides the shader data and offset information needed when using QuadShader and the like.
17
- * It also holds references to the shared renderers, which makes high-quality rendering possible.
18
- */
19
- export interface CustomRendererDrawContext {
20
- /** Shader data (vertexShaderPrelude, define, variantName) */
21
- shaderData: {
22
- vertexShaderPrelude: string;
23
- define: string;
24
- variantName: string;
25
- };
26
- /** Viewport center coordinate [lng, lat] */
27
- centerLngLat: [number, number];
28
- /** The mainMatrix converted into an array */
29
- mainMatrixArray: number[];
30
- /**
31
- * The resolved rendering scale factor (the conversion factor from CSS pixels to device pixels)
32
- *
33
- * It is the value of `pixelRatio` in Options when one has been injected, and otherwise the
34
- * `window.devicePixelRatio` read in that frame. Renderers on the extension side use this
35
- * instead of reading `window.devicePixelRatio` directly.
36
- */
37
- pixelRatio: number;
38
- /**
39
- * The terrain state of the draw instance being drawn
40
- *
41
- * A renderer that owns a `ProjectionUniformManager` or a `QuadShader` passes it with
42
- * `setTerrain(context.terrain)` before drawing, and the anchor functions (`projectAnchor`,
43
- * `anchorElevationMeters`, `anchorGhostOpacity`, `drawQuadSurfaceOnTerrain` and so on) take
44
- * it as their first argument. It is valid for this draw call only; a renderer shared between
45
- * draw instances must not keep it.
46
- */
47
- terrain: TerrainContext;
48
- /**
49
- * The opacity of the layer being drawn, from 0 to 1 (`Layer.opacity`)
50
- *
51
- * Core multiplies it into everything it draws for the layer, and a renderer multiplies it
52
- * into its own alpha, so that what it draws fades with the layer. It is the opacity of the
53
- * layer of the feature for a {@link CustomFeatureRenderer} and a feature companion, and 1 for
54
- * an overlay (which does not belong to a layer). The shared renderers of this context do not
55
- * apply it by themselves. It changes nothing about hit testing: a feature in a layer at
56
- * opacity 0 can still be selected.
57
- */
58
- opacity: number;
59
- /** SDF line rendering (high-quality line rendering, anti-aliasing, dashes and so on) */
60
- sdfLineRenderer: SDFLineRenderer;
61
- /** Polygon fill rendering */
62
- fillShaderManager: FillShaderManager;
63
- /** Point shape rendering */
64
- pointShapeRenderer: PointShapeRenderer;
65
- }
66
- /**
67
- * Draws the features of a custom feature type with the WebGL context of the map
68
- *
69
- * It is the `renderer` of a {@link CustomFeatureHandler}. `onAdd` runs when the draw layer is
70
- * added to the map (create the WebGL resources there), `draw` runs for each visible feature of
71
- * the type in stacking order on every frame, and `onRemove` runs when the layer is removed. The
72
- * shared renderers of the context draw lines, fills and point shapes the same way the built-in
73
- * types are drawn, terrain included.
74
- *
75
- * @example
76
- * ```ts
77
- * import type { CustomFeatureRenderer, PointStyle } from '@sakuzu/maplibre-gl-draw';
78
- *
79
- * const markerStyle: PointStyle = {
80
- * shape: 'square',
81
- * size: 14,
82
- * fillColor: [0, 0.4, 1, 1],
83
- * fillOpacity: 1,
84
- * strokeColor: [1, 1, 1, 1],
85
- * strokeWidth: 2,
86
- * strokeOpacity: 1,
87
- * };
88
- *
89
- * const markerRenderer: CustomFeatureRenderer = {
90
- * name: 'marker',
91
- * onAdd() {}, // nothing to create: the shared point renderer does the drawing
92
- * draw(feature, _projectionData, zoom, context) {
93
- * const coordinate = feature.coordinates as [number, number];
94
- * // Fade with the layer: the opacity of the layer is multiplied into the alpha
95
- * const style = {
96
- * ...markerStyle,
97
- * fillOpacity: markerStyle.fillOpacity * context.opacity,
98
- * strokeOpacity: markerStyle.strokeOpacity * context.opacity,
99
- * };
100
- * context.pointShapeRenderer.draw(coordinate, style, zoom, feature.id);
101
- * },
102
- * onRemove() {},
103
- * };
104
- * ```
105
- */
106
- export interface CustomFeatureRenderer {
107
- /** Renderer name (for debugging) */
108
- readonly name: string;
109
- /**
110
- * Initializes the WebGL resources
111
- */
112
- onAdd(gl: WebGL2RenderingContext, map: MapLibreMap): void;
113
- /**
114
- * Draws a feature
115
- *
116
- * @param feature The feature to draw
117
- * @param projectionData MapLibre's ProjectionData
118
- * @param zoom The current zoom level
119
- * @param context The rendering context (shader data, offset information, and the opacity of
120
- * the layer of the feature, which the renderer multiplies into its own alpha)
121
- */
122
- draw(feature: {
123
- id: string;
124
- type: string;
125
- coordinates: unknown;
126
- properties: Record<string, unknown>;
127
- style?: unknown;
128
- }, projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
129
- /**
130
- * Releases the WebGL resources
131
- */
132
- onRemove(): void;
133
- }
134
- /**
135
- * Custom renderer
136
- *
137
- * Responsible for overlay rendering (independent of features).
138
- */
139
- export interface CustomOverlayRenderer {
140
- /** Renderer name (for debugging) */
141
- readonly name: string;
142
- /**
143
- * The priority in the draw order
144
- * - 'background': drawn behind the features
145
- * - 'foreground': drawn in front of the features (behind the selection UI)
146
- * - 'overlay': drawn in front of the selection UI
147
- */
148
- readonly order: 'background' | 'foreground' | 'overlay';
149
- /**
150
- * Initializes the WebGL resources
151
- */
152
- onAdd(gl: WebGL2RenderingContext, map: MapLibreMap): void;
153
- /**
154
- * Draws
155
- *
156
- * @param projectionData MapLibre's ProjectionData
157
- * @param zoom The current zoom level
158
- * @param context The rendering context (shared renderers, shader data and so on)
159
- */
160
- draw(projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
161
- /**
162
- * Releases the WebGL resources
163
- */
164
- onRemove(): void;
165
- /**
166
- * Whether the renderer still has work that later frames finish on their own and that will
167
- * change what it draws (resources it prepares over several frames, say). Optional: a renderer
168
- * without it has none
169
- *
170
- * `MapLibreGLDraw.hasPendingWork` asks every overlay renderer, so a host that waits for a
171
- * complete picture waits for this renderer too. A renderer that returns true requests the
172
- * repaints that finish the work itself. With `timeSlicing: false` in the rendering settings,
173
- * a renderer should finish in the frame what it would otherwise spread over frames.
174
- */
175
- hasPendingWork?(): boolean;
176
- }
177
- /**
178
- * Layer-aware overlay renderer
179
- *
180
- * An extension of CustomOverlayRenderer that supports rendering per layer.
181
- * Used for rendering that follows the layer order, such as Tentative.
182
- */
183
- export interface LayerAwareOverlayRenderer extends CustomOverlayRenderer {
184
- /**
185
- * Performs the rendering that corresponds to the given layer (lines and fills only)
186
- *
187
- * Called in the per-layer rendering loop, after the features of each layer have been drawn.
188
- * When this method exists, it is used instead of draw().
189
- * Vertices are drawn in the foreground, so they are not drawn here.
190
- *
191
- * @param layerId The ID of the target layer
192
- * @param projectionData MapLibre's ProjectionData
193
- * @param zoom The current zoom level
194
- * @param context The rendering context
195
- */
196
- drawForLayer(layerId: string, projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
197
- /**
198
- * Draws the vertices in the foreground
199
- *
200
- * Called after the selection UI, it draws the vertices of all layers in the foreground at once.
201
- * This is needed so that the vertices stay visible even while drawing on a layer that is behind.
202
- *
203
- * @param projectionData MapLibre's ProjectionData
204
- * @param zoom The current zoom level
205
- * @param context The rendering context
206
- */
207
- drawVertices?(projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
208
- }
1
+ export {};
@@ -35,13 +35,5 @@ import type { Coordinate } from './types.js';
35
35
  * @param radiusMeters The distance from the center in meters
36
36
  * @param angleDegrees The bearing in degrees, clockwise with north as 0
37
37
  * @returns The position `[lng, lat]` in degrees
38
- *
39
- * @example
40
- * ```ts
41
- * import { getPointAtAngle } from '@sakuzu/maplibre-gl-draw/geometry';
42
- *
43
- * // 1 km due east of Tokyo Station, on the same parallel
44
- * getPointAtAngle([139.767, 35.681], 1000, 90); // [139.77807..., 35.681]
45
- * ```
46
38
  */
47
39
  export declare function getPointAtAngle(center: Coordinate, radiusMeters: number, angleDegrees: number): Coordinate;
@@ -21,14 +21,6 @@ import { EARTH_RADIUS_METERS, toRadians } from './units.js';
21
21
  * @param radiusMeters The distance from the center in meters
22
22
  * @param angleDegrees The bearing in degrees, clockwise with north as 0
23
23
  * @returns The position `[lng, lat]` in degrees
24
- *
25
- * @example
26
- * ```ts
27
- * import { getPointAtAngle } from '@sakuzu/maplibre-gl-draw/geometry';
28
- *
29
- * // 1 km due east of Tokyo Station, on the same parallel
30
- * getPointAtAngle([139.767, 35.681], 1000, 90); // [139.77807..., 35.681]
31
- * ```
32
24
  */
33
25
  export function getPointAtAngle(center, radiusMeters, angleDegrees) {
34
26
  const earthRadius = EARTH_RADIUS_METERS;
@@ -9,14 +9,6 @@ import type { AreaCoordinates, BBox, Coordinate } from './types.js';
9
9
  * @param coordinates Positions `[lng, lat]` in degrees
10
10
  * @returns `[minLng, minLat, maxLng, maxLat]` in degrees. `null` when there is not a single
11
11
  * finite coordinate (an empty array included)
12
- *
13
- * @example
14
- * ```ts
15
- * import { coordinatesBBox } from '@sakuzu/maplibre-gl-draw/geometry';
16
- *
17
- * coordinatesBBox([[139.7, 35.6], [139.8, 35.7]]); // [139.7, 35.6, 139.8, 35.7]
18
- * coordinatesBBox([]); // null
19
- * ```
20
12
  */
21
13
  export declare function coordinatesBBox(coordinates: Coordinate[]): BBox | null;
22
14
  /**
@@ -33,16 +25,16 @@ export declare function boundingBox(coordinates: AreaCoordinates): BBox | null;
33
25
  /**
34
26
  * Determines whether two bounding boxes overlap, touching included.
35
27
  *
36
- * @param a A box `[minLng, minLat, maxLng, maxLat]`
37
- * @param b A box `[minLng, minLat, maxLng, maxLat]`
28
+ * @param a A box `[minLng, minLat, maxLng, maxLat]` in degrees
29
+ * @param b A box `[minLng, minLat, maxLng, maxLat]` in degrees
38
30
  * @returns `true` when the boxes share at least one point, an edge or a corner included
39
31
  */
40
32
  export declare function bboxIntersects(a: BBox, b: BBox): boolean;
41
33
  /**
42
34
  * Determines whether one bounding box contains another, coincident boundaries included.
43
35
  *
44
- * @param outer The containing box `[minLng, minLat, maxLng, maxLat]`
45
- * @param inner The contained box `[minLng, minLat, maxLng, maxLat]`
36
+ * @param outer The containing box `[minLng, minLat, maxLng, maxLat]` in degrees
37
+ * @param inner The contained box `[minLng, minLat, maxLng, maxLat]` in degrees
46
38
  * @returns `true` when every point of `inner` lies in `outer`. A box contains itself
47
39
  */
48
40
  export declare function bboxContains(outer: BBox, inner: BBox): boolean;
@@ -17,14 +17,6 @@ import { flattenAreaCoordinates, isFiniteCoordinate } from './coords.js';
17
17
  * @param coordinates Positions `[lng, lat]` in degrees
18
18
  * @returns `[minLng, minLat, maxLng, maxLat]` in degrees. `null` when there is not a single
19
19
  * finite coordinate (an empty array included)
20
- *
21
- * @example
22
- * ```ts
23
- * import { coordinatesBBox } from '@sakuzu/maplibre-gl-draw/geometry';
24
- *
25
- * coordinatesBBox([[139.7, 35.6], [139.8, 35.7]]); // [139.7, 35.6, 139.8, 35.7]
26
- * coordinatesBBox([]); // null
27
- * ```
28
20
  */
29
21
  export function coordinatesBBox(coordinates) {
30
22
  let found = false;
@@ -64,8 +56,8 @@ export function boundingBox(coordinates) {
64
56
  /**
65
57
  * Determines whether two bounding boxes overlap, touching included.
66
58
  *
67
- * @param a A box `[minLng, minLat, maxLng, maxLat]`
68
- * @param b A box `[minLng, minLat, maxLng, maxLat]`
59
+ * @param a A box `[minLng, minLat, maxLng, maxLat]` in degrees
60
+ * @param b A box `[minLng, minLat, maxLng, maxLat]` in degrees
69
61
  * @returns `true` when the boxes share at least one point, an edge or a corner included
70
62
  */
71
63
  export function bboxIntersects(a, b) {
@@ -74,8 +66,8 @@ export function bboxIntersects(a, b) {
74
66
  /**
75
67
  * Determines whether one bounding box contains another, coincident boundaries included.
76
68
  *
77
- * @param outer The containing box `[minLng, minLat, maxLng, maxLat]`
78
- * @param inner The contained box `[minLng, minLat, maxLng, maxLat]`
69
+ * @param outer The containing box `[minLng, minLat, maxLng, maxLat]` in degrees
70
+ * @param inner The contained box `[minLng, minLat, maxLng, maxLat]` in degrees
79
71
  * @returns `true` when every point of `inner` lies in `outer`. A box contains itself
80
72
  */
81
73
  export function bboxContains(outer, inner) {
@@ -12,15 +12,6 @@ import type { AreaCoordinates, MultiPolygonCoordinates } from './types.js';
12
12
  * the input has no area
13
13
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
14
14
  * retry on the 1e-9 degree grid
15
- *
16
- * @example
17
- * ```ts
18
- * import { normalizeArea } from '@sakuzu/maplibre-gl-draw/geometry';
19
- *
20
- * // A self-intersecting bow tie becomes two triangles
21
- * normalizeArea([[[0, 0], [1, 1], [1, 0], [0, 1], [0, 0]]]);
22
- * // [[[[0, 0], [0.5, 0.5], [0, 1], [0, 0]]], [[[0.5, 0.5], [1, 0], [1, 1], [0.5, 0.5]]]]
23
- * ```
24
15
  */
25
16
  export declare function normalizeArea(coordinates: AreaCoordinates): MultiPolygonCoordinates;
26
17
  /**
@@ -36,16 +27,6 @@ export declare function normalizeArea(coordinates: AreaCoordinates): MultiPolygo
36
27
  * several parts. An empty array when neither input has an area
37
28
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
38
29
  * retry on the 1e-9 degree grid
39
- *
40
- * @example
41
- * ```ts
42
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
43
- * import { union } from '@sakuzu/maplibre-gl-draw/geometry';
44
- *
45
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
46
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
47
- * union(a, b); // [[[[0, 0], [1.5, 0], [1.5, 1], [0, 1], [0, 0]]]]
48
- * ```
49
30
  */
50
31
  export declare function union(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
51
32
  /**
@@ -59,16 +40,6 @@ export declare function union(a: AreaCoordinates, b: AreaCoordinates): MultiPoly
59
40
  * when `a` has no area or `b` covers it. `a` normalized when `b` has no area
60
41
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
61
42
  * retry on the 1e-9 degree grid
62
- *
63
- * @example
64
- * ```ts
65
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
66
- * import { difference } from '@sakuzu/maplibre-gl-draw/geometry';
67
- *
68
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
69
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
70
- * difference(a, b); // [[[[0, 0], [0.5, 0], [0.5, 1], [0, 1], [0, 0]]]]
71
- * ```
72
43
  */
73
44
  export declare function difference(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
74
45
  /**
@@ -81,16 +52,6 @@ export declare function difference(a: AreaCoordinates, b: AreaCoordinates): Mult
81
52
  * area
82
53
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
83
54
  * retry on the 1e-9 degree grid
84
- *
85
- * @example
86
- * ```ts
87
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
88
- * import { intersection } from '@sakuzu/maplibre-gl-draw/geometry';
89
- *
90
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
91
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
92
- * intersection(a, b); // [[[[0.5, 0], [1, 0], [1, 1], [0.5, 1], [0.5, 0]]]]
93
- * ```
94
55
  */
95
56
  export declare function intersection(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
96
57
  /**
@@ -120,18 +81,6 @@ export declare function clip(subject: AreaCoordinates, clipRegion: AreaCoordinat
120
81
  * empty array and when no element has an area
121
82
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
122
83
  * retry on the 1e-9 degree grid
123
- *
124
- * @example
125
- * ```ts
126
- * import { unionAll } from '@sakuzu/maplibre-gl-draw/geometry';
127
- *
128
- * const merged = unionAll([
129
- * [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
130
- * [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]],
131
- * [[[5, 5], [6, 5], [6, 6], [5, 5]]],
132
- * ]);
133
- * merged.length; // 2 (the overlapping squares fuse; the triangle stays apart)
134
- * ```
135
84
  */
136
85
  export declare function unionAll(geometries: AreaCoordinates[]): MultiPolygonCoordinates;
137
86
  /**
@@ -106,15 +106,6 @@ function normalize(coordinates) {
106
106
  * the input has no area
107
107
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
108
108
  * retry on the 1e-9 degree grid
109
- *
110
- * @example
111
- * ```ts
112
- * import { normalizeArea } from '@sakuzu/maplibre-gl-draw/geometry';
113
- *
114
- * // A self-intersecting bow tie becomes two triangles
115
- * normalizeArea([[[0, 0], [1, 1], [1, 0], [0, 1], [0, 0]]]);
116
- * // [[[[0, 0], [0.5, 0.5], [0, 1], [0, 0]]], [[[0.5, 0.5], [1, 0], [1, 1], [0.5, 0.5]]]]
117
- * ```
118
109
  */
119
110
  export function normalizeArea(coordinates) {
120
111
  return normalize(sanitize(coordinates));
@@ -132,16 +123,6 @@ export function normalizeArea(coordinates) {
132
123
  * several parts. An empty array when neither input has an area
133
124
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
134
125
  * retry on the 1e-9 degree grid
135
- *
136
- * @example
137
- * ```ts
138
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
139
- * import { union } from '@sakuzu/maplibre-gl-draw/geometry';
140
- *
141
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
142
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
143
- * union(a, b); // [[[[0, 0], [1.5, 0], [1.5, 1], [0, 1], [0, 0]]]]
144
- * ```
145
126
  */
146
127
  export function union(a, b) {
147
128
  const left = sanitize(a);
@@ -165,16 +146,6 @@ export function union(a, b) {
165
146
  * when `a` has no area or `b` covers it. `a` normalized when `b` has no area
166
147
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
167
148
  * retry on the 1e-9 degree grid
168
- *
169
- * @example
170
- * ```ts
171
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
172
- * import { difference } from '@sakuzu/maplibre-gl-draw/geometry';
173
- *
174
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
175
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
176
- * difference(a, b); // [[[[0, 0], [0.5, 0], [0.5, 1], [0, 1], [0, 0]]]]
177
- * ```
178
149
  */
179
150
  export function difference(a, b) {
180
151
  const left = sanitize(a);
@@ -197,16 +168,6 @@ export function difference(a, b) {
197
168
  * area
198
169
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
199
170
  * retry on the 1e-9 degree grid
200
- *
201
- * @example
202
- * ```ts
203
- * import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
204
- * import { intersection } from '@sakuzu/maplibre-gl-draw/geometry';
205
- *
206
- * const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
207
- * const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
208
- * intersection(a, b); // [[[[0.5, 0], [1, 0], [1, 1], [0.5, 1], [0.5, 0]]]]
209
- * ```
210
171
  */
211
172
  export function intersection(a, b) {
212
173
  const left = sanitize(a);
@@ -245,18 +206,6 @@ export function clip(subject, clipRegion) {
245
206
  * empty array and when no element has an area
246
207
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
247
208
  * retry on the 1e-9 degree grid
248
- *
249
- * @example
250
- * ```ts
251
- * import { unionAll } from '@sakuzu/maplibre-gl-draw/geometry';
252
- *
253
- * const merged = unionAll([
254
- * [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
255
- * [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]],
256
- * [[[5, 5], [6, 5], [6, 6], [5, 5]]],
257
- * ]);
258
- * merged.length; // 2 (the overlapping squares fuse; the triangle stays apart)
259
- * ```
260
209
  */
261
210
  export function unionAll(geometries) {
262
211
  const parts = geometries.map(sanitize).filter((part) => part.length > 0);
@@ -42,31 +42,5 @@ export interface BufferOptions {
42
42
  * shrunk polygon vanishes. `null` when the operation is not defined for the input
43
43
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
44
44
  * retry on the 1e-9 degree grid
45
- *
46
- * @example
47
- * ```ts
48
- * import { buffer } from '@sakuzu/maplibre-gl-draw/geometry';
49
- *
50
- * // The area within 100 m of a line
51
- * const corridor = buffer(
52
- * { type: 'LineString', coordinates: [[139.76, 35.68], [139.77, 35.69]] },
53
- * 100,
54
- * { segments: 32 },
55
- * );
56
- *
57
- * // Shrink a polygon by 50 m
58
- * const shrunk = buffer(
59
- * {
60
- * type: 'Polygon',
61
- * coordinates: [[[139.76, 35.68], [139.77, 35.68], [139.77, 35.69], [139.76, 35.68]]],
62
- * },
63
- * -50,
64
- * );
65
- * if (shrunk === null) {
66
- * // Not defined for the input
67
- * } else if (shrunk.length === 0) {
68
- * // The whole area vanished
69
- * }
70
- * ```
71
45
  */
72
46
  export declare function buffer(geometry: GeometryInput, meters: number, options?: BufferOptions): MultiPolygonCoordinates | null;
@@ -161,32 +161,6 @@ function isAreaGeometry(geometry) {
161
161
  * shrunk polygon vanishes. `null` when the operation is not defined for the input
162
162
  * @throws {@link GeometryError} when the boolean operation engine fails even after the
163
163
  * retry on the 1e-9 degree grid
164
- *
165
- * @example
166
- * ```ts
167
- * import { buffer } from '@sakuzu/maplibre-gl-draw/geometry';
168
- *
169
- * // The area within 100 m of a line
170
- * const corridor = buffer(
171
- * { type: 'LineString', coordinates: [[139.76, 35.68], [139.77, 35.69]] },
172
- * 100,
173
- * { segments: 32 },
174
- * );
175
- *
176
- * // Shrink a polygon by 50 m
177
- * const shrunk = buffer(
178
- * {
179
- * type: 'Polygon',
180
- * coordinates: [[[139.76, 35.68], [139.77, 35.68], [139.77, 35.69], [139.76, 35.68]]],
181
- * },
182
- * -50,
183
- * );
184
- * if (shrunk === null) {
185
- * // Not defined for the input
186
- * } else if (shrunk.length === 0) {
187
- * // The whole area vanished
188
- * }
189
- * ```
190
164
  */
191
165
  export function buffer(geometry, meters, options) {
192
166
  if (!Number.isFinite(meters)) {
@@ -26,15 +26,6 @@ export declare function normalizeCircleSegments(segments: number | undefined, fa
26
26
  * @returns The ring, `segments + 1` positions `[lng, lat]` with the first repeated at the
27
27
  * end. An empty array for a center that is not finite and for a radius that is negative
28
28
  * or not finite
29
- *
30
- * @example
31
- * ```ts
32
- * import { generateCirclePolygon } from '@sakuzu/maplibre-gl-draw/geometry';
33
- *
34
- * const ring = generateCirclePolygon([139.767, 35.681], 500, 32);
35
- * ring.length; // 33
36
- * const polygon = [ring]; // Polygon coordinates
37
- * ```
38
29
  */
39
30
  export declare function generateCirclePolygon(center: Coordinate, radiusMeters: number, segments?: number): Coordinate[];
40
31
  /**
@@ -48,15 +48,6 @@ export function normalizeCircleSegments(segments, fallback = DEFAULT_CIRCLE_SEGM
48
48
  * @returns The ring, `segments + 1` positions `[lng, lat]` with the first repeated at the
49
49
  * end. An empty array for a center that is not finite and for a radius that is negative
50
50
  * or not finite
51
- *
52
- * @example
53
- * ```ts
54
- * import { generateCirclePolygon } from '@sakuzu/maplibre-gl-draw/geometry';
55
- *
56
- * const ring = generateCirclePolygon([139.767, 35.681], 500, 32);
57
- * ring.length; // 33
58
- * const polygon = [ring]; // Polygon coordinates
59
- * ```
60
51
  */
61
52
  export function generateCirclePolygon(center, radiusMeters, segments = DEFAULT_CIRCLE_SEGMENTS) {
62
53
  if (!isFiniteCoordinate(center) || !Number.isFinite(radiusMeters) || radiusMeters < 0) {
@@ -18,15 +18,6 @@ import type { AreaCoordinates, Coordinate, MultiPolygonCoordinates, Ring } from
18
18
  * @param coordinates Polygon or MultiPolygon coordinates
19
19
  * @returns `true` for MultiPolygon coordinates (a type guard). `false` for Polygon
20
20
  * coordinates and for coordinates with no position
21
- *
22
- * @example
23
- * ```ts
24
- * import { isMultiPolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
25
- *
26
- * const ring: [number, number][] = [[0, 0], [1, 0], [1, 1], [0, 0]];
27
- * isMultiPolygonCoordinates([ring]); // false (Polygon)
28
- * isMultiPolygonCoordinates([[ring]]); // true (MultiPolygon)
29
- * ```
30
21
  */
31
22
  export declare function isMultiPolygonCoordinates(coordinates: AreaCoordinates): coordinates is MultiPolygonCoordinates;
32
23
  /**
@@ -75,13 +66,6 @@ export declare function isRingClosed(ring: Ring): boolean;
75
66
  *
76
67
  * @param ring A coordinate sequence
77
68
  * @returns A new closed array. The input itself when it is already closed or empty
78
- *
79
- * @example
80
- * ```ts
81
- * import { closeRing } from '@sakuzu/maplibre-gl-draw/geometry';
82
- *
83
- * closeRing([[0, 0], [1, 0], [1, 1]]); // [[0, 0], [1, 0], [1, 1], [0, 0]]
84
- * ```
85
69
  */
86
70
  export declare function closeRing(ring: Ring): Ring;
87
71
  /**
@@ -13,15 +13,6 @@
13
13
  * @param coordinates Polygon or MultiPolygon coordinates
14
14
  * @returns `true` for MultiPolygon coordinates (a type guard). `false` for Polygon
15
15
  * coordinates and for coordinates with no position
16
- *
17
- * @example
18
- * ```ts
19
- * import { isMultiPolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
20
- *
21
- * const ring: [number, number][] = [[0, 0], [1, 0], [1, 1], [0, 0]];
22
- * isMultiPolygonCoordinates([ring]); // false (Polygon)
23
- * isMultiPolygonCoordinates([[ring]]); // true (MultiPolygon)
24
- * ```
25
16
  */
26
17
  export function isMultiPolygonCoordinates(coordinates) {
27
18
  for (const element of coordinates) {
@@ -112,13 +103,6 @@ export function isRingClosed(ring) {
112
103
  *
113
104
  * @param ring A coordinate sequence
114
105
  * @returns A new closed array. The input itself when it is already closed or empty
115
- *
116
- * @example
117
- * ```ts
118
- * import { closeRing } from '@sakuzu/maplibre-gl-draw/geometry';
119
- *
120
- * closeRing([[0, 0], [1, 0], [1, 1]]); // [[0, 0], [1, 0], [1, 1], [0, 0]]
121
- * ```
122
106
  */
123
107
  export function closeRing(ring) {
124
108
  if (ring.length === 0 || isRingClosed(ring)) {