@sakuzu/maplibre-gl-draw 1.0.0 → 2.1.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 (541) hide show
  1. package/CHANGELOG.md +1109 -2
  2. package/README.ja.md +83 -50
  3. package/README.md +89 -53
  4. package/THIRD_PARTY_NOTICES.md +29 -0
  5. package/dist/api/datasets.d.ts +263 -0
  6. package/dist/api/document.d.ts +66 -0
  7. package/dist/api/draw.d.ts +137 -0
  8. package/dist/api/draw.js +20 -0
  9. package/dist/api/drawing.d.ts +87 -0
  10. package/dist/api/errors.d.ts +35 -0
  11. package/dist/api/errors.js +35 -0
  12. package/dist/api/events.d.ts +316 -0
  13. package/dist/api/extension/context.d.ts +247 -0
  14. package/dist/api/extension/feature-type.d.ts +129 -0
  15. package/dist/api/extension/mode.d.ts +123 -0
  16. package/dist/api/extension/plugin.d.ts +51 -0
  17. package/dist/api/extension/plugin.js +3 -0
  18. package/dist/api/extension/provider.d.ts +119 -0
  19. package/dist/api/extension/provider.js +3 -0
  20. package/dist/api/extension/render.d.ts +176 -0
  21. package/dist/api/extension/render.js +3 -0
  22. package/dist/api/extension/store.d.ts +190 -0
  23. package/dist/api/extension/store.js +3 -0
  24. package/dist/api/extensions.d.ts +306 -0
  25. package/dist/api/extensions.js +3 -0
  26. package/dist/api/features.d.ts +188 -0
  27. package/dist/api/features.js +3 -0
  28. package/dist/api/groups.d.ts +111 -0
  29. package/dist/api/groups.js +3 -0
  30. package/dist/api/hidden.d.ts +45 -0
  31. package/dist/api/hidden.js +3 -0
  32. package/dist/api/impl/adapters.js +463 -0
  33. package/dist/api/impl/contexts.js +466 -0
  34. package/dist/api/impl/create-draw.js +124 -0
  35. package/dist/api/impl/datasets.js +405 -0
  36. package/dist/api/impl/destroy-guard.js +74 -0
  37. package/dist/api/impl/document.js +280 -0
  38. package/dist/api/impl/drawing.js +180 -0
  39. package/dist/api/impl/engine-context.d.ts +7 -0
  40. package/dist/api/{context.js → impl/engine-context.js} +49 -38
  41. package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
  42. package/dist/api/impl/events.js +423 -0
  43. package/dist/api/impl/extension-host.js +364 -0
  44. package/dist/api/impl/extensions.js +229 -0
  45. package/dist/api/impl/features.js +445 -0
  46. package/dist/api/impl/geometry/apply.d.ts +32 -0
  47. package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
  48. package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
  49. package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
  50. package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
  51. package/dist/api/{geometry → impl/geometry}/split.js +10 -21
  52. package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
  53. package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
  54. package/dist/api/impl/geometry/types.js +3 -0
  55. package/dist/api/impl/groups.d.ts +3 -0
  56. package/dist/api/impl/groups.js +268 -0
  57. package/dist/api/impl/hidden.js +60 -0
  58. package/dist/api/impl/import-export/constants.d.ts +22 -0
  59. package/dist/api/impl/import-export/constants.js +24 -0
  60. package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
  61. package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
  62. package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
  63. package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
  64. package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
  65. package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
  66. package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
  67. package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
  68. package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
  69. package/dist/api/impl/import-export/image-import.d.ts +16 -0
  70. package/dist/api/impl/import-export/image-import.js +73 -0
  71. package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
  72. package/dist/api/impl/import-export/legacy-image-style.js +49 -0
  73. package/dist/api/impl/import-export/native-format.d.ts +14 -0
  74. package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
  75. package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
  76. package/dist/api/impl/import-export/native-upgrade.js +139 -0
  77. package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
  78. package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
  79. package/dist/api/impl/import-export/style-validation.d.ts +24 -0
  80. package/dist/api/impl/import-export/style-validation.js +86 -0
  81. package/dist/api/impl/import-export/types.d.ts +52 -0
  82. package/dist/api/impl/import-export/types.js +3 -0
  83. package/dist/api/impl/input.js +180 -0
  84. package/dist/api/impl/layers.js +307 -0
  85. package/dist/api/impl/metadata.d.ts +1 -0
  86. package/dist/api/impl/metadata.js +22 -0
  87. package/dist/api/impl/options.d.ts +1 -0
  88. package/dist/api/impl/options.js +851 -0
  89. package/dist/api/impl/placement.d.ts +1 -0
  90. package/dist/api/impl/placement.js +138 -0
  91. package/dist/api/impl/render-context.d.ts +13 -0
  92. package/dist/api/impl/render-context.js +272 -0
  93. package/dist/api/impl/rows.d.ts +1 -0
  94. package/dist/api/impl/rows.js +46 -0
  95. package/dist/api/impl/selection.d.ts +1 -0
  96. package/dist/api/impl/selection.js +186 -0
  97. package/dist/api/impl/shared.d.ts +64 -0
  98. package/dist/api/impl/shared.js +178 -0
  99. package/dist/api/impl/validate-extension.d.ts +1 -0
  100. package/dist/api/impl/validate-extension.js +159 -0
  101. package/dist/api/layers.d.ts +130 -0
  102. package/dist/api/layers.js +3 -0
  103. package/dist/api/metadata.d.ts +18 -0
  104. package/dist/api/metadata.js +3 -0
  105. package/dist/api/model.d.ts +487 -0
  106. package/dist/api/model.js +47 -0
  107. package/dist/api/options.d.ts +466 -0
  108. package/dist/api/options.js +3 -0
  109. package/dist/api/selection.d.ts +94 -0
  110. package/dist/api/selection.js +3 -0
  111. package/dist/api/state.d.ts +155 -0
  112. package/dist/api/state.js +12 -0
  113. package/dist/{display → dataset}/chunk.d.ts +1 -1
  114. package/dist/{display → dataset}/chunk.js +4 -3
  115. package/dist/{display → dataset}/dataset.js +21 -21
  116. package/dist/dataset/interaction.d.ts +1 -0
  117. package/dist/{display → dataset}/interaction.js +18 -6
  118. package/dist/dataset/manager.d.ts +1 -0
  119. package/dist/dataset/provider.d.ts +1 -0
  120. package/dist/{display → dataset}/retained.d.ts +1 -1
  121. package/dist/{display → dataset}/retained.js +8 -7
  122. package/dist/dataset/source.d.ts +1 -0
  123. package/dist/{display → dataset}/source.js +17 -4
  124. package/dist/dataset/spatial.d.ts +1 -0
  125. package/dist/{display → dataset}/spatial.js +1 -1
  126. package/dist/dataset/style.d.ts +1 -0
  127. package/dist/{display → dataset}/style.js +1 -1
  128. package/dist/dataset/table-source.d.ts +1 -0
  129. package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
  130. package/dist/{display → dataset}/thinning.d.ts +0 -10
  131. package/dist/{display → dataset}/thinning.js +3 -2
  132. package/dist/dataset/triangulation.d.ts +1 -0
  133. package/dist/{display → dataset}/triangulation.js +0 -0
  134. package/dist/{display → dataset}/types.d.ts +84 -121
  135. package/dist/dataset/types.js +61 -0
  136. package/dist/dispatcher/hit-test/box-strategies.js +13 -13
  137. package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
  138. package/dist/dispatcher/hit-test/globe-shape.js +5 -4
  139. package/dist/dispatcher/hit-test/service.d.ts +17 -0
  140. package/dist/dispatcher/hit-test/service.js +80 -16
  141. package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
  142. package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
  143. package/dist/dispatcher/hit-test/strategies/image.js +6 -18
  144. package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
  145. package/dist/dispatcher/hit-test/strategies/line.js +9 -2
  146. package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
  147. package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
  148. package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
  149. package/dist/dispatcher/hit-test/strategies/point.js +8 -4
  150. package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
  151. package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
  152. package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
  153. package/dist/dispatcher/input-router.js +154 -70
  154. package/dist/dispatcher/normalizer.js +25 -4
  155. package/dist/dispatcher/types.d.ts +6 -1
  156. package/dist/extension/feature-handler.d.ts +1 -182
  157. package/dist/extension/index.d.ts +4 -7
  158. package/dist/extension/renderers.d.ts +1 -208
  159. package/dist/geometry/angle.d.ts +0 -8
  160. package/dist/geometry/angle.js +0 -8
  161. package/dist/geometry/bbox.d.ts +4 -12
  162. package/dist/geometry/bbox.js +4 -12
  163. package/dist/geometry/boolean.d.ts +0 -51
  164. package/dist/geometry/boolean.js +0 -51
  165. package/dist/geometry/buffer.d.ts +0 -26
  166. package/dist/geometry/buffer.js +0 -26
  167. package/dist/geometry/circle.d.ts +0 -9
  168. package/dist/geometry/circle.js +0 -9
  169. package/dist/geometry/coords.d.ts +0 -16
  170. package/dist/geometry/coords.js +0 -16
  171. package/dist/geometry/distance.d.ts +0 -24
  172. package/dist/geometry/distance.js +0 -24
  173. package/dist/geometry/errors.d.ts +21 -36
  174. package/dist/geometry/errors.js +49 -29
  175. package/dist/geometry/geojson.d.ts +85 -0
  176. package/dist/geometry/geojson.js +173 -0
  177. package/dist/geometry/index.d.ts +38 -23
  178. package/dist/geometry/index.js +43 -31
  179. package/dist/geometry/measure.d.ts +0 -27
  180. package/dist/geometry/measure.js +0 -27
  181. package/dist/geometry/predicates.d.ts +0 -9
  182. package/dist/geometry/predicates.js +0 -9
  183. package/dist/geometry/public-bounds.d.ts +26 -0
  184. package/dist/geometry/public-bounds.js +30 -0
  185. package/dist/geometry/public-combine.d.ts +78 -0
  186. package/dist/geometry/public-combine.js +82 -0
  187. package/dist/geometry/public-create.d.ts +54 -0
  188. package/dist/geometry/public-create.js +70 -0
  189. package/dist/geometry/public-measure.d.ts +170 -0
  190. package/dist/geometry/public-measure.js +283 -0
  191. package/dist/geometry/public-predicates.d.ts +54 -0
  192. package/dist/geometry/public-predicates.js +144 -0
  193. package/dist/geometry/public-repair.d.ts +75 -0
  194. package/dist/geometry/public-repair.js +77 -0
  195. package/dist/geometry/simplify.d.ts +0 -7
  196. package/dist/geometry/simplify.js +0 -7
  197. package/dist/geometry/split.d.ts +0 -20
  198. package/dist/geometry/split.js +0 -20
  199. package/dist/geometry/units.d.ts +20 -12
  200. package/dist/geometry/units.js +20 -12
  201. package/dist/index.d.ts +66 -66
  202. package/dist/index.js +6 -18
  203. package/dist/messages.d.ts +7 -7
  204. package/dist/modes/draw/circle.js +83 -207
  205. package/dist/modes/draw/commit-layer.d.ts +5 -16
  206. package/dist/modes/draw/commit-layer.js +2 -13
  207. package/dist/modes/draw/freehand.js +108 -246
  208. package/dist/modes/draw/image.js +4 -2
  209. package/dist/modes/draw/index.d.ts +5 -5
  210. package/dist/modes/draw/index.js +5 -5
  211. package/dist/modes/draw/line.js +18 -354
  212. package/dist/modes/draw/point.js +29 -78
  213. package/dist/modes/draw/polygon.js +23 -368
  214. package/dist/modes/draw/trace-support.d.ts +43 -36
  215. package/dist/modes/draw/trace-support.js +95 -98
  216. package/dist/modes/draw/vertex-drawing.d.ts +1 -0
  217. package/dist/modes/draw/vertex-drawing.js +176 -0
  218. package/dist/modes/handler.d.ts +1 -285
  219. package/dist/modes/manager.d.ts +2 -2
  220. package/dist/modes/manager.js +3 -0
  221. package/dist/modes/select/box-selection.d.ts +3 -3
  222. package/dist/modes/select/box-selection.js +2 -1
  223. package/dist/modes/select/click-handler.d.ts +5 -5
  224. package/dist/modes/select/click-handler.js +22 -20
  225. package/dist/modes/select/cursor-handler.d.ts +2 -2
  226. package/dist/modes/select/drag/intermediate-writes.js +1 -1
  227. package/dist/modes/select/drag/move.js +3 -3
  228. package/dist/modes/select/drag/operation.d.ts +3 -3
  229. package/dist/modes/select/drag/radius.js +5 -4
  230. package/dist/modes/select/drag/transform.d.ts +2 -2
  231. package/dist/modes/select/drag/transform.js +11 -5
  232. package/dist/modes/select/drag/vertex.d.ts +2 -2
  233. package/dist/modes/select/drag/vertex.js +13 -8
  234. package/dist/modes/select/drag-handler.js +44 -25
  235. package/dist/modes/select/mode.js +17 -17
  236. package/dist/modes/select/shortcut-handler.d.ts +8 -8
  237. package/dist/modes/select/shortcut-handler.js +9 -7
  238. package/dist/operations/layer-operations.js +29 -168
  239. package/dist/operations/resize.d.ts +2 -2
  240. package/dist/operations/resize.js +5 -5
  241. package/dist/operations/rotate.js +5 -5
  242. package/dist/operations/selection-operations.d.ts +16 -1
  243. package/dist/operations/selection-operations.js +28 -13
  244. package/dist/operations/shared-vertex.js +4 -2
  245. package/dist/operations/trace-graph.d.ts +0 -18
  246. package/dist/operations/trace-graph.js +0 -18
  247. package/dist/operations/vertex.js +36 -35
  248. package/dist/shared/color.d.ts +1 -0
  249. package/dist/shared/color.js +245 -0
  250. package/dist/shared/config/constants.d.ts +1 -54
  251. package/dist/shared/config/constants.js +1 -58
  252. package/dist/shared/config/feature-style.d.ts +16 -13
  253. package/dist/shared/config/feature-style.js +9 -0
  254. package/dist/shared/config/rendering.d.ts +3 -3
  255. package/dist/shared/config/selection-highlight.d.ts +0 -15
  256. package/dist/shared/config/selection-highlight.js +4 -7
  257. package/dist/shared/config/selection.d.ts +2 -32
  258. package/dist/shared/config/selection.js +0 -18
  259. package/dist/shared/config/topology.d.ts +2 -2
  260. package/dist/shared/config/trace.d.ts +4 -4
  261. package/dist/shared/math/angle.d.ts +1 -1
  262. package/dist/shared/math/angle.js +1 -1
  263. package/dist/shared/math/circle.d.ts +1 -1
  264. package/dist/shared/math/circle.js +1 -1
  265. package/dist/shared/math/distance.d.ts +2 -1
  266. package/dist/shared/math/distance.js +3 -2
  267. package/dist/shared/math/index.d.ts +1 -1
  268. package/dist/shared/math/index.js +1 -1
  269. package/dist/shared/math/transform.d.ts +23 -0
  270. package/dist/shared/math/transform.js +47 -28
  271. package/dist/shared/properties.d.ts +18 -0
  272. package/dist/shared/properties.js +129 -0
  273. package/dist/shared/types/events.d.ts +15 -7
  274. package/dist/shared/types/model.d.ts +109 -159
  275. package/dist/shared/types/style.d.ts +1 -1
  276. package/dist/shared/utils/color.d.ts +2 -36
  277. package/dist/shared/utils/color.js +13 -70
  278. package/dist/shared/utils/coordinates.d.ts +30 -4
  279. package/dist/shared/utils/coordinates.js +56 -10
  280. package/dist/shared/utils/event-emitter.d.ts +1 -262
  281. package/dist/shared/utils/event-emitter.js +4 -3
  282. package/dist/shared/utils/feature-bbox.js +8 -7
  283. package/dist/shared/utils/feature-segments.js +5 -4
  284. package/dist/shared/utils/image.d.ts +0 -4
  285. package/dist/shared/utils/image.js +0 -6
  286. package/dist/shared/utils/name-generator.d.ts +14 -20
  287. package/dist/shared/utils/name-generator.js +20 -3
  288. package/dist/shared/utils/pixel-ratio.d.ts +9 -3
  289. package/dist/shared/utils/pixel-ratio.js +13 -4
  290. package/dist/shared/utils/property.d.ts +7 -50
  291. package/dist/shared/utils/property.js +22 -87
  292. package/dist/snapping/custom-targets.js +21 -4
  293. package/dist/snapping/indicator.js +20 -11
  294. package/dist/snapping/providers/display.d.ts +6 -1
  295. package/dist/snapping/providers/display.js +2 -1
  296. package/dist/snapping/providers/guide.d.ts +3 -43
  297. package/dist/snapping/providers/guide.js +1 -44
  298. package/dist/snapping/providers/intersection.js +1 -1
  299. package/dist/snapping/providers/store.js +3 -3
  300. package/dist/snapping/service.js +18 -7
  301. package/dist/snapping/types.d.ts +9 -35
  302. package/dist/store/draw-store.js +233 -142
  303. package/dist/store/local-visibility.d.ts +11 -6
  304. package/dist/store/local-visibility.js +38 -7
  305. package/dist/store/lock.d.ts +0 -6
  306. package/dist/store/lock.js +0 -6
  307. package/dist/store/memory/change-bus.d.ts +3 -3
  308. package/dist/store/memory/change-bus.js +12 -0
  309. package/dist/store/memory/file-store.d.ts +2 -2
  310. package/dist/store/memory/ui-state.d.ts +1 -51
  311. package/dist/store/memory/ui-state.js +122 -134
  312. package/dist/store/memory.d.ts +1 -8
  313. package/dist/store/memory.js +249 -45
  314. package/dist/store/ordering.d.ts +9 -0
  315. package/dist/store/ordering.js +17 -0
  316. package/dist/store/spatial/spatial-index.d.ts +1 -1
  317. package/dist/store/spatial/spatial-index.js +1 -1
  318. package/dist/store/spatial/store-spatial-index.d.ts +3 -1
  319. package/dist/store/spatial/store-spatial-index.js +9 -3
  320. package/dist/store/store.d.ts +66 -107
  321. package/dist/store/types.d.ts +1 -1
  322. package/dist/store/writable-layer.d.ts +1 -1
  323. package/dist/store/writable-layer.js +2 -2
  324. package/dist/table/builder.d.ts +83 -0
  325. package/dist/table/builder.js +381 -0
  326. package/dist/table/index.d.ts +37 -0
  327. package/dist/table/index.js +5 -0
  328. package/dist/table/packed-rtree.d.ts +1 -0
  329. package/dist/{display → table}/packed-rtree.js +1 -1
  330. package/dist/table/partition.d.ts +1 -0
  331. package/dist/{display → table}/partition.js +3 -3
  332. package/dist/table/prepare.d.ts +44 -0
  333. package/dist/table/prepare.js +136 -0
  334. package/dist/table/table.d.ts +1 -0
  335. package/dist/{display/columnar → table}/table.js +29 -25
  336. package/dist/{display/columnar → table}/types.d.ts +68 -72
  337. package/dist/table/types.js +3 -0
  338. package/dist/view/coordinator.js +4 -3
  339. package/dist/view/feature-companion.d.ts +13 -7
  340. package/dist/view/feature-companion.js +11 -3
  341. package/dist/view/globe-subdivision.js +3 -3
  342. package/dist/view/layer/attach.d.ts +12 -6
  343. package/dist/view/layer/attach.js +86 -10
  344. package/dist/view/layer/custom-layer.js +40 -11
  345. package/dist/view/layer/display-list.js +2 -1
  346. package/dist/view/layer/drape-planner.d.ts +2 -2
  347. package/dist/view/layer/frame-render.d.ts +3 -3
  348. package/dist/view/layer/frame-render.js +7 -2
  349. package/dist/view/layer/frame-state.d.ts +6 -6
  350. package/dist/view/layer/index.d.ts +2 -2
  351. package/dist/view/layer/index.js +1 -1
  352. package/dist/view/layer/render.d.ts +4 -4
  353. package/dist/view/layer/render.js +3 -8
  354. package/dist/view/layer/renderers.d.ts +2 -2
  355. package/dist/view/layer/renderers.js +1 -1
  356. package/dist/view/layer/slot-manager.d.ts +2 -2
  357. package/dist/view/layer/slot-manager.js +4 -4
  358. package/dist/view/layer/slots.d.ts +2 -2
  359. package/dist/view/layer/slots.js +1 -1
  360. package/dist/view/layer/store-retained-bbox.js +3 -2
  361. package/dist/view/layer/store-retained-classify.d.ts +5 -7
  362. package/dist/view/layer/store-retained-classify.js +19 -7
  363. package/dist/view/layer/store-retained-collect.js +8 -7
  364. package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
  365. package/dist/view/layer/store-retained-coord-patch.js +13 -4
  366. package/dist/view/layer/store-retained-immediate.d.ts +3 -3
  367. package/dist/view/layer/store-retained-immediate.js +3 -8
  368. package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
  369. package/dist/view/layer/store-retained.d.ts +2 -2
  370. package/dist/view/layer/store-retained.js +1 -1
  371. package/dist/view/renderers/batch-manager.js +8 -7
  372. package/dist/view/renderers/drawer.js +21 -15
  373. package/dist/view/renderers/image.js +13 -39
  374. package/dist/view/renderers/line/line-types.d.ts +3 -3
  375. package/dist/view/renderers/line/sdf-line.js +3 -1
  376. package/dist/view/renderers/point/billboard-depth.js +1 -1
  377. package/dist/view/renderers/point/point-instance.js +1 -1
  378. package/dist/view/renderers/point/point-shape.js +2 -2
  379. package/dist/view/renderers/point/point-style.js +48 -4
  380. package/dist/view/renderers/polygon/batch.js +1 -2
  381. package/dist/view/renderers/polygon/fill.js +3 -1
  382. package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
  383. package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
  384. package/dist/view/renderers/stroke.js +3 -1
  385. package/dist/view/shaders/helpers.d.ts +2 -42
  386. package/dist/view/shaders/helpers.js +0 -6
  387. package/dist/view/shaders/projection.d.ts +15 -7
  388. package/dist/view/shaders/projection.js +23 -6
  389. package/dist/view/shaders/quad.d.ts +16 -12
  390. package/dist/view/shaders/quad.js +34 -13
  391. package/dist/view/style-rule.d.ts +5 -42
  392. package/dist/view/style-rule.js +20 -44
  393. package/dist/view/terrain/binding.d.ts +1 -0
  394. package/dist/view/terrain/binding.js +29 -0
  395. package/dist/view/terrain/context.d.ts +3 -4
  396. package/dist/view/terrain/context.js +4 -5
  397. package/dist/view/terrain/drape/geometry.js +1 -1
  398. package/dist/view/terrain/drape/pass.d.ts +1 -1
  399. package/dist/view/terrain/drape/pass.js +8 -7
  400. package/dist/view/terrain/polygon.d.ts +9 -5
  401. package/dist/view/terrain/polygon.js +16 -2
  402. package/dist/view/terrain/state.d.ts +1 -1
  403. package/dist/view/terrain/state.js +1 -1
  404. package/dist/view/terrain/tessellation.d.ts +2 -2
  405. package/dist/view/terrain/tessellation.js +1 -1
  406. package/dist/view/ui/auxiliary-handles.d.ts +6 -29
  407. package/dist/view/ui/bounds.js +8 -12
  408. package/dist/view/ui/handle-test.js +2 -2
  409. package/dist/view/ui/handle-thinning.js +17 -17
  410. package/dist/view/ui/handles.js +21 -13
  411. package/dist/view/ui/helper.d.ts +1 -1
  412. package/dist/view/ui/helper.js +1 -1
  413. package/dist/view/ui/index.d.ts +1 -1
  414. package/dist/view/ui/selection-scope.js +4 -2
  415. package/dist/view/ui/selection-ui/bounding-box.js +6 -6
  416. package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
  417. package/dist/view/ui/selection-ui/extension-registry.js +70 -7
  418. package/dist/view/ui/selection-ui/index.d.ts +2 -2
  419. package/dist/view/ui/selection-ui/index.js +1 -1
  420. package/dist/view/ui/selection-ui/renderer.js +15 -38
  421. package/dist/view/ui/selection-ui/types.d.ts +17 -2
  422. package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
  423. package/dist/view/ui/selection-ui-drawer.js +63 -2
  424. package/dist/view/ui/tentative.js +1 -1
  425. package/dist/webgl/index.d.ts +65 -0
  426. package/dist/webgl/index.js +62 -0
  427. package/package.json +38 -15
  428. package/dist/api/api.d.ts +0 -1259
  429. package/dist/api/api.js +0 -86
  430. package/dist/api/context.d.ts +0 -173
  431. package/dist/api/display-api.js +0 -23
  432. package/dist/api/event-api.d.ts +0 -13
  433. package/dist/api/event-api.js +0 -17
  434. package/dist/api/extension-api.d.ts +0 -46
  435. package/dist/api/extension-api.js +0 -85
  436. package/dist/api/feature-api.d.ts +0 -11
  437. package/dist/api/feature-api.js +0 -101
  438. package/dist/api/geometry/apply.d.ts +0 -51
  439. package/dist/api/geometry/boolean.d.ts +0 -28
  440. package/dist/api/geometry/boolean.js +0 -65
  441. package/dist/api/geometry/types.d.ts +0 -31
  442. package/dist/api/geometry-operations.d.ts +0 -162
  443. package/dist/api/geometry-operations.js +0 -94
  444. package/dist/api/group-api.d.ts +0 -10
  445. package/dist/api/group-api.js +0 -78
  446. package/dist/api/import-export/constants.d.ts +0 -29
  447. package/dist/api/import-export/constants.js +0 -40
  448. package/dist/api/import-export/file-name.d.ts +0 -10
  449. package/dist/api/import-export/file-name.js +0 -20
  450. package/dist/api/import-export/geojson-export.d.ts +0 -19
  451. package/dist/api/import-export/image-import.d.ts +0 -12
  452. package/dist/api/import-export/image-import.js +0 -53
  453. package/dist/api/import-export/index.d.ts +0 -9
  454. package/dist/api/import-export/index.js +0 -107
  455. package/dist/api/import-export/native-format.d.ts +0 -15
  456. package/dist/api/import-export/style-validation.d.ts +0 -27
  457. package/dist/api/import-export/style-validation.js +0 -49
  458. package/dist/api/import-export/types.d.ts +0 -26
  459. package/dist/api/index.d.ts +0 -15
  460. package/dist/api/index.js +0 -3
  461. package/dist/api/input-api.d.ts +0 -158
  462. package/dist/api/input-api.js +0 -144
  463. package/dist/api/instance-api.d.ts +0 -38
  464. package/dist/api/instance-api.js +0 -136
  465. package/dist/api/layer-api.d.ts +0 -12
  466. package/dist/api/layer-api.js +0 -62
  467. package/dist/api/selection-api.d.ts +0 -7
  468. package/dist/api/selection-api.js +0 -78
  469. package/dist/api/snapping-api.d.ts +0 -125
  470. package/dist/api/snapping-api.js +0 -50
  471. package/dist/api/topology-api.d.ts +0 -30
  472. package/dist/api/topology-api.js +0 -16
  473. package/dist/api/tracing-api.d.ts +0 -31
  474. package/dist/api/tracing-api.js +0 -16
  475. package/dist/dispatcher/hit-test/index.d.ts +0 -14
  476. package/dist/dispatcher/hit-test/index.js +0 -9
  477. package/dist/dispatcher/index.d.ts +0 -15
  478. package/dist/dispatcher/index.js +0 -3
  479. package/dist/display/columnar/index.d.ts +0 -12
  480. package/dist/display/columnar/index.js +0 -13
  481. package/dist/display/columnar/prepare.d.ts +0 -42
  482. package/dist/display/columnar/prepare.js +0 -116
  483. package/dist/display/index.d.ts +0 -13
  484. package/dist/display/types.js +0 -43
  485. package/dist/maplibre-gl-draw.d.ts +0 -47
  486. package/dist/modes/cursor.js +0 -72
  487. package/dist/modes/index.d.ts +0 -7
  488. package/dist/operations/index.d.ts +0 -9
  489. package/dist/operations/index.js +0 -3
  490. package/dist/plugins/index.d.ts +0 -10
  491. package/dist/plugins/mutation-hooks.d.ts +0 -28
  492. package/dist/plugins/mutation-hooks.js +0 -84
  493. package/dist/plugins/plugin-context.js +0 -367
  494. package/dist/plugins/plugin-manager.d.ts +0 -103
  495. package/dist/plugins/plugin-manager.js +0 -316
  496. package/dist/plugins/plugin.d.ts +0 -529
  497. package/dist/shared/config/index.d.ts +0 -17
  498. package/dist/shared/config/index.js +0 -8
  499. package/dist/shared/utils/index.d.ts +0 -15
  500. package/dist/shared/utils/index.js +0 -24
  501. package/dist/snapping/index.d.ts +0 -14
  502. package/dist/snapping/index.js +0 -4
  503. package/dist/store/change-merger.js +0 -102
  504. package/dist/store/event-bridge.js +0 -161
  505. package/dist/store/index.d.ts +0 -12
  506. package/dist/store/index.js +0 -4
  507. package/dist/view/index.d.ts +0 -47
  508. package/dist/view/index.js +0 -20
  509. /package/dist/api/{geometry/types.js → datasets.js} +0 -0
  510. /package/dist/api/{import-export/types.js → document.js} +0 -0
  511. /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
  512. /package/dist/{display/index.js → api/events.js} +0 -0
  513. /package/dist/{modes/index.js → api/extension/context.js} +0 -0
  514. /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
  515. /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
  516. /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
  517. /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
  518. /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
  519. /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
  520. /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
  521. /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
  522. /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
  523. /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
  524. /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
  525. /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
  526. /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
  527. /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
  528. /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
  529. /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
  530. /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
  531. /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
  532. /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
  533. /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
  534. /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
  535. /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
  536. /package/dist/{display → dataset}/chunk-set.js +0 -0
  537. /package/dist/{display → dataset}/dataset.d.ts +0 -0
  538. /package/dist/{display → dataset}/manager.js +0 -0
  539. /package/dist/{display → dataset}/provider.js +0 -0
  540. /package/dist/{display → dataset}/selection.d.ts +0 -0
  541. /package/dist/{display → dataset}/selection.js +0 -0
package/README.ja.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  このページの正は英語版 ([README.md](README.md)) です。
12
12
 
13
- ![東京駅周辺の playground。半透明で重なる円、細い線から太い線、破線と点線、枠と頂点ハンドルが付いた選択中の穴あき多角形、マルチポリゴン、円と四角と三角と星のマーカー、画像を囲むフリーハンドの線、不透明度を下げたレイヤー、カテゴリーのスタイル規則で塗り分けた区画、段階区分の規則で塗り分けた細かい六角形と凡例、レイヤーとグループの階層を示すレイヤーパネル](docs/images/overview.jpg)
13
+ ![東京駅周辺の playground。半透明で重なる円、細い線から太い線、破線と点線、輪郭が実線と破線と点線の面、枠と頂点ハンドルが付いた選択中の穴あき多角形、マルチポリゴン、円と四角と三角と星のマーカー、画像を囲むフリーハンドの線、不透明度を下げたレイヤー、カテゴリーのスタイル規則で塗り分けた区画、段階区分の規則で塗り分けた細かい六角形、レイヤーとグループと六角形のデータセットを並べたレイヤーのタブ (隣の凡例のタブに 2 つの規則が出ます)、選んだ多角形のインスペクター](docs/images/overview.jpg)
14
14
 
15
15
  ## 機能
16
16
 
@@ -93,12 +93,15 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
93
93
  決められ、クリックすると属性を読めます
94
94
  ([大量のデータ](docs/guides/large-data.ja.md))。
95
95
 
96
- ### 書き出しと読み込み
96
+ ### 保存と読み込み
97
97
 
98
- 独自形式で書き出すと、レイヤー、グループ、スタイル、画像まで含めて
99
- 保存でき、読み込めば同じ状態に戻ります。GeoJSON で書き出せば、ほかの
100
- ツールと地物をやり取りできます。地物を保存するストアは差し替えられ、
101
- 変更はすべてイベントで通知されます
98
+ 文書を独自形式で書き出すと、レイヤー、グループ、スタイル、画像まで
99
+ 含めて保存でき、読み込めば同じ状態に戻ります。GeoJSON で書き出せば、
100
+ ほかのツールと地物をやり取りできます。地物は GeoJSON の図形と
101
+ GeoJSON の properties を持つので、ファイルはコードで読む地物と同じ形に
102
+ なります。
103
+ 変更は取引ごとに 1 つのイベントで、出どころを添えて届きます。文書を
104
+ 保存するストアは差し替えられます
102
105
  ([保存と読み込み](docs/guides/save-load.ja.md))。
103
106
 
104
107
  ### 閲覧専用
@@ -108,7 +111,9 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
108
111
 
109
112
  ### 拡張
110
113
 
111
- プラグイン、独自のモード、独自の地物型を足して拡張できます
114
+ プラグイン、独自のモード、独自の描き方を持つ地物の型、重ね描き、
115
+ 吸着の候補やハンドルの提供者を足せます。どの種類も同じ方法で足し、
116
+ 足したときに返る関数で外します
112
117
  ([プラグイン](docs/guides/plugins.ja.md)、
113
118
  [独自の型](docs/guides/custom-types.ja.md))。
114
119
 
@@ -117,28 +122,36 @@ GeoParquet や Arrow の表は、点、線、多角形が行ごとに混ざっ
117
122
  ブラウザーですぐに試せます。インストールは要りません。
118
123
 
119
124
  - [プレイグラウンド][demo]
120
- - すべての機能を 1 つの画面で。レイヤーとプロパティのパネル付き
121
- - [基本][ex-basic]
122
- - 面の描画、変更のイベント、保存と復元
123
- - [書き出しと読み込み][ex-save-load]
124
- - GeoJSON と独自形式の書き出し、地図に落としたファイルの読み込み
125
- - [スタイル規則][ex-style-rules]
125
+ - すべての機能を 1 つの画面で。標準の UI 付き
126
+ - [例][examples]
127
+ - 20 の例。どれも、例を動かすページにそのコードを添えています
128
+
129
+ 例の一部を挙げます。
130
+
131
+ - [Get started][ex-get-started]
132
+ - 地物を描き、選び、パネルで直す
133
+ - [Save and load][ex-save-and-load]
134
+ - GeoJSON と独自形式、地図に落としたファイル、読み込みで外された地物
135
+ - [Style rules and legend][ex-style-rules-and-legend]
126
136
  - 属性の値で色を分ける 4 種類の規則と凡例
127
- - [吸着と幾何演算][ex-snapping-and-geometry]
128
- - 吸着、境界のなぞり、共有する頂点の同時移動、結合、切り抜き、
129
- バッファ、分割
130
- - [3D 地形][ex-terrain]
131
- - 3D 地形の上での描画と選択
132
- - [閲覧専用][ex-read-only]
133
- - 閲覧専用モード、操作のロック、ロックしたレイヤー
134
- - [プラグイン][ex-plugin]
135
- - フックと独自のモードを持つプラグイン
136
- - [独自の地物型][ex-custom-feature-type]
137
- - 独自のレンダラーと当たり判定を持つ地物型
138
- - [データセット][ex-large-data]
139
- - 5 万のマス目の色分けと、見えている範囲の点の取り寄せ
140
- - [100 万の点][ex-columnar-worker]
141
- - Worker で読み込む 100 万の点
137
+ - [Snapping and tracing][ex-snapping-and-tracing] と
138
+ [Geometry operations][ex-geometry-operations]
139
+ - 吸着、境界のなぞり、結合、交差、差、分割、バッファー
140
+ - [Terrain][ex-terrain]
141
+ - 3D 地形の上での描画と編集
142
+ - [Read-only viewer][ex-read-only-viewer]
143
+ - 見るための描画。閲覧専用、操作のロック、クリックした地物の属性
144
+ - [Plugins][ex-plugins]
145
+ - 独自のモードを持つプラグインと、標準の UI に足すその道具
146
+ - [Custom feature types][ex-custom-feature-types]
147
+ - 独自の描き方、当たり判定、範囲選択を持つ地物の型
148
+ - [Datasets][ex-datasets]
149
+ - Overture Maps の東京都心の建物と場所を描画の下と上に。場所は
150
+ 見えている範囲の分を取り寄せる
151
+ - [Columnar data in a Worker][ex-columnar-data-in-a-worker]
152
+ - 同じ建物を Worker で GeoParquet から読み込み、列のまま描く
153
+ - [Build your own UI][ex-custom-ui]
154
+ - 標準の UI を使わない、自分の道具のバーとパネル
142
155
 
143
156
  ## インストール
144
157
 
@@ -156,7 +169,7 @@ maplibre-gl (`~6.11.1`) を使います。まだ入っていなければ、npm 7
156
169
  import * as maplibregl from 'maplibre-gl';
157
170
  import 'maplibre-gl/dist/maplibre-gl.css';
158
171
  import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
159
- import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
172
+ import { createDraw } from '@sakuzu/maplibre-gl-draw';
160
173
 
161
174
  // maplibre-gl v6 はページごとに 1 回 worker の URL を要する (これは Vite の例)
162
175
  maplibregl.setWorkerUrl(workerUrl);
@@ -168,7 +181,7 @@ const map = new maplibregl.Map({
168
181
  zoom: 12,
169
182
  });
170
183
 
171
- const draw = createMapLibreGLDraw(map);
184
+ const draw = createDraw(map);
172
185
 
173
186
  // 自分のボタンで描き始める。クリックで頂点を足し、最初の頂点のクリックか
174
187
  // Enter で確定する
@@ -176,19 +189,35 @@ document.querySelector('#polygon')?.addEventListener('click', () => {
176
189
  draw.setMode('draw_polygon');
177
190
  });
178
191
 
179
- draw.on('draw.feature.create', ({ feature }) => {
180
- console.log(feature.id, feature.type, feature.coordinates);
192
+ draw.on('feature.created', ({ feature }) => {
193
+ console.log(feature.id, feature.type, feature.geometry);
181
194
  });
182
195
 
183
- // すべての地物を GeoJSON の FeatureCollection (文字列) で得る
196
+ // すべての地物を GeoJSON の FeatureCollection で得る
184
197
  document.querySelector('#save')?.addEventListener('click', () => {
185
- const { data } = draw.export('geojson');
186
- console.log(data);
198
+ console.log(JSON.stringify(draw.document.toGeoJSON()));
187
199
  });
188
200
  ```
189
201
 
190
- ページ全体は [examples/basic/](examples/basic/) にあります。
191
- [はじめかた](docs/getting-started.ja.md) で順を追って説明しています。
202
+ [はじめかた](docs/getting-started.ja.md) では、このページを順を追って
203
+ 作ります。[Get started][ex-get-started] の例は、自分のボタンの代わりに
204
+ 標準の UI を地図に重ねます。
205
+
206
+ ## 入口
207
+
208
+ ほかの入口が要るとき以外は、main の入口から import します。
209
+
210
+ - `@sakuzu/maplibre-gl-draw` は、描画のインスタンス (`createDraw`)、
211
+ その地物、レイヤー、グループ、データセット、イベント、設定、拡張の
212
+ 窓口です
213
+ - `@sakuzu/maplibre-gl-draw/geometry` は、地図の要らない図形の計算
214
+ です。長さや面積を測る、円やバッファーを作る、面を合成して分ける
215
+ ことができます。Node や Worker でも動きます
216
+ - `@sakuzu/maplibre-gl-draw/table` は、大きな表を Worker で読んで
217
+ データセットに渡す部品です
218
+ - `@sakuzu/maplibre-gl-draw/webgl` は、独自のシェーダーを書くための
219
+ 部品です。小さい版で変わることがあります。ほかの 3 つはセマンティック
220
+ バージョニングに従います
192
221
 
193
222
  ## 動作環境
194
223
 
@@ -209,9 +238,10 @@ document.querySelector('#save')?.addEventListener('click', () => {
209
238
  ## ドキュメント
210
239
 
211
240
  [docs/README.ja.md](docs/README.ja.md) に、はじめかた、手引き、
212
- リファレンス、内部の文書を読む順に並べています。mapbox-gl-draw や
241
+ リファレンス、内部の文書を読む順に並べています。1.0、mapbox-gl-draw、
213
242
  terra-draw から移る場合は [移行](docs/guides/migrating.ja.md) を参照して
214
- ください。
243
+ ください。[API リファレンス][api] のメインのエントリーのページは、
244
+ インスタンスの資源とそれぞれのメソッドの一覧から始まります。
215
245
 
216
246
  ## 開発に参加する
217
247
 
@@ -234,15 +264,18 @@ AGPL が製品に合わない場合は、Kasika, Inc. (可視化技研株式会
234
264
 
235
265
  [maplibre]: https://maplibre.org/maplibre-gl-js/docs/
236
266
  [custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
237
- [demo]: https://sakuzu.github.io/maplibre-gl-draw/
267
+ [demo]: https://sakuzu.github.io/maplibre-gl-draw/playground/
238
268
  [api]: https://sakuzu.github.io/maplibre-gl-draw/api/
239
- [ex-basic]: https://sakuzu.github.io/maplibre-gl-draw/examples/basic/
240
- [ex-save-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-load/
241
- [ex-style-rules]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules/
242
- [ex-snapping-and-geometry]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-geometry/
243
- [ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain/
244
- [ex-read-only]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only/
245
- [ex-plugin]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugin/
246
- [ex-custom-feature-type]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-type/
247
- [ex-large-data]: https://sakuzu.github.io/maplibre-gl-draw/examples/large-data/
248
- [ex-columnar-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-worker/
269
+ [examples]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/
270
+ [ex-get-started]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/get-started.html
271
+ [ex-save-and-load]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/save-and-load.html
272
+ [ex-style-rules-and-legend]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/style-rules-and-legend.html
273
+ [ex-snapping-and-tracing]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/snapping-and-tracing.html
274
+ [ex-geometry-operations]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/geometry-operations.html
275
+ [ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/terrain.html
276
+ [ex-read-only-viewer]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/read-only-viewer.html
277
+ [ex-plugins]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/plugins.html
278
+ [ex-custom-feature-types]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/custom-feature-types.html
279
+ [ex-datasets]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/datasets.html
280
+ [ex-columnar-data-in-a-worker]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/columnar-data-in-a-worker.html
281
+ [ex-custom-ui]: https://sakuzu.github.io/maplibre-gl-draw/ja/examples/custom-ui.html
package/README.md CHANGED
@@ -8,7 +8,7 @@ it does on a flat map.
8
8
  [Demos][demo] | [Documentation](docs/README.md) | [API reference][api] |
9
9
  [日本語](README.ja.md)
10
10
 
11
- ![The playground over central Tokyo: overlapping translucent circles, lines from thin to thick, dashed and dotted lines, a polygon with a hole selected with its frame and vertex handles, a multipolygon, circle, square, triangle and star markers, a freehand loop around an image, a faded layer, parcels colored by a categorical rule, a fine hexagon grid colored by a graduated rule, a legend, and the Layers panel showing layers and groups](docs/images/overview.jpg)
11
+ ![The playground over central Tokyo: overlapping translucent circles, lines from thin to thick, dashed and dotted lines, areas with a solid, a dashed and a dotted outline, a polygon with a hole selected with its frame and vertex handles, a multipolygon, circle, square, triangle and star markers, a freehand loop around an image, a faded layer, parcels colored by a categorical rule, a fine hexagon grid colored by a graduated rule, the Layers tab listing the layers, the groups and the hexagon dataset (the Legend tab beside it lists both rules), and the inspector of the selected polygon](docs/images/overview.jpg)
12
12
 
13
13
  ## Features
14
14
 
@@ -97,12 +97,15 @@ large file opens. It is styled by the same style rules as drawn
97
97
  features, and a click reads its properties
98
98
  ([large data](docs/guides/large-data.md)).
99
99
 
100
- ### Export and load
100
+ ### Save and load
101
101
 
102
- Export in the native format to keep layers, groups, styles and images,
103
- and load it to get the same state back. Export as GeoJSON to exchange
104
- features with other tools. The store that holds the features can be
105
- replaced, and every change is reported as an event
102
+ Write the document in the native format to keep layers, groups, styles
103
+ and images, and load it to get the same state back. Write it as GeoJSON
104
+ to exchange features with other tools: a feature holds a GeoJSON
105
+ geometry and GeoJSON properties, so the file has the shape of the
106
+ features you read in code.
107
+ Every change arrives as one event per transaction, with where it came
108
+ from, and the store that holds the document can be replaced
106
109
  ([save and load](docs/guides/save-load.md)).
107
110
 
108
111
  ### Read-only
@@ -112,8 +115,10 @@ drawing ([read-only](docs/guides/read-only.md)).
112
115
 
113
116
  ### Extending
114
117
 
115
- Extend it with plugins, custom modes and custom feature types
116
- ([plugins](docs/guides/plugins.md),
118
+ Add plugins, modes of your own, feature types with their own drawing,
119
+ overlays, and providers of snapping candidates and handles. Every kind
120
+ is added the same way and removed with the function that adding
121
+ returns ([plugins](docs/guides/plugins.md),
117
122
  [custom types](docs/guides/custom-types.md)).
118
123
 
119
124
  ## Demos
@@ -121,31 +126,41 @@ Extend it with plugins, custom modes and custom feature types
121
126
  Try them in the browser, with nothing to install.
122
127
 
123
128
  - [Playground][demo]
124
- - Every feature in one editor, with layer and property panels
125
- - [Basic][ex-basic]
126
- - Drawing polygons, the change events, saving and restoring
127
- - [Export and load][ex-save-load]
128
- - Export as GeoJSON and in the native format, loading files dropped on
129
- the map
130
- - [Style rules][ex-style-rules]
129
+ - Every feature in one editor, with the standard UI
130
+ - [Examples][examples]
131
+ - Twenty examples, each on a page that runs it beside its code
132
+
133
+ Among the examples:
134
+
135
+ - [Get started][ex-get-started]
136
+ - Drawing, selecting and changing features in the panel
137
+ - [Save and load][ex-save-and-load]
138
+ - GeoJSON and the native format, files dropped on the map, the
139
+ features a load leaves out
140
+ - [Style rules and legend][ex-style-rules-and-legend]
131
141
  - The four kinds of style rule that color features by a property, with
132
142
  a legend
133
- - [Snapping and geometry][ex-snapping-and-geometry]
134
- - Snapping, tracing a boundary, moving shared vertices, union,
135
- subtract, buffer and split
136
- - [3D terrain][ex-terrain]
137
- - Drawing and selecting on 3D terrain
138
- - [Read-only][ex-read-only]
139
- - The read-only mode, the interaction lock and locked layers
140
- - [Plugin][ex-plugin]
141
- - A plugin with a hook and a mode of its own
142
- - [Custom feature type][ex-custom-feature-type]
143
- - A kind of feature with its own renderer and hit test
144
- - [Datasets][ex-large-data]
145
- - 50,000 cells colored by a property, and points fetched for the part
146
- of the map in view
147
- - [A million points][ex-columnar-worker]
148
- - A million points read in a Worker
143
+ - [Snapping and tracing][ex-snapping-and-tracing] and
144
+ [geometry operations][ex-geometry-operations]
145
+ - Snapping, tracing a boundary, union, intersection, difference, split
146
+ and buffer
147
+ - [Terrain][ex-terrain]
148
+ - Drawing and editing on 3D terrain
149
+ - [Read-only viewer][ex-read-only-viewer]
150
+ - A drawing to look at: read-only, the interaction lock, the attributes
151
+ of the feature clicked
152
+ - [Plugins][ex-plugins]
153
+ - A plugin with a mode of its own, and its tool in the standard UI
154
+ - [Custom feature types][ex-custom-feature-types]
155
+ - A kind of feature with its own drawing, hit test and box selection
156
+ - [Datasets][ex-datasets]
157
+ - The buildings and places of central Tokyo from Overture Maps, under
158
+ and over the drawing, with places fetched for the part in view
159
+ - [Columnar data in a Worker][ex-columnar-data-in-a-worker]
160
+ - The same buildings read from GeoParquet in a Worker and drawn from
161
+ their columns
162
+ - [Build your own UI][ex-custom-ui]
163
+ - A toolbar and a panel of your own, without the standard UI
149
164
 
150
165
  ## Installation
151
166
 
@@ -163,7 +178,7 @@ npm 7 and later install it along.
163
178
  import * as maplibregl from 'maplibre-gl';
164
179
  import 'maplibre-gl/dist/maplibre-gl.css';
165
180
  import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
166
- import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
181
+ import { createDraw } from '@sakuzu/maplibre-gl-draw';
167
182
 
168
183
  // maplibre-gl v6 needs its worker URL once per page (Vite shown here)
169
184
  maplibregl.setWorkerUrl(workerUrl);
@@ -175,7 +190,7 @@ const map = new maplibregl.Map({
175
190
  zoom: 12,
176
191
  });
177
192
 
178
- const draw = createMapLibreGLDraw(map);
193
+ const draw = createDraw(map);
179
194
 
180
195
  // Your own button starts drawing. Click to add vertices; click the first
181
196
  // vertex or press Enter to finish
@@ -183,19 +198,35 @@ document.querySelector('#polygon')?.addEventListener('click', () => {
183
198
  draw.setMode('draw_polygon');
184
199
  });
185
200
 
186
- draw.on('draw.feature.create', ({ feature }) => {
187
- console.log(feature.id, feature.type, feature.coordinates);
201
+ draw.on('feature.created', ({ feature }) => {
202
+ console.log(feature.id, feature.type, feature.geometry);
188
203
  });
189
204
 
190
- // Every feature as a GeoJSON FeatureCollection (a string)
205
+ // Every feature as a GeoJSON FeatureCollection
191
206
  document.querySelector('#save')?.addEventListener('click', () => {
192
- const { data } = draw.export('geojson');
193
- console.log(data);
207
+ console.log(JSON.stringify(draw.document.toGeoJSON()));
194
208
  });
195
209
  ```
196
210
 
197
- The complete page is [examples/basic/](examples/basic/), and
198
- [getting started](docs/getting-started.md) walks through it step by step.
211
+ [Getting started](docs/getting-started.md) builds this page step by
212
+ step, and the [Get started][ex-get-started] example lays the standard UI
213
+ over the map in place of your own buttons.
214
+
215
+ ## Entry points
216
+
217
+ Import from the main entry unless you need one of the others.
218
+
219
+ - `@sakuzu/maplibre-gl-draw`: the draw instance (`createDraw`), its
220
+ features, layers, groups and datasets, the events, the options and the
221
+ extension contract
222
+ - `@sakuzu/maplibre-gl-draw/geometry`: geometry that needs no map:
223
+ measure lengths and areas, build circles and buffers, combine and split
224
+ polygons. It also runs in Node and in Workers
225
+ - `@sakuzu/maplibre-gl-draw/table`: read a large table in a Worker and
226
+ pass it to a dataset
227
+ - `@sakuzu/maplibre-gl-draw/webgl`: the building blocks for writing your
228
+ own shaders. It may change in a minor release; the other three follow
229
+ semantic versioning
199
230
 
200
231
  ## Compatibility
201
232
 
@@ -217,8 +248,10 @@ The complete page is [examples/basic/](examples/basic/), and
217
248
  ## Documentation
218
249
 
219
250
  [docs/README.md](docs/README.md) lists every document in reading order:
220
- getting started, the guides, the reference and the internals. Coming from
221
- mapbox-gl-draw or terra-draw? See [migrating](docs/guides/migrating.md).
251
+ getting started, the guides, the reference and the internals. Moving from
252
+ 1.0, mapbox-gl-draw or terra-draw? See [migrating](docs/guides/migrating.md).
253
+ The page of the main entry in the [API reference][api] opens with a list
254
+ of the resources of the instance and the methods each one has.
222
255
 
223
256
  ## Contributing
224
257
 
@@ -241,15 +274,18 @@ The notices of the third-party code this package contains are in
241
274
 
242
275
  [maplibre]: https://maplibre.org/maplibre-gl-js/docs/
243
276
  [custom-layer]: https://maplibre.org/maplibre-gl-js/docs/API/interfaces/CustomLayerInterface/
244
- [demo]: https://sakuzu.github.io/maplibre-gl-draw/
277
+ [demo]: https://sakuzu.github.io/maplibre-gl-draw/playground/
245
278
  [api]: https://sakuzu.github.io/maplibre-gl-draw/api/
246
- [ex-basic]: https://sakuzu.github.io/maplibre-gl-draw/examples/basic/
247
- [ex-save-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-load/
248
- [ex-style-rules]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules/
249
- [ex-snapping-and-geometry]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-geometry/
250
- [ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain/
251
- [ex-read-only]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only/
252
- [ex-plugin]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugin/
253
- [ex-custom-feature-type]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-type/
254
- [ex-large-data]: https://sakuzu.github.io/maplibre-gl-draw/examples/large-data/
255
- [ex-columnar-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-worker/
279
+ [examples]: https://sakuzu.github.io/maplibre-gl-draw/examples/
280
+ [ex-get-started]: https://sakuzu.github.io/maplibre-gl-draw/examples/get-started.html
281
+ [ex-save-and-load]: https://sakuzu.github.io/maplibre-gl-draw/examples/save-and-load.html
282
+ [ex-style-rules-and-legend]: https://sakuzu.github.io/maplibre-gl-draw/examples/style-rules-and-legend.html
283
+ [ex-snapping-and-tracing]: https://sakuzu.github.io/maplibre-gl-draw/examples/snapping-and-tracing.html
284
+ [ex-geometry-operations]: https://sakuzu.github.io/maplibre-gl-draw/examples/geometry-operations.html
285
+ [ex-terrain]: https://sakuzu.github.io/maplibre-gl-draw/examples/terrain.html
286
+ [ex-read-only-viewer]: https://sakuzu.github.io/maplibre-gl-draw/examples/read-only-viewer.html
287
+ [ex-plugins]: https://sakuzu.github.io/maplibre-gl-draw/examples/plugins.html
288
+ [ex-custom-feature-types]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-feature-types.html
289
+ [ex-datasets]: https://sakuzu.github.io/maplibre-gl-draw/examples/datasets.html
290
+ [ex-columnar-data-in-a-worker]: https://sakuzu.github.io/maplibre-gl-draw/examples/columnar-data-in-a-worker.html
291
+ [ex-custom-ui]: https://sakuzu.github.io/maplibre-gl-draw/examples/custom-ui.html
@@ -273,3 +273,32 @@ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
273
273
  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
274
274
  THIS SOFTWARE.
275
275
  ```
276
+
277
+ ---
278
+
279
+ ## Sample data of the examples (Overture Maps)
280
+
281
+ The examples of the repository (`examples/`, not part of the package)
282
+ show buildings and places of central Tokyo from Overture Maps, in
283
+ `examples/public/data/`. `scripts/fetch-overture-sample.mjs` extracts
284
+ them, and `examples/public/data/README.md` records the release, the
285
+ extent, the counts and the sources of the rows.
286
+
287
+ Attribution: © OpenStreetMap contributors, Overture Maps Foundation.
288
+
289
+ - The buildings (`tokyo-buildings.geojson` and `tokyo-buildings.parquet`)
290
+ are a database derived from Overture's buildings theme, under the Open
291
+ Database License 1.0 (ODbL): <https://opendatacommons.org/licenses/odbl/1-0/>.
292
+ Its rows come from OpenStreetMap and Microsoft's Global ML Building
293
+ Footprints (ODbL), and from Qian Shi, et al., A First High-quality
294
+ Vector Data of Buildings in East Asian Countries Based on a
295
+ Comprehensive Large-scale Mapping Framework, Zenodo,
296
+ doi:10.5281/zenodo.8174931 (CC BY 4.0)
297
+ - The places (`tokyo-places.geojson`) come from Overture's places theme,
298
+ under the Community Data License Agreement Permissive 2.0:
299
+ <https://cdla.dev/permissive-2-0/>. Rows from Foursquare are under the
300
+ Apache License 2.0 (Copyright 2024 Foursquare Labs, Inc.), and rows from
301
+ AllThePlaces under CC0 1.0
302
+
303
+ The terms of every source are on
304
+ <https://docs.overturemaps.org/attribution/>.