@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/api.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
import { subscribeMutationHooks } from '../plugins/mutation-hooks.js';
|
|
4
|
-
import { createDisplayApi } from './display-api.js';
|
|
5
|
-
import { createEventApi } from './event-api.js';
|
|
6
|
-
import { createExtensionApi } from './extension-api.js';
|
|
7
|
-
import { createFeatureApi } from './feature-api.js';
|
|
8
|
-
import { createGeometryApi } from './geometry-operations.js';
|
|
9
|
-
import { createGroupApi } from './group-api.js';
|
|
10
|
-
import { createInputApi } from './input-api.js';
|
|
11
|
-
import { createInstanceApi } from './instance-api.js';
|
|
12
|
-
import { createLayerApi } from './layer-api.js';
|
|
13
|
-
import { createSelectionApi } from './selection-api.js';
|
|
14
|
-
import { createSnappingApi } from './snapping-api.js';
|
|
15
|
-
import { createTopologyApi } from './topology-api.js';
|
|
16
|
-
import { createTracingApi } from './tracing-api.js';
|
|
17
|
-
/**
|
|
18
|
-
* The orchestrator that creates the public API. It composes the sub-apis of each functional
|
|
19
|
-
* domain by spreading.
|
|
20
|
-
*
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
export function createDrawAPI(context, input, eventBridge, customLayer, importExportAPI, lifecycle, extension) {
|
|
24
|
-
const { map, store, eventEmitter, generateFeatureId, autoNameGenerator, hitTestService, boxSelectionRegistry, getActiveLayerId, setActiveLayerId, snapService, topology, trace, pixelRatioSource, } = context;
|
|
25
|
-
const { spatialIndex, pluginManager, datasets, featureCompanions } = extension;
|
|
26
|
-
const { inputNormalizer, inputRouter } = input;
|
|
27
|
-
const { modeManager, renderCoordinator } = lifecycle;
|
|
28
|
-
// The after-mutation hooks of the plugins are fired from the Store notification, so they
|
|
29
|
-
// see every write whatever made it
|
|
30
|
-
const stopMutationHooks = subscribeMutationHooks(store, pluginManager);
|
|
31
|
-
const instanceApi = createInstanceApi({
|
|
32
|
-
map,
|
|
33
|
-
store,
|
|
34
|
-
modeManager,
|
|
35
|
-
eventBridge,
|
|
36
|
-
renderCoordinator,
|
|
37
|
-
inputRouter,
|
|
38
|
-
inputNormalizer,
|
|
39
|
-
customLayer,
|
|
40
|
-
autoNameGenerator,
|
|
41
|
-
pixelRatioSource,
|
|
42
|
-
pluginManager,
|
|
43
|
-
});
|
|
44
|
-
return {
|
|
45
|
-
...instanceApi,
|
|
46
|
-
destroy() {
|
|
47
|
-
instanceApi.destroy();
|
|
48
|
-
// After the plugins are uninstalled (their onUninstall can still read the index)
|
|
49
|
-
stopMutationHooks();
|
|
50
|
-
spatialIndex.destroy();
|
|
51
|
-
},
|
|
52
|
-
...createFeatureApi({ store, generateFeatureId, getActiveLayerId }),
|
|
53
|
-
...createLayerApi({
|
|
54
|
-
store,
|
|
55
|
-
generateFeatureId,
|
|
56
|
-
autoNameGenerator,
|
|
57
|
-
getActiveLayerId,
|
|
58
|
-
setActiveLayerId,
|
|
59
|
-
}),
|
|
60
|
-
...createGroupApi({ store, generateFeatureId, autoNameGenerator }),
|
|
61
|
-
...createSelectionApi({ store }),
|
|
62
|
-
...createGeometryApi({ store, eventEmitter, generateFeatureId }),
|
|
63
|
-
...createDisplayApi({ datasets }),
|
|
64
|
-
...createSnappingApi({ snapService, map }),
|
|
65
|
-
...createTracingApi({ trace }),
|
|
66
|
-
...createTopologyApi({ topology }),
|
|
67
|
-
...createInputApi({ map, inputRouter }),
|
|
68
|
-
...createEventApi({ eventEmitter }),
|
|
69
|
-
...createExtensionApi({
|
|
70
|
-
pluginManager,
|
|
71
|
-
modeManager,
|
|
72
|
-
spatialIndex,
|
|
73
|
-
hitTestService,
|
|
74
|
-
boxSelectionRegistry,
|
|
75
|
-
customLayer: customLayer,
|
|
76
|
-
featureCompanions,
|
|
77
|
-
selectionScope: context.selectionScope,
|
|
78
|
-
snapTargets: context.snapTargets,
|
|
79
|
-
}),
|
|
80
|
-
// The Import/Export API spreads importExportAPI directly
|
|
81
|
-
// (load / export / getSuggestedFileName)
|
|
82
|
-
load: (source, options) => importExportAPI.load(source, options),
|
|
83
|
-
export: (format, options) => importExportAPI.export(format, options),
|
|
84
|
-
getSuggestedFileName: () => importExportAPI.getSuggestedFileName(),
|
|
85
|
-
};
|
|
86
|
-
}
|
package/dist/api/context.d.ts
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { type Messages } from '../messages.js';
|
|
2
|
-
import type { FeatureStyleConfig } from '../shared/config/feature-style.js';
|
|
3
|
-
import type { RenderingConfig } from '../shared/config/rendering.js';
|
|
4
|
-
import type { SelectionUIConfig } from '../shared/config/selection.js';
|
|
5
|
-
import type { TopologyConfig } from '../shared/config/topology.js';
|
|
6
|
-
import type { TraceOptions } from '../shared/config/trace.js';
|
|
7
|
-
import type { AutoNameConfig } from '../shared/utils/name-generator.js';
|
|
8
|
-
import type { SnapOptions } from '../snapping/types.js';
|
|
9
|
-
import type { DocumentStore, Store } from '../store/store.js';
|
|
10
|
-
import type { Mode } from '../store/types.js';
|
|
11
|
-
/**
|
|
12
|
-
* The options of {@link createMapLibreGLDraw}. Every option can be omitted.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const draw = createMapLibreGLDraw(map, {
|
|
17
|
-
* defaultMode: 'select',
|
|
18
|
-
* clickTolerance: 8,
|
|
19
|
-
* snap: { tolerancePx: 12, kinds: { guide: false } },
|
|
20
|
-
* trace: { enabled: false },
|
|
21
|
-
* topology: { sharedVertexDrag: true },
|
|
22
|
-
* autoName: false,
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export interface Options {
|
|
27
|
-
/** The mode the instance starts in (default `'select'`) */
|
|
28
|
-
defaultMode?: Mode;
|
|
29
|
-
/**
|
|
30
|
-
* How far from a feature a click still hits it, in CSS pixels (default 6)
|
|
31
|
-
*/
|
|
32
|
-
clickTolerance?: number;
|
|
33
|
-
/**
|
|
34
|
-
* How far the mouse moves with the button down before a press becomes a drag, in CSS
|
|
35
|
-
* pixels (default 3)
|
|
36
|
-
*/
|
|
37
|
-
dragThreshold?: number;
|
|
38
|
-
/**
|
|
39
|
-
* The default drawing style of the features, per geometry (points, lines, polygons and so
|
|
40
|
-
* on); the given parts replace the built-in defaults, and a feature's own `style` wins over
|
|
41
|
-
* both
|
|
42
|
-
*/
|
|
43
|
-
style?: Partial<FeatureStyleConfig>;
|
|
44
|
-
/**
|
|
45
|
-
* The look of the selection UI: the bounding box, the resize, rotate, vertex and midpoint
|
|
46
|
-
* handles, and the radius handle, center marker and radius line of a circle (see
|
|
47
|
-
* {@link SelectionUIConfig} for the defaults)
|
|
48
|
-
*/
|
|
49
|
-
selectionStyle?: Partial<SelectionUIConfig>;
|
|
50
|
-
/**
|
|
51
|
-
* The look of the box selection rectangle and the switches of the rendering paths (see
|
|
52
|
-
* {@link RenderingConfig} for the defaults)
|
|
53
|
-
*/
|
|
54
|
-
renderingStyle?: Partial<RenderingConfig>;
|
|
55
|
-
/**
|
|
56
|
-
* The automatic names of new features, layers and groups, such as `Polygon 1` and
|
|
57
|
-
* `Layer 2` (default: enabled)
|
|
58
|
-
*
|
|
59
|
-
* `false` turns it off, and an {@link AutoNameConfig} changes the words or the format. A
|
|
60
|
-
* number used once is not reused. The words are English by default; a host that shows
|
|
61
|
-
* another language translates them here (`typeNames`), not through {@link Options.messages}.
|
|
62
|
-
*/
|
|
63
|
-
autoName?: AutoNameConfig | boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Whether the line widths of the features drawn in a drawing mode follow the zoom (default
|
|
66
|
-
* true)
|
|
67
|
-
*
|
|
68
|
-
* By default a drawing mode records the zoom a feature is drawn at in
|
|
69
|
-
* `properties.createdZoom`, and the widths of its lines and outlines are those of that zoom:
|
|
70
|
-
* they double with each zoom level in and halve with each level out, like lines drawn on
|
|
71
|
-
* paper. An application that wants the widths to stay the same on the screen at every zoom
|
|
72
|
-
* sets `false`; a drawn feature then gets no created zoom, like a feature added through the
|
|
73
|
-
* API. It does not change features already drawn: the widths follow
|
|
74
|
-
* `properties.createdZoom` wherever it is set, so a feature added through the API can set it
|
|
75
|
-
* too. An Image always scales with the map.
|
|
76
|
-
*/
|
|
77
|
-
scaleWithZoom?: boolean;
|
|
78
|
-
/**
|
|
79
|
-
* The snapping configuration
|
|
80
|
-
*
|
|
81
|
-
* When omitted, it is enabled with a tolerance of 10 CSS pixels, it is released while Alt
|
|
82
|
-
* is held, every kind of target (vertex, edge, intersection, guide) is on, and the
|
|
83
|
-
* datasets are targets. The candidates come from the vertices and edges of
|
|
84
|
-
* the Store; more are added with `draw.snapping.register()`. Change it at runtime with
|
|
85
|
-
* {@link MapLibreGLDraw.snapping}.
|
|
86
|
-
*/
|
|
87
|
-
snap?: SnapOptions;
|
|
88
|
-
/**
|
|
89
|
-
* The topology configuration (when omitted, everything is disabled)
|
|
90
|
-
*
|
|
91
|
-
* The settings that keep editing from breaking boundaries shared by adjacent features.
|
|
92
|
-
* With `sharedVertexDrag: true`, dragging a vertex in select mode also moves, by the same
|
|
93
|
-
* amount, every vertex of other visible, unlocked features at exactly the same coordinates,
|
|
94
|
-
* and the drag commits as one change. The modifier of `snap.disableKey` held at the start of
|
|
95
|
-
* a drag releases it for that drag. Change it at runtime with
|
|
96
|
-
* {@link MapLibreGLDraw.topology}.
|
|
97
|
-
*/
|
|
98
|
-
topology?: Partial<TopologyConfig>;
|
|
99
|
-
/**
|
|
100
|
-
* The trace configuration (when omitted, it is enabled)
|
|
101
|
-
*
|
|
102
|
-
* While drawing (draw_line / draw_polygon), when the previous click and this click both
|
|
103
|
-
* snapped to the boundary of the same feature, the vertex sequence between them is taken in
|
|
104
|
-
* automatically. With `enabled: false` a click adds only the point clicked. Change it at
|
|
105
|
-
* runtime with {@link MapLibreGLDraw.tracing}.
|
|
106
|
-
*/
|
|
107
|
-
trace?: TraceOptions;
|
|
108
|
-
/**
|
|
109
|
-
* The document store (when omitted, a new {@link MemoryStore} is used)
|
|
110
|
-
*
|
|
111
|
-
* Give a {@link DocumentStore} of your own to keep the document elsewhere; the library
|
|
112
|
-
* keeps the local state (selection, mode, read-only and so on) around
|
|
113
|
-
* it. A {@link Store} such as a MemoryStore is used as it is.
|
|
114
|
-
*/
|
|
115
|
-
store?: DocumentStore | Store;
|
|
116
|
-
/**
|
|
117
|
-
* Whether to create a default layer on initialization (default: true)
|
|
118
|
-
*
|
|
119
|
-
* When it is false, creating the layers becomes the responsibility of the application.
|
|
120
|
-
* Use it when restoring the layer structure from an external data source, or
|
|
121
|
-
* when managing the layers on your own. Until a layer exists, the drawing modes cannot be
|
|
122
|
-
* entered.
|
|
123
|
-
*/
|
|
124
|
-
initDefaultLayer?: boolean;
|
|
125
|
-
/**
|
|
126
|
-
* The predicate that identifies the "external entries" of the stacking order (when omitted,
|
|
127
|
-
* it is always false)
|
|
128
|
-
*
|
|
129
|
-
* The entries of the layer order for which it returns true are separators, and this library
|
|
130
|
-
* does not draw them. Each interval between separators is drawn by its own MapLibre custom
|
|
131
|
-
* layer (a frame), so the host can place its native layers (vector tiles, raster) between
|
|
132
|
-
* the frames. {@link MapLibreGLDraw.getRenderSlots} lists the frames, and the
|
|
133
|
-
* `draw.renderslots.change` event announces their changes.
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* ```typescript
|
|
137
|
-
* const draw = createMapLibreGLDraw(map, {
|
|
138
|
-
* isExternalEntry: (id) => id.startsWith('native:'),
|
|
139
|
-
* });
|
|
140
|
-
* draw.on('draw.renderslots.change', ({ slots }) => placeNativeLayers(slots));
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
isExternalEntry?: (entryId: string) => boolean;
|
|
144
|
-
/**
|
|
145
|
-
* The render scale (when omitted, the map's `getPixelRatio()` is read each time)
|
|
146
|
-
*
|
|
147
|
-
* Line widths, point sizes and outlines are drawn by converting CSS pixels into physical
|
|
148
|
-
* pixels, so the scale of the backing store being drawn into is needed. By default it is
|
|
149
|
-
* the ratio of the map, which follows the `pixelRatio` the maplibre Map was created with
|
|
150
|
-
* and the device. Pass a value only to draw at another scale than the map's.
|
|
151
|
-
*/
|
|
152
|
-
pixelRatio?: number;
|
|
153
|
-
/**
|
|
154
|
-
* The strings the library returns as values (when omitted, {@link MESSAGES_EN})
|
|
155
|
-
*
|
|
156
|
-
* The given entries replace the English defaults for this instance only; the entries
|
|
157
|
-
* left out keep the default. Legend labels and the descriptions of the snapping guides
|
|
158
|
-
* come from this table. The library ships English only and does no locale detection.
|
|
159
|
-
* The words of generated names ("Layer 1") are not here: they come from
|
|
160
|
-
* {@link Options.autoName}.
|
|
161
|
-
*
|
|
162
|
-
* @example
|
|
163
|
-
* ```typescript
|
|
164
|
-
* const draw = createMapLibreGLDraw(map, {
|
|
165
|
-
* messages: {
|
|
166
|
-
* legendOther: 'Autres',
|
|
167
|
-
* legendBelow: (upper) => `Moins de ${upper}`,
|
|
168
|
-
* },
|
|
169
|
-
* });
|
|
170
|
-
* ```
|
|
171
|
-
*/
|
|
172
|
-
messages?: Partial<Messages>;
|
|
173
|
-
}
|
package/dist/api/display-api.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/** @internal */
|
|
4
|
-
export function createDisplayApi(deps) {
|
|
5
|
-
const { datasets } = deps;
|
|
6
|
-
return {
|
|
7
|
-
addDataset(options) {
|
|
8
|
-
return datasets.add(options);
|
|
9
|
-
},
|
|
10
|
-
getDataset(id) {
|
|
11
|
-
return datasets.get(id);
|
|
12
|
-
},
|
|
13
|
-
getDatasets() {
|
|
14
|
-
return datasets.list();
|
|
15
|
-
},
|
|
16
|
-
moveDataset(id, placement) {
|
|
17
|
-
return datasets.move(id, placement);
|
|
18
|
-
},
|
|
19
|
-
removeDataset(id) {
|
|
20
|
-
return datasets.remove(id);
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
package/dist/api/event-api.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event API
|
|
3
|
-
*
|
|
4
|
-
* Provides on / off for MapLibreGLDraw. Maps the `draw.*` prefix to the internal
|
|
5
|
-
* EventEmitter event names.
|
|
6
|
-
*/
|
|
7
|
-
import type { EventEmitter } from '../shared/utils/event-emitter.js';
|
|
8
|
-
import type { MapLibreGLDraw } from './api.js';
|
|
9
|
-
export type EventApi = Pick<MapLibreGLDraw, 'on' | 'off'>;
|
|
10
|
-
export interface EventApiDeps {
|
|
11
|
-
eventEmitter: EventEmitter;
|
|
12
|
-
}
|
|
13
|
-
export declare function createEventApi(deps: EventApiDeps): EventApi;
|
package/dist/api/event-api.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
export function createEventApi(deps) {
|
|
4
|
-
const { eventEmitter } = deps;
|
|
5
|
-
return {
|
|
6
|
-
on(event, handler) {
|
|
7
|
-
const internalEvent = event.replace('draw.', '');
|
|
8
|
-
const listener = handler;
|
|
9
|
-
eventEmitter.on(internalEvent, listener);
|
|
10
|
-
return () => eventEmitter.off(internalEvent, listener);
|
|
11
|
-
},
|
|
12
|
-
off(event, handler) {
|
|
13
|
-
const internalEvent = event.replace('draw.', '');
|
|
14
|
-
eventEmitter.off(internalEvent, handler);
|
|
15
|
-
},
|
|
16
|
-
};
|
|
17
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Extension API
|
|
3
|
-
*
|
|
4
|
-
* Provides the extension point API of MapLibreGLDraw.
|
|
5
|
-
* - addPlugin / getPluginApi: plugin registration / lookup
|
|
6
|
-
* - registerMode: registers a custom mode
|
|
7
|
-
* - registerFeatureHandler: registers a custom feature handler (registers the renderer /
|
|
8
|
-
* hitTest / boxSelection / boundingBox / resize calculator / snapping candidates at once)
|
|
9
|
-
* - registerAuxiliaryHandleProvider: registers a provider of auxiliary handles (handles of
|
|
10
|
-
* a plugin's own that are neither vertices nor resize handles)
|
|
11
|
-
* - registerFeatureCompanionProvider: registers a provider of companion rendering and
|
|
12
|
-
* companion hits (things drawn at the z just below the feature and grabbable in the same
|
|
13
|
-
* z order)
|
|
14
|
-
* - addOverlayRenderer: adds a custom overlay renderer
|
|
15
|
-
*
|
|
16
|
-
* Every registration returns the function that cancels it.
|
|
17
|
-
*/
|
|
18
|
-
import type { BoxSelectionStrategyRegistry } from '../dispatcher/hit-test/box-strategy.js';
|
|
19
|
-
import type { HitTestService } from '../dispatcher/hit-test/service.js';
|
|
20
|
-
import type { ModeManager } from '../modes/manager.js';
|
|
21
|
-
import type { PluginManager } from '../plugins/plugin-manager.js';
|
|
22
|
-
import type { SnapTargetsRegistry } from '../snapping/custom-targets.js';
|
|
23
|
-
import type { SpatialIndex } from '../store/spatial/spatial-index.js';
|
|
24
|
-
import type { FeatureCompanionRegistry } from '../view/feature-companion.js';
|
|
25
|
-
import type { CustomLayerInterface } from '../view/layer/index.js';
|
|
26
|
-
import type { SelectionScope } from '../view/ui/selection-scope.js';
|
|
27
|
-
import type { MapLibreGLDraw } from './api.js';
|
|
28
|
-
export type ExtensionApi = Pick<MapLibreGLDraw, 'addPlugin' | 'getPluginApi' | 'registerMode' | 'registerFeatureHandler' | 'registerAuxiliaryHandleProvider' | 'registerFeatureCompanionProvider' | 'addOverlayRenderer'>;
|
|
29
|
-
export interface ExtensionApiDeps {
|
|
30
|
-
pluginManager: PluginManager;
|
|
31
|
-
modeManager: ModeManager;
|
|
32
|
-
spatialIndex: SpatialIndex;
|
|
33
|
-
hitTestService: HitTestService;
|
|
34
|
-
boxSelectionRegistry: BoxSelectionStrategyRegistry;
|
|
35
|
-
customLayer: CustomLayerInterface;
|
|
36
|
-
/** The providers of companion rendering and companion hits (those of this draw instance) */
|
|
37
|
-
featureCompanions: FeatureCompanionRegistry;
|
|
38
|
-
/**
|
|
39
|
-
* The selection scope of this draw instance (selection UI extension points and auxiliary
|
|
40
|
-
* handles). Registrations go here, never into a module-level registry
|
|
41
|
-
*/
|
|
42
|
-
selectionScope: SelectionScope;
|
|
43
|
-
/** The snapping candidates of the custom feature types of this draw instance */
|
|
44
|
-
snapTargets: SnapTargetsRegistry;
|
|
45
|
-
}
|
|
46
|
-
export declare function createExtensionApi(deps: ExtensionApiDeps): ExtensionApi;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
export function createExtensionApi(deps) {
|
|
4
|
-
const { pluginManager, modeManager, spatialIndex, hitTestService, boxSelectionRegistry, customLayer, featureCompanions, selectionScope, snapTargets, } = deps;
|
|
5
|
-
const selectionExtensions = selectionScope.extensions;
|
|
6
|
-
return {
|
|
7
|
-
addPlugin(plugin) {
|
|
8
|
-
return pluginManager.register(plugin);
|
|
9
|
-
},
|
|
10
|
-
getPluginApi(name) {
|
|
11
|
-
return pluginManager.getPluginApi(name);
|
|
12
|
-
},
|
|
13
|
-
registerMode(mode, factory) {
|
|
14
|
-
return modeManager.registerMode(mode, factory);
|
|
15
|
-
},
|
|
16
|
-
registerFeatureHandler(handler) {
|
|
17
|
-
const { type } = handler;
|
|
18
|
-
const cancels = [];
|
|
19
|
-
const add = (cancel) => {
|
|
20
|
-
if (cancel)
|
|
21
|
-
cancels.push(cancel);
|
|
22
|
-
};
|
|
23
|
-
// 1. The bounding box computation of the spatial index (it re-measures the features of
|
|
24
|
-
// the type the Store already holds)
|
|
25
|
-
if (handler.getBoundingBox) {
|
|
26
|
-
add(spatialIndex.setCustomBoundingBoxCalculator?.(type, handler.getBoundingBox));
|
|
27
|
-
}
|
|
28
|
-
// 2. The hit testing strategy
|
|
29
|
-
if (handler.hitTest)
|
|
30
|
-
add(hitTestService.registerStrategy?.(handler.hitTest));
|
|
31
|
-
// 3. The box selection strategy
|
|
32
|
-
if (handler.boxSelection)
|
|
33
|
-
add(boxSelectionRegistry.register(handler.boxSelection));
|
|
34
|
-
// 4. The renderer
|
|
35
|
-
if (handler.renderer)
|
|
36
|
-
add(customLayer.registerFeatureRenderer(type, handler.renderer));
|
|
37
|
-
// 5. The bounding box of the selection UI
|
|
38
|
-
if (handler.getSelectionBoundingBox) {
|
|
39
|
-
add(selectionExtensions.registerBoundingBox(type, handler.getSelectionBoundingBox));
|
|
40
|
-
}
|
|
41
|
-
// 6. The additional resize handles
|
|
42
|
-
if (handler.getAdditionalResizeHandles) {
|
|
43
|
-
add(selectionExtensions.registerAdditionalResizeHandles(type, handler.getAdditionalResizeHandles));
|
|
44
|
-
}
|
|
45
|
-
// 7. The custom resize computation
|
|
46
|
-
if (handler.computeCustomResize) {
|
|
47
|
-
add(selectionExtensions.registerCustomResize(type, handler.computeCustomResize));
|
|
48
|
-
}
|
|
49
|
-
// 8. The resize strategy. A type with the scale strategy also rotates through its
|
|
50
|
-
// rotation property (the rotate operation reads the same strategy)
|
|
51
|
-
if (handler.resizeStrategy) {
|
|
52
|
-
add(selectionExtensions.registerResizeStrategy(type, handler.resizeStrategy));
|
|
53
|
-
}
|
|
54
|
-
// 9. The snapping candidates
|
|
55
|
-
if (handler.getSnapTargets)
|
|
56
|
-
add(snapTargets.register(type, handler.getSnapTargets));
|
|
57
|
-
// 10. The additional reach for candidate narrowing of the hit test
|
|
58
|
-
if (handler.candidateReachPx !== undefined) {
|
|
59
|
-
add(hitTestService.registerCandidateReach?.(type, handler.candidateReachPx));
|
|
60
|
-
}
|
|
61
|
-
// 11. The extent of a point's selection box
|
|
62
|
-
if (handler.getPointFrameExtent) {
|
|
63
|
-
add(selectionExtensions.registerPointFrameExtent(type, handler.getPointFrameExtent));
|
|
64
|
-
}
|
|
65
|
-
// The cancellation undoes every registration above, in the reverse order
|
|
66
|
-
let cancelled = false;
|
|
67
|
-
return () => {
|
|
68
|
-
if (cancelled)
|
|
69
|
-
return;
|
|
70
|
-
cancelled = true;
|
|
71
|
-
for (let i = cancels.length - 1; i >= 0; i--)
|
|
72
|
-
cancels[i]();
|
|
73
|
-
};
|
|
74
|
-
},
|
|
75
|
-
registerAuxiliaryHandleProvider(provider) {
|
|
76
|
-
return selectionScope.auxiliaryHandles.register(provider);
|
|
77
|
-
},
|
|
78
|
-
registerFeatureCompanionProvider(provider) {
|
|
79
|
-
return featureCompanions.register(provider);
|
|
80
|
-
},
|
|
81
|
-
addOverlayRenderer(renderer) {
|
|
82
|
-
return customLayer.addOverlayRenderer(renderer);
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Store } from '../store/store.js';
|
|
2
|
-
import type { MapLibreGLDraw } from './api.js';
|
|
3
|
-
export type FeatureApi = Pick<MapLibreGLDraw, 'addFeature' | 'getFeature' | 'getAllFeatures' | 'getVisibleFeatures' | 'updateFeature' | 'deleteFeature' | 'deleteAllFeatures'>;
|
|
4
|
-
export interface FeatureApiDeps {
|
|
5
|
-
store: Store;
|
|
6
|
-
generateFeatureId: () => string;
|
|
7
|
-
getActiveLayerId: () => string;
|
|
8
|
-
}
|
|
9
|
-
export declare function createFeatureApi(deps: FeatureApiDeps): FeatureApi;
|
|
10
|
-
/** Whether an update changes nothing but `locked` / `visible` (what a lock still allows) */
|
|
11
|
-
export declare function onlyLockOrVisibility(updates: object): boolean;
|
package/dist/api/feature-api.js
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* Feature API
|
|
5
|
-
*
|
|
6
|
-
* Provides the Feature CRUD operations of MapLibreGLDraw.
|
|
7
|
-
* It is composed into createDrawAPI by spreading.
|
|
8
|
-
*/
|
|
9
|
-
import { isFeatureLocked } from '../store/lock.js';
|
|
10
|
-
export function createFeatureApi(deps) {
|
|
11
|
-
const { store, generateFeatureId, getActiveLayerId } = deps;
|
|
12
|
-
return {
|
|
13
|
-
addFeature(input) {
|
|
14
|
-
const feature = {
|
|
15
|
-
id: input.id ?? generateFeatureId(),
|
|
16
|
-
type: input.type,
|
|
17
|
-
coordinates: input.coordinates,
|
|
18
|
-
layerId: input.layerId ?? getActiveLayerId(),
|
|
19
|
-
properties: input.properties ?? {},
|
|
20
|
-
style: input.style,
|
|
21
|
-
locked: input.locked ?? false,
|
|
22
|
-
visible: input.visible ?? true,
|
|
23
|
-
};
|
|
24
|
-
// A write refused because the Store is read-only returns null
|
|
25
|
-
return store.createFeature(feature) ? feature.id : null;
|
|
26
|
-
},
|
|
27
|
-
getFeature(id) {
|
|
28
|
-
return store.getFeature(id);
|
|
29
|
-
},
|
|
30
|
-
getAllFeatures() {
|
|
31
|
-
return featuresInDisplayOrder(store);
|
|
32
|
-
},
|
|
33
|
-
getVisibleFeatures() {
|
|
34
|
-
return store.getOrderedFeatures();
|
|
35
|
-
},
|
|
36
|
-
updateFeature(id, updates) {
|
|
37
|
-
// While locked (either itself, its group or its layer), reject changes to any
|
|
38
|
-
// attribute other than locked/visible (Miro-style full protection). locked/visible are
|
|
39
|
-
// allowed so that it can be unlocked and its visibility toggled.
|
|
40
|
-
const feature = store.getFeature(id);
|
|
41
|
-
if (feature && isFeatureLocked(feature, store) && !onlyLockOrVisibility(updates)) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
// An id that does not exist throws in the Store (unless it is read-only)
|
|
45
|
-
return store.updateFeature(id, updates);
|
|
46
|
-
},
|
|
47
|
-
deleteFeature(id) {
|
|
48
|
-
return store.deleteFeature(id);
|
|
49
|
-
},
|
|
50
|
-
deleteAllFeatures() {
|
|
51
|
-
const features = store.getAllFeatures();
|
|
52
|
-
return store.transact(() => {
|
|
53
|
-
let applied = true;
|
|
54
|
-
for (const feature of features) {
|
|
55
|
-
if (!store.getFeature(feature.id))
|
|
56
|
-
continue;
|
|
57
|
-
applied = store.deleteFeature(feature.id) && applied;
|
|
58
|
-
}
|
|
59
|
-
return applied;
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/** Whether an update changes nothing but `locked` / `visible` (what a lock still allows) */
|
|
65
|
-
export function onlyLockOrVisibility(updates) {
|
|
66
|
-
return Object.keys(updates).every((key) => key === 'locked' || key === 'visible');
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Every feature in display order (layer order -> order within the layer -> order within the
|
|
70
|
-
* group), whatever the visible flags say. A feature that no container lists (which the
|
|
71
|
-
* Store's containment invariant rules out) is appended at the end.
|
|
72
|
-
*/
|
|
73
|
-
function featuresInDisplayOrder(store) {
|
|
74
|
-
const result = [];
|
|
75
|
-
const seen = new Set();
|
|
76
|
-
const push = (id) => {
|
|
77
|
-
const feature = store.getFeature(id);
|
|
78
|
-
if (feature && !seen.has(id)) {
|
|
79
|
-
seen.add(id);
|
|
80
|
-
result.push(feature);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
for (const layerId of store.getLayerOrder()) {
|
|
84
|
-
const layer = store.getLayer(layerId);
|
|
85
|
-
if (!layer)
|
|
86
|
-
continue;
|
|
87
|
-
for (const itemId of layer.order) {
|
|
88
|
-
const group = store.getGroup(itemId);
|
|
89
|
-
if (group) {
|
|
90
|
-
for (const featureId of group.featureIds)
|
|
91
|
-
push(featureId);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
push(itemId);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
for (const feature of store.getAllFeatures())
|
|
99
|
-
push(feature.id);
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The common part of the geometry operations: placing a result where its input was, and
|
|
3
|
-
* announcing what an operation did
|
|
4
|
-
*
|
|
5
|
-
* applyResult creates one result, deletes the inputs and places it (outside a transaction)
|
|
6
|
-
* commitResult wraps applyResult in one transaction and moves the selection
|
|
7
|
-
* emitApplied emits draw.geometry.applied
|
|
8
|
-
*/
|
|
9
|
-
import type { EventEmitter, GeometryAppliedPayload } from '../../shared/utils/event-emitter.js';
|
|
10
|
-
import type { Feature, FeatureCoordinates, FeatureType } from '../../store/types.js';
|
|
11
|
-
import type { GeometryApiDeps } from './types.js';
|
|
12
|
-
export interface CommitParams {
|
|
13
|
-
/**
|
|
14
|
-
* The input whose style, properties and placement are inherited (in a boolean operation, the
|
|
15
|
-
* frontmost in z order)
|
|
16
|
-
*/
|
|
17
|
-
anchor: Feature;
|
|
18
|
-
/**
|
|
19
|
-
* The IDs of the inputs to delete. Left empty in an operation that keeps the inputs, such as
|
|
20
|
-
* the buffer
|
|
21
|
-
*/
|
|
22
|
-
removedIds: string[];
|
|
23
|
-
geometry: {
|
|
24
|
-
type: FeatureType;
|
|
25
|
-
coordinates: FeatureCoordinates;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* The properties of the result. When omitted, they are inherited from the anchor with the
|
|
29
|
-
* Circle-specific properties removed.
|
|
30
|
-
* It is given explicitly only when the result stays a Circle (the Circle special case of the
|
|
31
|
-
* buffer).
|
|
32
|
-
*/
|
|
33
|
-
properties?: Record<string, unknown>;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Creates one result feature, deletes the inputs and places it.
|
|
37
|
-
*
|
|
38
|
-
* It does not open a transaction. Because the caller wraps it in store.transact, even a case
|
|
39
|
-
* with several results, such as the buffer, is gathered into one StateChanges.
|
|
40
|
-
*/
|
|
41
|
-
export declare function applyResult(deps: GeometryApiDeps, params: CommitParams): string;
|
|
42
|
-
/**
|
|
43
|
-
* Creates the result feature and deletes the inputs in one transaction, and moves the
|
|
44
|
-
* selection to the result.
|
|
45
|
-
*
|
|
46
|
-
* A subscriber receives it as one StateChanges, which is what makes it one step for anything
|
|
47
|
-
* that records changes.
|
|
48
|
-
*/
|
|
49
|
-
export declare function commitResult(deps: GeometryApiDeps, params: CommitParams): string;
|
|
50
|
-
/** Emits draw.geometry.applied. */
|
|
51
|
-
export declare function emitApplied(eventEmitter: EventEmitter, payload: GeometryAppliedPayload): void;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The boolean editing operations (union / subtract / intersect) on the area types
|
|
3
|
-
*/
|
|
4
|
-
import type { AreaCoordinates, MultiPolygonCoordinates } from '../../geometry/index.js';
|
|
5
|
-
import type { GeometryOperationName } from '../../shared/utils/event-emitter.js';
|
|
6
|
-
import type { Store } from '../../store/store.js';
|
|
7
|
-
import type { Feature } from '../../store/types.js';
|
|
8
|
-
import type { GeometryApiDeps } from './types.js';
|
|
9
|
-
/**
|
|
10
|
-
* The common path that runs an operation on the area types and replaces the inputs with the
|
|
11
|
-
* result.
|
|
12
|
-
*
|
|
13
|
-
* @param inputs The targets ordered in z order (the tail is the frontmost)
|
|
14
|
-
* @param compute The geometric operation that receives the area coordinates in the same order
|
|
15
|
-
* as inputs and returns the result
|
|
16
|
-
*/
|
|
17
|
-
export declare function runAreaOperation(deps: GeometryApiDeps, operation: GeometryOperationName, inputs: Feature[], compute: (areas: AreaCoordinates[]) => MultiPolygonCoordinates): string | null;
|
|
18
|
-
/**
|
|
19
|
-
* Resolves the targets of subtract.
|
|
20
|
-
*
|
|
21
|
-
* When targetId is omitted, it is "subtract the group of frontmost features from the backmost
|
|
22
|
-
* one". When it is given explicitly, that feature is added to the targets even if it is not
|
|
23
|
-
* included in the list of targets (ids / the selection).
|
|
24
|
-
*/
|
|
25
|
-
export declare function resolveSubtractInputs(store: Store, targetId: string | undefined, ids: string[] | undefined): {
|
|
26
|
-
inputs: Feature[];
|
|
27
|
-
targetIndex: number;
|
|
28
|
-
} | null;
|