@sakuzu/maplibre-gl-draw 1.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 (636) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/LICENSE +661 -0
  3. package/README.ja.md +248 -0
  4. package/README.md +255 -0
  5. package/THIRD_PARTY_NOTICES.md +275 -0
  6. package/dist/api/api.d.ts +1259 -0
  7. package/dist/api/api.js +86 -0
  8. package/dist/api/context.d.ts +173 -0
  9. package/dist/api/context.js +193 -0
  10. package/dist/api/display-api.d.ts +1 -0
  11. package/dist/api/display-api.js +23 -0
  12. package/dist/api/event-api.d.ts +13 -0
  13. package/dist/api/event-api.js +17 -0
  14. package/dist/api/extension-api.d.ts +46 -0
  15. package/dist/api/extension-api.js +85 -0
  16. package/dist/api/feature-api.d.ts +11 -0
  17. package/dist/api/feature-api.js +101 -0
  18. package/dist/api/geometry/apply.d.ts +51 -0
  19. package/dist/api/geometry/apply.js +114 -0
  20. package/dist/api/geometry/boolean.d.ts +28 -0
  21. package/dist/api/geometry/boolean.js +65 -0
  22. package/dist/api/geometry/buffer.d.ts +11 -0
  23. package/dist/api/geometry/buffer.js +105 -0
  24. package/dist/api/geometry/split.d.ts +16 -0
  25. package/dist/api/geometry/split.js +75 -0
  26. package/dist/api/geometry/targets.d.ts +76 -0
  27. package/dist/api/geometry/targets.js +158 -0
  28. package/dist/api/geometry/types.d.ts +31 -0
  29. package/dist/api/geometry/types.js +3 -0
  30. package/dist/api/geometry-operations.d.ts +162 -0
  31. package/dist/api/geometry-operations.js +94 -0
  32. package/dist/api/group-api.d.ts +10 -0
  33. package/dist/api/group-api.js +78 -0
  34. package/dist/api/import-export/constants.d.ts +29 -0
  35. package/dist/api/import-export/constants.js +40 -0
  36. package/dist/api/import-export/embedded-file.d.ts +13 -0
  37. package/dist/api/import-export/embedded-file.js +31 -0
  38. package/dist/api/import-export/file-name.d.ts +10 -0
  39. package/dist/api/import-export/file-name.js +20 -0
  40. package/dist/api/import-export/format-detection.d.ts +12 -0
  41. package/dist/api/import-export/format-detection.js +29 -0
  42. package/dist/api/import-export/geojson-export.d.ts +19 -0
  43. package/dist/api/import-export/geojson-export.js +262 -0
  44. package/dist/api/import-export/geojson-import.d.ts +34 -0
  45. package/dist/api/import-export/geojson-import.js +538 -0
  46. package/dist/api/import-export/geometry-validation.d.ts +20 -0
  47. package/dist/api/import-export/geometry-validation.js +107 -0
  48. package/dist/api/import-export/image-import.d.ts +12 -0
  49. package/dist/api/import-export/image-import.js +53 -0
  50. package/dist/api/import-export/index.d.ts +9 -0
  51. package/dist/api/import-export/index.js +107 -0
  52. package/dist/api/import-export/native-format.d.ts +15 -0
  53. package/dist/api/import-export/native-format.js +126 -0
  54. package/dist/api/import-export/native-validation.d.ts +28 -0
  55. package/dist/api/import-export/native-validation.js +212 -0
  56. package/dist/api/import-export/own-property.d.ts +10 -0
  57. package/dist/api/import-export/own-property.js +19 -0
  58. package/dist/api/import-export/style-validation.d.ts +27 -0
  59. package/dist/api/import-export/style-validation.js +49 -0
  60. package/dist/api/import-export/types.d.ts +26 -0
  61. package/dist/api/import-export/types.js +3 -0
  62. package/dist/api/index.d.ts +15 -0
  63. package/dist/api/index.js +3 -0
  64. package/dist/api/input-api.d.ts +158 -0
  65. package/dist/api/input-api.js +144 -0
  66. package/dist/api/instance-api.d.ts +38 -0
  67. package/dist/api/instance-api.js +136 -0
  68. package/dist/api/layer-api.d.ts +12 -0
  69. package/dist/api/layer-api.js +62 -0
  70. package/dist/api/selection-api.d.ts +7 -0
  71. package/dist/api/selection-api.js +78 -0
  72. package/dist/api/snapping-api.d.ts +125 -0
  73. package/dist/api/snapping-api.js +50 -0
  74. package/dist/api/topology-api.d.ts +30 -0
  75. package/dist/api/topology-api.js +16 -0
  76. package/dist/api/tracing-api.d.ts +31 -0
  77. package/dist/api/tracing-api.js +16 -0
  78. package/dist/dispatcher/hit-test/box-strategies.d.ts +19 -0
  79. package/dist/dispatcher/hit-test/box-strategies.js +275 -0
  80. package/dist/dispatcher/hit-test/box-strategy.d.ts +59 -0
  81. package/dist/dispatcher/hit-test/box-strategy.js +37 -0
  82. package/dist/dispatcher/hit-test/globe-shape.d.ts +46 -0
  83. package/dist/dispatcher/hit-test/globe-shape.js +70 -0
  84. package/dist/dispatcher/hit-test/index.d.ts +14 -0
  85. package/dist/dispatcher/hit-test/index.js +9 -0
  86. package/dist/dispatcher/hit-test/local-frame.d.ts +77 -0
  87. package/dist/dispatcher/hit-test/local-frame.js +112 -0
  88. package/dist/dispatcher/hit-test/segment-grid.d.ts +32 -0
  89. package/dist/dispatcher/hit-test/segment-grid.js +79 -0
  90. package/dist/dispatcher/hit-test/service.d.ts +120 -0
  91. package/dist/dispatcher/hit-test/service.js +333 -0
  92. package/dist/dispatcher/hit-test/strategies/base.d.ts +136 -0
  93. package/dist/dispatcher/hit-test/strategies/base.js +66 -0
  94. package/dist/dispatcher/hit-test/strategies/circle.d.ts +10 -0
  95. package/dist/dispatcher/hit-test/strategies/circle.js +56 -0
  96. package/dist/dispatcher/hit-test/strategies/image.d.ts +22 -0
  97. package/dist/dispatcher/hit-test/strategies/image.js +115 -0
  98. package/dist/dispatcher/hit-test/strategies/index.d.ts +11 -0
  99. package/dist/dispatcher/hit-test/strategies/index.js +10 -0
  100. package/dist/dispatcher/hit-test/strategies/line.d.ts +17 -0
  101. package/dist/dispatcher/hit-test/strategies/line.js +30 -0
  102. package/dist/dispatcher/hit-test/strategies/multi.d.ts +44 -0
  103. package/dist/dispatcher/hit-test/strategies/multi.js +141 -0
  104. package/dist/dispatcher/hit-test/strategies/point.d.ts +20 -0
  105. package/dist/dispatcher/hit-test/strategies/point.js +29 -0
  106. package/dist/dispatcher/hit-test/strategies/polygon.d.ts +52 -0
  107. package/dist/dispatcher/hit-test/strategies/polygon.js +138 -0
  108. package/dist/dispatcher/hit-test/topmost.d.ts +48 -0
  109. package/dist/dispatcher/hit-test/topmost.js +157 -0
  110. package/dist/dispatcher/hit-test/visibility-lookup.d.ts +23 -0
  111. package/dist/dispatcher/hit-test/visibility-lookup.js +40 -0
  112. package/dist/dispatcher/index.d.ts +15 -0
  113. package/dist/dispatcher/index.js +3 -0
  114. package/dist/dispatcher/input-router.d.ts +1 -0
  115. package/dist/dispatcher/input-router.js +288 -0
  116. package/dist/dispatcher/normalizer.d.ts +1 -0
  117. package/dist/dispatcher/normalizer.js +513 -0
  118. package/dist/dispatcher/types.d.ts +144 -0
  119. package/dist/dispatcher/types.js +15 -0
  120. package/dist/display/chunk-set.d.ts +24 -0
  121. package/dist/display/chunk-set.js +533 -0
  122. package/dist/display/chunk.d.ts +1 -0
  123. package/dist/display/chunk.js +104 -0
  124. package/dist/display/columnar/index.d.ts +12 -0
  125. package/dist/display/columnar/index.js +13 -0
  126. package/dist/display/columnar/prepare.d.ts +42 -0
  127. package/dist/display/columnar/prepare.js +116 -0
  128. package/dist/display/columnar/source.d.ts +1 -0
  129. package/dist/display/columnar/source.js +531 -0
  130. package/dist/display/columnar/table.d.ts +1 -0
  131. package/dist/display/columnar/table.js +471 -0
  132. package/dist/display/columnar/types.d.ts +223 -0
  133. package/dist/display/columnar/types.js +3 -0
  134. package/dist/display/dataset.d.ts +2 -0
  135. package/dist/display/dataset.js +891 -0
  136. package/dist/display/index.d.ts +13 -0
  137. package/dist/display/index.js +3 -0
  138. package/dist/display/interaction.d.ts +1 -0
  139. package/dist/display/interaction.js +90 -0
  140. package/dist/display/manager.d.ts +1 -0
  141. package/dist/display/manager.js +440 -0
  142. package/dist/display/packed-rtree.d.ts +1 -0
  143. package/dist/display/packed-rtree.js +244 -0
  144. package/dist/display/partition.d.ts +1 -0
  145. package/dist/display/partition.js +226 -0
  146. package/dist/display/provider.d.ts +1 -0
  147. package/dist/display/provider.js +342 -0
  148. package/dist/display/retained.d.ts +40 -0
  149. package/dist/display/retained.js +898 -0
  150. package/dist/display/selection.d.ts +13 -0
  151. package/dist/display/selection.js +226 -0
  152. package/dist/display/source.d.ts +1 -0
  153. package/dist/display/source.js +119 -0
  154. package/dist/display/spatial.d.ts +1 -0
  155. package/dist/display/spatial.js +71 -0
  156. package/dist/display/style.d.ts +1 -0
  157. package/dist/display/style.js +126 -0
  158. package/dist/display/thinning.d.ts +65 -0
  159. package/dist/display/thinning.js +910 -0
  160. package/dist/display/triangulation.d.ts +1 -0
  161. package/dist/display/triangulation.js +0 -0
  162. package/dist/display/types.d.ts +561 -0
  163. package/dist/display/types.js +43 -0
  164. package/dist/extension/feature-handler.d.ts +182 -0
  165. package/dist/extension/feature-handler.js +3 -0
  166. package/dist/extension/index.d.ts +9 -0
  167. package/dist/extension/index.js +3 -0
  168. package/dist/extension/renderers.d.ts +208 -0
  169. package/dist/extension/renderers.js +3 -0
  170. package/dist/geometry/angle.d.ts +47 -0
  171. package/dist/geometry/angle.js +44 -0
  172. package/dist/geometry/bbox.d.ts +48 -0
  173. package/dist/geometry/bbox.js +83 -0
  174. package/dist/geometry/boolean.d.ts +162 -0
  175. package/dist/geometry/boolean.js +331 -0
  176. package/dist/geometry/buffer.d.ts +72 -0
  177. package/dist/geometry/buffer.js +218 -0
  178. package/dist/geometry/circle.d.ts +55 -0
  179. package/dist/geometry/circle.js +107 -0
  180. package/dist/geometry/coords.d.ts +97 -0
  181. package/dist/geometry/coords.js +149 -0
  182. package/dist/geometry/distance.d.ts +79 -0
  183. package/dist/geometry/distance.js +111 -0
  184. package/dist/geometry/errors.d.ts +74 -0
  185. package/dist/geometry/errors.js +104 -0
  186. package/dist/geometry/index.d.ts +28 -0
  187. package/dist/geometry/index.js +38 -0
  188. package/dist/geometry/measure.d.ts +81 -0
  189. package/dist/geometry/measure.js +236 -0
  190. package/dist/geometry/predicates.d.ts +62 -0
  191. package/dist/geometry/predicates.js +132 -0
  192. package/dist/geometry/simplify.d.ts +74 -0
  193. package/dist/geometry/simplify.js +159 -0
  194. package/dist/geometry/split.d.ts +68 -0
  195. package/dist/geometry/split.js +430 -0
  196. package/dist/geometry/types.d.ts +95 -0
  197. package/dist/geometry/types.js +3 -0
  198. package/dist/geometry/units.d.ts +35 -0
  199. package/dist/geometry/units.js +41 -0
  200. package/dist/index.d.ts +72 -0
  201. package/dist/index.js +20 -0
  202. package/dist/maplibre-gl-draw.d.ts +47 -0
  203. package/dist/maplibre-gl-draw.js +407 -0
  204. package/dist/messages.d.ts +64 -0
  205. package/dist/messages.js +36 -0
  206. package/dist/modes/cursor.d.ts +1 -0
  207. package/dist/modes/cursor.js +72 -0
  208. package/dist/modes/draw/circle.d.ts +1 -0
  209. package/dist/modes/draw/circle.js +222 -0
  210. package/dist/modes/draw/commit-layer.d.ts +26 -0
  211. package/dist/modes/draw/commit-layer.js +31 -0
  212. package/dist/modes/draw/freehand.d.ts +1 -0
  213. package/dist/modes/draw/freehand.js +264 -0
  214. package/dist/modes/draw/image.d.ts +1 -0
  215. package/dist/modes/draw/image.js +60 -0
  216. package/dist/modes/draw/index.d.ts +9 -0
  217. package/dist/modes/draw/index.js +11 -0
  218. package/dist/modes/draw/line.d.ts +1 -0
  219. package/dist/modes/draw/line.js +363 -0
  220. package/dist/modes/draw/point.d.ts +1 -0
  221. package/dist/modes/draw/point.js +87 -0
  222. package/dist/modes/draw/polygon.d.ts +1 -0
  223. package/dist/modes/draw/polygon.js +378 -0
  224. package/dist/modes/draw/trace-support.d.ts +79 -0
  225. package/dist/modes/draw/trace-support.js +161 -0
  226. package/dist/modes/handler.d.ts +285 -0
  227. package/dist/modes/handler.js +3 -0
  228. package/dist/modes/index.d.ts +7 -0
  229. package/dist/modes/index.js +3 -0
  230. package/dist/modes/manager.d.ts +15 -0
  231. package/dist/modes/manager.js +196 -0
  232. package/dist/modes/select/box-selection.d.ts +52 -0
  233. package/dist/modes/select/box-selection.js +140 -0
  234. package/dist/modes/select/click-handler.d.ts +32 -0
  235. package/dist/modes/select/click-handler.js +166 -0
  236. package/dist/modes/select/cursor-handler.d.ts +15 -0
  237. package/dist/modes/select/cursor-handler.js +59 -0
  238. package/dist/modes/select/drag/auxiliary.d.ts +26 -0
  239. package/dist/modes/select/drag/auxiliary.js +56 -0
  240. package/dist/modes/select/drag/intermediate-writes.d.ts +1 -0
  241. package/dist/modes/select/drag/intermediate-writes.js +171 -0
  242. package/dist/modes/select/drag/move.d.ts +24 -0
  243. package/dist/modes/select/drag/move.js +59 -0
  244. package/dist/modes/select/drag/operation.d.ts +30 -0
  245. package/dist/modes/select/drag/operation.js +18 -0
  246. package/dist/modes/select/drag/radius.d.ts +15 -0
  247. package/dist/modes/select/drag/radius.js +49 -0
  248. package/dist/modes/select/drag/transform.d.ts +17 -0
  249. package/dist/modes/select/drag/transform.js +155 -0
  250. package/dist/modes/select/drag/vertex.d.ts +17 -0
  251. package/dist/modes/select/drag/vertex.js +163 -0
  252. package/dist/modes/select/drag-handler.d.ts +1 -0
  253. package/dist/modes/select/drag-handler.js +254 -0
  254. package/dist/modes/select/hit-helpers.d.ts +40 -0
  255. package/dist/modes/select/hit-helpers.js +51 -0
  256. package/dist/modes/select/mode.d.ts +1 -0
  257. package/dist/modes/select/mode.js +397 -0
  258. package/dist/modes/select/shortcut-handler.d.ts +40 -0
  259. package/dist/modes/select/shortcut-handler.js +128 -0
  260. package/dist/operations/index.d.ts +9 -0
  261. package/dist/operations/index.js +3 -0
  262. package/dist/operations/layer-operations.d.ts +1 -0
  263. package/dist/operations/layer-operations.js +350 -0
  264. package/dist/operations/resize.d.ts +71 -0
  265. package/dist/operations/resize.js +252 -0
  266. package/dist/operations/rotate.d.ts +17 -0
  267. package/dist/operations/rotate.js +166 -0
  268. package/dist/operations/selection-operations.d.ts +20 -0
  269. package/dist/operations/selection-operations.js +159 -0
  270. package/dist/operations/shared-vertex.d.ts +1 -0
  271. package/dist/operations/shared-vertex.js +210 -0
  272. package/dist/operations/trace-graph.d.ts +96 -0
  273. package/dist/operations/trace-graph.js +283 -0
  274. package/dist/operations/vertex.d.ts +1 -0
  275. package/dist/operations/vertex.js +538 -0
  276. package/dist/plugins/index.d.ts +10 -0
  277. package/dist/plugins/index.js +3 -0
  278. package/dist/plugins/mutation-hooks.d.ts +28 -0
  279. package/dist/plugins/mutation-hooks.js +84 -0
  280. package/dist/plugins/plugin-context.d.ts +1 -0
  281. package/dist/plugins/plugin-context.js +367 -0
  282. package/dist/plugins/plugin-manager.d.ts +103 -0
  283. package/dist/plugins/plugin-manager.js +316 -0
  284. package/dist/plugins/plugin.d.ts +529 -0
  285. package/dist/plugins/plugin.js +3 -0
  286. package/dist/shared/config/constants.d.ts +66 -0
  287. package/dist/shared/config/constants.js +60 -0
  288. package/dist/shared/config/feature-style.d.ts +155 -0
  289. package/dist/shared/config/feature-style.js +154 -0
  290. package/dist/shared/config/index.d.ts +17 -0
  291. package/dist/shared/config/index.js +8 -0
  292. package/dist/shared/config/rendering.d.ts +107 -0
  293. package/dist/shared/config/rendering.js +33 -0
  294. package/dist/shared/config/selection-highlight.d.ts +29 -0
  295. package/dist/shared/config/selection-highlight.js +35 -0
  296. package/dist/shared/config/selection.d.ts +273 -0
  297. package/dist/shared/config/selection.js +266 -0
  298. package/dist/shared/config/topology.d.ts +33 -0
  299. package/dist/shared/config/topology.js +17 -0
  300. package/dist/shared/config/trace.d.ts +40 -0
  301. package/dist/shared/config/trace.js +17 -0
  302. package/dist/shared/math/angle.d.ts +21 -0
  303. package/dist/shared/math/angle.js +34 -0
  304. package/dist/shared/math/circle.d.ts +6 -0
  305. package/dist/shared/math/circle.js +10 -0
  306. package/dist/shared/math/constants.d.ts +48 -0
  307. package/dist/shared/math/constants.js +59 -0
  308. package/dist/shared/math/distance.d.ts +78 -0
  309. package/dist/shared/math/distance.js +147 -0
  310. package/dist/shared/math/globe-subdivision.d.ts +62 -0
  311. package/dist/shared/math/globe-subdivision.js +99 -0
  312. package/dist/shared/math/index.d.ts +17 -0
  313. package/dist/shared/math/index.js +21 -0
  314. package/dist/shared/math/intersection.d.ts +63 -0
  315. package/dist/shared/math/intersection.js +236 -0
  316. package/dist/shared/math/longitude.d.ts +20 -0
  317. package/dist/shared/math/longitude.js +31 -0
  318. package/dist/shared/math/mercator-plane.d.ts +27 -0
  319. package/dist/shared/math/mercator-plane.js +26 -0
  320. package/dist/shared/math/obb.d.ts +65 -0
  321. package/dist/shared/math/obb.js +107 -0
  322. package/dist/shared/math/rotation.d.ts +93 -0
  323. package/dist/shared/math/rotation.js +186 -0
  324. package/dist/shared/math/segment-grid.d.ts +69 -0
  325. package/dist/shared/math/segment-grid.js +159 -0
  326. package/dist/shared/math/transform.d.ts +140 -0
  327. package/dist/shared/math/transform.js +189 -0
  328. package/dist/shared/types/events.d.ts +128 -0
  329. package/dist/shared/types/events.js +3 -0
  330. package/dist/shared/types/model.d.ts +950 -0
  331. package/dist/shared/types/model.js +3 -0
  332. package/dist/shared/types/selection-box.d.ts +23 -0
  333. package/dist/shared/types/selection-box.js +3 -0
  334. package/dist/shared/types/style.d.ts +68 -0
  335. package/dist/shared/types/style.js +3 -0
  336. package/dist/shared/utils/color.d.ts +49 -0
  337. package/dist/shared/utils/color.js +180 -0
  338. package/dist/shared/utils/coordinates.d.ts +52 -0
  339. package/dist/shared/utils/coordinates.js +75 -0
  340. package/dist/shared/utils/embedded-image.d.ts +34 -0
  341. package/dist/shared/utils/embedded-image.js +161 -0
  342. package/dist/shared/utils/event-emitter.d.ts +262 -0
  343. package/dist/shared/utils/event-emitter.js +44 -0
  344. package/dist/shared/utils/feature-bbox.d.ts +8 -0
  345. package/dist/shared/utils/feature-bbox.js +207 -0
  346. package/dist/shared/utils/feature-segments.d.ts +23 -0
  347. package/dist/shared/utils/feature-segments.js +179 -0
  348. package/dist/shared/utils/id.d.ts +1 -0
  349. package/dist/shared/utils/id.js +35 -0
  350. package/dist/shared/utils/image.d.ts +34 -0
  351. package/dist/shared/utils/image.js +106 -0
  352. package/dist/shared/utils/index.d.ts +15 -0
  353. package/dist/shared/utils/index.js +24 -0
  354. package/dist/shared/utils/map.d.ts +26 -0
  355. package/dist/shared/utils/map.js +35 -0
  356. package/dist/shared/utils/name-generator.d.ts +197 -0
  357. package/dist/shared/utils/name-generator.js +337 -0
  358. package/dist/shared/utils/pixel-ratio.d.ts +111 -0
  359. package/dist/shared/utils/pixel-ratio.js +85 -0
  360. package/dist/shared/utils/property.d.ts +88 -0
  361. package/dist/shared/utils/property.js +140 -0
  362. package/dist/shared/utils/vertex-ref.d.ts +23 -0
  363. package/dist/shared/utils/vertex-ref.js +20 -0
  364. package/dist/snapping/custom-targets.d.ts +1 -0
  365. package/dist/snapping/custom-targets.js +21 -0
  366. package/dist/snapping/geometry.d.ts +1 -0
  367. package/dist/snapping/geometry.js +61 -0
  368. package/dist/snapping/index.d.ts +14 -0
  369. package/dist/snapping/index.js +4 -0
  370. package/dist/snapping/indicator.d.ts +19 -0
  371. package/dist/snapping/indicator.js +145 -0
  372. package/dist/snapping/providers/display.d.ts +72 -0
  373. package/dist/snapping/providers/display.js +268 -0
  374. package/dist/snapping/providers/guide.d.ts +69 -0
  375. package/dist/snapping/providers/guide.js +187 -0
  376. package/dist/snapping/providers/intersection.d.ts +1 -0
  377. package/dist/snapping/providers/intersection.js +92 -0
  378. package/dist/snapping/providers/shared.d.ts +39 -0
  379. package/dist/snapping/providers/shared.js +146 -0
  380. package/dist/snapping/providers/store.d.ts +1 -0
  381. package/dist/snapping/providers/store.js +132 -0
  382. package/dist/snapping/service.d.ts +1 -0
  383. package/dist/snapping/service.js +272 -0
  384. package/dist/snapping/types.d.ts +267 -0
  385. package/dist/snapping/types.js +66 -0
  386. package/dist/store/change-merger.d.ts +1 -0
  387. package/dist/store/change-merger.js +102 -0
  388. package/dist/store/draw-store.d.ts +1 -0
  389. package/dist/store/draw-store.js +396 -0
  390. package/dist/store/event-bridge.d.ts +1 -0
  391. package/dist/store/event-bridge.js +161 -0
  392. package/dist/store/index.d.ts +12 -0
  393. package/dist/store/index.js +4 -0
  394. package/dist/store/local-visibility.d.ts +21 -0
  395. package/dist/store/local-visibility.js +27 -0
  396. package/dist/store/lock.d.ts +67 -0
  397. package/dist/store/lock.js +54 -0
  398. package/dist/store/memory/change-bus.d.ts +60 -0
  399. package/dist/store/memory/change-bus.js +232 -0
  400. package/dist/store/memory/file-store.d.ts +15 -0
  401. package/dist/store/memory/file-store.js +33 -0
  402. package/dist/store/memory/frozen.d.ts +21 -0
  403. package/dist/store/memory/frozen.js +51 -0
  404. package/dist/store/memory/ui-state.d.ts +51 -0
  405. package/dist/store/memory/ui-state.js +223 -0
  406. package/dist/store/memory.d.ts +26 -0
  407. package/dist/store/memory.js +708 -0
  408. package/dist/store/spatial/index.d.ts +6 -0
  409. package/dist/store/spatial/index.js +4 -0
  410. package/dist/store/spatial/spatial-index.d.ts +90 -0
  411. package/dist/store/spatial/spatial-index.js +148 -0
  412. package/dist/store/spatial/store-spatial-index.d.ts +60 -0
  413. package/dist/store/spatial/store-spatial-index.js +125 -0
  414. package/dist/store/store.d.ts +417 -0
  415. package/dist/store/store.js +3 -0
  416. package/dist/store/types.d.ts +8 -0
  417. package/dist/store/types.js +3 -0
  418. package/dist/store/writable-layer.d.ts +35 -0
  419. package/dist/store/writable-layer.js +20 -0
  420. package/dist/view/cache/buffer.d.ts +28 -0
  421. package/dist/view/cache/buffer.js +176 -0
  422. package/dist/view/cache/earcut.d.ts +1 -0
  423. package/dist/view/cache/earcut.js +122 -0
  424. package/dist/view/cache/style-rule.d.ts +1 -0
  425. package/dist/view/cache/style-rule.js +97 -0
  426. package/dist/view/cache/terrain-fill.d.ts +30 -0
  427. package/dist/view/cache/terrain-fill.js +60 -0
  428. package/dist/view/cache/texture.d.ts +14 -0
  429. package/dist/view/cache/texture.js +292 -0
  430. package/dist/view/coordinator.d.ts +27 -0
  431. package/dist/view/coordinator.js +72 -0
  432. package/dist/view/feature-companion.d.ts +173 -0
  433. package/dist/view/feature-companion.js +108 -0
  434. package/dist/view/globe-subdivision.d.ts +78 -0
  435. package/dist/view/globe-subdivision.js +128 -0
  436. package/dist/view/index.d.ts +47 -0
  437. package/dist/view/index.js +20 -0
  438. package/dist/view/layer/attach.d.ts +20 -0
  439. package/dist/view/layer/attach.js +47 -0
  440. package/dist/view/layer/blend.d.ts +57 -0
  441. package/dist/view/layer/blend.js +14 -0
  442. package/dist/view/layer/custom-layer.d.ts +1 -0
  443. package/dist/view/layer/custom-layer.js +509 -0
  444. package/dist/view/layer/depth-state.d.ts +14 -0
  445. package/dist/view/layer/depth-state.js +44 -0
  446. package/dist/view/layer/display-list.d.ts +1 -0
  447. package/dist/view/layer/display-list.js +111 -0
  448. package/dist/view/layer/drape-planner.d.ts +139 -0
  449. package/dist/view/layer/drape-planner.js +726 -0
  450. package/dist/view/layer/frame-render.d.ts +57 -0
  451. package/dist/view/layer/frame-render.js +209 -0
  452. package/dist/view/layer/frame-state.d.ts +147 -0
  453. package/dist/view/layer/frame-state.js +484 -0
  454. package/dist/view/layer/gl-state.d.ts +77 -0
  455. package/dist/view/layer/gl-state.js +132 -0
  456. package/dist/view/layer/index.d.ts +6 -0
  457. package/dist/view/layer/index.js +5 -0
  458. package/dist/view/layer/render-scope.d.ts +30 -0
  459. package/dist/view/layer/render-scope.js +28 -0
  460. package/dist/view/layer/render.d.ts +87 -0
  461. package/dist/view/layer/render.js +187 -0
  462. package/dist/view/layer/renderers.d.ts +81 -0
  463. package/dist/view/layer/renderers.js +142 -0
  464. package/dist/view/layer/slot-manager.d.ts +26 -0
  465. package/dist/view/layer/slot-manager.js +133 -0
  466. package/dist/view/layer/slots.d.ts +33 -0
  467. package/dist/view/layer/slots.js +50 -0
  468. package/dist/view/layer/store-retained-bbox.d.ts +36 -0
  469. package/dist/view/layer/store-retained-bbox.js +188 -0
  470. package/dist/view/layer/store-retained-chunk.d.ts +97 -0
  471. package/dist/view/layer/store-retained-chunk.js +94 -0
  472. package/dist/view/layer/store-retained-classify.d.ts +34 -0
  473. package/dist/view/layer/store-retained-classify.js +88 -0
  474. package/dist/view/layer/store-retained-collect.d.ts +24 -0
  475. package/dist/view/layer/store-retained-collect.js +121 -0
  476. package/dist/view/layer/store-retained-coord-patch.d.ts +119 -0
  477. package/dist/view/layer/store-retained-coord-patch.js +168 -0
  478. package/dist/view/layer/store-retained-immediate.d.ts +63 -0
  479. package/dist/view/layer/store-retained-immediate.js +49 -0
  480. package/dist/view/layer/store-retained-invalidation.d.ts +96 -0
  481. package/dist/view/layer/store-retained-invalidation.js +192 -0
  482. package/dist/view/layer/store-retained.d.ts +198 -0
  483. package/dist/view/layer/store-retained.js +430 -0
  484. package/dist/view/layer/terrain-resolver.d.ts +1 -0
  485. package/dist/view/layer/terrain-resolver.js +174 -0
  486. package/dist/view/renderers/batch-manager.d.ts +61 -0
  487. package/dist/view/renderers/batch-manager.js +718 -0
  488. package/dist/view/renderers/draw-factors.d.ts +60 -0
  489. package/dist/view/renderers/draw-factors.js +35 -0
  490. package/dist/view/renderers/drawer.d.ts +1 -0
  491. package/dist/view/renderers/drawer.js +346 -0
  492. package/dist/view/renderers/image.d.ts +1 -0
  493. package/dist/view/renderers/image.js +255 -0
  494. package/dist/view/renderers/line/dash.d.ts +31 -0
  495. package/dist/view/renderers/line/dash.js +152 -0
  496. package/dist/view/renderers/line/line-geometry.d.ts +39 -0
  497. package/dist/view/renderers/line/line-geometry.js +460 -0
  498. package/dist/view/renderers/line/line-gl.d.ts +1 -0
  499. package/dist/view/renderers/line/line-gl.js +236 -0
  500. package/dist/view/renderers/line/line-shader.d.ts +1 -0
  501. package/dist/view/renderers/line/line-shader.js +364 -0
  502. package/dist/view/renderers/line/line-types.d.ts +43 -0
  503. package/dist/view/renderers/line/line-types.js +3 -0
  504. package/dist/view/renderers/line/line-uniforms.d.ts +1 -0
  505. package/dist/view/renderers/line/line-uniforms.js +390 -0
  506. package/dist/view/renderers/line/sdf-line.d.ts +92 -0
  507. package/dist/view/renderers/line/sdf-line.js +567 -0
  508. package/dist/view/renderers/point/billboard-depth.d.ts +10 -0
  509. package/dist/view/renderers/point/billboard-depth.js +56 -0
  510. package/dist/view/renderers/point/point-instance.d.ts +124 -0
  511. package/dist/view/renderers/point/point-instance.js +738 -0
  512. package/dist/view/renderers/point/point-sdf.d.ts +58 -0
  513. package/dist/view/renderers/point/point-sdf.js +170 -0
  514. package/dist/view/renderers/point/point-shape.d.ts +99 -0
  515. package/dist/view/renderers/point/point-shape.js +504 -0
  516. package/dist/view/renderers/point/point-style.d.ts +1 -0
  517. package/dist/view/renderers/point/point-style.js +46 -0
  518. package/dist/view/renderers/polygon/batch.d.ts +26 -0
  519. package/dist/view/renderers/polygon/batch.js +336 -0
  520. package/dist/view/renderers/polygon/earcut-input.d.ts +37 -0
  521. package/dist/view/renderers/polygon/earcut-input.js +55 -0
  522. package/dist/view/renderers/polygon/earcut-sliced.d.ts +69 -0
  523. package/dist/view/renderers/polygon/earcut-sliced.js +960 -0
  524. package/dist/view/renderers/polygon/fill.d.ts +74 -0
  525. package/dist/view/renderers/polygon/fill.js +251 -0
  526. package/dist/view/renderers/polygon/sdf-polygon.d.ts +62 -0
  527. package/dist/view/renderers/polygon/sdf-polygon.js +919 -0
  528. package/dist/view/renderers/polygon/terrain-cull.d.ts +3 -0
  529. package/dist/view/renderers/polygon/terrain-cull.js +14 -0
  530. package/dist/view/renderers/polygon/triangulator.d.ts +41 -0
  531. package/dist/view/renderers/polygon/triangulator.js +3 -0
  532. package/dist/view/renderers/retained.d.ts +43 -0
  533. package/dist/view/renderers/retained.js +3 -0
  534. package/dist/view/renderers/stroke.d.ts +121 -0
  535. package/dist/view/renderers/stroke.js +621 -0
  536. package/dist/view/shaders/frame.d.ts +8 -0
  537. package/dist/view/shaders/frame.js +37 -0
  538. package/dist/view/shaders/helpers.d.ts +238 -0
  539. package/dist/view/shaders/helpers.js +611 -0
  540. package/dist/view/shaders/initializer.d.ts +27 -0
  541. package/dist/view/shaders/initializer.js +125 -0
  542. package/dist/view/shaders/projection.d.ts +123 -0
  543. package/dist/view/shaders/projection.js +299 -0
  544. package/dist/view/shaders/quad-grid.d.ts +77 -0
  545. package/dist/view/shaders/quad-grid.js +128 -0
  546. package/dist/view/shaders/quad.d.ts +189 -0
  547. package/dist/view/shaders/quad.js +582 -0
  548. package/dist/view/shaders/retained-origin.d.ts +50 -0
  549. package/dist/view/shaders/retained-origin.js +67 -0
  550. package/dist/view/shaders/terrain-shade.d.ts +23 -0
  551. package/dist/view/shaders/terrain-shade.js +93 -0
  552. package/dist/view/style-rule.d.ts +166 -0
  553. package/dist/view/style-rule.js +300 -0
  554. package/dist/view/terrain/anchor.d.ts +135 -0
  555. package/dist/view/terrain/anchor.js +226 -0
  556. package/dist/view/terrain/context.d.ts +132 -0
  557. package/dist/view/terrain/context.js +437 -0
  558. package/dist/view/terrain/dem-atlas.d.ts +97 -0
  559. package/dist/view/terrain/dem-atlas.js +534 -0
  560. package/dist/view/terrain/detect.d.ts +126 -0
  561. package/dist/view/terrain/detect.js +198 -0
  562. package/dist/view/terrain/drape/bin-store.d.ts +179 -0
  563. package/dist/view/terrain/drape/bin-store.js +529 -0
  564. package/dist/view/terrain/drape/binning.d.ts +259 -0
  565. package/dist/view/terrain/drape/binning.js +604 -0
  566. package/dist/view/terrain/drape/edge-constrain.d.ts +37 -0
  567. package/dist/view/terrain/drape/edge-constrain.js +175 -0
  568. package/dist/view/terrain/drape/geometry.d.ts +95 -0
  569. package/dist/view/terrain/drape/geometry.js +260 -0
  570. package/dist/view/terrain/drape/mesh.d.ts +50 -0
  571. package/dist/view/terrain/drape/mesh.js +86 -0
  572. package/dist/view/terrain/drape/pass.d.ts +122 -0
  573. package/dist/view/terrain/drape/pass.js +379 -0
  574. package/dist/view/terrain/drape/quad-glyphs.d.ts +64 -0
  575. package/dist/view/terrain/drape/quad-glyphs.js +117 -0
  576. package/dist/view/terrain/drape/quad.d.ts +249 -0
  577. package/dist/view/terrain/drape/quad.js +835 -0
  578. package/dist/view/terrain/drape/renderer.d.ts +184 -0
  579. package/dist/view/terrain/drape/renderer.js +706 -0
  580. package/dist/view/terrain/drape/shared.d.ts +80 -0
  581. package/dist/view/terrain/drape/shared.js +173 -0
  582. package/dist/view/terrain/drape/stitch.d.ts +155 -0
  583. package/dist/view/terrain/drape/stitch.js +228 -0
  584. package/dist/view/terrain/ground.d.ts +72 -0
  585. package/dist/view/terrain/ground.js +151 -0
  586. package/dist/view/terrain/metrics.d.ts +180 -0
  587. package/dist/view/terrain/metrics.js +231 -0
  588. package/dist/view/terrain/occlusion.d.ts +11 -0
  589. package/dist/view/terrain/occlusion.js +129 -0
  590. package/dist/view/terrain/polygon.d.ts +86 -0
  591. package/dist/view/terrain/polygon.js +301 -0
  592. package/dist/view/terrain/shade.d.ts +48 -0
  593. package/dist/view/terrain/shade.js +45 -0
  594. package/dist/view/terrain/state.d.ts +99 -0
  595. package/dist/view/terrain/state.js +186 -0
  596. package/dist/view/terrain/tessellation.d.ts +265 -0
  597. package/dist/view/terrain/tessellation.js +924 -0
  598. package/dist/view/terrain/tiling.d.ts +56 -0
  599. package/dist/view/terrain/tiling.js +155 -0
  600. package/dist/view/terrain/upstream-terrain.d.ts +82 -0
  601. package/dist/view/terrain/upstream-terrain.js +116 -0
  602. package/dist/view/ui/auxiliary-handles.d.ts +151 -0
  603. package/dist/view/ui/auxiliary-handles.js +22 -0
  604. package/dist/view/ui/bounds.d.ts +53 -0
  605. package/dist/view/ui/bounds.js +149 -0
  606. package/dist/view/ui/box-selection.d.ts +1 -0
  607. package/dist/view/ui/box-selection.js +83 -0
  608. package/dist/view/ui/handle-test.d.ts +1 -0
  609. package/dist/view/ui/handle-test.js +437 -0
  610. package/dist/view/ui/handle-thinning.d.ts +122 -0
  611. package/dist/view/ui/handle-thinning.js +430 -0
  612. package/dist/view/ui/handles.d.ts +25 -0
  613. package/dist/view/ui/handles.js +673 -0
  614. package/dist/view/ui/helper.d.ts +19 -0
  615. package/dist/view/ui/helper.js +76 -0
  616. package/dist/view/ui/index.d.ts +15 -0
  617. package/dist/view/ui/index.js +15 -0
  618. package/dist/view/ui/selection-scope.d.ts +25 -0
  619. package/dist/view/ui/selection-scope.js +34 -0
  620. package/dist/view/ui/selection-ui/bounding-box.d.ts +44 -0
  621. package/dist/view/ui/selection-ui/bounding-box.js +240 -0
  622. package/dist/view/ui/selection-ui/extension-registry.d.ts +76 -0
  623. package/dist/view/ui/selection-ui/extension-registry.js +78 -0
  624. package/dist/view/ui/selection-ui/index.d.ts +12 -0
  625. package/dist/view/ui/selection-ui/index.js +12 -0
  626. package/dist/view/ui/selection-ui/renderer.d.ts +29 -0
  627. package/dist/view/ui/selection-ui/renderer.js +227 -0
  628. package/dist/view/ui/selection-ui/types.d.ts +55 -0
  629. package/dist/view/ui/selection-ui/types.js +3 -0
  630. package/dist/view/ui/selection-ui-drawer.d.ts +52 -0
  631. package/dist/view/ui/selection-ui-drawer.js +329 -0
  632. package/dist/view/ui/tentative.d.ts +1 -0
  633. package/dist/view/ui/tentative.js +320 -0
  634. package/dist/view/viewport.d.ts +119 -0
  635. package/dist/view/viewport.js +254 -0
  636. package/package.json +113 -0
@@ -0,0 +1,396 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
4
+ if (kind === "m") throw new TypeError("Private method is not writable");
5
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
6
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
7
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
8
+ };
9
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
13
+ };
14
+ var _DrawStore_instances, _DrawStore_document, _DrawStore_bus, _DrawStore_ui, _DrawStore_write, _DrawStore_receive, _DrawStore_forget, _DrawStore_pruneInvisible, _DrawStore_pruneVertices;
15
+ /**
16
+ * DrawStore
17
+ *
18
+ * The Store core works with: a DocumentStore (the in-memory one, or one the host gave) and
19
+ * the local UiState of this client behind one gate.
20
+ *
21
+ * - Read-only is enforced here, at the write methods, and nowhere else. A refused write
22
+ * returns false and touches nothing. The DocumentStore never sees the gate, so changes
23
+ * applied to the document from elsewhere are not stopped by it.
24
+ * - The notifications of the document are forwarded into the ChangeBus of the local state,
25
+ * so a listener gets one StateChanges per transaction with both kinds of change.
26
+ * - Deletions reach the local state: the id of a deleted feature, group or layer leaves the
27
+ * selection, the features being edited and the locally hidden set, whatever deleted it.
28
+ * - The selection holds only what can be seen: a change that hides a selected item (its own
29
+ * visible flag, the one of its group or layer, or local hiding) takes it out of the
30
+ * selection, and the vertex selection ends when its feature is deleted or its coordinates
31
+ * change other than by a drag. This is the only place that keeps these invariants; the
32
+ * modes and the public API rely on it.
33
+ */
34
+ import { ChangeBus } from './memory/change-bus.js';
35
+ import { MemoryUiState } from './memory/ui-state.js';
36
+ /**
37
+ * Returns the Store for a store option: a Store is used as it is, a DocumentStore gets the
38
+ * local state and the read-only gate of core around it
39
+ *
40
+ * @internal
41
+ */
42
+ export function toStore(store) {
43
+ return store instanceof DrawStore ? store : new DrawStore(store);
44
+ }
45
+ /**
46
+ * The Store of core over a DocumentStore
47
+ *
48
+ * @internal
49
+ */
50
+ export class DrawStore {
51
+ constructor(document) {
52
+ _DrawStore_instances.add(this);
53
+ _DrawStore_document.set(this, void 0);
54
+ _DrawStore_bus.set(this, new ChangeBus());
55
+ _DrawStore_ui.set(this, new MemoryUiState(__classPrivateFieldGet(this, _DrawStore_bus, "f")));
56
+ __classPrivateFieldSet(this, _DrawStore_document, document, "f");
57
+ document.subscribe((changes) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_receive).call(this, changes));
58
+ }
59
+ // ============================================================================
60
+ // The document: reads
61
+ // ============================================================================
62
+ getFeature(id) {
63
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(id);
64
+ }
65
+ getAllFeatures() {
66
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllFeatures();
67
+ }
68
+ getOrderedFeatures() {
69
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getOrderedFeatures();
70
+ }
71
+ getLayer(id) {
72
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getLayer(id);
73
+ }
74
+ getAllLayers() {
75
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllLayers();
76
+ }
77
+ getLayerOrder() {
78
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getLayerOrder();
79
+ }
80
+ getGroup(id) {
81
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getGroup(id);
82
+ }
83
+ getAllGroups() {
84
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllGroups();
85
+ }
86
+ getFile(id) {
87
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getFile(id);
88
+ }
89
+ getAllFiles() {
90
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllFiles();
91
+ }
92
+ getMetadata() {
93
+ return __classPrivateFieldGet(this, _DrawStore_document, "f").getMetadata();
94
+ }
95
+ // ============================================================================
96
+ // The document: writes (gated by read-only)
97
+ // ============================================================================
98
+ createFeature(feature) {
99
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createFeature(feature));
100
+ }
101
+ updateFeature(id, updates, options) {
102
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateFeature(id, updates, options));
103
+ }
104
+ abortIntermediateUpdates(ids) {
105
+ __classPrivateFieldGet(this, _DrawStore_document, "f").abortIntermediateUpdates?.(ids);
106
+ }
107
+ deleteFeature(id) {
108
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => {
109
+ __classPrivateFieldGet(this, _DrawStore_document, "f").deleteFeature(id);
110
+ // At once, so that the rest of a transaction already sees the selection without it
111
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, id);
112
+ });
113
+ }
114
+ createLayer(layer) {
115
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createLayer(layer));
116
+ }
117
+ updateLayer(id, updates) {
118
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateLayer(id, updates));
119
+ }
120
+ deleteLayer(id) {
121
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteLayer(id));
122
+ }
123
+ setLayerOrder(order) {
124
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").setLayerOrder(order));
125
+ }
126
+ reorderInLayer(itemId, layerId, newIndex) {
127
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").reorderInLayer(itemId, layerId, newIndex));
128
+ }
129
+ reorderInGroup(featureId, groupId, newIndex) {
130
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").reorderInGroup(featureId, groupId, newIndex));
131
+ }
132
+ createGroup(group) {
133
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createGroup(group));
134
+ }
135
+ updateGroup(id, updates) {
136
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateGroup(id, updates));
137
+ }
138
+ deleteGroup(id) {
139
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteGroup(id));
140
+ }
141
+ createFile(file) {
142
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createFile(file));
143
+ }
144
+ deleteFile(id) {
145
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteFile(id));
146
+ }
147
+ setMetadata(metadata) {
148
+ return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").setMetadata(metadata));
149
+ }
150
+ // ============================================================================
151
+ // The local state
152
+ // ============================================================================
153
+ getSelection() {
154
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelection();
155
+ }
156
+ setSelection(type, ids) {
157
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setSelection(type, ids);
158
+ }
159
+ getEditingIds() {
160
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getEditingIds();
161
+ }
162
+ startEditing(ids) {
163
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").startEditing(ids);
164
+ }
165
+ endEditing(ids) {
166
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").endEditing(ids);
167
+ }
168
+ getTentative() {
169
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getTentative();
170
+ }
171
+ setTentative(state) {
172
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setTentative(state);
173
+ }
174
+ getBoxSelection() {
175
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getBoxSelection();
176
+ }
177
+ setBoxSelection(box) {
178
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setBoxSelection(box);
179
+ }
180
+ getDragState() {
181
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getDragState();
182
+ }
183
+ setDragState(state) {
184
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setDragState(state);
185
+ }
186
+ getSelectedVertices() {
187
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelectedVertices();
188
+ }
189
+ setSelectedVertices(selection) {
190
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(selection);
191
+ }
192
+ getFollowedVertices() {
193
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getFollowedVertices();
194
+ }
195
+ setFollowedVertices(selections) {
196
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setFollowedVertices(selections);
197
+ }
198
+ getMode() {
199
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getMode();
200
+ }
201
+ setMode(mode) {
202
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setMode(mode);
203
+ }
204
+ isReadOnly() {
205
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").isReadOnly();
206
+ }
207
+ setReadOnly(value) {
208
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setReadOnly(value);
209
+ }
210
+ isInteractionLocked() {
211
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").isInteractionLocked();
212
+ }
213
+ setInteractionLock(value) {
214
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setInteractionLock(value);
215
+ }
216
+ isLocallyHidden(id) {
217
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").isLocallyHidden(id);
218
+ }
219
+ getLocallyHidden() {
220
+ return __classPrivateFieldGet(this, _DrawStore_ui, "f").getLocallyHidden();
221
+ }
222
+ setLocallyHidden(id, hidden) {
223
+ __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
224
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setLocallyHidden(id, hidden);
225
+ if (hidden)
226
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
227
+ }, 'local');
228
+ }
229
+ // ============================================================================
230
+ // Subscription and transactions
231
+ // ============================================================================
232
+ subscribe(listener) {
233
+ return __classPrivateFieldGet(this, _DrawStore_bus, "f").subscribe(listener);
234
+ }
235
+ transact(fn, source = 'local') {
236
+ return __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => __classPrivateFieldGet(this, _DrawStore_document, "f").transact(fn, source), source);
237
+ }
238
+ }
239
+ _DrawStore_document = new WeakMap(), _DrawStore_bus = new WeakMap(), _DrawStore_ui = new WeakMap(), _DrawStore_instances = new WeakSet(), _DrawStore_write = function _DrawStore_write(fn) {
240
+ if (__classPrivateFieldGet(this, _DrawStore_ui, "f").isReadOnly())
241
+ return false;
242
+ this.transact(fn);
243
+ return true;
244
+ }, _DrawStore_receive = function _DrawStore_receive(changes) {
245
+ __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
246
+ __classPrivateFieldGet(this, _DrawStore_bus, "f").merge(documentPart(changes));
247
+ for (const feature of changes.features?.deleted ?? [])
248
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, feature.id);
249
+ for (const group of changes.groups?.deleted ?? [])
250
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, group.id);
251
+ for (const layer of changes.layers?.deleted ?? [])
252
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, layer.id);
253
+ if (mayHide(changes))
254
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
255
+ __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneVertices).call(this, changes);
256
+ }, changes.source ?? 'local');
257
+ }, _DrawStore_forget = function _DrawStore_forget(id) {
258
+ if (__classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(id) || __classPrivateFieldGet(this, _DrawStore_document, "f").getGroup(id))
259
+ return;
260
+ if (__classPrivateFieldGet(this, _DrawStore_document, "f").getLayer(id))
261
+ return;
262
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromSelection(id);
263
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromEditing(id);
264
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromLocallyHidden(id);
265
+ }, _DrawStore_pruneInvisible = function _DrawStore_pruneInvisible() {
266
+ const selection = __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelection();
267
+ const type = selection.type;
268
+ if (type === null || selection.ids.length === 0)
269
+ return;
270
+ const shown = createShownLookup(__classPrivateFieldGet(this, _DrawStore_document, "f"), __classPrivateFieldGet(this, _DrawStore_ui, "f"));
271
+ const kept = selection.ids.filter((id) => shown(type, id));
272
+ if (kept.length !== selection.ids.length) {
273
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setSelection(kept.length > 0 ? type : null, kept);
274
+ }
275
+ }, _DrawStore_pruneVertices = function _DrawStore_pruneVertices(changes) {
276
+ const vertices = __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelectedVertices();
277
+ if (!vertices)
278
+ return;
279
+ const featureId = vertices.featureId;
280
+ if (!__classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(featureId)) {
281
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(null);
282
+ return;
283
+ }
284
+ const local = changes.source !== 'remote';
285
+ for (const entry of changes.features?.updated ?? []) {
286
+ if (entry.id !== featureId)
287
+ continue;
288
+ // The frames and the commit of a local drag keep the vertices being dragged selected
289
+ if (local && (entry.isIntermediate || __classPrivateFieldGet(this, _DrawStore_ui, "f").getDragState() !== null))
290
+ continue;
291
+ if (sameCoordinates(entry.feature.coordinates, entry.previous.coordinates))
292
+ continue;
293
+ __classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(null);
294
+ return;
295
+ }
296
+ };
297
+ /**
298
+ * Whether a notification can hide something that was visible: a change of the visible flag
299
+ * of a feature, or of its place (a feature moved into a hidden layer or group), and any
300
+ * update of a group or a layer
301
+ */
302
+ function mayHide(changes) {
303
+ if (changes.layers?.updated?.length || changes.groups?.updated?.length)
304
+ return true;
305
+ for (const { feature, previous } of changes.features?.updated ?? []) {
306
+ if (feature.visible !== previous.visible)
307
+ return true;
308
+ if (feature.layerId !== previous.layerId || feature.groupId !== previous.groupId)
309
+ return true;
310
+ }
311
+ return false;
312
+ }
313
+ /**
314
+ * Whether a selected item can be seen: it exists, its own visible flag and the ones of its
315
+ * group and layer are on, and neither it nor its group nor its layer is hidden locally.
316
+ * Each layer and group is looked up once per call site (a document can take time to read a
317
+ * layer).
318
+ */
319
+ function createShownLookup(document, ui) {
320
+ const layers = new Map();
321
+ const groups = new Map();
322
+ const layerShown = (id) => {
323
+ let shown = layers.get(id);
324
+ if (shown === undefined) {
325
+ const layer = document.getLayer(id);
326
+ shown = layer?.visible === true && !ui.isLocallyHidden(id);
327
+ layers.set(id, shown);
328
+ }
329
+ return shown;
330
+ };
331
+ const groupShown = (id) => {
332
+ let shown = groups.get(id);
333
+ if (shown === undefined) {
334
+ const group = document.getGroup(id);
335
+ const layerId = group ? groupLayerId(document, group) : undefined;
336
+ shown =
337
+ group?.visible === true &&
338
+ !ui.isLocallyHidden(id) &&
339
+ (layerId === undefined || layerShown(layerId));
340
+ groups.set(id, shown);
341
+ }
342
+ return shown;
343
+ };
344
+ return (type, id) => {
345
+ if (type === 'layer')
346
+ return layerShown(id);
347
+ if (type === 'group')
348
+ return groupShown(id);
349
+ const feature = document.getFeature(id);
350
+ if (!feature?.visible || ui.isLocallyHidden(id))
351
+ return false;
352
+ if (feature.groupId && !groupShown(feature.groupId))
353
+ return false;
354
+ return layerShown(feature.layerId);
355
+ };
356
+ }
357
+ /** The layer of a group: the one of its members, or the layer that lists an empty group */
358
+ function groupLayerId(document, group) {
359
+ for (const featureId of group.featureIds) {
360
+ const feature = document.getFeature(featureId);
361
+ if (feature)
362
+ return feature.layerId;
363
+ }
364
+ return document.getAllLayers().find((layer) => layer.order.includes(group.id))?.id;
365
+ }
366
+ /** Whether two coordinate values are equal, position by position */
367
+ function sameCoordinates(a, b) {
368
+ if (a === b)
369
+ return true;
370
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
371
+ return false;
372
+ for (let i = 0; i < a.length; i++) {
373
+ if (!sameCoordinates(a[i], b[i]))
374
+ return false;
375
+ }
376
+ return true;
377
+ }
378
+ /** The categories of a notification that belong to the document */
379
+ function documentPart(changes) {
380
+ const part = {};
381
+ if (changes.features)
382
+ part.features = changes.features;
383
+ if (changes.layers)
384
+ part.layers = changes.layers;
385
+ if (changes.groups)
386
+ part.groups = changes.groups;
387
+ if (changes.layerReorder)
388
+ part.layerReorder = changes.layerReorder;
389
+ if (changes.groupReorder)
390
+ part.groupReorder = changes.groupReorder;
391
+ if (changes.metadata)
392
+ part.metadata = changes.metadata;
393
+ if (changes.uiStateChanged)
394
+ part.uiStateChanged = true;
395
+ return part;
396
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,161 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * EventBridge implementation
5
+ *
6
+ * @internal
7
+ */
8
+ export class EventBridgeImpl {
9
+ constructor(store, emitter) {
10
+ Object.defineProperty(this, "store", {
11
+ enumerable: true,
12
+ configurable: true,
13
+ writable: true,
14
+ value: store
15
+ });
16
+ Object.defineProperty(this, "emitter", {
17
+ enumerable: true,
18
+ configurable: true,
19
+ writable: true,
20
+ value: emitter
21
+ });
22
+ Object.defineProperty(this, "unsubscribe", {
23
+ enumerable: true,
24
+ configurable: true,
25
+ writable: true,
26
+ value: null
27
+ });
28
+ }
29
+ start() {
30
+ if (this.unsubscribe)
31
+ return;
32
+ this.unsubscribe = this.store.subscribe((changes) => {
33
+ this.handleChanges(changes);
34
+ });
35
+ }
36
+ stop() {
37
+ if (this.unsubscribe) {
38
+ this.unsubscribe();
39
+ this.unsubscribe = null;
40
+ }
41
+ }
42
+ handleChanges(changes) {
43
+ // Every change is emitted as its own event, whatever the source: a subscriber that keeps
44
+ // another copy in sync (a server, an index) needs each of them. A subscriber that only
45
+ // rebuilds a view on any change subscribes to features.change instead, which comes once
46
+ // per flush, so a bulk load of N features does not cost it N rebuilds.
47
+ const features = changes.features;
48
+ if (features) {
49
+ const created = [...(features.created ?? [])];
50
+ const updated = (features.updated ?? []).map(({ feature, previous }) => ({
51
+ feature,
52
+ previous,
53
+ }));
54
+ const deleted = [...(features.deleted ?? [])];
55
+ for (const feature of created) {
56
+ this.emitter.emit('feature.create', { feature });
57
+ }
58
+ for (const payload of updated) {
59
+ this.emitter.emit('feature.update', payload);
60
+ }
61
+ for (const feature of deleted) {
62
+ this.emitter.emit('feature.delete', { feature });
63
+ }
64
+ if (created.length > 0 || updated.length > 0 || deleted.length > 0) {
65
+ this.emitter.emit('features.change', {
66
+ created,
67
+ updated,
68
+ deleted,
69
+ source: changes.source ?? 'local',
70
+ });
71
+ }
72
+ }
73
+ // Layer events
74
+ if (changes.layers) {
75
+ if (changes.layers.created) {
76
+ for (const layer of changes.layers.created) {
77
+ this.emitter.emit('layer.create', { layer });
78
+ }
79
+ }
80
+ if (changes.layers.updated) {
81
+ for (const { layer, previous } of changes.layers.updated) {
82
+ this.emitter.emit('layer.update', { layer, previous });
83
+ }
84
+ }
85
+ if (changes.layers.deleted) {
86
+ for (const layer of changes.layers.deleted) {
87
+ this.emitter.emit('layer.delete', { layer });
88
+ }
89
+ }
90
+ if (changes.layers.orderChanged) {
91
+ this.emitter.emit('layer.reorder', {
92
+ order: changes.layers.orderChanged.order,
93
+ previous: changes.layers.orderChanged.previous,
94
+ });
95
+ }
96
+ }
97
+ // Group events
98
+ if (changes.groups) {
99
+ if (changes.groups.created) {
100
+ for (const group of changes.groups.created) {
101
+ this.emitter.emit('group.create', { group });
102
+ }
103
+ }
104
+ if (changes.groups.updated) {
105
+ for (const { group, previous } of changes.groups.updated) {
106
+ this.emitter.emit('group.update', { group, previous });
107
+ }
108
+ }
109
+ if (changes.groups.deleted) {
110
+ for (const group of changes.groups.deleted) {
111
+ this.emitter.emit('group.delete', { group });
112
+ }
113
+ }
114
+ }
115
+ // Layer reorder event (reordering within a layer)
116
+ if (changes.layerReorder) {
117
+ // Emitted as a layer.update event (in order to update the UI)
118
+ const layer = this.store.getLayer(changes.layerReorder.layerId);
119
+ if (layer) {
120
+ this.emitter.emit('layer.update', {
121
+ layer,
122
+ previous: { ...layer, order: changes.layerReorder.previous },
123
+ });
124
+ }
125
+ }
126
+ // Group reorder event (reordering within a group)
127
+ if (changes.groupReorder) {
128
+ // Emitted as a group.update event (in order to update the UI)
129
+ const group = this.store.getGroup(changes.groupReorder.groupId);
130
+ if (group) {
131
+ this.emitter.emit('group.update', {
132
+ group,
133
+ previous: { ...group, featureIds: changes.groupReorder.previous },
134
+ });
135
+ }
136
+ }
137
+ // Selection event
138
+ if (changes.selection) {
139
+ this.emitter.emit('selection.change', {
140
+ type: changes.selection.type,
141
+ ids: changes.selection.ids,
142
+ previousType: changes.selection.previousType,
143
+ previousIds: changes.selection.previousIds,
144
+ });
145
+ }
146
+ // Mode event
147
+ if (changes.mode) {
148
+ this.emitter.emit('mode.change', {
149
+ mode: changes.mode.mode,
150
+ previousMode: changes.mode.previous,
151
+ });
152
+ }
153
+ // Metadata event
154
+ if (changes.metadata) {
155
+ this.emitter.emit('metadata.change', {
156
+ metadata: changes.metadata.metadata,
157
+ previous: changes.metadata.previous,
158
+ });
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Store module
3
+ *
4
+ * Only the symbols that src/index.ts publishes are listed here (see "The public
5
+ * surface" in CONTRIBUTING.md). Internal code imports from the defining file.
6
+ */
7
+ export type { FeatureLockStore, InteractionGateStore } from './lock.js';
8
+ export { isFeatureLocked, isGroupLocked, isInteractionBlocked } from './lock.js';
9
+ export { MemoryStore } from './memory.js';
10
+ export type { SpatialQuery } from './spatial/spatial-index.js';
11
+ export type { DocumentStore, Store, StoreView, UiState } from './store.js';
12
+ export type { BoundingBox, BoundingBoxCoordsSimple, BoxSelection, Coordinate, Data, DragOperationType, DragState, ExportFormat, ExportOptions, ExportResult, Feature, FeatureCoordinates, FeatureInput, FeatureStyle, FeatureType, FileData, Group, ImageProperties, ImageStyle, Layer, LoadOptions, LoadResult, Metadata, Mode, RotateInfo, Selection, SelectionType, SkippedFeature, StateChanges, StyleRule, TentativeState, UpdateFeatureOptions, UpdateSource, VertexRef, VertexSelection, } from './types.js';
@@ -0,0 +1,4 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ export { isFeatureLocked, isGroupLocked, isInteractionBlocked } from './lock.js';
4
+ export { MemoryStore } from './memory.js';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Derivation of local visibility
3
+ *
4
+ * Resolves the visibility hidden only on this client (the set accumulated by
5
+ * setLocallyHidden) through a 3-step cascade of the feature (the ids of itself / the
6
+ * group it belongs to / the layer it belongs to). It is a layer separate from the shared
7
+ * visible, and rendering, hit testing and box selection respect it.
8
+ *
9
+ * A pure function with the same standing as lock.ts (isFeatureLocked). It does not change
10
+ * the shared data (feature.visible and so on) at all. getOrderedFeatures is kept pure and
11
+ * this is derived separately here.
12
+ */
13
+ import type { Feature } from './types.js';
14
+ /** The minimal interface that isLocallyHidden requires. */
15
+ export interface LocalHiddenStore {
16
+ isLocallyHidden(id: string): boolean;
17
+ }
18
+ /** The minimal interface that getDisplayFeatures requires. */
19
+ export interface DisplayStore extends LocalHiddenStore {
20
+ getOrderedFeatures(): Feature[];
21
+ }
@@ -0,0 +1,27 @@
1
+ // SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Whether the feature is locally hidden on this client (true if itself / the group it
5
+ * belongs to / the layer it belongs to is in the hidden set).
6
+ *
7
+ * @internal
8
+ */
9
+ export function isLocallyHidden(feature, store) {
10
+ if (store.isLocallyHidden(feature.id))
11
+ return true;
12
+ if (feature.groupId && store.isLocallyHidden(feature.groupId))
13
+ return true;
14
+ if (store.isLocallyHidden(feature.layerId))
15
+ return true;
16
+ return false;
17
+ }
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.
22
+ *
23
+ * @internal
24
+ */
25
+ export function getDisplayFeatures(store) {
26
+ return store.getOrderedFeatures().filter((feature) => !isLocallyHidden(feature, store));
27
+ }