@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,367 +0,0 @@
1
- // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
- // SPDX-License-Identifier: AGPL-3.0-only
3
- import { createId } from '../shared/utils/id.js';
4
- import { anchorElevationMeters, getAnchorElevationGeneration, projectAnchor, } from '../view/terrain/anchor.js';
5
- import { computeBoundingBox, } from '../view/ui/selection-ui/index.js';
6
- /**
7
- * Create a PluginContext
8
- *
9
- * @internal
10
- */
11
- export function createPluginContext(deps) {
12
- const { store, eventEmitter, autoNameGenerator, spatialIndex, getActiveLayerId, findLayerForItem, findGroupForFeature, getModeManager, getDraw, terrain, selectionExtensions, } = deps;
13
- /**
14
- * Runs a write in a transaction whose notification carries the given source (the source
15
- * of the outermost transaction applies, so inside batch() it is that of the batch)
16
- */
17
- function write(fn, source) {
18
- store.transact(fn, source ?? 'local');
19
- }
20
- /**
21
- * Convert features from the GeoJSON Feature form to Feature and add them to
22
- * the Store
23
- */
24
- function addFeaturesToStore(features, source) {
25
- const ids = [];
26
- const layerId = getActiveLayerId();
27
- write(() => {
28
- for (const feature of features) {
29
- const id = feature.id ?? createId();
30
- const drawFeature = {
31
- id,
32
- type: feature.geometry.type,
33
- coordinates: feature.geometry.type === 'Point'
34
- ? feature.geometry.coordinates
35
- : feature.geometry
36
- .coordinates,
37
- layerId,
38
- properties: feature.properties ?? {},
39
- locked: false,
40
- visible: true,
41
- };
42
- // Note: adding to layer.order happens automatically inside createFeature().
43
- // A write refused because the Store is read-only is not listed.
44
- if (store.createFeature(drawFeature))
45
- ids.push(id);
46
- }
47
- }, source);
48
- return ids;
49
- }
50
- return {
51
- // === Reference to the MapLibreGLDraw instance itself (to call the extension point APIs) ===
52
- get draw() {
53
- return getDraw();
54
- },
55
- getStore: () => store,
56
- autoNameGenerator,
57
- // === Read API ===
58
- getFeature: (id) => store.getFeature(id),
59
- getAllFeatures: () => store.getAllFeatures(),
60
- getGroup: (id) => store.getGroup(id),
61
- getAllGroups: () => store.getAllGroups(),
62
- getLayer: (id) => store.getLayer(id),
63
- getAllLayers: () => store.getAllLayers(),
64
- getSelection: () => store.getSelection(),
65
- getSelectedIds: () => {
66
- const selection = store.getSelection();
67
- return selection.type === 'feature' ? [...selection.ids] : [];
68
- },
69
- // The name is confusing, but this is the order inside the active layer.
70
- // Use getLayerIds for the stacking order of the layers.
71
- getLayerOrder: () => {
72
- const layer = store.getLayer(getActiveLayerId());
73
- return layer?.order ?? [];
74
- },
75
- getLayerIds: () => store.getLayerOrder(),
76
- getMode: () => store.getMode(),
77
- // === Feature mutations ===
78
- addFeatures: (features, source) => addFeaturesToStore(features, source),
79
- updateFeature: (id, feature, source) => {
80
- const existing = store.getFeature(id);
81
- if (existing) {
82
- const merged = {
83
- ...existing,
84
- ...feature,
85
- properties: { ...existing.properties, ...feature.properties },
86
- };
87
- write(() => store.updateFeature(id, merged), source);
88
- }
89
- },
90
- deleteFeatures: (ids, source) => {
91
- const idsArray = Array.isArray(ids) ? ids : [ids];
92
- if (!idsArray.some((id) => store.getFeature(id) !== undefined))
93
- return;
94
- write(() => {
95
- // Remove from the selection state (only when features are selected)
96
- const selection = store.getSelection();
97
- if (selection.type === 'feature') {
98
- const remainingSelection = selection.ids.filter((id) => !idsArray.includes(id));
99
- if (remainingSelection.length !== selection.ids.length) {
100
- if (remainingSelection.length === 0) {
101
- store.setSelection(null, []);
102
- }
103
- else {
104
- store.setSelection('feature', remainingSelection);
105
- }
106
- }
107
- }
108
- for (const id of idsArray) {
109
- // Remove from the group
110
- const groupId = findGroupForFeature(id);
111
- if (groupId) {
112
- const group = store.getGroup(groupId);
113
- if (group) {
114
- store.updateGroup(groupId, {
115
- featureIds: group.featureIds.filter((fid) => fid !== id),
116
- });
117
- }
118
- }
119
- // Remove from the order of the layer
120
- const layerId = findLayerForItem(id);
121
- if (layerId) {
122
- const layer = store.getLayer(layerId);
123
- if (layer) {
124
- store.updateLayer(layerId, { order: layer.order.filter((i) => i !== id) });
125
- }
126
- }
127
- store.deleteFeature(id);
128
- }
129
- }, source);
130
- },
131
- // === Group mutations ===
132
- createGroup: (group, source) => {
133
- const newGroup = {
134
- id: group.id ?? createId(),
135
- name: group.name,
136
- visible: group.visible ?? true,
137
- locked: group.locked ?? false,
138
- featureIds: group.featureIds ?? [],
139
- };
140
- write(() => store.createGroup(newGroup), source);
141
- },
142
- updateGroup: (id, updates, source) => {
143
- if (!store.getGroup(id))
144
- return;
145
- write(() => store.updateGroup(id, updates), source);
146
- },
147
- deleteGroup: (id, source) => {
148
- if (!store.getGroup(id))
149
- return;
150
- write(() => store.deleteGroup(id), source);
151
- },
152
- addFeatureToGroup: (groupId, featureId, index, source) => {
153
- write(() => {
154
- const feature = store.getFeature(featureId);
155
- const group = store.getGroup(groupId);
156
- if (!feature || !group)
157
- return;
158
- if (group.featureIds.includes(featureId))
159
- return; // Already contained in the group
160
- // When the feature already belongs to another group, remove it from that group
161
- if (feature.groupId && feature.groupId !== groupId) {
162
- const oldGroup = store.getGroup(feature.groupId);
163
- if (oldGroup) {
164
- store.updateGroup(feature.groupId, {
165
- featureIds: oldGroup.featureIds.filter((id) => id !== featureId),
166
- });
167
- }
168
- }
169
- // Remove the feature from the order of the layer (when it is contained
170
- // in the order on its own)
171
- const currentLayerId = findLayerForItem(featureId);
172
- if (currentLayerId) {
173
- const currentLayer = store.getLayer(currentLayerId);
174
- if (currentLayer?.order.includes(featureId)) {
175
- store.updateLayer(currentLayerId, {
176
- order: currentLayer.order.filter((id) => id !== featureId),
177
- });
178
- }
179
- }
180
- // Add it to the featureIds of the group
181
- const newFeatureIds = [...group.featureIds];
182
- if (index !== undefined) {
183
- newFeatureIds.splice(index, 0, featureId);
184
- }
185
- else {
186
- newFeatureIds.push(featureId);
187
- }
188
- store.updateGroup(groupId, { featureIds: newFeatureIds });
189
- // Get the layer the group belongs to
190
- const targetLayerId = findLayerForItem(groupId);
191
- // Update the groupId and the layerId of the feature
192
- const updates = { groupId };
193
- if (targetLayerId && feature.layerId !== targetLayerId) {
194
- updates.layerId = targetLayerId;
195
- }
196
- store.updateFeature(featureId, updates);
197
- }, source);
198
- },
199
- removeFeatureFromGroup: (groupId, featureId, source) => {
200
- write(() => {
201
- const group = store.getGroup(groupId);
202
- const feature = store.getFeature(featureId);
203
- if (!group || !feature || feature.groupId !== groupId)
204
- return;
205
- // Find the layer the group belongs to
206
- const layerId = findLayerForItem(groupId);
207
- // Remove the feature from the group
208
- store.updateGroup(groupId, {
209
- featureIds: group.featureIds.filter((id) => id !== featureId),
210
- });
211
- // Clear the groupId of the feature
212
- store.updateFeature(featureId, { groupId: undefined });
213
- // Add the feature to the order of the layer (right after the group)
214
- if (layerId) {
215
- const layer = store.getLayer(layerId);
216
- if (layer) {
217
- const groupIndex = layer.order.indexOf(groupId);
218
- const newOrder = [...layer.order];
219
- newOrder.splice(groupIndex + 1, 0, featureId);
220
- store.updateLayer(layerId, { order: newOrder });
221
- }
222
- }
223
- }, source);
224
- },
225
- findGroupForFeature,
226
- // === Layer mutations ===
227
- createLayer: (layer, source) => {
228
- const newLayer = {
229
- id: layer.id ?? createId(),
230
- name: layer.name,
231
- visible: layer.visible ?? true,
232
- locked: layer.locked ?? false,
233
- opacity: layer.opacity ?? 1.0,
234
- order: layer.order ?? [],
235
- };
236
- write(() => store.createLayer(newLayer), source);
237
- },
238
- updateLayer: (id, updates, source) => {
239
- if (!store.getLayer(id))
240
- return;
241
- write(() => store.updateLayer(id, updates), source);
242
- },
243
- deleteLayer: (id, source) => {
244
- if (!store.getLayer(id))
245
- return;
246
- write(() => store.deleteLayer(id), source);
247
- },
248
- addToLayer: (layerId, featureId, source) => {
249
- const layer = store.getLayer(layerId);
250
- if (layer && !layer.order.includes(featureId)) {
251
- write(() => store.updateLayer(layerId, { order: [...layer.order, featureId] }), source);
252
- }
253
- },
254
- removeFromLayer: (layerId, featureId, source) => {
255
- const layer = store.getLayer(layerId);
256
- if (layer) {
257
- const order = layer.order.filter((id) => id !== featureId);
258
- write(() => store.updateLayer(layerId, { order }), source);
259
- }
260
- },
261
- findLayerForFeature: findLayerForItem,
262
- moveItemToLayer: (itemId, targetLayerId, targetIndex, source) => {
263
- write(() => {
264
- // Remove from the order of the current layer
265
- const currentLayerId = findLayerForItem(itemId);
266
- if (currentLayerId) {
267
- const currentLayer = store.getLayer(currentLayerId);
268
- if (currentLayer) {
269
- store.updateLayer(currentLayerId, {
270
- order: currentLayer.order.filter((id) => id !== itemId),
271
- });
272
- }
273
- }
274
- // When it belongs to a group, remove it from the group and clear the groupId as well
275
- const groupId = findGroupForFeature(itemId);
276
- if (groupId) {
277
- const group = store.getGroup(groupId);
278
- if (group) {
279
- store.updateGroup(groupId, {
280
- featureIds: group.featureIds.filter((id) => id !== itemId),
281
- });
282
- }
283
- // Clear the groupId of the feature
284
- const feature = store.getFeature(itemId);
285
- if (feature) {
286
- store.updateFeature(itemId, { groupId: undefined, layerId: targetLayerId });
287
- }
288
- }
289
- else {
290
- // When it does not belong to a group, update only the layerId
291
- const feature = store.getFeature(itemId);
292
- if (feature) {
293
- store.updateFeature(itemId, { layerId: targetLayerId });
294
- }
295
- }
296
- // Add it to the order of the target layer
297
- const targetLayer = store.getLayer(targetLayerId);
298
- if (targetLayer) {
299
- const newOrder = [...targetLayer.order];
300
- if (targetIndex !== undefined) {
301
- newOrder.splice(targetIndex, 0, itemId);
302
- }
303
- else {
304
- newOrder.push(itemId);
305
- }
306
- store.updateLayer(targetLayerId, { order: newOrder });
307
- }
308
- // For a group, update the layerId of every feature inside the group as well
309
- const group = store.getGroup(itemId);
310
- if (group) {
311
- for (const featureId of group.featureIds) {
312
- const groupFeature = store.getFeature(featureId);
313
- if (groupFeature) {
314
- store.updateFeature(featureId, { layerId: targetLayerId });
315
- }
316
- }
317
- }
318
- }, source);
319
- },
320
- setLayerItemOrder: (layerId, order, source) => {
321
- const layer = store.getLayer(layerId);
322
- if (!layer)
323
- return;
324
- write(() => store.updateLayer(layerId, { order: [...order] }), source);
325
- },
326
- setSelection: (type, ids, source) => {
327
- write(() => store.setSelection(type, ids), source);
328
- getModeManager().notifySelectionChange();
329
- },
330
- // === Event API ===
331
- emit: (event, data) => eventEmitter.emit(event, data),
332
- on: (event, handler) => {
333
- eventEmitter.on(event, handler);
334
- return () => eventEmitter.off(event, handler);
335
- },
336
- off: (event, handler) => eventEmitter.off(event, handler),
337
- // === Batch mutations ===
338
- // Wrapping in store.transact merges the StateChanges notifications into a
339
- // single one, so a subscriber that groups changes (into steps, for example)
340
- // sees one unit, and
341
- // the mutation hooks of the batch share one batchId
342
- batch: (fn) => store.transact(fn),
343
- // === Mode control ===
344
- setMode: (mode) => getModeManager().setMode(mode),
345
- // === Notification of external state change ===
346
- notifyStateReset: () => {
347
- getModeManager().notifyStateReset();
348
- },
349
- // === Vertex undo/redo ===
350
- undoVertex: () => {
351
- return getModeManager().undoVertex();
352
- },
353
- redoVertex: () => {
354
- return getModeManager().redoVertex();
355
- },
356
- // === Derived state ===
357
- invalidateFeatures: (type) => {
358
- spatialIndex.invalidateType(type);
359
- },
360
- // === Terrain anchors of this draw instance ===
361
- projectAnchor: (lng, lat) => projectAnchor(terrain, lng, lat),
362
- anchorElevationMeters: (lng, lat) => anchorElevationMeters(terrain, lng, lat),
363
- getAnchorElevationGeneration: () => getAnchorElevationGeneration(terrain),
364
- // === Selection extents of this draw instance ===
365
- computeBoundingBox: (feature) => computeBoundingBox(feature, selectionExtensions),
366
- };
367
- }
@@ -1,103 +0,0 @@
1
- /**
2
- * Plugin Manager
3
- *
4
- * Component responsible for registering and managing plugins and running hooks.
5
- */
6
- import type { DragNormalizedEvent, KeyNormalizedEvent, MouseNormalizedEvent } from '../dispatcher/types.js';
7
- import type { ModeFactory } from '../modes/handler.js';
8
- import type { Hooks, Plugin } from './plugin.js';
9
- /** The name of a plugin hook (a key of Hooks) */
10
- export type HookName = keyof Hooks;
11
- /**
12
- * Interface of the plugin manager
13
- */
14
- export interface PluginManager {
15
- /**
16
- * Register a plugin
17
- *
18
- * @returns the function that unregisters it (it does nothing for a plugin of the same name
19
- * that was already registered, which is skipped)
20
- */
21
- register(plugin: Plugin): () => void;
22
- /** Unregister a plugin */
23
- unregister(name: string): void;
24
- /** Run a hook */
25
- runHook<K extends HookName>(hookName: K, ...args: Parameters<NonNullable<Hooks[K]>>): void;
26
- /** Get the API of a plugin */
27
- getPluginApi<T>(name: string): T | undefined;
28
- /** Get the registered modes */
29
- getModes(): Record<string, ModeFactory>;
30
- /** Get the names of the registered plugins */
31
- getPluginNames(): string[];
32
- /**
33
- * Handle a keyboard event
34
- *
35
- * Calls onKeyDown of the registered plugins in order.
36
- * If any plugin returns true, the event is regarded as consumed.
37
- *
38
- * @param event Normalized keyboard event
39
- * @returns true when any plugin consumed the event
40
- */
41
- handleKeyDown(event: KeyNormalizedEvent): boolean;
42
- /**
43
- * Handle a mouse move event
44
- *
45
- * Calls onMouseMove of the registered plugins in order.
46
- *
47
- * @param event Normalized mouse move event
48
- */
49
- handleMouseMove(event: MouseNormalizedEvent): void;
50
- /**
51
- * Handle a drag move event
52
- *
53
- * Calls onDragMove of the registered plugins in order (the counterpart of
54
- * onMouseMove).
55
- *
56
- * @param event Normalized drag event
57
- */
58
- handleDragMove(event: DragNormalizedEvent): void;
59
- /**
60
- * Handle a mouse leave event
61
- *
62
- * Calls onMouseLeave of the registered plugins in order.
63
- */
64
- handleMouseLeave(): void;
65
- /**
66
- * Filter the selection candidates
67
- *
68
- * Applies filterSelection of the registered plugins in order.
69
- */
70
- filterSelectionCandidates(candidateIds: string[]): string[];
71
- /**
72
- * Notify the plugins that an already selected feature was clicked
73
- *
74
- * @returns true when any plugin handled it
75
- */
76
- handleFeatureClick(featureId: string): boolean;
77
- /**
78
- * Notify the plugins that a feature was double-clicked
79
- *
80
- * @returns true when any plugin handled it
81
- */
82
- handleFeatureDoubleClick(featureId: string): boolean;
83
- /**
84
- * Whether any plugin is in the middle of an interaction
85
- */
86
- isPluginInteracting(): boolean;
87
- /**
88
- * Complete the interaction of all plugins
89
- */
90
- finishPluginInteraction(): void;
91
- /**
92
- * Cancel the interaction of all plugins
93
- */
94
- cancelPluginInteraction(): void;
95
- /**
96
- * Get the DOM container of a plugin's interaction
97
- */
98
- getPluginInteractionContainer(): HTMLElement | null;
99
- /**
100
- * Notify the plugins that a feature was created
101
- */
102
- notifyFeatureCreated(featureId: string, featureType: string): void;
103
- }