@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,42 +0,0 @@
1
- import type { DatasetColumnarInput, DatasetColumnarPrepared } from './types.js';
2
- /**
3
- * Computes the bboxes, the spatial chunks and the spatial index of a columnar table.
4
- *
5
- * It is the work that `Dataset.setColumnar` would otherwise do on the main thread. Call it where the table is read (in a Worker), send the result along with the table,
6
- * and pass both to `setColumnar` (or to `addDataset` as `columnar` and `prepared`). It
7
- * uses neither maplibre nor WebGL, so it runs in any Worker.
8
- *
9
- * @param input The table
10
- * @returns The prepared arrays, which belong to this table only
11
- * @throws when the shape of the table does not add up (the same checks as `setColumnar`)
12
- *
13
- * @example In a Worker
14
- * ```ts
15
- * import { columnarTransferables, prepareDatasetColumnar } from '@sakuzu/maplibre-gl-draw/columnar';
16
- *
17
- * self.onmessage = async (event) => {
18
- * const input = await readTable(event.data); // your reader: a DatasetColumnarInput
19
- * const prepared = prepareDatasetColumnar(input);
20
- * self.postMessage({ input, prepared }, columnarTransferables(input, prepared));
21
- * };
22
- * ```
23
- */
24
- export declare function prepareDatasetColumnar(input: DatasetColumnarInput): DatasetColumnarPrepared;
25
- /**
26
- * Lists the buffers of a columnar table (and of its prepared arrays) for the transfer list of
27
- * `postMessage`, so that they move to the other thread without a copy.
28
- *
29
- * The geometry arrays of every child of a mixed geometry column are listed too. Each buffer
30
- * appears once, even when several arrays share it. A `SharedArrayBuffer` is left out
31
- * (it is shared, not moved). After the transfer the arrays are empty on the sending side.
32
- *
33
- * @param input The table
34
- * @param prepared The result of {@link prepareDatasetColumnar} for the table (optional)
35
- * @returns The buffers to pass as the transfer list
36
- *
37
- * @example
38
- * ```ts
39
- * worker.postMessage({ input, prepared }, columnarTransferables(input, prepared));
40
- * ```
41
- */
42
- export declare function columnarTransferables(input: DatasetColumnarInput, prepared?: DatasetColumnarPrepared): ArrayBuffer[];
@@ -1,116 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * The preparation of a columnar table, callable in a Worker
5
- *
6
- * It computes what a dataset needs before it can draw and hit test a table: the
7
- * bbox of every row, the spatial chunks and the spatial index. Done in a Worker together with the
8
- * reading of a file, the main thread receives the table and this result without a copy and
9
- * computes none of it again.
10
- *
11
- * A pure module: it depends on neither maplibre nor WebGL nor the DOM.
12
- */
13
- import { buildPackedRTree } from '../packed-rtree.js';
14
- import { partitionRows } from '../partition.js';
15
- import { ColumnarTable, isDictionaryColumn } from './table.js';
16
- /**
17
- * Computes the bboxes, the spatial chunks and the spatial index of a columnar table.
18
- *
19
- * It is the work that `Dataset.setColumnar` would otherwise do on the main thread. Call it where the table is read (in a Worker), send the result along with the table,
20
- * and pass both to `setColumnar` (or to `addDataset` as `columnar` and `prepared`). It
21
- * uses neither maplibre nor WebGL, so it runs in any Worker.
22
- *
23
- * @param input The table
24
- * @returns The prepared arrays, which belong to this table only
25
- * @throws when the shape of the table does not add up (the same checks as `setColumnar`)
26
- *
27
- * @example In a Worker
28
- * ```ts
29
- * import { columnarTransferables, prepareDatasetColumnar } from '@sakuzu/maplibre-gl-draw/columnar';
30
- *
31
- * self.onmessage = async (event) => {
32
- * const input = await readTable(event.data); // your reader: a DatasetColumnarInput
33
- * const prepared = prepareDatasetColumnar(input);
34
- * self.postMessage({ input, prepared }, columnarTransferables(input, prepared));
35
- * };
36
- * ```
37
- */
38
- export function prepareDatasetColumnar(input) {
39
- const table = new ColumnarTable(input);
40
- const bounds = table.computeBounds();
41
- const chunks = partitionRows(bounds, table.computeVertexCounts());
42
- const index = buildPackedRTree(bounds);
43
- return {
44
- length: table.length,
45
- bounds,
46
- chunkRows: chunks.rows,
47
- chunkOffsets: chunks.offsets,
48
- chunkBounds: chunks.bounds,
49
- indexNodeSize: index.nodeSize,
50
- indexItemCount: index.numItems,
51
- indexBoxes: index.boxes,
52
- indexEntries: index.indices,
53
- indexLevels: index.levelBounds,
54
- };
55
- }
56
- /**
57
- * Lists the buffers of a columnar table (and of its prepared arrays) for the transfer list of
58
- * `postMessage`, so that they move to the other thread without a copy.
59
- *
60
- * The geometry arrays of every child of a mixed geometry column are listed too. Each buffer
61
- * appears once, even when several arrays share it. A `SharedArrayBuffer` is left out
62
- * (it is shared, not moved). After the transfer the arrays are empty on the sending side.
63
- *
64
- * @param input The table
65
- * @param prepared The result of {@link prepareDatasetColumnar} for the table (optional)
66
- * @returns The buffers to pass as the transfer list
67
- *
68
- * @example
69
- * ```ts
70
- * worker.postMessage({ input, prepared }, columnarTransferables(input, prepared));
71
- * ```
72
- */
73
- export function columnarTransferables(input, prepared) {
74
- const buffers = new Set();
75
- const add = (view) => {
76
- if (view && view.buffer instanceof ArrayBuffer)
77
- buffers.add(view.buffer);
78
- };
79
- const addColumn = (column) => {
80
- if (!column)
81
- return;
82
- if (isDictionaryColumn(column))
83
- add(column.codes);
84
- else if (ArrayBuffer.isView(column))
85
- add(column);
86
- };
87
- const addGeometry = (geometry) => {
88
- add(geometry.coords);
89
- for (const offsets of geometry.offsets ?? [])
90
- add(offsets);
91
- };
92
- const geometry = input.geometry;
93
- if (geometry.type === 'Mixed') {
94
- add(geometry.types);
95
- add(geometry.offsets);
96
- for (const child of geometry.children)
97
- addGeometry(child);
98
- }
99
- else {
100
- addGeometry(geometry);
101
- }
102
- add(input.validity);
103
- addColumn(input.ids);
104
- for (const column of Object.values(input.columns ?? {}))
105
- addColumn(column);
106
- if (prepared) {
107
- add(prepared.bounds);
108
- add(prepared.chunkRows);
109
- add(prepared.chunkOffsets);
110
- add(prepared.chunkBounds);
111
- add(prepared.indexBoxes);
112
- add(prepared.indexEntries);
113
- add(prepared.indexLevels);
114
- }
115
- return [...buffers];
116
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Display module
3
- *
4
- * Read-only layers that show large amounts of data (datasets). They are a
5
- * path independent of the Store and do not go through the mechanisms of editing,
6
- * undo or events.
7
- *
8
- * Only the symbols that src/index.ts publishes are listed here (see "The public
9
- * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
10
- */
11
- export type { DatasetColumn, DatasetColumnarGeometry, DatasetColumnarGeometryType, DatasetColumnarInput, DatasetColumnarMixedGeometry, DatasetColumnarPrepared, DatasetDictionaryCodes, DatasetDictionaryColumn, } from './columnar/types.js';
12
- export type { DatasetCollisionThinning, DatasetThinningStats, ResolvedCollisionThinning, } from './thinning.js';
13
- export type { Dataset, DatasetBaseStyle, DatasetChangePayload, DatasetClickEventPayload, DatasetClickPayload, DatasetEventMap, DatasetFeatureInput, DatasetFeatureProvider, DatasetHoverPayload, DatasetOptions, DatasetOrder, DatasetPlacement, DatasetZoomScale, } from './types.js';
@@ -1,43 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /** Recursively checks whether it contains a position with 3 or more elements */
4
- function hasExtraPositionElements(value) {
5
- if (typeof value[0] === 'number') {
6
- return value.length !== 2;
7
- }
8
- return value.some(hasExtraPositionElements);
9
- }
10
- /** Returns a copy with every position truncated to the 2 elements [longitude, latitude] */
11
- function truncatePositions(value) {
12
- if (typeof value[0] === 'number') {
13
- return [value[0], value[1]];
14
- }
15
- return value.map(truncatePositions);
16
- }
17
- /**
18
- * Normalizes the input into a feature of the same shape as in the Store
19
- *
20
- * It fills in the optional fields and, since it is not put into the Store, layerId defaults to an
21
- * empty string. The coordinates may contain 3-element positions coming from GeoJSON (with an
22
- * elevation), so a copy truncated to 2 elements is made only when they do (ordinary input with
23
- * only 2 elements is not copied).
24
- *
25
- * @internal
26
- */
27
- export function normalizeDisplayFeature(input) {
28
- const coords = input.coordinates;
29
- const coordinates = hasExtraPositionElements(coords)
30
- ? truncatePositions(coords)
31
- : input.coordinates;
32
- return {
33
- id: input.id,
34
- type: input.type,
35
- coordinates,
36
- layerId: input.layerId ?? '',
37
- groupId: input.groupId,
38
- properties: input.properties ?? {},
39
- style: input.style,
40
- locked: input.locked ?? false,
41
- visible: input.visible !== false,
42
- };
43
- }
@@ -1,47 +0,0 @@
1
- /**
2
- * The factory of a draw instance: it builds the context, the event bridge, the rendering,
3
- * the input handling, the modes and the plugin manager, and registers the release of each
4
- * one for destroy.
5
- *
6
- * The Store is the single source of truth: input goes through the dispatcher into the Store,
7
- * and the view and the events follow the Store's notifications.
8
- */
9
- import type { Map as MapLibreMap } from 'maplibre-gl';
10
- import type { MapLibreGLDraw } from './api/api.js';
11
- import type { Options } from './api/context.js';
12
- export type { EventPayloads, MapLibreGLDraw } from './api/api.js';
13
- export type { Options } from './api/context.js';
14
- export type { ImportExportAPI } from './api/import-export/index.js';
15
- export type { Data, LoadResult, Metadata } from './store/types.js';
16
- /**
17
- * Creates a draw instance on a MapLibre map: the drawing and editing tools, their rendering and
18
- * their input handling.
19
- *
20
- * It can be called before, while or after the map loads. The render layers are added as soon
21
- * as the style accepts layers, and added again after `setStyle`. Unless
22
- * `initDefaultLayer: false` is given, the document starts with one empty layer. The instance
23
- * turns off the map's box zoom (Shift + drag selects features instead) and gives it back on
24
- * {@link MapLibreGLDraw.destroy}. Several instances can share a page, each on its own map.
25
- *
26
- * @param map the MapLibre map to draw on
27
- * @param options the options; every one can be omitted (see {@link Options})
28
- * @returns the draw instance
29
- *
30
- * @example
31
- * ```typescript
32
- * import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
33
- * import * as maplibregl from 'maplibre-gl';
34
- *
35
- * const map = new maplibregl.Map({
36
- * container: 'map',
37
- * style: 'https://demotiles.maplibre.org/style.json',
38
- * center: [139.767, 35.681],
39
- * zoom: 12,
40
- * });
41
- * const draw = createMapLibreGLDraw(map, { defaultMode: 'select' });
42
- *
43
- * draw.setMode('draw_polygon');
44
- * draw.on('draw.feature.create', ({ feature }) => console.log('Created', feature.id));
45
- * ```
46
- */
47
- export declare function createMapLibreGLDraw(map: MapLibreMap, options?: Options): MapLibreGLDraw;
@@ -1,72 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- import { getCursorForHandle, hitTestHandles, } from '../view/ui/handle-test.js';
4
- /**
5
- * Cursor management class
6
- *
7
- * @internal
8
- */
9
- export class CursorManager {
10
- constructor(canvas, defaultCursor = 'default') {
11
- Object.defineProperty(this, "canvas", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: void 0
16
- });
17
- Object.defineProperty(this, "defaultCursor", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: void 0
22
- });
23
- this.canvas = canvas;
24
- this.defaultCursor = defaultCursor;
25
- }
26
- /**
27
- * Sets the default cursor
28
- */
29
- setDefault() {
30
- this.canvas.style.cursor = this.defaultCursor;
31
- }
32
- /**
33
- * Sets the cursor
34
- */
35
- set(cursor) {
36
- this.canvas.style.cursor = cursor;
37
- }
38
- /**
39
- * Sets the cursor based on the handle hit result
40
- */
41
- setForHandle(handleHit) {
42
- this.canvas.style.cursor = getCursorForHandle(handleHit);
43
- }
44
- /**
45
- * Sets the pointer cursor
46
- */
47
- setPointer() {
48
- this.canvas.style.cursor = 'pointer';
49
- }
50
- /**
51
- * Sets the text cursor
52
- */
53
- setText() {
54
- this.canvas.style.cursor = 'text';
55
- }
56
- /**
57
- * Updates the cursor based on the selected features and the mouse position
58
- *
59
- * @returns true if a handle was hit
60
- */
61
- updateForSelection(screenPoint, selectedFeatures, bbox, transform, config, zoom, scope) {
62
- if (!bbox || selectedFeatures.length === 0) {
63
- return false;
64
- }
65
- const handleHit = hitTestHandles(screenPoint, selectedFeatures, transform, config, zoom, scope);
66
- if (handleHit) {
67
- this.setForHandle(handleHit);
68
- return true;
69
- }
70
- return false;
71
- }
72
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Modes module
3
- *
4
- * Only the symbols that src/index.ts publishes are listed here (see "The public
5
- * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
6
- */
7
- export type { ModeContext, ModeFactory, ModeHandler, SnapInputType } from './handler.js';
@@ -1,9 +0,0 @@
1
- /**
2
- * Operations module
3
- *
4
- * Only the symbols that src/index.ts publishes are listed here (see "The public
5
- * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
6
- */
7
- export type { ResizeState } from './resize.js';
8
- export type { TraceGraph, TraceGraphEdge, TraceGraphEndpoint, TraceGraphNode, } from './trace-graph.js';
9
- export { buildTraceGraph, findTracePath } from './trace-graph.js';
@@ -1,3 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- export { buildTraceGraph, findTracePath } from './trace-graph.js';
@@ -1,10 +0,0 @@
1
- /**
2
- * Plugin System
3
- *
4
- * Public API of the plugin system.
5
- *
6
- * Only the symbols that src/index.ts publishes are listed here (see "The public
7
- * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
8
- */
9
- export type { DragEndData, DragStartData, Hooks, HoverEvent, MouseLeaveEvent, MutationContext, Plugin, PluginContext, } from './plugin.js';
10
- export type { HookName, PluginManager } from './plugin-manager.js';
@@ -1,28 +0,0 @@
1
- /**
2
- * Mutation hooks
3
- *
4
- * Fires the after-mutation hooks of the plugins (feature / group / layer create, update and
5
- * delete, and the selection change) from the change notification of the Store. Every write
6
- * reaches the Store, so a hook sees every mutation whatever made it: the public API, a
7
- * drawing mode, a drag, the Delete key, import, a plugin, or a change applied from outside to
8
- * a replaced Store.
9
- *
10
- * The hooks run after the Store has changed, once per notification (one transaction), and
11
- * the hooks of one notification share its batchId and its source. The intermediate updates
12
- * of an edit in progress (isIntermediate) are not reported; the committing update that
13
- * follows them is.
14
- */
15
- import type { Store } from '../store/store.js';
16
- import type { StateChanges } from '../store/types.js';
17
- import type { MutationContext } from './plugin.js';
18
- import type { PluginManager } from './plugin-manager.js';
19
- /**
20
- * Subscribes to the Store and fires the mutation hooks of the plugins
21
- *
22
- * @returns the function that stops it
23
- */
24
- export declare function subscribeMutationHooks(store: Store, pluginManager: PluginManager): () => void;
25
- /**
26
- * Fires the mutation hooks for one change notification of the Store
27
- */
28
- export declare function runMutationHooks(pluginManager: PluginManager, changes: StateChanges, ctx: MutationContext): void;
@@ -1,84 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- /**
4
- * Subscribes to the Store and fires the mutation hooks of the plugins
5
- *
6
- * @returns the function that stops it
7
- */
8
- export function subscribeMutationHooks(store, pluginManager) {
9
- let notification = 0;
10
- return store.subscribe((changes) => {
11
- runMutationHooks(pluginManager, changes, {
12
- source: changes.source ?? 'local',
13
- batchId: `change_${++notification}`,
14
- });
15
- });
16
- }
17
- /**
18
- * Fires the mutation hooks for one change notification of the Store
19
- */
20
- export function runMutationHooks(pluginManager, changes, ctx) {
21
- const { features, groups, layers, selection } = changes;
22
- if (features) {
23
- if (features.created && features.created.length > 0) {
24
- pluginManager.runHook('feature:afterCreate', [...features.created], ctx);
25
- }
26
- const committed = foldCommittedUpdates(features.updated);
27
- if (committed.updated.length > 0) {
28
- pluginManager.runHook('feature:afterUpdate', committed.updated, committed.original, ctx);
29
- }
30
- if (features.deleted && features.deleted.length > 0) {
31
- pluginManager.runHook('feature:afterDelete', [...features.deleted], ctx);
32
- }
33
- }
34
- if (groups) {
35
- for (const group of groups.created ?? []) {
36
- pluginManager.runHook('group:afterCreate', group, ctx);
37
- }
38
- for (const entry of groups.updated ?? []) {
39
- pluginManager.runHook('group:afterUpdate', entry.group, entry.previous, ctx);
40
- }
41
- for (const group of groups.deleted ?? []) {
42
- pluginManager.runHook('group:afterDelete', group, ctx);
43
- }
44
- }
45
- if (layers) {
46
- for (const layer of layers.created ?? []) {
47
- pluginManager.runHook('layer:afterCreate', layer, ctx);
48
- }
49
- for (const entry of layers.updated ?? []) {
50
- pluginManager.runHook('layer:afterUpdate', entry.layer, entry.previous, ctx);
51
- }
52
- for (const layer of layers.deleted ?? []) {
53
- pluginManager.runHook('layer:afterDelete', layer, ctx);
54
- }
55
- }
56
- if (selection) {
57
- pluginManager.runHook('selection:afterChange', [...selection.ids], [...selection.previousIds], ctx);
58
- }
59
- }
60
- /**
61
- * Folds the committed updates of one notification into one entry per feature (the last
62
- * state, and the state before the first update), in the order of their first update
63
- */
64
- function foldCommittedUpdates(updates) {
65
- const byId = new Map();
66
- for (const entry of updates ?? []) {
67
- if (entry.isIntermediate)
68
- continue;
69
- const existing = byId.get(entry.id);
70
- if (existing) {
71
- existing.feature = entry.feature;
72
- }
73
- else {
74
- byId.set(entry.id, { feature: entry.feature, previous: entry.previous });
75
- }
76
- }
77
- const updated = [];
78
- const original = [];
79
- for (const { feature, previous } of byId.values()) {
80
- updated.push(feature);
81
- original.push(previous);
82
- }
83
- return { updated, original };
84
- }