@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
@@ -7,21 +7,52 @@
7
7
  * @internal
8
8
  */
9
9
  export function isLocallyHidden(feature, store) {
10
- if (store.isLocallyHidden(feature.id))
10
+ if (store.isHidden(feature.id))
11
11
  return true;
12
- if (feature.groupId && store.isLocallyHidden(feature.groupId))
12
+ if (feature.groupId && store.isHidden(feature.groupId))
13
13
  return true;
14
- if (store.isLocallyHidden(feature.layerId))
14
+ if (store.isHidden(feature.layerId))
15
15
  return true;
16
16
  return false;
17
17
  }
18
18
  /**
19
- * The list of features that should be displayed, for rendering and hit testing.
20
- * getOrderedFeatures (the pure list narrowed by the shared visible) with the locally
21
- * hidden ones removed on top of that.
19
+ * The features the document shows, in stacking order: listFeaturesInOrder without the ones
20
+ * whose own visible flag, or the one of their group or layer, is off. Local hiding is not
21
+ * applied.
22
+ *
23
+ * @internal
24
+ */
25
+ export function listShownFeatures(store) {
26
+ const layers = new Map();
27
+ const groups = new Map();
28
+ const layerShown = (id) => {
29
+ let shown = layers.get(id);
30
+ if (shown === undefined) {
31
+ shown = store.getLayer(id)?.visible === true;
32
+ layers.set(id, shown);
33
+ }
34
+ return shown;
35
+ };
36
+ const groupShown = (id) => {
37
+ let shown = groups.get(id);
38
+ if (shown === undefined) {
39
+ shown = store.getGroup(id)?.visible !== false;
40
+ groups.set(id, shown);
41
+ }
42
+ return shown;
43
+ };
44
+ return store
45
+ .listFeaturesInOrder()
46
+ .filter((feature) => feature.visible &&
47
+ layerShown(feature.layerId) &&
48
+ (feature.groupId === undefined || groupShown(feature.groupId)));
49
+ }
50
+ /**
51
+ * The list of features that should be displayed, for rendering and hit testing:
52
+ * listShownFeatures with the locally hidden ones removed on top of that.
22
53
  *
23
54
  * @internal
24
55
  */
25
56
  export function getDisplayFeatures(store) {
26
- return store.getOrderedFeatures().filter((feature) => !isLocallyHidden(feature, store));
57
+ return listShownFeatures(store).filter((feature) => !isLocallyHidden(feature, store));
27
58
  }
@@ -27,12 +27,6 @@ export interface FeatureLockStore {
27
27
  *
28
28
  * A lock is inherited top-down. A locked feature can still be selected; it cannot be moved,
29
29
  * resized, rotated, reshaped or deleted by the user.
30
- *
31
- * @example
32
- * ```ts
33
- * const feature = draw.getFeature(id);
34
- * if (feature && !isFeatureLocked(feature, draw.getStore())) draw.deleteFeature(id);
35
- * ```
36
30
  */
37
31
  export declare function isFeatureLocked(feature: Feature, store: FeatureLockStore): boolean;
38
32
  /**
@@ -5,12 +5,6 @@
5
5
  *
6
6
  * A lock is inherited top-down. A locked feature can still be selected; it cannot be moved,
7
7
  * resized, rotated, reshaped or deleted by the user.
8
- *
9
- * @example
10
- * ```ts
11
- * const feature = draw.getFeature(id);
12
- * if (feature && !isFeatureLocked(feature, draw.getStore())) draw.deleteFeature(id);
13
- * ```
14
8
  */
15
9
  export function isFeatureLocked(feature, store) {
16
10
  if (feature.locked)
@@ -20,8 +20,8 @@
20
20
  * reaches the heap limit. A folded entry keeps previous as the first state and layer/group as
21
21
  * the last state, so as the diff of a single flush it means the same as before folding.
22
22
  */
23
- import type { Group, Layer, StateChanges, UpdateSource } from '../types.js';
24
- export type StoreListener = (changes: StateChanges) => void;
23
+ import type { Group, Layer, StoreChange, UpdateSource } from '../types.js';
24
+ export type StoreListener = (changes: StoreChange) => void;
25
25
  export declare class ChangeBus {
26
26
  #private;
27
27
  /**
@@ -41,7 +41,7 @@ export declare class ChangeBus {
41
41
  /**
42
42
  * Merges the changes into pendingChanges. Flushes immediately if outside a transaction.
43
43
  */
44
- merge(changes: StateChanges): void;
44
+ merge(changes: StoreChange): void;
45
45
  /** Whether an update entry for this layer is already stacked within the same flush */
46
46
  hasPendingLayerUpdate(id: string): boolean;
47
47
  /** Whether an update entry for this group is already stacked within the same flush */
@@ -125,8 +125,20 @@ function appendChanges(target, changes, index) {
125
125
  target.mode = changes.mode;
126
126
  if (changes.uiStateChanged)
127
127
  target.uiStateChanged = true;
128
+ if (changes.reset === true)
129
+ target.reset = true;
128
130
  if (changes.metadata)
129
131
  target.metadata = changes.metadata;
132
+ // files
133
+ if (changes.files) {
134
+ if (!target.files)
135
+ target.files = {};
136
+ const t = target.files;
137
+ if (changes.files.created)
138
+ t.created = appendField(t.created, changes.files.created);
139
+ if (changes.files.deleted)
140
+ t.deleted = appendField(t.deleted, changes.files.deleted);
141
+ }
130
142
  }
131
143
  export class ChangeBus {
132
144
  /**
@@ -2,8 +2,8 @@
2
2
  * FileStore
3
3
  *
4
4
  * A Map wrapper for embedded files (FileData) such as images. It provides only CRUD,
5
- * independently of Feature / Layer / Group. Change notification is unnecessary (because the
6
- * rendering pipeline references the binary data directly).
5
+ * independently of Feature / Layer / Group. The Store around it notifies the files created and
6
+ * deleted.
7
7
  */
8
8
  import type { FileData } from '../types.js';
9
9
  export declare class FileStore {
@@ -1,51 +1 @@
1
- /**
2
- * MemoryUiState
3
- *
4
- * The in-memory UiState core holds for every Store (selection / editing / tentative /
5
- * boxSelection / dragState / vertexSelection / mode / read-only / interaction lock / local
6
- * visibility). Each setter merges its change into the ChangeBus of the Store.
7
- *
8
- * - Selection / mode / features being edited / Tentative are included in data change
9
- * notifications
10
- * - BoxSelection / DragState / VertexSelection are UI-only state, so they only raise the
11
- * uiStateChanged flag
12
- */
13
- import type { UiState } from '../store.js';
14
- import type { BoxSelection, DragState, Mode, Selection, SelectionType, TentativeState, VertexSelection } from '../types.js';
15
- import type { ChangeBus } from './change-bus.js';
16
- export declare class MemoryUiState implements UiState {
17
- #private;
18
- constructor(bus: ChangeBus);
19
- getSelection(): Selection;
20
- setSelection(type: SelectionType | null, ids: string[]): void;
21
- /**
22
- * Removes a deleted feature, group or layer from the selection (internal use)
23
- */
24
- removeFromSelection(id: string): void;
25
- getEditingIds(): readonly string[];
26
- startEditing(ids: string[]): void;
27
- endEditing(ids: string[]): void;
28
- /** Removal from editing that accompanies a feature deletion (internal use) */
29
- removeFromEditing(featureId: string): void;
30
- getTentative(): TentativeState | null;
31
- setTentative(state: TentativeState | null): void;
32
- getBoxSelection(): BoxSelection | null;
33
- setBoxSelection(box: BoxSelection | null): void;
34
- getDragState(): DragState | null;
35
- setDragState(state: DragState | null): void;
36
- getSelectedVertices(): VertexSelection | null;
37
- setSelectedVertices(selection: VertexSelection | null): void;
38
- getFollowedVertices(): VertexSelection[] | null;
39
- setFollowedVertices(selections: VertexSelection[] | null): void;
40
- getMode(): Mode;
41
- setMode(mode: Mode): void;
42
- isReadOnly(): boolean;
43
- setReadOnly(value: boolean): void;
44
- isInteractionLocked(): boolean;
45
- setInteractionLock(value: boolean): void;
46
- isLocallyHidden(id: string): boolean;
47
- getLocallyHidden(): ReadonlySet<string>;
48
- setLocallyHidden(id: string, hidden: boolean): void;
49
- /** Removes a deleted feature / group / layer from the hidden set (internal use). */
50
- removeFromLocallyHidden(id: string): void;
51
- }
1
+ export {};
@@ -11,115 +11,173 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
11
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
12
12
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
13
  };
14
- var _MemoryUiState_bus, _MemoryUiState_selection, _MemoryUiState_editingIds, _MemoryUiState_tentative, _MemoryUiState_boxSelection, _MemoryUiState_dragState, _MemoryUiState_selectedVertices, _MemoryUiState_followedVertices, _MemoryUiState_mode, _MemoryUiState_readOnly, _MemoryUiState_interactionLocked, _MemoryUiState_locallyHidden;
15
- export class MemoryUiState {
14
+ var _MemoryClientState_bus, _MemoryClientState_selection, _MemoryClientState_editingIds, _MemoryClientState_selectedVertices, _MemoryClientState_mode, _MemoryClientState_readOnly, _MemoryClientState_interactionLocked, _MemoryClientState_locallyHidden, _MemoryDrawingState_bus, _MemoryDrawingState_tentative, _MemoryDrawingState_boxSelection, _MemoryDrawingState_dragState, _MemoryDrawingState_followedVertices;
15
+ /**
16
+ * The state of this client the Store contract holds, in memory
17
+ *
18
+ * @internal
19
+ */
20
+ export class MemoryClientState {
16
21
  constructor(bus) {
17
- _MemoryUiState_bus.set(this, void 0);
18
- _MemoryUiState_selection.set(this, { type: null, ids: [] });
19
- _MemoryUiState_editingIds.set(this, []);
20
- _MemoryUiState_tentative.set(this, null);
21
- _MemoryUiState_boxSelection.set(this, null);
22
- _MemoryUiState_dragState.set(this, null);
23
- _MemoryUiState_selectedVertices.set(this, null);
24
- _MemoryUiState_followedVertices.set(this, null);
25
- _MemoryUiState_mode.set(this, 'select');
22
+ _MemoryClientState_bus.set(this, void 0);
23
+ _MemoryClientState_selection.set(this, { type: null, ids: [] });
24
+ _MemoryClientState_editingIds.set(this, []);
25
+ _MemoryClientState_selectedVertices.set(this, null);
26
+ _MemoryClientState_mode.set(this, 'select');
26
27
  // Read-only (forbids local writes to the document). Local state, not part of the document.
27
- _MemoryUiState_readOnly.set(this, false);
28
+ _MemoryClientState_readOnly.set(this, false);
28
29
  // Interaction lock (selection is allowed, but starting an edit operation is suppressed).
29
30
  // Local state that is orthogonal to readOnly and not part of the document. It does not stop writes
30
31
  // to the Store; it only rejects the start of an editing interaction from user input, for a
31
32
  // screen where the drawing is looked at and selected but not edited.
32
- _MemoryUiState_interactionLocked.set(this, false);
33
+ _MemoryClientState_interactionLocked.set(this, false);
33
34
  // The set of hidden ids for this client only (feature / group / layer). It is a layer separate
34
35
  // from the visible flag of the document, and rendering, hit testing and box selection all
35
36
  // respect it. Not part of the document.
36
- _MemoryUiState_locallyHidden.set(this, new Set());
37
- __classPrivateFieldSet(this, _MemoryUiState_bus, bus, "f");
37
+ _MemoryClientState_locallyHidden.set(this, new Set());
38
+ __classPrivateFieldSet(this, _MemoryClientState_bus, bus, "f");
38
39
  }
39
40
  // Selection
40
41
  getSelection() {
41
- return { type: __classPrivateFieldGet(this, _MemoryUiState_selection, "f").type, ids: [...__classPrivateFieldGet(this, _MemoryUiState_selection, "f").ids] };
42
+ return { type: __classPrivateFieldGet(this, _MemoryClientState_selection, "f").type, ids: [...__classPrivateFieldGet(this, _MemoryClientState_selection, "f").ids] };
42
43
  }
43
44
  setSelection(type, ids) {
44
- const previousType = __classPrivateFieldGet(this, _MemoryUiState_selection, "f").type;
45
- const previousIds = [...__classPrivateFieldGet(this, _MemoryUiState_selection, "f").ids];
46
- __classPrivateFieldSet(this, _MemoryUiState_selection, { type, ids: [...ids] }, "f");
47
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({
45
+ const previousType = __classPrivateFieldGet(this, _MemoryClientState_selection, "f").type;
46
+ const previousIds = [...__classPrivateFieldGet(this, _MemoryClientState_selection, "f").ids];
47
+ __classPrivateFieldSet(this, _MemoryClientState_selection, { type, ids: [...ids] }, "f");
48
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({
48
49
  selection: { type, ids: [...ids], previousType, previousIds },
49
50
  });
50
51
  }
51
- /**
52
- * Removes a deleted feature, group or layer from the selection (internal use)
53
- */
54
- removeFromSelection(id) {
55
- const previousType = __classPrivateFieldGet(this, _MemoryUiState_selection, "f").type;
56
- const previousIds = __classPrivateFieldGet(this, _MemoryUiState_selection, "f").ids;
57
- if (!previousIds.includes(id))
58
- return;
59
- const ids = previousIds.filter((selected) => selected !== id);
60
- const type = ids.length === 0 ? null : previousType;
61
- __classPrivateFieldSet(this, _MemoryUiState_selection, { type, ids }, "f");
62
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({
63
- selection: { type, ids: [...ids], previousType, previousIds: [...previousIds] },
64
- });
65
- }
66
52
  // Editing
67
53
  getEditingIds() {
68
54
  // Returning the internal array as is would let a retained snapshot be rewritten by a later
69
55
  // startEditing/endEditing, so a defensive copy is returned.
70
- return [...__classPrivateFieldGet(this, _MemoryUiState_editingIds, "f")];
56
+ return [...__classPrivateFieldGet(this, _MemoryClientState_editingIds, "f")];
71
57
  }
72
58
  startEditing(ids) {
73
- const newIds = ids.filter((id) => !__classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").includes(id));
59
+ const newIds = ids.filter((id) => !__classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").includes(id));
74
60
  if (newIds.length === 0)
75
61
  return;
76
- __classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").push(...newIds);
77
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ editing: { started: newIds } });
62
+ __classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").push(...newIds);
63
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ editing: { started: newIds } });
78
64
  }
79
65
  endEditing(ids) {
80
- const endedIds = ids.filter((id) => __classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").includes(id));
66
+ const endedIds = ids.filter((id) => __classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").includes(id));
81
67
  if (endedIds.length === 0)
82
68
  return;
83
- __classPrivateFieldSet(this, _MemoryUiState_editingIds, __classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").filter((id) => !ids.includes(id)), "f");
84
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ editing: { ended: endedIds } });
69
+ __classPrivateFieldSet(this, _MemoryClientState_editingIds, __classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").filter((id) => !ids.includes(id)), "f");
70
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ editing: { ended: endedIds } });
71
+ }
72
+ // VertexSelection
73
+ getVertexSelection() {
74
+ return __classPrivateFieldGet(this, _MemoryClientState_selectedVertices, "f");
75
+ }
76
+ setSelectedVertices(selection) {
77
+ __classPrivateFieldSet(this, _MemoryClientState_selectedVertices, selection
78
+ ? {
79
+ featureId: selection.featureId,
80
+ vertices: selection.vertices.map((ref) => ({ ...ref })),
81
+ }
82
+ : null, "f");
83
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
84
+ }
85
+ // Mode
86
+ getMode() {
87
+ return __classPrivateFieldGet(this, _MemoryClientState_mode, "f");
88
+ }
89
+ setMode(mode) {
90
+ const previous = __classPrivateFieldGet(this, _MemoryClientState_mode, "f");
91
+ if (mode === previous)
92
+ return;
93
+ __classPrivateFieldSet(this, _MemoryClientState_mode, mode, "f");
94
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ mode: { mode, previous } });
95
+ }
96
+ // ReadOnly
97
+ isReadOnly() {
98
+ return __classPrivateFieldGet(this, _MemoryClientState_readOnly, "f");
99
+ }
100
+ setReadOnly(value) {
101
+ if (__classPrivateFieldGet(this, _MemoryClientState_readOnly, "f") === value)
102
+ return;
103
+ __classPrivateFieldSet(this, _MemoryClientState_readOnly, value, "f");
104
+ // Whether handles are shown depends on read-only, so prompt a re-render.
105
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
85
106
  }
86
- /** Removal from editing that accompanies a feature deletion (internal use) */
87
- removeFromEditing(featureId) {
88
- const idx = __classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").indexOf(featureId);
89
- if (idx === -1)
107
+ // InteractionLock
108
+ isInteractionLocked() {
109
+ return __classPrivateFieldGet(this, _MemoryClientState_interactionLocked, "f");
110
+ }
111
+ setInteractionLock(value) {
112
+ if (__classPrivateFieldGet(this, _MemoryClientState_interactionLocked, "f") === value)
90
113
  return;
91
- __classPrivateFieldGet(this, _MemoryUiState_editingIds, "f").splice(idx, 1);
92
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ editing: { ended: [featureId] } });
114
+ __classPrivateFieldSet(this, _MemoryClientState_interactionLocked, value, "f");
115
+ // While the interaction lock is on, no handles are shown (only the selection box), so
116
+ // prompt a re-render.
117
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
118
+ }
119
+ // LocallyHidden
120
+ isHidden(id) {
121
+ return __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id);
122
+ }
123
+ listHidden() {
124
+ return __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f");
125
+ }
126
+ setLocallyHidden(id, hidden) {
127
+ const changed = hidden ? !__classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id) : __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id);
128
+ if (!changed)
129
+ return;
130
+ if (hidden)
131
+ __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").add(id);
132
+ else
133
+ __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").delete(id);
134
+ __classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
135
+ }
136
+ }
137
+ _MemoryClientState_bus = new WeakMap(), _MemoryClientState_selection = new WeakMap(), _MemoryClientState_editingIds = new WeakMap(), _MemoryClientState_selectedVertices = new WeakMap(), _MemoryClientState_mode = new WeakMap(), _MemoryClientState_readOnly = new WeakMap(), _MemoryClientState_interactionLocked = new WeakMap(), _MemoryClientState_locallyHidden = new WeakMap();
138
+ /**
139
+ * The state only the drawing reads, in memory
140
+ *
141
+ * @internal
142
+ */
143
+ export class MemoryDrawingState {
144
+ constructor(bus) {
145
+ _MemoryDrawingState_bus.set(this, void 0);
146
+ _MemoryDrawingState_tentative.set(this, null);
147
+ _MemoryDrawingState_boxSelection.set(this, null);
148
+ _MemoryDrawingState_dragState.set(this, null);
149
+ _MemoryDrawingState_followedVertices.set(this, null);
150
+ __classPrivateFieldSet(this, _MemoryDrawingState_bus, bus, "f");
93
151
  }
94
152
  // Tentative
95
153
  getTentative() {
96
- return __classPrivateFieldGet(this, _MemoryUiState_tentative, "f");
154
+ return __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f");
97
155
  }
98
156
  setTentative(state) {
99
- const previous = __classPrivateFieldGet(this, _MemoryUiState_tentative, "f");
100
- __classPrivateFieldSet(this, _MemoryUiState_tentative, state ? { ...state, coordinates: [...state.coordinates] } : null, "f");
101
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ tentative: { state: __classPrivateFieldGet(this, _MemoryUiState_tentative, "f"), previous } });
157
+ const previous = __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f");
158
+ __classPrivateFieldSet(this, _MemoryDrawingState_tentative, state ? { ...state, coordinates: [...state.coordinates] } : null, "f");
159
+ __classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ tentative: { state: __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f"), previous } });
102
160
  }
103
161
  // BoxSelection
104
162
  getBoxSelection() {
105
- return __classPrivateFieldGet(this, _MemoryUiState_boxSelection, "f");
163
+ return __classPrivateFieldGet(this, _MemoryDrawingState_boxSelection, "f");
106
164
  }
107
165
  setBoxSelection(box) {
108
- __classPrivateFieldSet(this, _MemoryUiState_boxSelection, box
166
+ __classPrivateFieldSet(this, _MemoryDrawingState_boxSelection, box
109
167
  ? {
110
168
  startPoint: [...box.startPoint],
111
169
  endPoint: [...box.endPoint],
112
170
  previousSelection: [...box.previousSelection],
113
171
  }
114
172
  : null, "f");
115
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
173
+ __classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
116
174
  }
117
175
  // DragState
118
176
  getDragState() {
119
- return __classPrivateFieldGet(this, _MemoryUiState_dragState, "f");
177
+ return __classPrivateFieldGet(this, _MemoryDrawingState_dragState, "f");
120
178
  }
121
179
  setDragState(state) {
122
- __classPrivateFieldSet(this, _MemoryUiState_dragState, state
180
+ __classPrivateFieldSet(this, _MemoryDrawingState_dragState, state
123
181
  ? {
124
182
  operation: state.operation,
125
183
  activeVertex: state.activeVertex ? { ...state.activeVertex } : undefined,
@@ -128,96 +186,26 @@ export class MemoryUiState {
128
186
  movingFeatureIds: state.movingFeatureIds ? [...state.movingFeatureIds] : undefined,
129
187
  }
130
188
  : null, "f");
131
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
132
- }
133
- // VertexSelection
134
- getSelectedVertices() {
135
- return __classPrivateFieldGet(this, _MemoryUiState_selectedVertices, "f");
136
- }
137
- setSelectedVertices(selection) {
138
- __classPrivateFieldSet(this, _MemoryUiState_selectedVertices, selection
139
- ? {
140
- featureId: selection.featureId,
141
- vertexIndices: selection.vertexIndices.map((ref) => ({ ...ref })),
142
- }
143
- : null, "f");
144
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
189
+ __classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
145
190
  }
146
191
  // FollowedVertices (vertices that follow along when shared vertices move together. Set only
147
192
  // during a drag)
148
193
  getFollowedVertices() {
149
- return __classPrivateFieldGet(this, _MemoryUiState_followedVertices, "f");
194
+ return __classPrivateFieldGet(this, _MemoryDrawingState_followedVertices, "f");
150
195
  }
151
196
  setFollowedVertices(selections) {
152
197
  // Since null is written every time a drag ends, null -> null is not notified (raising
153
198
  // uiStateChanged every time would cause a wasteful re-render).
154
- if (__classPrivateFieldGet(this, _MemoryUiState_followedVertices, "f") === null && (selections === null || selections.length === 0)) {
199
+ if (__classPrivateFieldGet(this, _MemoryDrawingState_followedVertices, "f") === null && (selections === null || selections.length === 0)) {
155
200
  return;
156
201
  }
157
- __classPrivateFieldSet(this, _MemoryUiState_followedVertices, selections && selections.length > 0
202
+ __classPrivateFieldSet(this, _MemoryDrawingState_followedVertices, selections && selections.length > 0
158
203
  ? selections.map((selection) => ({
159
204
  featureId: selection.featureId,
160
- vertexIndices: selection.vertexIndices.map((ref) => ({ ...ref })),
205
+ vertices: selection.vertices.map((ref) => ({ ...ref })),
161
206
  }))
162
207
  : null, "f");
163
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
164
- }
165
- // Mode
166
- getMode() {
167
- return __classPrivateFieldGet(this, _MemoryUiState_mode, "f");
168
- }
169
- setMode(mode) {
170
- const previous = __classPrivateFieldGet(this, _MemoryUiState_mode, "f");
171
- if (mode === previous)
172
- return;
173
- __classPrivateFieldSet(this, _MemoryUiState_mode, mode, "f");
174
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ mode: { mode, previous } });
175
- }
176
- // ReadOnly
177
- isReadOnly() {
178
- return __classPrivateFieldGet(this, _MemoryUiState_readOnly, "f");
179
- }
180
- setReadOnly(value) {
181
- if (__classPrivateFieldGet(this, _MemoryUiState_readOnly, "f") === value)
182
- return;
183
- __classPrivateFieldSet(this, _MemoryUiState_readOnly, value, "f");
184
- // Whether handles are shown depends on read-only, so prompt a re-render.
185
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
186
- }
187
- // InteractionLock
188
- isInteractionLocked() {
189
- return __classPrivateFieldGet(this, _MemoryUiState_interactionLocked, "f");
190
- }
191
- setInteractionLock(value) {
192
- if (__classPrivateFieldGet(this, _MemoryUiState_interactionLocked, "f") === value)
193
- return;
194
- __classPrivateFieldSet(this, _MemoryUiState_interactionLocked, value, "f");
195
- // While the interaction lock is on, no handles are shown (only the selection box), so
196
- // prompt a re-render.
197
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
198
- }
199
- // LocallyHidden
200
- isLocallyHidden(id) {
201
- return __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id);
202
- }
203
- getLocallyHidden() {
204
- return __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f");
205
- }
206
- setLocallyHidden(id, hidden) {
207
- const changed = hidden ? !__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id) : __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id);
208
- if (!changed)
209
- return;
210
- if (hidden)
211
- __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").add(id);
212
- else
213
- __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").delete(id);
214
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
215
- }
216
- /** Removes a deleted feature / group / layer from the hidden set (internal use). */
217
- removeFromLocallyHidden(id) {
218
- if (__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").delete(id)) {
219
- __classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
220
- }
208
+ __classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
221
209
  }
222
210
  }
223
- _MemoryUiState_bus = new WeakMap(), _MemoryUiState_selection = new WeakMap(), _MemoryUiState_editingIds = new WeakMap(), _MemoryUiState_tentative = new WeakMap(), _MemoryUiState_boxSelection = new WeakMap(), _MemoryUiState_dragState = new WeakMap(), _MemoryUiState_selectedVertices = new WeakMap(), _MemoryUiState_followedVertices = new WeakMap(), _MemoryUiState_mode = new WeakMap(), _MemoryUiState_readOnly = new WeakMap(), _MemoryUiState_interactionLocked = new WeakMap(), _MemoryUiState_locallyHidden = new WeakMap();
211
+ _MemoryDrawingState_bus = new WeakMap(), _MemoryDrawingState_tentative = new WeakMap(), _MemoryDrawingState_boxSelection = new WeakMap(), _MemoryDrawingState_dragState = new WeakMap(), _MemoryDrawingState_followedVertices = new WeakMap();
@@ -3,19 +3,12 @@ import type { Store } from './store.js';
3
3
  * The in-memory Store, the default
4
4
  *
5
5
  * `new MemoryStore()` is a complete Store (the document and the local state); it is what
6
- * `createMapLibreGLDraw` uses when no store is given.
6
+ * `createDraw` uses when no store is given.
7
7
  *
8
8
  * It keeps its own copy of what it is given and freezes what it returns. A feature, a layer
9
9
  * or a group it has returned or notified never changes afterwards (a change replaces it), and
10
10
  * writing into one throws a `TypeError` instead of changing the store behind its
11
11
  * notifications.
12
- *
13
- * @example
14
- * ```ts
15
- * // Create the store yourself to keep a reference to it (to read it in a test, say)
16
- * const store = new MemoryStore();
17
- * const draw = createMapLibreGLDraw(map, { store });
18
- * ```
19
12
  */
20
13
  export interface MemoryStore extends Store {
21
14
  }