@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
|
@@ -19,8 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* Only the north-based guide works from the very first segment. The built-in provider
|
|
21
21
|
* reads the step angle from SnapOptions.guideStepDegrees at every query (through a
|
|
22
|
-
* getter), so a change at runtime takes effect without rebuilding the provider.
|
|
23
|
-
* provider made with createGuideSnapProvider keeps the step it was built with.
|
|
22
|
+
* getter), so a change at runtime takes effect without rebuilding the provider.
|
|
24
23
|
*
|
|
25
24
|
* A guide is not an infinite line; it is cut off at the equivalent of 4096 pixels on
|
|
26
25
|
* screen. The priority order stays SNAP_KIND_PRIORITY, so a real vertex,
|
|
@@ -97,48 +96,6 @@ function guideSegment(anchor, lengthMeters, bearing, description, backwardBearin
|
|
|
97
96
|
description,
|
|
98
97
|
};
|
|
99
98
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Creates a snapping provider of construction guides for `draw_line` and `draw_polygon`.
|
|
102
|
-
*
|
|
103
|
-
* The guides start at the last committed vertex (the anchor): the north-based guides at every
|
|
104
|
-
* `northStepDegrees` from true north (from the first vertex on), and the extension and the
|
|
105
|
-
* perpendiculars of the previous segment (from the second vertex on). Each guide is a
|
|
106
|
-
* segment 4096 screen px long, returned as a candidate of kind `'guide'` whose description
|
|
107
|
-
* comes from `messages` (`snapNorth`, `snapExtension`, `snapPerpendicular`). Outside those
|
|
108
|
-
* two modes it returns no candidates.
|
|
109
|
-
*
|
|
110
|
-
* The draw instance already registers a built-in one, whose step is set with
|
|
111
|
-
* `options.snap.guideStepDegrees` and changed at runtime with `draw.snapping.setGuideStep`.
|
|
112
|
-
* Register another one to add guides at a second step on top of the built-in ones.
|
|
113
|
-
*
|
|
114
|
-
* @param deps The Store to read the drawing in progress from
|
|
115
|
-
* @param options The step angle, the tile size and the messages
|
|
116
|
-
* @returns A provider to pass to `draw.snapping.register`
|
|
117
|
-
*
|
|
118
|
-
* @example
|
|
119
|
-
* ```ts
|
|
120
|
-
* import { createGuideSnapProvider, type Plugin } from '@sakuzu/maplibre-gl-draw';
|
|
121
|
-
*
|
|
122
|
-
* // Guides every 15 degrees from north, in addition to the built-in ones
|
|
123
|
-
* let unregister: (() => void) | undefined;
|
|
124
|
-
* const fineGuides: Plugin = {
|
|
125
|
-
* name: 'fine-guides',
|
|
126
|
-
* onInstall(ctx) {
|
|
127
|
-
* unregister = draw.snapping.register(
|
|
128
|
-
* createGuideSnapProvider({ store: ctx.getStore() }, { northStepDegrees: 15 }),
|
|
129
|
-
* );
|
|
130
|
-
* },
|
|
131
|
-
* onUninstall() {
|
|
132
|
-
* unregister?.();
|
|
133
|
-
* },
|
|
134
|
-
* };
|
|
135
|
-
* draw.addPlugin(fineGuides);
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
export function createGuideSnapProvider(deps, options = {}) {
|
|
139
|
-
const step = resolveGuideStepDegrees(options.northStepDegrees);
|
|
140
|
-
return createSteppedGuideSnapProvider(deps, () => step, options);
|
|
141
|
-
}
|
|
142
99
|
/**
|
|
143
100
|
* Creates the guide provider whose step angle is read through a getter at every query
|
|
144
101
|
* (the built-in provider reads the current `guideStepDegrees` of the SnapService this way)
|
|
@@ -28,7 +28,7 @@ function collectNearbySegments(deps, bbox, ctx) {
|
|
|
28
28
|
for (const feature of queryFeatures(deps, bbox, ctx)) {
|
|
29
29
|
// The candidates of a custom type are returned by the vertex provider
|
|
30
30
|
// (getSnapTargets)
|
|
31
|
-
if (deps.snapTargets?.
|
|
31
|
+
if (deps.snapTargets?.forFeature(feature))
|
|
32
32
|
continue;
|
|
33
33
|
if (!hasSnapEdges(feature.type))
|
|
34
34
|
continue;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* - The tentative feature being drawn (it is not a feature of the Store, so it never
|
|
18
18
|
* enters in the first place)
|
|
19
19
|
*
|
|
20
|
-
* For a custom feature type,
|
|
20
|
+
* For a custom feature type, FeatureTypeHandler.getSnapTargets is used when it is
|
|
21
21
|
* registered (the vertex provider calls it).
|
|
22
22
|
*/
|
|
23
23
|
import { resolveMessages } from '../../messages.js';
|
|
@@ -43,7 +43,7 @@ export function createStoreVertexSnapProvider(deps) {
|
|
|
43
43
|
const candidates = [];
|
|
44
44
|
for (const feature of queryFeatures(deps, bbox, ctx)) {
|
|
45
45
|
// A custom type is left to the registered getSnapTargets
|
|
46
|
-
const custom = deps.snapTargets?.
|
|
46
|
+
const custom = deps.snapTargets?.forFeature(feature);
|
|
47
47
|
if (custom) {
|
|
48
48
|
for (const candidate of custom(feature, ctx)) {
|
|
49
49
|
const featureId = candidate.featureId ?? feature.id;
|
|
@@ -87,7 +87,7 @@ export function createStoreEdgeSnapProvider(deps) {
|
|
|
87
87
|
for (const feature of queryFeatures(deps, bbox, ctx)) {
|
|
88
88
|
// The candidates of a custom type are returned by the vertex provider
|
|
89
89
|
// (getSnapTargets)
|
|
90
|
-
if (deps.snapTargets?.
|
|
90
|
+
if (deps.snapTargets?.forFeature(feature))
|
|
91
91
|
continue;
|
|
92
92
|
if (!hasSnapEdges(feature.type))
|
|
93
93
|
continue;
|
package/dist/snapping/service.js
CHANGED
|
@@ -62,11 +62,13 @@ function isSameResult(a, b) {
|
|
|
62
62
|
/**
|
|
63
63
|
* Whether the new candidate replaces the current best candidate
|
|
64
64
|
*/
|
|
65
|
-
function isBetterCandidate(best, priority, distancePx, preferred) {
|
|
65
|
+
function isBetterCandidate(best, priority, distancePx, preferred, rank) {
|
|
66
66
|
if (best.priority !== priority)
|
|
67
67
|
return priority < best.priority;
|
|
68
68
|
if (best.distancePx !== distancePx)
|
|
69
69
|
return distancePx < best.distancePx;
|
|
70
|
+
if (best.rank !== rank)
|
|
71
|
+
return rank > best.rank;
|
|
70
72
|
// Only on a complete tie does a candidate of the preferred feature overturn the one
|
|
71
73
|
// that arrived first
|
|
72
74
|
return preferred && !best.preferred;
|
|
@@ -115,15 +117,14 @@ export function createSnapService(deps = {}) {
|
|
|
115
117
|
* when the distances tie as well does the candidate matching preferFeature
|
|
116
118
|
* (preferred) win. Otherwise the one that arrived first is kept.
|
|
117
119
|
*/
|
|
118
|
-
function evaluate(best, coordinate, target, cursor, perPixel, preferred) {
|
|
120
|
+
function evaluate(best, coordinate, target, priority, cursor, perPixel, preferred, rank) {
|
|
119
121
|
const distancePx = distanceInPixels(coordinate, cursor, perPixel);
|
|
120
122
|
if (distancePx > options.tolerancePx)
|
|
121
123
|
return best;
|
|
122
|
-
|
|
123
|
-
if (best && !isBetterCandidate(best, priority, distancePx, preferred)) {
|
|
124
|
+
if (best && !isBetterCandidate(best, priority, distancePx, preferred, rank)) {
|
|
124
125
|
return best;
|
|
125
126
|
}
|
|
126
|
-
return { coordinate, target, priority, distancePx, preferred };
|
|
127
|
+
return { coordinate, target, priority, distancePx, rank, preferred };
|
|
127
128
|
}
|
|
128
129
|
/** How far a longitude moves to reach its copy nearest to the cursor (0 in most cases) */
|
|
129
130
|
function turnToCursor(lng, cursorLng) {
|
|
@@ -196,7 +197,9 @@ export function createSnapService(deps = {}) {
|
|
|
196
197
|
coordinate = moveBy(candidate.coordinate, turnToCursor(candidate.coordinate[0], lngLat.lng));
|
|
197
198
|
}
|
|
198
199
|
// The target keeps the stored coordinates (it names the geometry that was snapped to)
|
|
199
|
-
const target = {
|
|
200
|
+
const target = {
|
|
201
|
+
kind: (!isSegmentCandidate(candidate) && candidate.ownKind) || candidate.kind,
|
|
202
|
+
};
|
|
200
203
|
if (candidate.featureId !== undefined)
|
|
201
204
|
target.featureId = candidate.featureId;
|
|
202
205
|
if (candidate.datasetId !== undefined)
|
|
@@ -219,7 +222,9 @@ export function createSnapService(deps = {}) {
|
|
|
219
222
|
const preferred = ctx.preferFeature !== undefined &&
|
|
220
223
|
candidate.featureId === ctx.preferFeature.featureId &&
|
|
221
224
|
candidate.datasetId === ctx.preferFeature.datasetId;
|
|
222
|
-
|
|
225
|
+
const rank = isSegmentCandidate(candidate) ? 0 : (candidate.priority ?? 0);
|
|
226
|
+
const priority = SNAP_KIND_PRIORITY[candidate.kind];
|
|
227
|
+
best = evaluate(best, coordinate, target, priority, cursor, perPixel, preferred, rank);
|
|
223
228
|
}
|
|
224
229
|
}
|
|
225
230
|
}
|
|
@@ -244,6 +249,12 @@ export function createSnapService(deps = {}) {
|
|
|
244
249
|
setEnabled(value) {
|
|
245
250
|
enabled = value;
|
|
246
251
|
},
|
|
252
|
+
setTolerance(px) {
|
|
253
|
+
options.tolerancePx = px;
|
|
254
|
+
},
|
|
255
|
+
setDisableKey(key) {
|
|
256
|
+
options.disableKey = key;
|
|
257
|
+
},
|
|
247
258
|
isEnabled() {
|
|
248
259
|
return enabled;
|
|
249
260
|
},
|
package/dist/snapping/types.d.ts
CHANGED
|
@@ -40,8 +40,7 @@ export interface SnapExcludeVertex {
|
|
|
40
40
|
/**
|
|
41
41
|
* The state of one snapping resolution: the zoom, the exclusions and the modifier keys.
|
|
42
42
|
*
|
|
43
|
-
* The library builds it for every input
|
|
44
|
-
* `draw.snapping.resolve()` when it snaps a coordinate made outside the library.
|
|
43
|
+
* The library builds it for every input.
|
|
45
44
|
*/
|
|
46
45
|
export interface SnapContext {
|
|
47
46
|
/** The current zoom level (used to convert the pixel tolerance into degrees) */
|
|
@@ -125,6 +124,13 @@ export interface SnapPointCandidate {
|
|
|
125
124
|
vertex?: VertexRef;
|
|
126
125
|
/** A label for the host to show, passed on as `SnapTarget.description` */
|
|
127
126
|
description?: string;
|
|
127
|
+
/** The priority among candidates of the same kind at the same distance; higher wins */
|
|
128
|
+
priority?: number;
|
|
129
|
+
/**
|
|
130
|
+
* The kind of its own a provider gave the candidate, passed on as `SnapTarget.kind`; the
|
|
131
|
+
* candidate is ranked and switched on and off by `kind`
|
|
132
|
+
*/
|
|
133
|
+
ownKind?: string;
|
|
128
134
|
}
|
|
129
135
|
/**
|
|
130
136
|
* A snapping candidate that snaps to the point of a segment closest to the cursor.
|
|
@@ -169,27 +175,6 @@ export type SnapCandidate = SnapPointCandidate | SnapSegmentCandidate;
|
|
|
169
175
|
* (vertex > intersection > edge > guide) and then by distance to the cursor. Candidates of a
|
|
170
176
|
* kind disabled in `options.snap.kinds` are ignored. `candidates` runs on every mouse move,
|
|
171
177
|
* so it should answer from an index rather than scan all the data.
|
|
172
|
-
*
|
|
173
|
-
* @example
|
|
174
|
-
* ```ts
|
|
175
|
-
* import type { SnapProvider } from '@sakuzu/maplibre-gl-draw';
|
|
176
|
-
*
|
|
177
|
-
* const stations: [number, number][] = [[139.767, 35.681], [139.7, 35.69]];
|
|
178
|
-
*
|
|
179
|
-
* const stationProvider: SnapProvider = {
|
|
180
|
-
* name: 'stations',
|
|
181
|
-
* candidates: (bbox) =>
|
|
182
|
-
* stations
|
|
183
|
-
* .filter(([lng, lat]) =>
|
|
184
|
-
* lng >= bbox.minX && lng <= bbox.maxX && lat >= bbox.minY && lat <= bbox.maxY,
|
|
185
|
-
* )
|
|
186
|
-
* .map((coordinate) => ({ kind: 'vertex', coordinate, description: 'station' })),
|
|
187
|
-
* };
|
|
188
|
-
*
|
|
189
|
-
* const unregister = draw.snapping.register(stationProvider);
|
|
190
|
-
* // later
|
|
191
|
-
* unregister();
|
|
192
|
-
* ```
|
|
193
178
|
*/
|
|
194
179
|
export interface SnapProvider {
|
|
195
180
|
/** The provider name (for debugging and for detecting duplicate registrations) */
|
|
@@ -209,22 +194,11 @@ export interface SnapProvider {
|
|
|
209
194
|
*/
|
|
210
195
|
export type SnapDisableKey = 'alt' | 'shift' | 'ctrl' | 'meta' | 'none';
|
|
211
196
|
/**
|
|
212
|
-
* The snapping options
|
|
197
|
+
* The snapping options of the engine (`createDraw` translates its `snapping` option).
|
|
213
198
|
*
|
|
214
199
|
* Every field can be omitted. Snapping applies to the pointer input of every drawing mode,
|
|
215
200
|
* of custom modes and of vertex dragging. Everything except `tolerancePx` and `disableKey`
|
|
216
201
|
* can be switched at runtime through `draw.snapping`.
|
|
217
|
-
*
|
|
218
|
-
* @example
|
|
219
|
-
* ```ts
|
|
220
|
-
* const draw = createMapLibreGLDraw(map, {
|
|
221
|
-
* snap: {
|
|
222
|
-
* tolerancePx: 12,
|
|
223
|
-
* disableKey: 'shift',
|
|
224
|
-
* kinds: { guide: false }, // vertices, edges and intersections only
|
|
225
|
-
* },
|
|
226
|
-
* });
|
|
227
|
-
* ```
|
|
228
202
|
*/
|
|
229
203
|
export interface SnapOptions {
|
|
230
204
|
/** Whether snapping is enabled (default: true). Switch it with `draw.snapping.setEnabled` */
|