@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.
- package/CHANGELOG.md +1016 -2
- package/README.ja.md +39 -19
- package/README.md +41 -21
- package/dist/api/datasets.d.ts +258 -0
- package/dist/api/document.d.ts +66 -0
- package/dist/api/draw.d.ts +135 -0
- package/dist/api/draw.js +18 -0
- package/dist/api/drawing.d.ts +87 -0
- package/dist/api/errors.d.ts +35 -0
- package/dist/api/errors.js +35 -0
- package/dist/api/events.d.ts +306 -0
- package/dist/api/extension/context.d.ts +247 -0
- package/dist/api/extension/feature-type.d.ts +129 -0
- package/dist/api/extension/mode.d.ts +123 -0
- package/dist/api/extension/plugin.d.ts +51 -0
- package/dist/api/extension/plugin.js +3 -0
- package/dist/api/extension/provider.d.ts +119 -0
- package/dist/api/extension/provider.js +3 -0
- package/dist/api/extension/render.d.ts +176 -0
- package/dist/api/extension/render.js +3 -0
- package/dist/api/extension/store.d.ts +190 -0
- package/dist/api/extension/store.js +3 -0
- package/dist/api/extensions.d.ts +306 -0
- package/dist/api/extensions.js +3 -0
- package/dist/api/features.d.ts +188 -0
- package/dist/api/features.js +3 -0
- package/dist/api/groups.d.ts +111 -0
- package/dist/api/groups.js +3 -0
- package/dist/api/hidden.d.ts +45 -0
- package/dist/api/hidden.js +3 -0
- package/dist/api/impl/adapters.js +463 -0
- package/dist/api/impl/contexts.js +466 -0
- package/dist/api/impl/create-draw.js +124 -0
- package/dist/api/impl/datasets.js +404 -0
- package/dist/api/impl/destroy-guard.js +74 -0
- package/dist/api/impl/document.js +280 -0
- package/dist/api/impl/drawing.js +180 -0
- package/dist/api/impl/engine-context.d.ts +7 -0
- package/dist/api/{context.js → impl/engine-context.js} +49 -38
- package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
- package/dist/api/impl/events.js +422 -0
- package/dist/api/impl/extension-host.js +361 -0
- package/dist/api/impl/extensions.js +229 -0
- package/dist/api/impl/features.js +445 -0
- package/dist/api/impl/geometry/apply.d.ts +32 -0
- package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
- package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
- package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/split.js +10 -21
- package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
- package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
- package/dist/api/impl/geometry/types.js +3 -0
- package/dist/api/impl/groups.d.ts +3 -0
- package/dist/api/impl/groups.js +268 -0
- package/dist/api/impl/hidden.js +60 -0
- package/dist/api/impl/import-export/constants.d.ts +22 -0
- package/dist/api/impl/import-export/constants.js +24 -0
- package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
- package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
- package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
- package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
- package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
- package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
- package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
- package/dist/api/impl/import-export/image-import.d.ts +16 -0
- package/dist/api/impl/import-export/image-import.js +73 -0
- package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
- package/dist/api/impl/import-export/legacy-image-style.js +49 -0
- package/dist/api/impl/import-export/native-format.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
- package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
- package/dist/api/impl/import-export/native-upgrade.js +139 -0
- package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
- package/dist/api/impl/import-export/style-validation.d.ts +24 -0
- package/dist/api/impl/import-export/style-validation.js +86 -0
- package/dist/api/impl/import-export/types.d.ts +52 -0
- package/dist/api/impl/import-export/types.js +3 -0
- package/dist/api/impl/input.js +180 -0
- package/dist/api/impl/layers.js +307 -0
- package/dist/api/impl/metadata.d.ts +1 -0
- package/dist/api/impl/metadata.js +22 -0
- package/dist/api/impl/options.d.ts +1 -0
- package/dist/api/impl/options.js +822 -0
- package/dist/api/impl/placement.d.ts +1 -0
- package/dist/api/impl/placement.js +138 -0
- package/dist/api/impl/render-context.d.ts +13 -0
- package/dist/api/impl/render-context.js +272 -0
- package/dist/api/impl/rows.d.ts +1 -0
- package/dist/api/impl/rows.js +46 -0
- package/dist/api/impl/selection.d.ts +1 -0
- package/dist/api/impl/selection.js +186 -0
- package/dist/api/impl/shared.d.ts +64 -0
- package/dist/api/impl/shared.js +178 -0
- package/dist/api/impl/validate-extension.d.ts +1 -0
- package/dist/api/impl/validate-extension.js +159 -0
- package/dist/api/layers.d.ts +130 -0
- package/dist/api/layers.js +3 -0
- package/dist/api/metadata.d.ts +18 -0
- package/dist/api/metadata.js +3 -0
- package/dist/api/model.d.ts +487 -0
- package/dist/api/model.js +47 -0
- package/dist/api/options.d.ts +466 -0
- package/dist/api/options.js +3 -0
- package/dist/api/selection.d.ts +94 -0
- package/dist/api/selection.js +3 -0
- package/dist/api/state.d.ts +155 -0
- package/dist/api/state.js +12 -0
- package/dist/{display → dataset}/chunk.d.ts +1 -1
- package/dist/{display → dataset}/chunk.js +4 -3
- package/dist/{display → dataset}/dataset.js +18 -21
- package/dist/dataset/interaction.d.ts +1 -0
- package/dist/{display → dataset}/interaction.js +18 -6
- package/dist/dataset/manager.d.ts +1 -0
- package/dist/dataset/provider.d.ts +1 -0
- package/dist/{display → dataset}/retained.d.ts +1 -1
- package/dist/{display → dataset}/retained.js +8 -7
- package/dist/dataset/source.d.ts +1 -0
- package/dist/{display → dataset}/source.js +17 -4
- package/dist/dataset/spatial.d.ts +1 -0
- package/dist/{display → dataset}/spatial.js +1 -1
- package/dist/dataset/style.d.ts +1 -0
- package/dist/{display → dataset}/style.js +1 -1
- package/dist/dataset/table-source.d.ts +1 -0
- package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
- package/dist/{display → dataset}/thinning.d.ts +0 -10
- package/dist/{display → dataset}/thinning.js +3 -2
- package/dist/dataset/triangulation.d.ts +1 -0
- package/dist/{display → dataset}/triangulation.js +0 -0
- package/dist/{display → dataset}/types.d.ts +82 -121
- package/dist/dataset/types.js +61 -0
- package/dist/dispatcher/hit-test/box-strategies.js +13 -13
- package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
- package/dist/dispatcher/hit-test/globe-shape.js +5 -4
- package/dist/dispatcher/hit-test/service.d.ts +17 -0
- package/dist/dispatcher/hit-test/service.js +80 -16
- package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
- package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
- package/dist/dispatcher/hit-test/strategies/image.js +6 -18
- package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
- package/dist/dispatcher/hit-test/strategies/line.js +9 -2
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
- package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
- package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
- package/dist/dispatcher/hit-test/strategies/point.js +8 -4
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
- package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
- package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
- package/dist/dispatcher/input-router.js +152 -69
- package/dist/dispatcher/normalizer.js +6 -2
- package/dist/dispatcher/types.d.ts +6 -1
- package/dist/extension/feature-handler.d.ts +1 -182
- package/dist/extension/index.d.ts +4 -7
- package/dist/extension/renderers.d.ts +1 -208
- package/dist/geometry/angle.d.ts +0 -8
- package/dist/geometry/angle.js +0 -8
- package/dist/geometry/bbox.d.ts +4 -12
- package/dist/geometry/bbox.js +4 -12
- package/dist/geometry/boolean.d.ts +0 -51
- package/dist/geometry/boolean.js +0 -51
- package/dist/geometry/buffer.d.ts +0 -26
- package/dist/geometry/buffer.js +0 -26
- package/dist/geometry/circle.d.ts +0 -9
- package/dist/geometry/circle.js +0 -9
- package/dist/geometry/coords.d.ts +0 -16
- package/dist/geometry/coords.js +0 -16
- package/dist/geometry/distance.d.ts +0 -24
- package/dist/geometry/distance.js +0 -24
- package/dist/geometry/errors.d.ts +21 -36
- package/dist/geometry/errors.js +49 -29
- package/dist/geometry/geojson.d.ts +81 -0
- package/dist/geometry/geojson.js +164 -0
- package/dist/geometry/index.d.ts +38 -23
- package/dist/geometry/index.js +43 -31
- package/dist/geometry/measure.d.ts +0 -27
- package/dist/geometry/measure.js +0 -27
- package/dist/geometry/predicates.d.ts +0 -9
- package/dist/geometry/predicates.js +0 -9
- package/dist/geometry/public-bounds.d.ts +26 -0
- package/dist/geometry/public-bounds.js +30 -0
- package/dist/geometry/public-combine.d.ts +78 -0
- package/dist/geometry/public-combine.js +82 -0
- package/dist/geometry/public-create.d.ts +54 -0
- package/dist/geometry/public-create.js +70 -0
- package/dist/geometry/public-measure.d.ts +170 -0
- package/dist/geometry/public-measure.js +283 -0
- package/dist/geometry/public-predicates.d.ts +54 -0
- package/dist/geometry/public-predicates.js +144 -0
- package/dist/geometry/public-repair.d.ts +75 -0
- package/dist/geometry/public-repair.js +77 -0
- package/dist/geometry/simplify.d.ts +0 -7
- package/dist/geometry/simplify.js +0 -7
- package/dist/geometry/split.d.ts +0 -20
- package/dist/geometry/split.js +0 -20
- package/dist/geometry/units.d.ts +20 -12
- package/dist/geometry/units.js +20 -12
- package/dist/index.d.ts +52 -66
- package/dist/index.js +6 -18
- package/dist/messages.d.ts +7 -7
- package/dist/modes/draw/circle.js +83 -207
- package/dist/modes/draw/commit-layer.d.ts +5 -16
- package/dist/modes/draw/commit-layer.js +2 -13
- package/dist/modes/draw/freehand.js +108 -246
- package/dist/modes/draw/image.js +4 -2
- package/dist/modes/draw/index.d.ts +5 -5
- package/dist/modes/draw/index.js +5 -5
- package/dist/modes/draw/line.js +18 -354
- package/dist/modes/draw/point.js +29 -78
- package/dist/modes/draw/polygon.js +23 -368
- package/dist/modes/draw/trace-support.d.ts +43 -36
- package/dist/modes/draw/trace-support.js +95 -98
- package/dist/modes/draw/vertex-drawing.d.ts +1 -0
- package/dist/modes/draw/vertex-drawing.js +176 -0
- package/dist/modes/handler.d.ts +1 -285
- package/dist/modes/manager.d.ts +2 -2
- package/dist/modes/manager.js +3 -0
- package/dist/modes/select/box-selection.d.ts +3 -3
- package/dist/modes/select/box-selection.js +2 -1
- package/dist/modes/select/click-handler.d.ts +5 -5
- package/dist/modes/select/click-handler.js +22 -20
- package/dist/modes/select/cursor-handler.d.ts +2 -2
- package/dist/modes/select/drag/intermediate-writes.js +1 -1
- package/dist/modes/select/drag/move.js +3 -3
- package/dist/modes/select/drag/operation.d.ts +3 -3
- package/dist/modes/select/drag/radius.js +5 -4
- package/dist/modes/select/drag/transform.d.ts +2 -2
- package/dist/modes/select/drag/transform.js +11 -5
- package/dist/modes/select/drag/vertex.d.ts +2 -2
- package/dist/modes/select/drag/vertex.js +13 -8
- package/dist/modes/select/drag-handler.js +44 -25
- package/dist/modes/select/mode.js +17 -17
- package/dist/modes/select/shortcut-handler.d.ts +8 -8
- package/dist/modes/select/shortcut-handler.js +9 -7
- package/dist/operations/layer-operations.js +29 -168
- package/dist/operations/resize.d.ts +2 -2
- package/dist/operations/resize.js +5 -5
- package/dist/operations/rotate.js +5 -5
- package/dist/operations/selection-operations.d.ts +16 -1
- package/dist/operations/selection-operations.js +28 -13
- package/dist/operations/shared-vertex.js +4 -2
- package/dist/operations/trace-graph.d.ts +0 -18
- package/dist/operations/trace-graph.js +0 -18
- package/dist/operations/vertex.js +36 -35
- package/dist/shared/color.d.ts +1 -0
- package/dist/shared/color.js +245 -0
- package/dist/shared/config/constants.d.ts +1 -54
- package/dist/shared/config/constants.js +1 -58
- package/dist/shared/config/feature-style.d.ts +16 -13
- package/dist/shared/config/feature-style.js +9 -0
- package/dist/shared/config/rendering.d.ts +3 -3
- package/dist/shared/config/selection-highlight.d.ts +0 -15
- package/dist/shared/config/selection-highlight.js +4 -7
- package/dist/shared/config/selection.d.ts +2 -32
- package/dist/shared/config/selection.js +0 -18
- package/dist/shared/config/topology.d.ts +2 -2
- package/dist/shared/config/trace.d.ts +4 -4
- package/dist/shared/math/angle.d.ts +1 -1
- package/dist/shared/math/angle.js +1 -1
- package/dist/shared/math/circle.d.ts +1 -1
- package/dist/shared/math/circle.js +1 -1
- package/dist/shared/math/distance.d.ts +2 -1
- package/dist/shared/math/distance.js +3 -2
- package/dist/shared/math/index.d.ts +1 -1
- package/dist/shared/math/index.js +1 -1
- package/dist/shared/math/transform.d.ts +23 -0
- package/dist/shared/math/transform.js +47 -28
- package/dist/shared/properties.d.ts +18 -0
- package/dist/shared/properties.js +129 -0
- package/dist/shared/types/events.d.ts +15 -7
- package/dist/shared/types/model.d.ts +109 -159
- package/dist/shared/types/style.d.ts +1 -1
- package/dist/shared/utils/color.d.ts +2 -36
- package/dist/shared/utils/color.js +13 -70
- package/dist/shared/utils/coordinates.d.ts +30 -4
- package/dist/shared/utils/coordinates.js +56 -10
- package/dist/shared/utils/event-emitter.d.ts +1 -262
- package/dist/shared/utils/event-emitter.js +4 -3
- package/dist/shared/utils/feature-bbox.js +8 -7
- package/dist/shared/utils/feature-segments.js +5 -4
- package/dist/shared/utils/image.d.ts +0 -4
- package/dist/shared/utils/image.js +0 -6
- package/dist/shared/utils/name-generator.d.ts +14 -20
- package/dist/shared/utils/name-generator.js +20 -3
- package/dist/shared/utils/pixel-ratio.d.ts +9 -3
- package/dist/shared/utils/pixel-ratio.js +13 -4
- package/dist/shared/utils/property.d.ts +7 -50
- package/dist/shared/utils/property.js +22 -87
- package/dist/snapping/custom-targets.js +21 -4
- package/dist/snapping/indicator.js +20 -11
- package/dist/snapping/providers/display.d.ts +6 -1
- package/dist/snapping/providers/display.js +2 -1
- package/dist/snapping/providers/guide.d.ts +3 -43
- package/dist/snapping/providers/guide.js +1 -44
- package/dist/snapping/providers/intersection.js +1 -1
- package/dist/snapping/providers/store.js +3 -3
- package/dist/snapping/service.js +18 -7
- package/dist/snapping/types.d.ts +9 -35
- package/dist/store/draw-store.js +233 -142
- package/dist/store/local-visibility.d.ts +11 -6
- package/dist/store/local-visibility.js +38 -7
- package/dist/store/lock.d.ts +0 -6
- package/dist/store/lock.js +0 -6
- package/dist/store/memory/change-bus.d.ts +3 -3
- package/dist/store/memory/change-bus.js +12 -0
- package/dist/store/memory/file-store.d.ts +2 -2
- package/dist/store/memory/ui-state.d.ts +1 -51
- package/dist/store/memory/ui-state.js +122 -134
- package/dist/store/memory.d.ts +1 -8
- package/dist/store/memory.js +249 -45
- package/dist/store/ordering.d.ts +9 -0
- package/dist/store/ordering.js +17 -0
- package/dist/store/spatial/spatial-index.d.ts +1 -1
- package/dist/store/spatial/spatial-index.js +1 -1
- package/dist/store/spatial/store-spatial-index.d.ts +3 -1
- package/dist/store/spatial/store-spatial-index.js +9 -3
- package/dist/store/store.d.ts +66 -107
- package/dist/store/types.d.ts +1 -1
- package/dist/store/writable-layer.d.ts +1 -1
- package/dist/store/writable-layer.js +2 -2
- package/dist/table/builder.d.ts +83 -0
- package/dist/table/builder.js +381 -0
- package/dist/table/index.d.ts +37 -0
- package/dist/table/index.js +5 -0
- package/dist/table/packed-rtree.d.ts +1 -0
- package/dist/{display → table}/packed-rtree.js +1 -1
- package/dist/table/partition.d.ts +1 -0
- package/dist/{display → table}/partition.js +3 -3
- package/dist/table/prepare.d.ts +44 -0
- package/dist/table/prepare.js +136 -0
- package/dist/table/table.d.ts +1 -0
- package/dist/{display/columnar → table}/table.js +29 -25
- package/dist/{display/columnar → table}/types.d.ts +68 -72
- package/dist/table/types.js +3 -0
- package/dist/view/coordinator.js +4 -3
- package/dist/view/feature-companion.d.ts +13 -7
- package/dist/view/feature-companion.js +11 -3
- package/dist/view/globe-subdivision.js +3 -3
- package/dist/view/layer/attach.d.ts +1 -1
- package/dist/view/layer/attach.js +1 -1
- package/dist/view/layer/custom-layer.js +40 -11
- package/dist/view/layer/display-list.js +2 -1
- package/dist/view/layer/drape-planner.d.ts +2 -2
- package/dist/view/layer/frame-render.d.ts +3 -3
- package/dist/view/layer/frame-render.js +7 -2
- package/dist/view/layer/frame-state.d.ts +6 -6
- package/dist/view/layer/index.d.ts +2 -2
- package/dist/view/layer/index.js +1 -1
- package/dist/view/layer/render.d.ts +4 -4
- package/dist/view/layer/render.js +3 -8
- package/dist/view/layer/renderers.d.ts +2 -2
- package/dist/view/layer/renderers.js +1 -1
- package/dist/view/layer/slot-manager.d.ts +2 -2
- package/dist/view/layer/slot-manager.js +4 -4
- package/dist/view/layer/slots.d.ts +2 -2
- package/dist/view/layer/slots.js +1 -1
- package/dist/view/layer/store-retained-bbox.js +3 -2
- package/dist/view/layer/store-retained-classify.d.ts +5 -7
- package/dist/view/layer/store-retained-classify.js +19 -7
- package/dist/view/layer/store-retained-collect.js +8 -7
- package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
- package/dist/view/layer/store-retained-coord-patch.js +13 -4
- package/dist/view/layer/store-retained-immediate.d.ts +3 -3
- package/dist/view/layer/store-retained-immediate.js +3 -8
- package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
- package/dist/view/layer/store-retained.d.ts +2 -2
- package/dist/view/layer/store-retained.js +1 -1
- package/dist/view/renderers/batch-manager.js +8 -7
- package/dist/view/renderers/drawer.js +21 -15
- package/dist/view/renderers/image.js +13 -39
- package/dist/view/renderers/line/line-types.d.ts +3 -3
- package/dist/view/renderers/line/sdf-line.js +3 -1
- package/dist/view/renderers/point/billboard-depth.js +1 -1
- package/dist/view/renderers/point/point-instance.js +1 -1
- package/dist/view/renderers/point/point-shape.js +2 -2
- package/dist/view/renderers/point/point-style.js +48 -4
- package/dist/view/renderers/polygon/batch.js +1 -2
- package/dist/view/renderers/polygon/fill.js +3 -1
- package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
- package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
- package/dist/view/renderers/stroke.js +3 -1
- package/dist/view/shaders/helpers.d.ts +2 -42
- package/dist/view/shaders/helpers.js +0 -6
- package/dist/view/shaders/projection.d.ts +15 -7
- package/dist/view/shaders/projection.js +23 -6
- package/dist/view/shaders/quad.d.ts +16 -12
- package/dist/view/shaders/quad.js +34 -13
- package/dist/view/style-rule.d.ts +5 -42
- package/dist/view/style-rule.js +20 -44
- package/dist/view/terrain/binding.d.ts +1 -0
- package/dist/view/terrain/binding.js +29 -0
- package/dist/view/terrain/context.d.ts +3 -4
- package/dist/view/terrain/context.js +4 -5
- package/dist/view/terrain/drape/geometry.js +1 -1
- package/dist/view/terrain/drape/pass.d.ts +1 -1
- package/dist/view/terrain/drape/pass.js +8 -7
- package/dist/view/terrain/polygon.d.ts +9 -5
- package/dist/view/terrain/polygon.js +16 -2
- package/dist/view/terrain/state.d.ts +1 -1
- package/dist/view/terrain/state.js +1 -1
- package/dist/view/terrain/tessellation.d.ts +2 -2
- package/dist/view/terrain/tessellation.js +1 -1
- package/dist/view/ui/auxiliary-handles.d.ts +6 -29
- package/dist/view/ui/bounds.js +8 -12
- package/dist/view/ui/handle-test.js +2 -2
- package/dist/view/ui/handle-thinning.js +17 -17
- package/dist/view/ui/handles.js +21 -13
- package/dist/view/ui/helper.d.ts +1 -1
- package/dist/view/ui/helper.js +1 -1
- package/dist/view/ui/index.d.ts +1 -1
- package/dist/view/ui/selection-scope.js +4 -2
- package/dist/view/ui/selection-ui/bounding-box.js +6 -6
- package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
- package/dist/view/ui/selection-ui/extension-registry.js +70 -7
- package/dist/view/ui/selection-ui/index.d.ts +2 -2
- package/dist/view/ui/selection-ui/index.js +1 -1
- package/dist/view/ui/selection-ui/renderer.js +15 -38
- package/dist/view/ui/selection-ui/types.d.ts +17 -2
- package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
- package/dist/view/ui/selection-ui-drawer.js +63 -2
- package/dist/view/ui/tentative.js +1 -1
- package/dist/webgl/index.d.ts +65 -0
- package/dist/webgl/index.js +62 -0
- package/package.json +20 -9
- package/dist/api/api.d.ts +0 -1259
- package/dist/api/api.js +0 -86
- package/dist/api/context.d.ts +0 -173
- package/dist/api/display-api.js +0 -23
- package/dist/api/event-api.d.ts +0 -13
- package/dist/api/event-api.js +0 -17
- package/dist/api/extension-api.d.ts +0 -46
- package/dist/api/extension-api.js +0 -85
- package/dist/api/feature-api.d.ts +0 -11
- package/dist/api/feature-api.js +0 -101
- package/dist/api/geometry/apply.d.ts +0 -51
- package/dist/api/geometry/boolean.d.ts +0 -28
- package/dist/api/geometry/boolean.js +0 -65
- package/dist/api/geometry/types.d.ts +0 -31
- package/dist/api/geometry-operations.d.ts +0 -162
- package/dist/api/geometry-operations.js +0 -94
- package/dist/api/group-api.d.ts +0 -10
- package/dist/api/group-api.js +0 -78
- package/dist/api/import-export/constants.d.ts +0 -29
- package/dist/api/import-export/constants.js +0 -40
- package/dist/api/import-export/file-name.d.ts +0 -10
- package/dist/api/import-export/file-name.js +0 -20
- package/dist/api/import-export/geojson-export.d.ts +0 -19
- package/dist/api/import-export/image-import.d.ts +0 -12
- package/dist/api/import-export/image-import.js +0 -53
- package/dist/api/import-export/index.d.ts +0 -9
- package/dist/api/import-export/index.js +0 -107
- package/dist/api/import-export/native-format.d.ts +0 -15
- package/dist/api/import-export/style-validation.d.ts +0 -27
- package/dist/api/import-export/style-validation.js +0 -49
- package/dist/api/import-export/types.d.ts +0 -26
- package/dist/api/index.d.ts +0 -15
- package/dist/api/index.js +0 -3
- package/dist/api/input-api.d.ts +0 -158
- package/dist/api/input-api.js +0 -144
- package/dist/api/instance-api.d.ts +0 -38
- package/dist/api/instance-api.js +0 -136
- package/dist/api/layer-api.d.ts +0 -12
- package/dist/api/layer-api.js +0 -62
- package/dist/api/selection-api.d.ts +0 -7
- package/dist/api/selection-api.js +0 -78
- package/dist/api/snapping-api.d.ts +0 -125
- package/dist/api/snapping-api.js +0 -50
- package/dist/api/topology-api.d.ts +0 -30
- package/dist/api/topology-api.js +0 -16
- package/dist/api/tracing-api.d.ts +0 -31
- package/dist/api/tracing-api.js +0 -16
- package/dist/dispatcher/hit-test/index.d.ts +0 -14
- package/dist/dispatcher/hit-test/index.js +0 -9
- package/dist/dispatcher/index.d.ts +0 -15
- package/dist/dispatcher/index.js +0 -3
- package/dist/display/columnar/index.d.ts +0 -12
- package/dist/display/columnar/index.js +0 -13
- package/dist/display/columnar/prepare.d.ts +0 -42
- package/dist/display/columnar/prepare.js +0 -116
- package/dist/display/index.d.ts +0 -13
- package/dist/display/types.js +0 -43
- package/dist/maplibre-gl-draw.d.ts +0 -47
- package/dist/modes/cursor.js +0 -72
- package/dist/modes/index.d.ts +0 -7
- package/dist/operations/index.d.ts +0 -9
- package/dist/operations/index.js +0 -3
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/mutation-hooks.d.ts +0 -28
- package/dist/plugins/mutation-hooks.js +0 -84
- package/dist/plugins/plugin-context.js +0 -367
- package/dist/plugins/plugin-manager.d.ts +0 -103
- package/dist/plugins/plugin-manager.js +0 -316
- package/dist/plugins/plugin.d.ts +0 -529
- package/dist/shared/config/index.d.ts +0 -17
- package/dist/shared/config/index.js +0 -8
- package/dist/shared/utils/index.d.ts +0 -15
- package/dist/shared/utils/index.js +0 -24
- package/dist/snapping/index.d.ts +0 -14
- package/dist/snapping/index.js +0 -4
- package/dist/store/change-merger.js +0 -102
- package/dist/store/event-bridge.js +0 -161
- package/dist/store/index.d.ts +0 -12
- package/dist/store/index.js +0 -4
- package/dist/view/index.d.ts +0 -47
- package/dist/view/index.js +0 -20
- /package/dist/api/{geometry/types.js → datasets.js} +0 -0
- /package/dist/api/{import-export/types.js → document.js} +0 -0
- /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
- /package/dist/{display/index.js → api/events.js} +0 -0
- /package/dist/{modes/index.js → api/extension/context.js} +0 -0
- /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
- /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
- /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
- /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
- /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
- /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
- /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
- /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
- /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
- /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
- /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
- /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
- /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
- /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
- /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
- /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
- /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
- /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
- /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
- /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
- /package/dist/{display → dataset}/chunk-set.js +0 -0
- /package/dist/{display → dataset}/dataset.d.ts +0 -0
- /package/dist/{display → dataset}/manager.js +0 -0
- /package/dist/{display → dataset}/provider.js +0 -0
- /package/dist/{display → dataset}/selection.d.ts +0 -0
- /package/dist/{display → dataset}/selection.js +0 -0
package/dist/api/instance-api.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
import { INITIAL_DRAPE_DEBUG } from '../view/terrain/context.js';
|
|
4
|
-
import { getTerrainDrapeDebug, getTerrainRenderState, INACTIVE_TERRAIN_STATE, } from '../view/terrain/state.js';
|
|
5
|
-
export function createInstanceApi(deps) {
|
|
6
|
-
const { map, store, modeManager, eventBridge, renderCoordinator, inputRouter, inputNormalizer, customLayer, autoNameGenerator, pixelRatioSource, pluginManager, } = deps;
|
|
7
|
-
return {
|
|
8
|
-
getMap() {
|
|
9
|
-
return map;
|
|
10
|
-
},
|
|
11
|
-
getStore() {
|
|
12
|
-
return store;
|
|
13
|
-
},
|
|
14
|
-
getMode() {
|
|
15
|
-
return modeManager.getMode();
|
|
16
|
-
},
|
|
17
|
-
setMode(mode) {
|
|
18
|
-
// Following the SSoT, call Store.setMode() through the ModeManager
|
|
19
|
-
// The event is emitted from the Store through the EventBridge
|
|
20
|
-
return modeManager.setMode(mode);
|
|
21
|
-
},
|
|
22
|
-
getMetadata() {
|
|
23
|
-
return store.getMetadata();
|
|
24
|
-
},
|
|
25
|
-
setMetadata(metadata) {
|
|
26
|
-
return store.setMetadata(metadata);
|
|
27
|
-
},
|
|
28
|
-
isReadOnly() {
|
|
29
|
-
return store.isReadOnly();
|
|
30
|
-
},
|
|
31
|
-
setReadOnly(value) {
|
|
32
|
-
store.setReadOnly(value);
|
|
33
|
-
},
|
|
34
|
-
isInteractionLocked() {
|
|
35
|
-
return store.isInteractionLocked();
|
|
36
|
-
},
|
|
37
|
-
setInteractionLock(value) {
|
|
38
|
-
store.setInteractionLock(value);
|
|
39
|
-
// If drawing is in progress at the moment the interaction lock is applied, discard the
|
|
40
|
-
// tentative geometry and go back to select. Switching to select through the modeManager
|
|
41
|
-
// makes the onStop of the drawing handler clean up the tentative geometry. The setMode
|
|
42
|
-
// gate lets a transition to select through, so this holds naturally.
|
|
43
|
-
if (value && store.getMode() !== 'select') {
|
|
44
|
-
modeManager.setMode('select');
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
getRenderSlots() {
|
|
48
|
-
// For a CustomLayer without frames (an external implementation), return the single
|
|
49
|
-
// conventional layer as one interval
|
|
50
|
-
if ('getRenderSlots' in customLayer && typeof customLayer.getRenderSlots === 'function') {
|
|
51
|
-
return customLayer.getRenderSlots();
|
|
52
|
-
}
|
|
53
|
-
return [{ layerId: customLayer.id, from: 0, to: store.getLayerOrder().length }];
|
|
54
|
-
},
|
|
55
|
-
getRenderScale() {
|
|
56
|
-
return pixelRatioSource.getRenderScale();
|
|
57
|
-
},
|
|
58
|
-
setRenderScale(scale) {
|
|
59
|
-
// The retained batches that have already been baked are rebuilt by looking at the
|
|
60
|
-
// scale, so prompt a redraw only when it has changed (on the next frame the CustomLayer
|
|
61
|
-
// and the datasets each start rebuilding).
|
|
62
|
-
if (!pixelRatioSource.setRenderScale(scale))
|
|
63
|
-
return;
|
|
64
|
-
map.triggerRepaint();
|
|
65
|
-
},
|
|
66
|
-
getPixelRatio() {
|
|
67
|
-
return pixelRatioSource.resolve();
|
|
68
|
-
},
|
|
69
|
-
getTerrainDiagnostics() {
|
|
70
|
-
// The terrain state is held by the CustomLayer of this instance (an external
|
|
71
|
-
// implementation without one reports the inactive state)
|
|
72
|
-
const terrain = 'getTerrainContext' in customLayer && typeof customLayer.getTerrainContext === 'function'
|
|
73
|
-
? customLayer.getTerrainContext()
|
|
74
|
-
: null;
|
|
75
|
-
return Object.freeze({
|
|
76
|
-
render: toRenderDiagnostics(terrain ? getTerrainRenderState(terrain) : INACTIVE_TERRAIN_STATE),
|
|
77
|
-
drape: Object.freeze({
|
|
78
|
-
...(terrain ? getTerrainDrapeDebug(terrain) : INITIAL_DRAPE_DEBUG),
|
|
79
|
-
}),
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
hasPendingWork() {
|
|
83
|
-
// The engine of this instance knows its deferred work (an external implementation of the
|
|
84
|
-
// layer reports none)
|
|
85
|
-
return ('hasPendingWork' in customLayer &&
|
|
86
|
-
typeof customLayer.hasPendingWork === 'function' &&
|
|
87
|
-
customLayer.hasPendingWork());
|
|
88
|
-
},
|
|
89
|
-
isLocallyHidden(id) {
|
|
90
|
-
return store.isLocallyHidden(id);
|
|
91
|
-
},
|
|
92
|
-
getLocallyHidden() {
|
|
93
|
-
return store.getLocallyHidden();
|
|
94
|
-
},
|
|
95
|
-
setLocallyHidden(id, hidden) {
|
|
96
|
-
store.setLocallyHidden(id, hidden);
|
|
97
|
-
},
|
|
98
|
-
destroy() {
|
|
99
|
-
inputRouter.stop();
|
|
100
|
-
inputNormalizer.detach();
|
|
101
|
-
eventBridge.stop();
|
|
102
|
-
modeManager.stop();
|
|
103
|
-
renderCoordinator.stop();
|
|
104
|
-
autoNameGenerator.dispose();
|
|
105
|
-
// Unregister the plugins so that each one runs its onUninstall (timers, subscriptions and
|
|
106
|
-
// anything else it holds outside the draw instance). The extension point registries
|
|
107
|
-
// themselves belong to this instance and are cleared with it, so no provider of the
|
|
108
|
-
// destroyed instance can reach a live one.
|
|
109
|
-
for (const name of pluginManager.getPluginNames()) {
|
|
110
|
-
pluginManager.unregister(name);
|
|
111
|
-
}
|
|
112
|
-
// There can be several frames, so remove all of them
|
|
113
|
-
const slotLayers = 'getSlotLayers' in customLayer && typeof customLayer.getSlotLayers === 'function'
|
|
114
|
-
? customLayer.getSlotLayers()
|
|
115
|
-
: [customLayer];
|
|
116
|
-
for (const slotLayer of slotLayers) {
|
|
117
|
-
if (map.getLayer(slotLayer.id)) {
|
|
118
|
-
map.removeLayer(slotLayer.id);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/** The plain numbers of a terrain state, without the GL objects and the internal plans */
|
|
125
|
-
function toRenderDiagnostics(state) {
|
|
126
|
-
return Object.freeze({
|
|
127
|
-
active: state.active,
|
|
128
|
-
atlasRect: [...state.atlasRect],
|
|
129
|
-
atlasSize: [...state.atlasSize],
|
|
130
|
-
elevationScale: state.elevationScale,
|
|
131
|
-
liftMeters: state.liftMeters,
|
|
132
|
-
stepMeters: state.stepMeters,
|
|
133
|
-
stepGrid: state.stepGrid,
|
|
134
|
-
generation: state.generation,
|
|
135
|
-
});
|
|
136
|
-
}
|
package/dist/api/layer-api.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { AutoNameGenerator } from '../shared/utils/name-generator.js';
|
|
2
|
-
import type { Store } from '../store/store.js';
|
|
3
|
-
import type { MapLibreGLDraw } from './api.js';
|
|
4
|
-
export type LayerApi = Pick<MapLibreGLDraw, 'getAllLayers' | 'getLayer' | 'addLayer' | 'updateLayer' | 'deleteLayer' | 'getLayerOrder' | 'setLayerOrder' | 'reorderInLayer' | 'moveToLayer' | 'getActiveLayer' | 'setActiveLayer'>;
|
|
5
|
-
export interface LayerApiDeps {
|
|
6
|
-
store: Store;
|
|
7
|
-
generateFeatureId: () => string;
|
|
8
|
-
autoNameGenerator: AutoNameGenerator;
|
|
9
|
-
getActiveLayerId: () => string;
|
|
10
|
-
setActiveLayerId: (id: string) => void;
|
|
11
|
-
}
|
|
12
|
-
export declare function createLayerApi(deps: LayerApiDeps): LayerApi;
|
package/dist/api/layer-api.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* Layer API
|
|
5
|
-
*
|
|
6
|
-
* Provides the Layer CRUD and Active Layer operations of MapLibreGLDraw.
|
|
7
|
-
*/
|
|
8
|
-
import { moveToLayer as moveToLayerImpl } from '../operations/layer-operations.js';
|
|
9
|
-
import { onlyLockOrVisibility } from './feature-api.js';
|
|
10
|
-
export function createLayerApi(deps) {
|
|
11
|
-
const { store, generateFeatureId, autoNameGenerator, getActiveLayerId, setActiveLayerId } = deps;
|
|
12
|
-
return {
|
|
13
|
-
getAllLayers() {
|
|
14
|
-
return store.getAllLayers();
|
|
15
|
-
},
|
|
16
|
-
getLayer(id) {
|
|
17
|
-
return store.getLayer(id);
|
|
18
|
-
},
|
|
19
|
-
addLayer(name) {
|
|
20
|
-
const id = generateFeatureId();
|
|
21
|
-
const layerName = name || autoNameGenerator.generateLayerName();
|
|
22
|
-
const layer = {
|
|
23
|
-
id,
|
|
24
|
-
name: layerName,
|
|
25
|
-
visible: true,
|
|
26
|
-
locked: false,
|
|
27
|
-
opacity: 1,
|
|
28
|
-
order: [],
|
|
29
|
-
};
|
|
30
|
-
// A write refused because the Store is read-only returns null
|
|
31
|
-
return store.createLayer(layer) ? id : null;
|
|
32
|
-
},
|
|
33
|
-
updateLayer(id, updates) {
|
|
34
|
-
// While locked, reject any change other than locked/visible (full protection)
|
|
35
|
-
const layer = store.getLayer(id);
|
|
36
|
-
if (layer?.locked && !onlyLockOrVisibility(updates))
|
|
37
|
-
return false;
|
|
38
|
-
return store.updateLayer(id, updates);
|
|
39
|
-
},
|
|
40
|
-
deleteLayer(id) {
|
|
41
|
-
return store.deleteLayer(id);
|
|
42
|
-
},
|
|
43
|
-
getLayerOrder() {
|
|
44
|
-
return store.getLayerOrder();
|
|
45
|
-
},
|
|
46
|
-
setLayerOrder(order) {
|
|
47
|
-
return store.setLayerOrder(order);
|
|
48
|
-
},
|
|
49
|
-
reorderInLayer(itemId, layerId, newIndex) {
|
|
50
|
-
return store.reorderInLayer(itemId, layerId, newIndex);
|
|
51
|
-
},
|
|
52
|
-
moveToLayer(itemId, targetLayerId) {
|
|
53
|
-
moveToLayerImpl(store, itemId, targetLayerId);
|
|
54
|
-
},
|
|
55
|
-
getActiveLayer() {
|
|
56
|
-
return getActiveLayerId();
|
|
57
|
-
},
|
|
58
|
-
setActiveLayer(layerId) {
|
|
59
|
-
setActiveLayerId(layerId);
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Store } from '../store/store.js';
|
|
2
|
-
import type { MapLibreGLDraw } from './api.js';
|
|
3
|
-
export type SelectionApi = Pick<MapLibreGLDraw, 'getSelection' | 'select' | 'deselect' | 'getSelectedFeatures' | 'getSelectedIds' | 'deleteSelection' | 'selectVertices' | 'deselectVertices' | 'getSelectedVertices' | 'deleteVertices'>;
|
|
4
|
-
export interface SelectionApiDeps {
|
|
5
|
-
store: Store;
|
|
6
|
-
}
|
|
7
|
-
export declare function createSelectionApi(deps: SelectionApiDeps): SelectionApi;
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* Selection API
|
|
5
|
-
*
|
|
6
|
-
* Provides the Selection and Vertex Selection operations of MapLibreGLDraw.
|
|
7
|
-
*/
|
|
8
|
-
import { deleteSelection } from '../operations/selection-operations.js';
|
|
9
|
-
import { deleteVertex as deleteVertexOp, sortVertexRefsForDeletion } from '../operations/vertex.js';
|
|
10
|
-
export function createSelectionApi(deps) {
|
|
11
|
-
const { store } = deps;
|
|
12
|
-
return {
|
|
13
|
-
getSelection() {
|
|
14
|
-
return store.getSelection();
|
|
15
|
-
},
|
|
16
|
-
select(ids, type = 'feature') {
|
|
17
|
-
const idsArray = Array.isArray(ids) ? ids : [ids];
|
|
18
|
-
store.setSelection(type, idsArray);
|
|
19
|
-
},
|
|
20
|
-
deselect() {
|
|
21
|
-
store.setSelection(null, []);
|
|
22
|
-
},
|
|
23
|
-
getSelectedFeatures() {
|
|
24
|
-
const selection = store.getSelection();
|
|
25
|
-
if (selection.type !== 'feature')
|
|
26
|
-
return [];
|
|
27
|
-
return selection.ids
|
|
28
|
-
.map((id) => store.getFeature(id))
|
|
29
|
-
.filter((f) => f !== undefined);
|
|
30
|
-
},
|
|
31
|
-
getSelectedIds() {
|
|
32
|
-
return [...store.getSelection().ids];
|
|
33
|
-
},
|
|
34
|
-
deleteSelection() {
|
|
35
|
-
return deleteSelection(store);
|
|
36
|
-
},
|
|
37
|
-
selectVertices(featureId, vertices) {
|
|
38
|
-
store.setSelectedVertices({ featureId, vertexIndices: vertices });
|
|
39
|
-
},
|
|
40
|
-
deselectVertices() {
|
|
41
|
-
store.setSelectedVertices(null);
|
|
42
|
-
},
|
|
43
|
-
getSelectedVertices() {
|
|
44
|
-
return store.getSelectedVertices();
|
|
45
|
-
},
|
|
46
|
-
deleteVertices(featureId, vertices) {
|
|
47
|
-
if (vertices.length === 0)
|
|
48
|
-
return 0;
|
|
49
|
-
const feature = store.getFeature(featureId);
|
|
50
|
-
if (!feature)
|
|
51
|
-
return 0;
|
|
52
|
-
// Within the same part and the same ring, delete in descending index order
|
|
53
|
-
// (avoids the shift caused by earlier deletions; for MultiPoint the part itself
|
|
54
|
-
// disappears, so parts are in descending order too)
|
|
55
|
-
const sortedRefs = sortVertexRefsForDeletion(vertices);
|
|
56
|
-
let coords = JSON.parse(JSON.stringify(feature.coordinates));
|
|
57
|
-
let deletedCount = 0;
|
|
58
|
-
for (const ref of sortedRefs) {
|
|
59
|
-
const result = deleteVertexOp({ ...feature, coordinates: coords }, ref);
|
|
60
|
-
if (result !== null) {
|
|
61
|
-
coords = result;
|
|
62
|
-
deletedCount++;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (deletedCount > 0) {
|
|
66
|
-
store.transact(() => {
|
|
67
|
-
store.updateFeature(featureId, { coordinates: coords });
|
|
68
|
-
// If the deleted vertices were selected, clear the selection
|
|
69
|
-
const selectedVertices = store.getSelectedVertices();
|
|
70
|
-
if (selectedVertices?.featureId === featureId) {
|
|
71
|
-
store.setSelectedVertices(null);
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
return deletedCount;
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import type { ScreenPoint } from '../shared/math/index.js';
|
|
2
|
-
import type { ResolvedSnapOptions, SnapContext, SnapLngLat, SnapProvider, SnapResult, SnapTargetKind } from '../snapping/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* The snapping of a draw instance, reached as `draw.snapping`: switching it at runtime,
|
|
5
|
-
* reading its settings and adding candidates.
|
|
6
|
-
*
|
|
7
|
-
* Snapping replaces the coordinate of a click, a move or a drag with the nearest candidate
|
|
8
|
-
* within the tolerance, before any mode sees it, so it works the same way in every mode and
|
|
9
|
-
* for vertex dragging. The initial settings come from {@link Options.snap}. Holding the
|
|
10
|
-
* modifier of `disableKey` (Alt by default) releases it while held. Every change of the
|
|
11
|
-
* result is announced by the `draw.snap.change` event.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* draw.snapping.setEnabled(false);
|
|
16
|
-
* draw.snapping.setKindEnabled('guide', false); // turn off guides only
|
|
17
|
-
* const unregister = draw.snapping.register(myProvider);
|
|
18
|
-
* unregister();
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export interface SnappingOperations {
|
|
22
|
-
/**
|
|
23
|
-
* Registers a provider of snapping candidates.
|
|
24
|
-
*
|
|
25
|
-
* The candidates are mixed in on top of the built-in providers (the vertices and edges of
|
|
26
|
-
* the Store) and compete with them by distance and priority. On a destroyed instance the
|
|
27
|
-
* registration is ignored.
|
|
28
|
-
*
|
|
29
|
-
* @param provider the provider to register
|
|
30
|
-
* @returns a function that unregisters it
|
|
31
|
-
*/
|
|
32
|
-
register(provider: SnapProvider): () => void;
|
|
33
|
-
/**
|
|
34
|
-
* Enables or disables snapping.
|
|
35
|
-
*
|
|
36
|
-
* The initial value is `options.snap.enabled` (default true). A change takes effect from the
|
|
37
|
-
* next input.
|
|
38
|
-
*
|
|
39
|
-
* @param enabled true to snap, false to pass every coordinate through as it is
|
|
40
|
-
*/
|
|
41
|
-
setEnabled(enabled: boolean): void;
|
|
42
|
-
/** Whether snapping is enabled */
|
|
43
|
-
isEnabled(): boolean;
|
|
44
|
-
/**
|
|
45
|
-
* Enables or disables snapping per kind (vertex / edge / intersection / guide).
|
|
46
|
-
*
|
|
47
|
-
* The initial value is `options.snap.kinds` (all true by default). The candidates of a
|
|
48
|
-
* disabled kind are excluded from the evaluation, even when a provider returns them.
|
|
49
|
-
*
|
|
50
|
-
* @param kind the kind of target
|
|
51
|
-
* @param enabled whether that kind is snapped to
|
|
52
|
-
*/
|
|
53
|
-
setKindEnabled(kind: SnapTargetKind, enabled: boolean): void;
|
|
54
|
-
/**
|
|
55
|
-
* Whether the kind is enabled
|
|
56
|
-
*
|
|
57
|
-
* @param kind the kind of target
|
|
58
|
-
*/
|
|
59
|
-
isKindEnabled(kind: SnapTargetKind): boolean;
|
|
60
|
-
/**
|
|
61
|
-
* Switches whether datasets (data that is only displayed) are included as
|
|
62
|
-
* snapping targets.
|
|
63
|
-
*
|
|
64
|
-
* The initial value is `options.snap.datasets` (default true). Setting it to false stops
|
|
65
|
-
* only the snapping to that data; snapping to the features of the Store remains.
|
|
66
|
-
*
|
|
67
|
-
* @param enabled whether datasets are snapping targets
|
|
68
|
-
*/
|
|
69
|
-
setDatasetsEnabled(enabled: boolean): void;
|
|
70
|
-
/** Whether datasets are snapping targets */
|
|
71
|
-
isDatasetsEnabled(): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Sets the step angle of the built-in north-based guides.
|
|
74
|
-
*
|
|
75
|
-
* The initial value is `options.snap.guideStepDegrees` (default 45, which gives 8 guides).
|
|
76
|
-
* The change takes effect from the next snapping query. A value of 0 or less, or a
|
|
77
|
-
* non-finite value, gives the default 45. The current value is in
|
|
78
|
-
* `getOptions().guideStepDegrees`. Guides added with `createGuideSnapProvider` keep their
|
|
79
|
-
* own step.
|
|
80
|
-
*
|
|
81
|
-
* @param degrees the step angle in degrees, counted from true north
|
|
82
|
-
*
|
|
83
|
-
* @example
|
|
84
|
-
* ```typescript
|
|
85
|
-
* draw.snapping.setGuideStep(15); // 24 guides, every 15 degrees
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
setGuideStep(degrees: number): void;
|
|
89
|
-
/**
|
|
90
|
-
* Gets the snapping options with the defaults filled in.
|
|
91
|
-
*
|
|
92
|
-
* enabled, kinds, display and guideStepDegrees are the current values, reflecting the changes made at runtime.
|
|
93
|
-
* `kinds` is a copy with every kind filled in, so changing it has no effect. A settings UI
|
|
94
|
-
* reads its current values here.
|
|
95
|
-
*/
|
|
96
|
-
getOptions(): ResolvedSnapOptions;
|
|
97
|
-
/**
|
|
98
|
-
* Gets the most recent snapping result.
|
|
99
|
-
*
|
|
100
|
-
* null if nothing has been resolved yet. When nothing is snapped, it returns a SnapResult
|
|
101
|
-
* with no target.
|
|
102
|
-
*/
|
|
103
|
-
getResult(): SnapResult | null;
|
|
104
|
-
/**
|
|
105
|
-
* Resolves snapping for a coordinate.
|
|
106
|
-
*
|
|
107
|
-
* There is no need to call it for normal input, because the InputRouter passes it through
|
|
108
|
-
* automatically. It is the entry point for when a coordinate produced outside the library,
|
|
109
|
-
* such as numeric input or synthetic input, should be passed through snapping.
|
|
110
|
-
*
|
|
111
|
-
* @param lngLat the input coordinate
|
|
112
|
-
* @param point the screen coordinate (when omitted, it is computed with map.project)
|
|
113
|
-
* @param ctx overrides for the context (when omitted, zoom is the current zoom and
|
|
114
|
-
* modifiers are all false)
|
|
115
|
-
* @returns the snapped coordinate and what it snapped to; the input coordinate with no
|
|
116
|
-
* target when nothing is within the tolerance
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* ```typescript
|
|
120
|
-
* const { lngLat, target } = draw.snapping.resolve({ lng: 139.7, lat: 35.68 });
|
|
121
|
-
* if (target) console.log('snapped to a', target.kind);
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
resolve(lngLat: SnapLngLat, point?: ScreenPoint, ctx?: Partial<SnapContext>): SnapResult;
|
|
125
|
-
}
|
package/dist/api/snapping-api.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/** The state in which no modifier key is pressed */
|
|
4
|
-
const NO_MODIFIERS = { shift: false, ctrl: false, alt: false, meta: false };
|
|
5
|
-
/** @internal */
|
|
6
|
-
export function createSnappingApi(deps) {
|
|
7
|
-
const { snapService, map } = deps;
|
|
8
|
-
return {
|
|
9
|
-
snapping: {
|
|
10
|
-
register(provider) {
|
|
11
|
-
return snapService.register(provider);
|
|
12
|
-
},
|
|
13
|
-
setEnabled(enabled) {
|
|
14
|
-
snapService.setEnabled(enabled);
|
|
15
|
-
},
|
|
16
|
-
isEnabled() {
|
|
17
|
-
return snapService.isEnabled();
|
|
18
|
-
},
|
|
19
|
-
setKindEnabled(kind, enabled) {
|
|
20
|
-
snapService.setKindEnabled(kind, enabled);
|
|
21
|
-
},
|
|
22
|
-
isKindEnabled(kind) {
|
|
23
|
-
return snapService.isKindEnabled(kind);
|
|
24
|
-
},
|
|
25
|
-
setDatasetsEnabled(enabled) {
|
|
26
|
-
snapService.setDatasetsEnabled(enabled);
|
|
27
|
-
},
|
|
28
|
-
isDatasetsEnabled() {
|
|
29
|
-
return snapService.isDatasetsEnabled();
|
|
30
|
-
},
|
|
31
|
-
setGuideStep(degrees) {
|
|
32
|
-
snapService.setGuideStep(degrees);
|
|
33
|
-
},
|
|
34
|
-
getOptions() {
|
|
35
|
-
return snapService.getOptions();
|
|
36
|
-
},
|
|
37
|
-
getResult() {
|
|
38
|
-
return snapService.getResult();
|
|
39
|
-
},
|
|
40
|
-
resolve(lngLat, point, ctx) {
|
|
41
|
-
const screenPoint = point ?? map.project([lngLat.lng, lngLat.lat]);
|
|
42
|
-
return snapService.resolve(lngLat, { x: screenPoint.x, y: screenPoint.y }, {
|
|
43
|
-
zoom: map.getZoom(),
|
|
44
|
-
modifiers: { ...NO_MODIFIERS },
|
|
45
|
-
...ctx,
|
|
46
|
-
});
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The topology settings of a draw instance, reached as `draw.topology`: switching at runtime
|
|
3
|
-
* the settings that keep editing from breaking boundaries shared by adjacent features.
|
|
4
|
-
*
|
|
5
|
-
* The initial values come from {@link Options.topology}. A switch takes effect from the next
|
|
6
|
-
* drag start and does not affect a drag in progress.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* sharedVertexToggle.onchange = () => {
|
|
11
|
-
* draw.topology.setSharedVertexDrag(sharedVertexToggle.checked);
|
|
12
|
-
* };
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
export interface TopologyOperations {
|
|
16
|
-
/**
|
|
17
|
-
* Enables or disables simultaneous movement of shared vertices.
|
|
18
|
-
*
|
|
19
|
-
* The initial value is `options.topology.sharedVertexDrag` (the core default is false).
|
|
20
|
-
* While it is enabled, dragging a vertex also moves other features that have a vertex at
|
|
21
|
-
* an exact match (tolerance 0), and the following vertices are highlighted during the drag.
|
|
22
|
-
* The following features must be visible and unlocked, and be of a type whose vertices can
|
|
23
|
-
* be edited (not Circle, Image or Freehand). The drag commits as one change, one notification.
|
|
24
|
-
*
|
|
25
|
-
* @param enabled whether shared vertices move together
|
|
26
|
-
*/
|
|
27
|
-
setSharedVertexDrag(enabled: boolean): void;
|
|
28
|
-
/** Whether simultaneous movement of shared vertices is enabled */
|
|
29
|
-
isSharedVertexDrag(): boolean;
|
|
30
|
-
}
|
package/dist/api/topology-api.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/** @internal */
|
|
4
|
-
export function createTopologyApi(deps) {
|
|
5
|
-
const { topology } = deps;
|
|
6
|
-
return {
|
|
7
|
-
topology: {
|
|
8
|
-
setSharedVertexDrag(enabled) {
|
|
9
|
-
topology.sharedVertexDrag = enabled;
|
|
10
|
-
},
|
|
11
|
-
isSharedVertexDrag() {
|
|
12
|
-
return topology.sharedVertexDrag;
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The edge tracing of a draw instance, reached as `draw.tracing`.
|
|
3
|
-
*
|
|
4
|
-
* In draw_line / draw_polygon, when the previous click and this click both snapped to the
|
|
5
|
-
* boundary (a vertex or an edge) of the same feature, the boundary vertices between them are
|
|
6
|
-
* inserted: the shortest path along the edges of the visible features nearby, across shared
|
|
7
|
-
* vertices. It needs snapping, so it does not hold while snapping is off or released. The
|
|
8
|
-
* path is previewed while the pointer moves.
|
|
9
|
-
* The initial value comes from {@link Options.trace}; the path itself is computed by
|
|
10
|
-
* {@link buildTraceGraph} and {@link findTracePath}.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* draw.tracing.setEnabled(false);
|
|
15
|
-
* draw.tracing.isEnabled(); // false
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export interface TracingOperations {
|
|
19
|
-
/**
|
|
20
|
-
* Enables or disables tracing.
|
|
21
|
-
*
|
|
22
|
-
* The initial value is `options.trace.enabled` (default true). When it is disabled, the
|
|
23
|
-
* clicks and the preview while drawing add only the point clicked. A change takes effect
|
|
24
|
-
* from the next click or move.
|
|
25
|
-
*
|
|
26
|
-
* @param enabled whether to trace
|
|
27
|
-
*/
|
|
28
|
-
setEnabled(enabled: boolean): void;
|
|
29
|
-
/** Whether tracing is enabled */
|
|
30
|
-
isEnabled(): boolean;
|
|
31
|
-
}
|
package/dist/api/tracing-api.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/** @internal */
|
|
4
|
-
export function createTracingApi(deps) {
|
|
5
|
-
const { trace } = deps;
|
|
6
|
-
return {
|
|
7
|
-
tracing: {
|
|
8
|
-
setEnabled(enabled) {
|
|
9
|
-
trace.enabled = enabled;
|
|
10
|
-
},
|
|
11
|
-
isEnabled() {
|
|
12
|
-
return trace.enabled;
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hit Test module
|
|
3
|
-
*/
|
|
4
|
-
export type { OBB, ScreenPoint } from '../../shared/math/index.js';
|
|
5
|
-
export { createOBB, distanceToOBB, getOBBAABB, getOBBCorners, pointInOBB, } from '../../shared/math/index.js';
|
|
6
|
-
export { createCoreBoxSelectionStrategies, ImageBoxSelectionStrategy, LineStringBoxSelectionStrategy, MultiLineStringBoxSelectionStrategy, MultiPointBoxSelectionStrategy, MultiPolygonBoxSelectionStrategy, PointBoxSelectionStrategy, PolygonBoxSelectionStrategy, } from './box-strategies.js';
|
|
7
|
-
export type { BoxSelectionStrategy } from './box-strategy.js';
|
|
8
|
-
export { BoxSelectionStrategyRegistry } from './box-strategy.js';
|
|
9
|
-
export type { HitTestService, UnprojectFunction } from './service.js';
|
|
10
|
-
export { HitTestServiceImpl } from './service.js';
|
|
11
|
-
export type { HitTestOptions, HitTestResult, HitTestStrategy, VertexHit, } from './strategies/index.js';
|
|
12
|
-
export { CircleHitTestStrategy, DEFAULT_HIT_TEST_OPTIONS, HitTestStrategyRegistry, ImageHitTestStrategy, LineHitTestStrategy, MultiLineStringHitTestStrategy, MultiPointHitTestStrategy, MultiPolygonHitTestStrategy, PointHitTestStrategy, PolygonHitTestStrategy, } from './strategies/index.js';
|
|
13
|
-
export type { HitTestTopmost, TopHit, TopmostHitTestDeps, TopmostHitTestOptions, } from './topmost.js';
|
|
14
|
-
export { createTopmostHitTester } from './topmost.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
export { createOBB, distanceToOBB, getOBBAABB, getOBBCorners, pointInOBB, } from '../../shared/math/index.js';
|
|
4
|
-
// Box selection strategies
|
|
5
|
-
export { createCoreBoxSelectionStrategies, ImageBoxSelectionStrategy, LineStringBoxSelectionStrategy, MultiLineStringBoxSelectionStrategy, MultiPointBoxSelectionStrategy, MultiPolygonBoxSelectionStrategy, PointBoxSelectionStrategy, PolygonBoxSelectionStrategy, } from './box-strategies.js';
|
|
6
|
-
export { BoxSelectionStrategyRegistry } from './box-strategy.js';
|
|
7
|
-
export { HitTestServiceImpl } from './service.js';
|
|
8
|
-
export { CircleHitTestStrategy, DEFAULT_HIT_TEST_OPTIONS, HitTestStrategyRegistry, ImageHitTestStrategy, LineHitTestStrategy, MultiLineStringHitTestStrategy, MultiPointHitTestStrategy, MultiPolygonHitTestStrategy, PointHitTestStrategy, PolygonHitTestStrategy, } from './strategies/index.js';
|
|
9
|
-
export { createTopmostHitTester } from './topmost.js';
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dispatcher module
|
|
3
|
-
*
|
|
4
|
-
* Responsible for accepting user input and routing it to modes.
|
|
5
|
-
* The input handling layer of the Flux architecture.
|
|
6
|
-
*
|
|
7
|
-
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
8
|
-
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
9
|
-
*/
|
|
10
|
-
export type { BoxSelectionStrategy, BoxSelectionStrategyRegistry, } from './hit-test/box-strategy.js';
|
|
11
|
-
export type { HitTestService, UnprojectFunction } from './hit-test/service.js';
|
|
12
|
-
export type { HitTestOptions, HitTestResult, HitTestStrategy, VertexHit, } from './hit-test/strategies/base.js';
|
|
13
|
-
export { PointHitTestStrategy } from './hit-test/strategies/point.js';
|
|
14
|
-
export type { HitTestTopmost, TopHit, TopmostHitTestOptions } from './hit-test/topmost.js';
|
|
15
|
-
export type { DragNormalizedEvent, KeyNormalizedEvent, MapClickEventPayload, ModifierKeys, MouseNormalizedEvent, NormalizedEvent, PointerOriginalEvent, PointerType, } from './types.js';
|
package/dist/dispatcher/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The subpath `@sakuzu/maplibre-gl-draw/columnar`
|
|
3
|
-
*
|
|
4
|
-
* The parts of the columnar input of the datasets that can run in a Worker: the
|
|
5
|
-
* preparation of a table and the list of its buffers for `postMessage`, with the types of the
|
|
6
|
-
* table. It depends on neither maplibre nor WebGL nor the DOM, so a Worker that reads a file can
|
|
7
|
-
* import it without pulling in the engine.
|
|
8
|
-
*
|
|
9
|
-
* @module columnar
|
|
10
|
-
*/
|
|
11
|
-
export { columnarTransferables, prepareDatasetColumnar } from './prepare.js';
|
|
12
|
-
export type { DatasetColumn, DatasetColumnarGeometry, DatasetColumnarGeometryType, DatasetColumnarInput, DatasetColumnarMixedGeometry, DatasetColumnarPrepared, DatasetDictionaryCodes, DatasetDictionaryColumn, } from './types.js';
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* The subpath `@sakuzu/maplibre-gl-draw/columnar`
|
|
5
|
-
*
|
|
6
|
-
* The parts of the columnar input of the datasets that can run in a Worker: the
|
|
7
|
-
* preparation of a table and the list of its buffers for `postMessage`, with the types of the
|
|
8
|
-
* table. It depends on neither maplibre nor WebGL nor the DOM, so a Worker that reads a file can
|
|
9
|
-
* import it without pulling in the engine.
|
|
10
|
-
*
|
|
11
|
-
* @module columnar
|
|
12
|
-
*/
|
|
13
|
-
export { columnarTransferables, prepareDatasetColumnar } from './prepare.js';
|