@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
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The options: `DrawOptions` when the instance is created, and the part of them that
|
|
3
|
+
* `draw.options` changes while it runs
|
|
4
|
+
*/
|
|
5
|
+
import type { Messages } from '../messages.js';
|
|
6
|
+
import type { Store } from './extension/store.js';
|
|
7
|
+
import type { FeatureStyle, FeatureType, LineStyle } from './model.js';
|
|
8
|
+
import type { Mode } from './state.js';
|
|
9
|
+
/** The options of snapping to vertices, edges, intersections and guides. */
|
|
10
|
+
export interface SnappingOptions {
|
|
11
|
+
/** Whether snapping is on; true when it is left out */
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
/** How close the pointer must come to a candidate, in screen pixels; 10 when it is left out */
|
|
14
|
+
tolerancePx?: number;
|
|
15
|
+
/** The key that turns snapping off while it is held; `alt` when it is left out */
|
|
16
|
+
disableKey?: 'alt' | 'shift' | 'ctrl' | 'meta' | 'none';
|
|
17
|
+
/** Whether each kind of candidate is on; a kind left out is on */
|
|
18
|
+
kinds?: Partial<Record<'vertex' | 'edge' | 'intersection' | 'guide', boolean>>;
|
|
19
|
+
/** Whether the rows of datasets are candidates; true when it is left out */
|
|
20
|
+
datasets?: boolean;
|
|
21
|
+
/** The angle between the guides from north, in degrees; 45 when it is left out */
|
|
22
|
+
guideStepDegrees?: number;
|
|
23
|
+
/**
|
|
24
|
+
* The mark drawn at the snapped point, per kind of target; the keys given replace those of
|
|
25
|
+
* the default. By default every mark is `#00C7BE`: `vertex` an outlined circle of 14 px,
|
|
26
|
+
* `edge` an outlined square of 12 px, `intersection` a filled circle of 8 px and `guide` an
|
|
27
|
+
* outlined circle of 10 px. A kind of a snap provider's own takes the mark of `vertex`
|
|
28
|
+
*/
|
|
29
|
+
indicator?: {
|
|
30
|
+
/** The mark of a vertex */
|
|
31
|
+
vertex?: {
|
|
32
|
+
/** The shape */
|
|
33
|
+
shape?: 'circle' | 'square' | 'triangle' | 'star';
|
|
34
|
+
/** The size in CSS pixels */
|
|
35
|
+
size?: number;
|
|
36
|
+
/** The fill color (a CSS color) */
|
|
37
|
+
fillColor?: string;
|
|
38
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
39
|
+
fillOpacity?: number;
|
|
40
|
+
/** The color of the outline (a CSS color) */
|
|
41
|
+
strokeColor?: string;
|
|
42
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
43
|
+
strokeWidth?: number;
|
|
44
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
45
|
+
strokeOpacity?: number;
|
|
46
|
+
};
|
|
47
|
+
/** The mark of a point on an edge */
|
|
48
|
+
edge?: {
|
|
49
|
+
/** The shape */
|
|
50
|
+
shape?: 'circle' | 'square' | 'triangle' | 'star';
|
|
51
|
+
/** The size in CSS pixels */
|
|
52
|
+
size?: number;
|
|
53
|
+
/** The fill color (a CSS color) */
|
|
54
|
+
fillColor?: string;
|
|
55
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
56
|
+
fillOpacity?: number;
|
|
57
|
+
/** The color of the outline (a CSS color) */
|
|
58
|
+
strokeColor?: string;
|
|
59
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
60
|
+
strokeWidth?: number;
|
|
61
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
62
|
+
strokeOpacity?: number;
|
|
63
|
+
};
|
|
64
|
+
/** The mark of an intersection of edges */
|
|
65
|
+
intersection?: {
|
|
66
|
+
/** The shape */
|
|
67
|
+
shape?: 'circle' | 'square' | 'triangle' | 'star';
|
|
68
|
+
/** The size in CSS pixels */
|
|
69
|
+
size?: number;
|
|
70
|
+
/** The fill color (a CSS color) */
|
|
71
|
+
fillColor?: string;
|
|
72
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
73
|
+
fillOpacity?: number;
|
|
74
|
+
/** The color of the outline (a CSS color) */
|
|
75
|
+
strokeColor?: string;
|
|
76
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
77
|
+
strokeWidth?: number;
|
|
78
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
79
|
+
strokeOpacity?: number;
|
|
80
|
+
};
|
|
81
|
+
/** The mark of a point on a guide */
|
|
82
|
+
guide?: {
|
|
83
|
+
/** The shape */
|
|
84
|
+
shape?: 'circle' | 'square' | 'triangle' | 'star';
|
|
85
|
+
/** The size in CSS pixels */
|
|
86
|
+
size?: number;
|
|
87
|
+
/** The fill color (a CSS color) */
|
|
88
|
+
fillColor?: string;
|
|
89
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
90
|
+
fillOpacity?: number;
|
|
91
|
+
/** The color of the outline (a CSS color) */
|
|
92
|
+
strokeColor?: string;
|
|
93
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
94
|
+
strokeWidth?: number;
|
|
95
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
96
|
+
strokeOpacity?: number;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* The line drawn along a guide while the pointer snaps to it; the keys given replace those
|
|
101
|
+
* of the default, a 1 px `#00C7BE` line dashed `[4, 4]`
|
|
102
|
+
*/
|
|
103
|
+
guideLine?: {
|
|
104
|
+
/** The width in CSS pixels */
|
|
105
|
+
width?: number;
|
|
106
|
+
/** The color (a CSS color) */
|
|
107
|
+
color?: string;
|
|
108
|
+
/** The opacity, from 0 to 1 */
|
|
109
|
+
opacity?: number;
|
|
110
|
+
/** The dash pattern */
|
|
111
|
+
lineStyle?: LineStyle;
|
|
112
|
+
/** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
|
|
113
|
+
dashArray?: number[];
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** The options of tracing the boundary of an existing feature while drawing. */
|
|
117
|
+
export interface TracingOptions {
|
|
118
|
+
/** Whether tracing is on; true when it is left out */
|
|
119
|
+
enabled?: boolean;
|
|
120
|
+
}
|
|
121
|
+
/** The options of moving the vertices that features share. */
|
|
122
|
+
export interface TopologyOptions {
|
|
123
|
+
/** Whether dragging a vertex also moves the vertices of other features at the same position */
|
|
124
|
+
sharedVertexDrag?: boolean;
|
|
125
|
+
}
|
|
126
|
+
/** The switches of the drawing. */
|
|
127
|
+
export interface RenderingOptions {
|
|
128
|
+
/**
|
|
129
|
+
* The factor for the sizes this library draws in screen pixels (line widths, point sizes);
|
|
130
|
+
* 0.5 while the map is shown at half size. 1 when it is left out
|
|
131
|
+
*/
|
|
132
|
+
renderScale?: number;
|
|
133
|
+
/** The pixel ratio to draw with; that of the map when it is left out */
|
|
134
|
+
pixelRatio?: number;
|
|
135
|
+
/**
|
|
136
|
+
* Whether the geometry of the features that do not change is kept between drawings; true
|
|
137
|
+
* when it is left out
|
|
138
|
+
*/
|
|
139
|
+
cacheGeometry?: boolean;
|
|
140
|
+
/** Whether work that does not fit in one drawing is spread over the next ones; true when it is left out */
|
|
141
|
+
timeSlicing?: boolean;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The look of the box around the selected features and of their handles. Each part given
|
|
145
|
+
* replaces the default of that part. Colors are CSS colors, and sizes and widths are in CSS
|
|
146
|
+
* pixels.
|
|
147
|
+
*/
|
|
148
|
+
export interface SelectionStyleOptions {
|
|
149
|
+
/** The box around the selection */
|
|
150
|
+
boundingBox?: {
|
|
151
|
+
/** The line of the box */
|
|
152
|
+
stroke: {
|
|
153
|
+
/** The width in CSS pixels */
|
|
154
|
+
width: number;
|
|
155
|
+
/** The color (a CSS color) */
|
|
156
|
+
color: string;
|
|
157
|
+
/** The opacity, from 0 to 1 */
|
|
158
|
+
opacity: number;
|
|
159
|
+
/** The dash pattern */
|
|
160
|
+
lineStyle: LineStyle;
|
|
161
|
+
/** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
|
|
162
|
+
dashArray?: number[];
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* The gap between the features and the box, in CSS pixels: every edge of the box stands
|
|
166
|
+
* this far outside the outline of the selection (`ScreenContext.outline`), and the resize
|
|
167
|
+
* and rotate handles sit on the box
|
|
168
|
+
*/
|
|
169
|
+
margin: number;
|
|
170
|
+
};
|
|
171
|
+
/** The resize handles at the corners of the box */
|
|
172
|
+
resizeHandle?: {
|
|
173
|
+
/** The handle */
|
|
174
|
+
point: {
|
|
175
|
+
/** The shape */
|
|
176
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
177
|
+
/** The size in CSS pixels */
|
|
178
|
+
size: number;
|
|
179
|
+
/** The fill color (a CSS color) */
|
|
180
|
+
fillColor: string;
|
|
181
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
182
|
+
fillOpacity: number;
|
|
183
|
+
/** The color of the outline (a CSS color) */
|
|
184
|
+
strokeColor: string;
|
|
185
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
186
|
+
strokeWidth: number;
|
|
187
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
188
|
+
strokeOpacity: number;
|
|
189
|
+
/** The icon, for the `icon` shape */
|
|
190
|
+
iconId?: string;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
/** The rotate handle above the box */
|
|
194
|
+
rotateHandle?: {
|
|
195
|
+
/** The handle */
|
|
196
|
+
point: {
|
|
197
|
+
/** The shape */
|
|
198
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
199
|
+
/** The size in CSS pixels */
|
|
200
|
+
size: number;
|
|
201
|
+
/** The fill color (a CSS color) */
|
|
202
|
+
fillColor: string;
|
|
203
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
204
|
+
fillOpacity: number;
|
|
205
|
+
/** The color of the outline (a CSS color) */
|
|
206
|
+
strokeColor: string;
|
|
207
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
208
|
+
strokeWidth: number;
|
|
209
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
210
|
+
strokeOpacity: number;
|
|
211
|
+
/** The icon, for the `icon` shape */
|
|
212
|
+
iconId?: string;
|
|
213
|
+
};
|
|
214
|
+
/** The distance between the handle and the box, in CSS pixels */
|
|
215
|
+
distance: number;
|
|
216
|
+
/** The line that joins the handle to the box */
|
|
217
|
+
connector: {
|
|
218
|
+
/** The width in CSS pixels */
|
|
219
|
+
width: number;
|
|
220
|
+
/** The color (a CSS color) */
|
|
221
|
+
color: string;
|
|
222
|
+
/** The opacity, from 0 to 1 */
|
|
223
|
+
opacity: number;
|
|
224
|
+
/** The dash pattern */
|
|
225
|
+
lineStyle: LineStyle;
|
|
226
|
+
/** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
|
|
227
|
+
dashArray?: number[];
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
/** The vertex handles */
|
|
231
|
+
vertexHandle?: {
|
|
232
|
+
/** A vertex handle */
|
|
233
|
+
point: {
|
|
234
|
+
/** The shape */
|
|
235
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
236
|
+
/** The size in CSS pixels */
|
|
237
|
+
size: number;
|
|
238
|
+
/** The fill color (a CSS color) */
|
|
239
|
+
fillColor: string;
|
|
240
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
241
|
+
fillOpacity: number;
|
|
242
|
+
/** The color of the outline (a CSS color) */
|
|
243
|
+
strokeColor: string;
|
|
244
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
245
|
+
strokeWidth: number;
|
|
246
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
247
|
+
strokeOpacity: number;
|
|
248
|
+
/** The icon, for the `icon` shape */
|
|
249
|
+
iconId?: string;
|
|
250
|
+
};
|
|
251
|
+
/** A selected vertex */
|
|
252
|
+
selected: {
|
|
253
|
+
/** The shape */
|
|
254
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
255
|
+
/** The size in CSS pixels */
|
|
256
|
+
size: number;
|
|
257
|
+
/** The fill color (a CSS color) */
|
|
258
|
+
fillColor: string;
|
|
259
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
260
|
+
fillOpacity: number;
|
|
261
|
+
/** The color of the outline (a CSS color) */
|
|
262
|
+
strokeColor: string;
|
|
263
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
264
|
+
strokeWidth: number;
|
|
265
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
266
|
+
strokeOpacity: number;
|
|
267
|
+
/** The icon, for the `icon` shape */
|
|
268
|
+
iconId?: string;
|
|
269
|
+
};
|
|
270
|
+
/** A vertex of another feature that moves along with a shared vertex */
|
|
271
|
+
followed: {
|
|
272
|
+
/** The shape */
|
|
273
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
274
|
+
/** The size in CSS pixels */
|
|
275
|
+
size: number;
|
|
276
|
+
/** The fill color (a CSS color) */
|
|
277
|
+
fillColor: string;
|
|
278
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
279
|
+
fillOpacity: number;
|
|
280
|
+
/** The color of the outline (a CSS color) */
|
|
281
|
+
strokeColor: string;
|
|
282
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
283
|
+
strokeWidth: number;
|
|
284
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
285
|
+
strokeOpacity: number;
|
|
286
|
+
/** The icon, for the `icon` shape */
|
|
287
|
+
iconId?: string;
|
|
288
|
+
};
|
|
289
|
+
};
|
|
290
|
+
/** The midpoint handles, which add a vertex when dragged */
|
|
291
|
+
midpointHandle?: {
|
|
292
|
+
/** The handle */
|
|
293
|
+
point: {
|
|
294
|
+
/** The shape */
|
|
295
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
296
|
+
/** The size in CSS pixels */
|
|
297
|
+
size: number;
|
|
298
|
+
/** The fill color (a CSS color) */
|
|
299
|
+
fillColor: string;
|
|
300
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
301
|
+
fillOpacity: number;
|
|
302
|
+
/** The color of the outline (a CSS color) */
|
|
303
|
+
strokeColor: string;
|
|
304
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
305
|
+
strokeWidth: number;
|
|
306
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
307
|
+
strokeOpacity: number;
|
|
308
|
+
/** The icon, for the `icon` shape */
|
|
309
|
+
iconId?: string;
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
/** The radius handle of a circle */
|
|
313
|
+
radiusHandle?: {
|
|
314
|
+
/** The handle */
|
|
315
|
+
point: {
|
|
316
|
+
/** The shape */
|
|
317
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
318
|
+
/** The size in CSS pixels */
|
|
319
|
+
size: number;
|
|
320
|
+
/** The fill color (a CSS color) */
|
|
321
|
+
fillColor: string;
|
|
322
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
323
|
+
fillOpacity: number;
|
|
324
|
+
/** The color of the outline (a CSS color) */
|
|
325
|
+
strokeColor: string;
|
|
326
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
327
|
+
strokeWidth: number;
|
|
328
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
329
|
+
strokeOpacity: number;
|
|
330
|
+
/** The icon, for the `icon` shape */
|
|
331
|
+
iconId?: string;
|
|
332
|
+
};
|
|
333
|
+
};
|
|
334
|
+
/** The center marker of a circle */
|
|
335
|
+
centerMarker?: {
|
|
336
|
+
/** The marker */
|
|
337
|
+
point: {
|
|
338
|
+
/** The shape */
|
|
339
|
+
shape: 'circle' | 'square' | 'triangle' | 'star' | 'icon';
|
|
340
|
+
/** The size in CSS pixels */
|
|
341
|
+
size: number;
|
|
342
|
+
/** The fill color (a CSS color) */
|
|
343
|
+
fillColor: string;
|
|
344
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
345
|
+
fillOpacity: number;
|
|
346
|
+
/** The color of the outline (a CSS color) */
|
|
347
|
+
strokeColor: string;
|
|
348
|
+
/** The width of the outline in CSS pixels (0 for none) */
|
|
349
|
+
strokeWidth: number;
|
|
350
|
+
/** The opacity of the outline, from 0 to 1 */
|
|
351
|
+
strokeOpacity: number;
|
|
352
|
+
/** The icon, for the `icon` shape */
|
|
353
|
+
iconId?: string;
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
/** The rectangle of a box selection (Shift and a drag) */
|
|
357
|
+
boxSelection?: {
|
|
358
|
+
/** The fill color (a CSS color) */
|
|
359
|
+
fillColor: string;
|
|
360
|
+
/** The opacity of the fill, from 0 to 1 */
|
|
361
|
+
fillOpacity: number;
|
|
362
|
+
/** The color of the outline (a CSS color) */
|
|
363
|
+
strokeColor: string;
|
|
364
|
+
/** The width of the outline in CSS pixels */
|
|
365
|
+
strokeWidth: number;
|
|
366
|
+
};
|
|
367
|
+
/** The line from the center of a circle to its radius handle */
|
|
368
|
+
radiusLine?: {
|
|
369
|
+
/** The line */
|
|
370
|
+
stroke: {
|
|
371
|
+
/** The width in CSS pixels */
|
|
372
|
+
width: number;
|
|
373
|
+
/** The color (a CSS color) */
|
|
374
|
+
color: string;
|
|
375
|
+
/** The opacity, from 0 to 1 */
|
|
376
|
+
opacity: number;
|
|
377
|
+
/** The dash pattern */
|
|
378
|
+
lineStyle: LineStyle;
|
|
379
|
+
/** A dash pattern in CSS pixels, `[dash, gap]`, instead of that of `lineStyle` */
|
|
380
|
+
dashArray?: number[];
|
|
381
|
+
};
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
/** How new features, layers and groups are named ("Point 1", "Layer 2"). */
|
|
385
|
+
export interface AutoNameOptions {
|
|
386
|
+
/** The word used for each type in the name */
|
|
387
|
+
typeNames?: Partial<Record<FeatureType | 'Layer' | 'Group', string>>;
|
|
388
|
+
/** Builds the name from the word of the type and the number */
|
|
389
|
+
formatter?: (typeName: string, number: number) => string;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* The options that can change while the instance runs, with `draw.options.update`: every
|
|
393
|
+
* option but `defaultMode`, `store` and `initDefaultLayer`.
|
|
394
|
+
*/
|
|
395
|
+
export interface RuntimeOptions {
|
|
396
|
+
/** Replaces the words the library shows */
|
|
397
|
+
messages?: Partial<Messages>;
|
|
398
|
+
/** The names of new features; `false` turns them off */
|
|
399
|
+
autoName?: AutoNameOptions | false;
|
|
400
|
+
/**
|
|
401
|
+
* The default look of each type, with the same keys and CSS colors as the style of a
|
|
402
|
+
* feature
|
|
403
|
+
*/
|
|
404
|
+
style?: {
|
|
405
|
+
point?: FeatureStyle;
|
|
406
|
+
line?: FeatureStyle;
|
|
407
|
+
polygon?: FeatureStyle;
|
|
408
|
+
circle?: FeatureStyle;
|
|
409
|
+
image?: FeatureStyle;
|
|
410
|
+
};
|
|
411
|
+
/**
|
|
412
|
+
* The look of the geometry being drawn, with the keys of the style of a feature: the stroke
|
|
413
|
+
* keys give its lines, the point keys its vertices (`pointStrokeColor` and
|
|
414
|
+
* `pointStrokeWidth` their outlines)
|
|
415
|
+
*/
|
|
416
|
+
previewStyle?: Partial<FeatureStyle>;
|
|
417
|
+
/** The look of the box and the handles of the selection */
|
|
418
|
+
selectionStyle?: SelectionStyleOptions;
|
|
419
|
+
/**
|
|
420
|
+
* Whether a feature grows and shrinks with the zoom from its look at its reference zoom;
|
|
421
|
+
* true when it is left out
|
|
422
|
+
*/
|
|
423
|
+
scaleWithZoom?: boolean;
|
|
424
|
+
/** Snapping */
|
|
425
|
+
snapping?: SnappingOptions;
|
|
426
|
+
/** Tracing of boundaries */
|
|
427
|
+
tracing?: TracingOptions;
|
|
428
|
+
/** Moving shared vertices together */
|
|
429
|
+
topology?: TopologyOptions;
|
|
430
|
+
/** How far the pointer may move and still click, in pixels */
|
|
431
|
+
clickTolerance?: number;
|
|
432
|
+
/** How far the pointer must move to start a drag, in pixels */
|
|
433
|
+
dragThreshold?: number;
|
|
434
|
+
/** The switches of the drawing */
|
|
435
|
+
rendering?: RenderingOptions;
|
|
436
|
+
/**
|
|
437
|
+
* Whether an entry of the stacking order comes from outside the document, such as a layer
|
|
438
|
+
* of the base map; the stacking order is divided at those entries
|
|
439
|
+
*/
|
|
440
|
+
isExternalEntry?: (id: string) => boolean;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* The options given when the instance is created.
|
|
444
|
+
*/
|
|
445
|
+
export interface DrawOptions extends RuntimeOptions {
|
|
446
|
+
/** The mode to start in */
|
|
447
|
+
defaultMode?: Mode;
|
|
448
|
+
/** The Store that keeps the document, instead of the built-in one; only at creation */
|
|
449
|
+
store?: Store;
|
|
450
|
+
/** Whether a layer is created when there is none; only at creation */
|
|
451
|
+
initDefaultLayer?: boolean;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* The options that can change while the instance runs.
|
|
455
|
+
*/
|
|
456
|
+
export interface OptionsResource {
|
|
457
|
+
/** The current values. */
|
|
458
|
+
get(): Readonly<RuntimeOptions>;
|
|
459
|
+
/**
|
|
460
|
+
* Changes the options given: snapping, tracing, shared vertices, the scale of the drawing
|
|
461
|
+
* and the rest of {@link RuntimeOptions}.
|
|
462
|
+
*
|
|
463
|
+
* @throws `DrawError` with the code `invalid-input` when a value has the wrong type
|
|
464
|
+
*/
|
|
465
|
+
update(patch: Partial<RuntimeOptions>): void;
|
|
466
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `draw.selection` and `draw.vertexSelection`: what this client has selected
|
|
3
|
+
*/
|
|
4
|
+
import type { Feature, Group, MoveTarget } from './model.js';
|
|
5
|
+
import type { Selection, SelectionType, VertexRef, VertexSelection } from './state.js';
|
|
6
|
+
/**
|
|
7
|
+
* The selection of this client: features, groups or layers, one type at a time, and the
|
|
8
|
+
* verbs that act on what is selected.
|
|
9
|
+
*/
|
|
10
|
+
export interface SelectionResource {
|
|
11
|
+
/** The type and the IDs of what is selected. */
|
|
12
|
+
get(): Selection;
|
|
13
|
+
/**
|
|
14
|
+
* Selects these items instead of the current selection.
|
|
15
|
+
*
|
|
16
|
+
* @param type - The type of the items
|
|
17
|
+
* @returns False when none of the items can be selected
|
|
18
|
+
* @throws `DrawError` with the code `not-found` when one of the IDs is not an item of this
|
|
19
|
+
* type
|
|
20
|
+
*/
|
|
21
|
+
set(type: SelectionType, ids: readonly string[]): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Adds items of the selected type to the selection.
|
|
24
|
+
*
|
|
25
|
+
* @returns False when none of them can be added
|
|
26
|
+
* @throws `DrawError` with the code `not-found` when one of the IDs is not an item of the
|
|
27
|
+
* selected type
|
|
28
|
+
*/
|
|
29
|
+
add(ids: readonly string[]): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Removes items from the selection.
|
|
32
|
+
*
|
|
33
|
+
* @returns False when none of them was selected
|
|
34
|
+
*/
|
|
35
|
+
remove(ids: readonly string[]): boolean;
|
|
36
|
+
/** Clears the selection. */
|
|
37
|
+
clear(): void;
|
|
38
|
+
/** The selected features; for a group or a layer, the features in it. */
|
|
39
|
+
features(): Feature[];
|
|
40
|
+
/**
|
|
41
|
+
* Deletes what is selected.
|
|
42
|
+
*
|
|
43
|
+
* @returns False when nothing is selected or the deletion is refused (read-only, a lock)
|
|
44
|
+
*/
|
|
45
|
+
delete(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Makes a group of the selected features.
|
|
48
|
+
*
|
|
49
|
+
* @returns The new group, or `null` when the features cannot be grouped
|
|
50
|
+
*/
|
|
51
|
+
group(): Group | null;
|
|
52
|
+
/**
|
|
53
|
+
* Takes what is selected out of the groups, as the shortcut Shift+Cmd+G (Shift+Ctrl+G) does:
|
|
54
|
+
* the selected groups are dissolved, their features taking their place in the layer, and
|
|
55
|
+
* selected features that are in a group leave it (the group stays unless it becomes empty).
|
|
56
|
+
*
|
|
57
|
+
* @returns False when nothing selected is a group or in one, or the document is read-only
|
|
58
|
+
*/
|
|
59
|
+
ungroup(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Moves what is selected.
|
|
62
|
+
*
|
|
63
|
+
* @returns False when nothing is selected or the move is refused
|
|
64
|
+
* @throws `DrawError` with the code `not-found` when the target does not exist
|
|
65
|
+
*/
|
|
66
|
+
move(to: MoveTarget): boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The selected vertices of one feature in this client.
|
|
70
|
+
*/
|
|
71
|
+
export interface VertexSelectionResource {
|
|
72
|
+
/**
|
|
73
|
+
* The selected vertices.
|
|
74
|
+
*
|
|
75
|
+
* @returns The vertices, or `null` when no vertex is selected
|
|
76
|
+
*/
|
|
77
|
+
get(): VertexSelection | null;
|
|
78
|
+
/**
|
|
79
|
+
* Selects vertices of a feature.
|
|
80
|
+
*
|
|
81
|
+
* @returns False when the vertices cannot be selected (a lock)
|
|
82
|
+
* @throws `DrawError` with the code `not-found` when the feature or one of the vertices
|
|
83
|
+
* does not exist
|
|
84
|
+
*/
|
|
85
|
+
set(featureId: string, vertices: readonly VertexRef[]): boolean;
|
|
86
|
+
/** Clears the vertex selection. */
|
|
87
|
+
clear(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Deletes the selected vertices.
|
|
90
|
+
*
|
|
91
|
+
* @returns False when no vertex is selected or the deletion is refused (read-only, a lock)
|
|
92
|
+
*/
|
|
93
|
+
delete(): boolean;
|
|
94
|
+
}
|