@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
|
@@ -7,21 +7,52 @@
|
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
9
9
|
export function isLocallyHidden(feature, store) {
|
|
10
|
-
if (store.
|
|
10
|
+
if (store.isHidden(feature.id))
|
|
11
11
|
return true;
|
|
12
|
-
if (feature.groupId && store.
|
|
12
|
+
if (feature.groupId && store.isHidden(feature.groupId))
|
|
13
13
|
return true;
|
|
14
|
-
if (store.
|
|
14
|
+
if (store.isHidden(feature.layerId))
|
|
15
15
|
return true;
|
|
16
16
|
return false;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* The
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* The features the document shows, in stacking order: listFeaturesInOrder without the ones
|
|
20
|
+
* whose own visible flag, or the one of their group or layer, is off. Local hiding is not
|
|
21
|
+
* applied.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export function listShownFeatures(store) {
|
|
26
|
+
const layers = new Map();
|
|
27
|
+
const groups = new Map();
|
|
28
|
+
const layerShown = (id) => {
|
|
29
|
+
let shown = layers.get(id);
|
|
30
|
+
if (shown === undefined) {
|
|
31
|
+
shown = store.getLayer(id)?.visible === true;
|
|
32
|
+
layers.set(id, shown);
|
|
33
|
+
}
|
|
34
|
+
return shown;
|
|
35
|
+
};
|
|
36
|
+
const groupShown = (id) => {
|
|
37
|
+
let shown = groups.get(id);
|
|
38
|
+
if (shown === undefined) {
|
|
39
|
+
shown = store.getGroup(id)?.visible !== false;
|
|
40
|
+
groups.set(id, shown);
|
|
41
|
+
}
|
|
42
|
+
return shown;
|
|
43
|
+
};
|
|
44
|
+
return store
|
|
45
|
+
.listFeaturesInOrder()
|
|
46
|
+
.filter((feature) => feature.visible &&
|
|
47
|
+
layerShown(feature.layerId) &&
|
|
48
|
+
(feature.groupId === undefined || groupShown(feature.groupId)));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The list of features that should be displayed, for rendering and hit testing:
|
|
52
|
+
* listShownFeatures with the locally hidden ones removed on top of that.
|
|
22
53
|
*
|
|
23
54
|
* @internal
|
|
24
55
|
*/
|
|
25
56
|
export function getDisplayFeatures(store) {
|
|
26
|
-
return store
|
|
57
|
+
return listShownFeatures(store).filter((feature) => !isLocallyHidden(feature, store));
|
|
27
58
|
}
|
package/dist/store/lock.d.ts
CHANGED
|
@@ -27,12 +27,6 @@ export interface FeatureLockStore {
|
|
|
27
27
|
*
|
|
28
28
|
* A lock is inherited top-down. A locked feature can still be selected; it cannot be moved,
|
|
29
29
|
* resized, rotated, reshaped or deleted by the user.
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const feature = draw.getFeature(id);
|
|
34
|
-
* if (feature && !isFeatureLocked(feature, draw.getStore())) draw.deleteFeature(id);
|
|
35
|
-
* ```
|
|
36
30
|
*/
|
|
37
31
|
export declare function isFeatureLocked(feature: Feature, store: FeatureLockStore): boolean;
|
|
38
32
|
/**
|
package/dist/store/lock.js
CHANGED
|
@@ -5,12 +5,6 @@
|
|
|
5
5
|
*
|
|
6
6
|
* A lock is inherited top-down. A locked feature can still be selected; it cannot be moved,
|
|
7
7
|
* resized, rotated, reshaped or deleted by the user.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* const feature = draw.getFeature(id);
|
|
12
|
-
* if (feature && !isFeatureLocked(feature, draw.getStore())) draw.deleteFeature(id);
|
|
13
|
-
* ```
|
|
14
8
|
*/
|
|
15
9
|
export function isFeatureLocked(feature, store) {
|
|
16
10
|
if (feature.locked)
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* reaches the heap limit. A folded entry keeps previous as the first state and layer/group as
|
|
21
21
|
* the last state, so as the diff of a single flush it means the same as before folding.
|
|
22
22
|
*/
|
|
23
|
-
import type { Group, Layer,
|
|
24
|
-
export type StoreListener = (changes:
|
|
23
|
+
import type { Group, Layer, StoreChange, UpdateSource } from '../types.js';
|
|
24
|
+
export type StoreListener = (changes: StoreChange) => void;
|
|
25
25
|
export declare class ChangeBus {
|
|
26
26
|
#private;
|
|
27
27
|
/**
|
|
@@ -41,7 +41,7 @@ export declare class ChangeBus {
|
|
|
41
41
|
/**
|
|
42
42
|
* Merges the changes into pendingChanges. Flushes immediately if outside a transaction.
|
|
43
43
|
*/
|
|
44
|
-
merge(changes:
|
|
44
|
+
merge(changes: StoreChange): void;
|
|
45
45
|
/** Whether an update entry for this layer is already stacked within the same flush */
|
|
46
46
|
hasPendingLayerUpdate(id: string): boolean;
|
|
47
47
|
/** Whether an update entry for this group is already stacked within the same flush */
|
|
@@ -125,8 +125,20 @@ function appendChanges(target, changes, index) {
|
|
|
125
125
|
target.mode = changes.mode;
|
|
126
126
|
if (changes.uiStateChanged)
|
|
127
127
|
target.uiStateChanged = true;
|
|
128
|
+
if (changes.reset === true)
|
|
129
|
+
target.reset = true;
|
|
128
130
|
if (changes.metadata)
|
|
129
131
|
target.metadata = changes.metadata;
|
|
132
|
+
// files
|
|
133
|
+
if (changes.files) {
|
|
134
|
+
if (!target.files)
|
|
135
|
+
target.files = {};
|
|
136
|
+
const t = target.files;
|
|
137
|
+
if (changes.files.created)
|
|
138
|
+
t.created = appendField(t.created, changes.files.created);
|
|
139
|
+
if (changes.files.deleted)
|
|
140
|
+
t.deleted = appendField(t.deleted, changes.files.deleted);
|
|
141
|
+
}
|
|
130
142
|
}
|
|
131
143
|
export class ChangeBus {
|
|
132
144
|
/**
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* FileStore
|
|
3
3
|
*
|
|
4
4
|
* A Map wrapper for embedded files (FileData) such as images. It provides only CRUD,
|
|
5
|
-
* independently of Feature / Layer / Group.
|
|
6
|
-
*
|
|
5
|
+
* independently of Feature / Layer / Group. The Store around it notifies the files created and
|
|
6
|
+
* deleted.
|
|
7
7
|
*/
|
|
8
8
|
import type { FileData } from '../types.js';
|
|
9
9
|
export declare class FileStore {
|
|
@@ -1,51 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* MemoryUiState
|
|
3
|
-
*
|
|
4
|
-
* The in-memory UiState core holds for every Store (selection / editing / tentative /
|
|
5
|
-
* boxSelection / dragState / vertexSelection / mode / read-only / interaction lock / local
|
|
6
|
-
* visibility). Each setter merges its change into the ChangeBus of the Store.
|
|
7
|
-
*
|
|
8
|
-
* - Selection / mode / features being edited / Tentative are included in data change
|
|
9
|
-
* notifications
|
|
10
|
-
* - BoxSelection / DragState / VertexSelection are UI-only state, so they only raise the
|
|
11
|
-
* uiStateChanged flag
|
|
12
|
-
*/
|
|
13
|
-
import type { UiState } from '../store.js';
|
|
14
|
-
import type { BoxSelection, DragState, Mode, Selection, SelectionType, TentativeState, VertexSelection } from '../types.js';
|
|
15
|
-
import type { ChangeBus } from './change-bus.js';
|
|
16
|
-
export declare class MemoryUiState implements UiState {
|
|
17
|
-
#private;
|
|
18
|
-
constructor(bus: ChangeBus);
|
|
19
|
-
getSelection(): Selection;
|
|
20
|
-
setSelection(type: SelectionType | null, ids: string[]): void;
|
|
21
|
-
/**
|
|
22
|
-
* Removes a deleted feature, group or layer from the selection (internal use)
|
|
23
|
-
*/
|
|
24
|
-
removeFromSelection(id: string): void;
|
|
25
|
-
getEditingIds(): readonly string[];
|
|
26
|
-
startEditing(ids: string[]): void;
|
|
27
|
-
endEditing(ids: string[]): void;
|
|
28
|
-
/** Removal from editing that accompanies a feature deletion (internal use) */
|
|
29
|
-
removeFromEditing(featureId: string): void;
|
|
30
|
-
getTentative(): TentativeState | null;
|
|
31
|
-
setTentative(state: TentativeState | null): void;
|
|
32
|
-
getBoxSelection(): BoxSelection | null;
|
|
33
|
-
setBoxSelection(box: BoxSelection | null): void;
|
|
34
|
-
getDragState(): DragState | null;
|
|
35
|
-
setDragState(state: DragState | null): void;
|
|
36
|
-
getSelectedVertices(): VertexSelection | null;
|
|
37
|
-
setSelectedVertices(selection: VertexSelection | null): void;
|
|
38
|
-
getFollowedVertices(): VertexSelection[] | null;
|
|
39
|
-
setFollowedVertices(selections: VertexSelection[] | null): void;
|
|
40
|
-
getMode(): Mode;
|
|
41
|
-
setMode(mode: Mode): void;
|
|
42
|
-
isReadOnly(): boolean;
|
|
43
|
-
setReadOnly(value: boolean): void;
|
|
44
|
-
isInteractionLocked(): boolean;
|
|
45
|
-
setInteractionLock(value: boolean): void;
|
|
46
|
-
isLocallyHidden(id: string): boolean;
|
|
47
|
-
getLocallyHidden(): ReadonlySet<string>;
|
|
48
|
-
setLocallyHidden(id: string, hidden: boolean): void;
|
|
49
|
-
/** Removes a deleted feature / group / layer from the hidden set (internal use). */
|
|
50
|
-
removeFromLocallyHidden(id: string): void;
|
|
51
|
-
}
|
|
1
|
+
export {};
|
|
@@ -11,115 +11,173 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
11
11
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
12
12
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
13
13
|
};
|
|
14
|
-
var
|
|
15
|
-
|
|
14
|
+
var _MemoryClientState_bus, _MemoryClientState_selection, _MemoryClientState_editingIds, _MemoryClientState_selectedVertices, _MemoryClientState_mode, _MemoryClientState_readOnly, _MemoryClientState_interactionLocked, _MemoryClientState_locallyHidden, _MemoryDrawingState_bus, _MemoryDrawingState_tentative, _MemoryDrawingState_boxSelection, _MemoryDrawingState_dragState, _MemoryDrawingState_followedVertices;
|
|
15
|
+
/**
|
|
16
|
+
* The state of this client the Store contract holds, in memory
|
|
17
|
+
*
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export class MemoryClientState {
|
|
16
21
|
constructor(bus) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
_MemoryUiState_dragState.set(this, null);
|
|
23
|
-
_MemoryUiState_selectedVertices.set(this, null);
|
|
24
|
-
_MemoryUiState_followedVertices.set(this, null);
|
|
25
|
-
_MemoryUiState_mode.set(this, 'select');
|
|
22
|
+
_MemoryClientState_bus.set(this, void 0);
|
|
23
|
+
_MemoryClientState_selection.set(this, { type: null, ids: [] });
|
|
24
|
+
_MemoryClientState_editingIds.set(this, []);
|
|
25
|
+
_MemoryClientState_selectedVertices.set(this, null);
|
|
26
|
+
_MemoryClientState_mode.set(this, 'select');
|
|
26
27
|
// Read-only (forbids local writes to the document). Local state, not part of the document.
|
|
27
|
-
|
|
28
|
+
_MemoryClientState_readOnly.set(this, false);
|
|
28
29
|
// Interaction lock (selection is allowed, but starting an edit operation is suppressed).
|
|
29
30
|
// Local state that is orthogonal to readOnly and not part of the document. It does not stop writes
|
|
30
31
|
// to the Store; it only rejects the start of an editing interaction from user input, for a
|
|
31
32
|
// screen where the drawing is looked at and selected but not edited.
|
|
32
|
-
|
|
33
|
+
_MemoryClientState_interactionLocked.set(this, false);
|
|
33
34
|
// The set of hidden ids for this client only (feature / group / layer). It is a layer separate
|
|
34
35
|
// from the visible flag of the document, and rendering, hit testing and box selection all
|
|
35
36
|
// respect it. Not part of the document.
|
|
36
|
-
|
|
37
|
-
__classPrivateFieldSet(this,
|
|
37
|
+
_MemoryClientState_locallyHidden.set(this, new Set());
|
|
38
|
+
__classPrivateFieldSet(this, _MemoryClientState_bus, bus, "f");
|
|
38
39
|
}
|
|
39
40
|
// Selection
|
|
40
41
|
getSelection() {
|
|
41
|
-
return { type: __classPrivateFieldGet(this,
|
|
42
|
+
return { type: __classPrivateFieldGet(this, _MemoryClientState_selection, "f").type, ids: [...__classPrivateFieldGet(this, _MemoryClientState_selection, "f").ids] };
|
|
42
43
|
}
|
|
43
44
|
setSelection(type, ids) {
|
|
44
|
-
const previousType = __classPrivateFieldGet(this,
|
|
45
|
-
const previousIds = [...__classPrivateFieldGet(this,
|
|
46
|
-
__classPrivateFieldSet(this,
|
|
47
|
-
__classPrivateFieldGet(this,
|
|
45
|
+
const previousType = __classPrivateFieldGet(this, _MemoryClientState_selection, "f").type;
|
|
46
|
+
const previousIds = [...__classPrivateFieldGet(this, _MemoryClientState_selection, "f").ids];
|
|
47
|
+
__classPrivateFieldSet(this, _MemoryClientState_selection, { type, ids: [...ids] }, "f");
|
|
48
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({
|
|
48
49
|
selection: { type, ids: [...ids], previousType, previousIds },
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Removes a deleted feature, group or layer from the selection (internal use)
|
|
53
|
-
*/
|
|
54
|
-
removeFromSelection(id) {
|
|
55
|
-
const previousType = __classPrivateFieldGet(this, _MemoryUiState_selection, "f").type;
|
|
56
|
-
const previousIds = __classPrivateFieldGet(this, _MemoryUiState_selection, "f").ids;
|
|
57
|
-
if (!previousIds.includes(id))
|
|
58
|
-
return;
|
|
59
|
-
const ids = previousIds.filter((selected) => selected !== id);
|
|
60
|
-
const type = ids.length === 0 ? null : previousType;
|
|
61
|
-
__classPrivateFieldSet(this, _MemoryUiState_selection, { type, ids }, "f");
|
|
62
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({
|
|
63
|
-
selection: { type, ids: [...ids], previousType, previousIds: [...previousIds] },
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
52
|
// Editing
|
|
67
53
|
getEditingIds() {
|
|
68
54
|
// Returning the internal array as is would let a retained snapshot be rewritten by a later
|
|
69
55
|
// startEditing/endEditing, so a defensive copy is returned.
|
|
70
|
-
return [...__classPrivateFieldGet(this,
|
|
56
|
+
return [...__classPrivateFieldGet(this, _MemoryClientState_editingIds, "f")];
|
|
71
57
|
}
|
|
72
58
|
startEditing(ids) {
|
|
73
|
-
const newIds = ids.filter((id) => !__classPrivateFieldGet(this,
|
|
59
|
+
const newIds = ids.filter((id) => !__classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").includes(id));
|
|
74
60
|
if (newIds.length === 0)
|
|
75
61
|
return;
|
|
76
|
-
__classPrivateFieldGet(this,
|
|
77
|
-
__classPrivateFieldGet(this,
|
|
62
|
+
__classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").push(...newIds);
|
|
63
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ editing: { started: newIds } });
|
|
78
64
|
}
|
|
79
65
|
endEditing(ids) {
|
|
80
|
-
const endedIds = ids.filter((id) => __classPrivateFieldGet(this,
|
|
66
|
+
const endedIds = ids.filter((id) => __classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").includes(id));
|
|
81
67
|
if (endedIds.length === 0)
|
|
82
68
|
return;
|
|
83
|
-
__classPrivateFieldSet(this,
|
|
84
|
-
__classPrivateFieldGet(this,
|
|
69
|
+
__classPrivateFieldSet(this, _MemoryClientState_editingIds, __classPrivateFieldGet(this, _MemoryClientState_editingIds, "f").filter((id) => !ids.includes(id)), "f");
|
|
70
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ editing: { ended: endedIds } });
|
|
71
|
+
}
|
|
72
|
+
// VertexSelection
|
|
73
|
+
getVertexSelection() {
|
|
74
|
+
return __classPrivateFieldGet(this, _MemoryClientState_selectedVertices, "f");
|
|
75
|
+
}
|
|
76
|
+
setSelectedVertices(selection) {
|
|
77
|
+
__classPrivateFieldSet(this, _MemoryClientState_selectedVertices, selection
|
|
78
|
+
? {
|
|
79
|
+
featureId: selection.featureId,
|
|
80
|
+
vertices: selection.vertices.map((ref) => ({ ...ref })),
|
|
81
|
+
}
|
|
82
|
+
: null, "f");
|
|
83
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
|
|
84
|
+
}
|
|
85
|
+
// Mode
|
|
86
|
+
getMode() {
|
|
87
|
+
return __classPrivateFieldGet(this, _MemoryClientState_mode, "f");
|
|
88
|
+
}
|
|
89
|
+
setMode(mode) {
|
|
90
|
+
const previous = __classPrivateFieldGet(this, _MemoryClientState_mode, "f");
|
|
91
|
+
if (mode === previous)
|
|
92
|
+
return;
|
|
93
|
+
__classPrivateFieldSet(this, _MemoryClientState_mode, mode, "f");
|
|
94
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ mode: { mode, previous } });
|
|
95
|
+
}
|
|
96
|
+
// ReadOnly
|
|
97
|
+
isReadOnly() {
|
|
98
|
+
return __classPrivateFieldGet(this, _MemoryClientState_readOnly, "f");
|
|
99
|
+
}
|
|
100
|
+
setReadOnly(value) {
|
|
101
|
+
if (__classPrivateFieldGet(this, _MemoryClientState_readOnly, "f") === value)
|
|
102
|
+
return;
|
|
103
|
+
__classPrivateFieldSet(this, _MemoryClientState_readOnly, value, "f");
|
|
104
|
+
// Whether handles are shown depends on read-only, so prompt a re-render.
|
|
105
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
|
|
85
106
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
107
|
+
// InteractionLock
|
|
108
|
+
isInteractionLocked() {
|
|
109
|
+
return __classPrivateFieldGet(this, _MemoryClientState_interactionLocked, "f");
|
|
110
|
+
}
|
|
111
|
+
setInteractionLock(value) {
|
|
112
|
+
if (__classPrivateFieldGet(this, _MemoryClientState_interactionLocked, "f") === value)
|
|
90
113
|
return;
|
|
91
|
-
|
|
92
|
-
|
|
114
|
+
__classPrivateFieldSet(this, _MemoryClientState_interactionLocked, value, "f");
|
|
115
|
+
// While the interaction lock is on, no handles are shown (only the selection box), so
|
|
116
|
+
// prompt a re-render.
|
|
117
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
|
|
118
|
+
}
|
|
119
|
+
// LocallyHidden
|
|
120
|
+
isHidden(id) {
|
|
121
|
+
return __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id);
|
|
122
|
+
}
|
|
123
|
+
listHidden() {
|
|
124
|
+
return __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f");
|
|
125
|
+
}
|
|
126
|
+
setLocallyHidden(id, hidden) {
|
|
127
|
+
const changed = hidden ? !__classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id) : __classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").has(id);
|
|
128
|
+
if (!changed)
|
|
129
|
+
return;
|
|
130
|
+
if (hidden)
|
|
131
|
+
__classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").add(id);
|
|
132
|
+
else
|
|
133
|
+
__classPrivateFieldGet(this, _MemoryClientState_locallyHidden, "f").delete(id);
|
|
134
|
+
__classPrivateFieldGet(this, _MemoryClientState_bus, "f").merge({ uiStateChanged: true });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
_MemoryClientState_bus = new WeakMap(), _MemoryClientState_selection = new WeakMap(), _MemoryClientState_editingIds = new WeakMap(), _MemoryClientState_selectedVertices = new WeakMap(), _MemoryClientState_mode = new WeakMap(), _MemoryClientState_readOnly = new WeakMap(), _MemoryClientState_interactionLocked = new WeakMap(), _MemoryClientState_locallyHidden = new WeakMap();
|
|
138
|
+
/**
|
|
139
|
+
* The state only the drawing reads, in memory
|
|
140
|
+
*
|
|
141
|
+
* @internal
|
|
142
|
+
*/
|
|
143
|
+
export class MemoryDrawingState {
|
|
144
|
+
constructor(bus) {
|
|
145
|
+
_MemoryDrawingState_bus.set(this, void 0);
|
|
146
|
+
_MemoryDrawingState_tentative.set(this, null);
|
|
147
|
+
_MemoryDrawingState_boxSelection.set(this, null);
|
|
148
|
+
_MemoryDrawingState_dragState.set(this, null);
|
|
149
|
+
_MemoryDrawingState_followedVertices.set(this, null);
|
|
150
|
+
__classPrivateFieldSet(this, _MemoryDrawingState_bus, bus, "f");
|
|
93
151
|
}
|
|
94
152
|
// Tentative
|
|
95
153
|
getTentative() {
|
|
96
|
-
return __classPrivateFieldGet(this,
|
|
154
|
+
return __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f");
|
|
97
155
|
}
|
|
98
156
|
setTentative(state) {
|
|
99
|
-
const previous = __classPrivateFieldGet(this,
|
|
100
|
-
__classPrivateFieldSet(this,
|
|
101
|
-
__classPrivateFieldGet(this,
|
|
157
|
+
const previous = __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f");
|
|
158
|
+
__classPrivateFieldSet(this, _MemoryDrawingState_tentative, state ? { ...state, coordinates: [...state.coordinates] } : null, "f");
|
|
159
|
+
__classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ tentative: { state: __classPrivateFieldGet(this, _MemoryDrawingState_tentative, "f"), previous } });
|
|
102
160
|
}
|
|
103
161
|
// BoxSelection
|
|
104
162
|
getBoxSelection() {
|
|
105
|
-
return __classPrivateFieldGet(this,
|
|
163
|
+
return __classPrivateFieldGet(this, _MemoryDrawingState_boxSelection, "f");
|
|
106
164
|
}
|
|
107
165
|
setBoxSelection(box) {
|
|
108
|
-
__classPrivateFieldSet(this,
|
|
166
|
+
__classPrivateFieldSet(this, _MemoryDrawingState_boxSelection, box
|
|
109
167
|
? {
|
|
110
168
|
startPoint: [...box.startPoint],
|
|
111
169
|
endPoint: [...box.endPoint],
|
|
112
170
|
previousSelection: [...box.previousSelection],
|
|
113
171
|
}
|
|
114
172
|
: null, "f");
|
|
115
|
-
__classPrivateFieldGet(this,
|
|
173
|
+
__classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
|
|
116
174
|
}
|
|
117
175
|
// DragState
|
|
118
176
|
getDragState() {
|
|
119
|
-
return __classPrivateFieldGet(this,
|
|
177
|
+
return __classPrivateFieldGet(this, _MemoryDrawingState_dragState, "f");
|
|
120
178
|
}
|
|
121
179
|
setDragState(state) {
|
|
122
|
-
__classPrivateFieldSet(this,
|
|
180
|
+
__classPrivateFieldSet(this, _MemoryDrawingState_dragState, state
|
|
123
181
|
? {
|
|
124
182
|
operation: state.operation,
|
|
125
183
|
activeVertex: state.activeVertex ? { ...state.activeVertex } : undefined,
|
|
@@ -128,96 +186,26 @@ export class MemoryUiState {
|
|
|
128
186
|
movingFeatureIds: state.movingFeatureIds ? [...state.movingFeatureIds] : undefined,
|
|
129
187
|
}
|
|
130
188
|
: null, "f");
|
|
131
|
-
__classPrivateFieldGet(this,
|
|
132
|
-
}
|
|
133
|
-
// VertexSelection
|
|
134
|
-
getSelectedVertices() {
|
|
135
|
-
return __classPrivateFieldGet(this, _MemoryUiState_selectedVertices, "f");
|
|
136
|
-
}
|
|
137
|
-
setSelectedVertices(selection) {
|
|
138
|
-
__classPrivateFieldSet(this, _MemoryUiState_selectedVertices, selection
|
|
139
|
-
? {
|
|
140
|
-
featureId: selection.featureId,
|
|
141
|
-
vertexIndices: selection.vertexIndices.map((ref) => ({ ...ref })),
|
|
142
|
-
}
|
|
143
|
-
: null, "f");
|
|
144
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
|
|
189
|
+
__classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
|
|
145
190
|
}
|
|
146
191
|
// FollowedVertices (vertices that follow along when shared vertices move together. Set only
|
|
147
192
|
// during a drag)
|
|
148
193
|
getFollowedVertices() {
|
|
149
|
-
return __classPrivateFieldGet(this,
|
|
194
|
+
return __classPrivateFieldGet(this, _MemoryDrawingState_followedVertices, "f");
|
|
150
195
|
}
|
|
151
196
|
setFollowedVertices(selections) {
|
|
152
197
|
// Since null is written every time a drag ends, null -> null is not notified (raising
|
|
153
198
|
// uiStateChanged every time would cause a wasteful re-render).
|
|
154
|
-
if (__classPrivateFieldGet(this,
|
|
199
|
+
if (__classPrivateFieldGet(this, _MemoryDrawingState_followedVertices, "f") === null && (selections === null || selections.length === 0)) {
|
|
155
200
|
return;
|
|
156
201
|
}
|
|
157
|
-
__classPrivateFieldSet(this,
|
|
202
|
+
__classPrivateFieldSet(this, _MemoryDrawingState_followedVertices, selections && selections.length > 0
|
|
158
203
|
? selections.map((selection) => ({
|
|
159
204
|
featureId: selection.featureId,
|
|
160
|
-
|
|
205
|
+
vertices: selection.vertices.map((ref) => ({ ...ref })),
|
|
161
206
|
}))
|
|
162
207
|
: null, "f");
|
|
163
|
-
__classPrivateFieldGet(this,
|
|
164
|
-
}
|
|
165
|
-
// Mode
|
|
166
|
-
getMode() {
|
|
167
|
-
return __classPrivateFieldGet(this, _MemoryUiState_mode, "f");
|
|
168
|
-
}
|
|
169
|
-
setMode(mode) {
|
|
170
|
-
const previous = __classPrivateFieldGet(this, _MemoryUiState_mode, "f");
|
|
171
|
-
if (mode === previous)
|
|
172
|
-
return;
|
|
173
|
-
__classPrivateFieldSet(this, _MemoryUiState_mode, mode, "f");
|
|
174
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ mode: { mode, previous } });
|
|
175
|
-
}
|
|
176
|
-
// ReadOnly
|
|
177
|
-
isReadOnly() {
|
|
178
|
-
return __classPrivateFieldGet(this, _MemoryUiState_readOnly, "f");
|
|
179
|
-
}
|
|
180
|
-
setReadOnly(value) {
|
|
181
|
-
if (__classPrivateFieldGet(this, _MemoryUiState_readOnly, "f") === value)
|
|
182
|
-
return;
|
|
183
|
-
__classPrivateFieldSet(this, _MemoryUiState_readOnly, value, "f");
|
|
184
|
-
// Whether handles are shown depends on read-only, so prompt a re-render.
|
|
185
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
|
|
186
|
-
}
|
|
187
|
-
// InteractionLock
|
|
188
|
-
isInteractionLocked() {
|
|
189
|
-
return __classPrivateFieldGet(this, _MemoryUiState_interactionLocked, "f");
|
|
190
|
-
}
|
|
191
|
-
setInteractionLock(value) {
|
|
192
|
-
if (__classPrivateFieldGet(this, _MemoryUiState_interactionLocked, "f") === value)
|
|
193
|
-
return;
|
|
194
|
-
__classPrivateFieldSet(this, _MemoryUiState_interactionLocked, value, "f");
|
|
195
|
-
// While the interaction lock is on, no handles are shown (only the selection box), so
|
|
196
|
-
// prompt a re-render.
|
|
197
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
|
|
198
|
-
}
|
|
199
|
-
// LocallyHidden
|
|
200
|
-
isLocallyHidden(id) {
|
|
201
|
-
return __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id);
|
|
202
|
-
}
|
|
203
|
-
getLocallyHidden() {
|
|
204
|
-
return __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f");
|
|
205
|
-
}
|
|
206
|
-
setLocallyHidden(id, hidden) {
|
|
207
|
-
const changed = hidden ? !__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id) : __classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").has(id);
|
|
208
|
-
if (!changed)
|
|
209
|
-
return;
|
|
210
|
-
if (hidden)
|
|
211
|
-
__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").add(id);
|
|
212
|
-
else
|
|
213
|
-
__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").delete(id);
|
|
214
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
|
|
215
|
-
}
|
|
216
|
-
/** Removes a deleted feature / group / layer from the hidden set (internal use). */
|
|
217
|
-
removeFromLocallyHidden(id) {
|
|
218
|
-
if (__classPrivateFieldGet(this, _MemoryUiState_locallyHidden, "f").delete(id)) {
|
|
219
|
-
__classPrivateFieldGet(this, _MemoryUiState_bus, "f").merge({ uiStateChanged: true });
|
|
220
|
-
}
|
|
208
|
+
__classPrivateFieldGet(this, _MemoryDrawingState_bus, "f").merge({ uiStateChanged: true });
|
|
221
209
|
}
|
|
222
210
|
}
|
|
223
|
-
|
|
211
|
+
_MemoryDrawingState_bus = new WeakMap(), _MemoryDrawingState_tentative = new WeakMap(), _MemoryDrawingState_boxSelection = new WeakMap(), _MemoryDrawingState_dragState = new WeakMap(), _MemoryDrawingState_followedVertices = new WeakMap();
|
package/dist/store/memory.d.ts
CHANGED
|
@@ -3,19 +3,12 @@ import type { Store } from './store.js';
|
|
|
3
3
|
* The in-memory Store, the default
|
|
4
4
|
*
|
|
5
5
|
* `new MemoryStore()` is a complete Store (the document and the local state); it is what
|
|
6
|
-
* `
|
|
6
|
+
* `createDraw` uses when no store is given.
|
|
7
7
|
*
|
|
8
8
|
* It keeps its own copy of what it is given and freezes what it returns. A feature, a layer
|
|
9
9
|
* or a group it has returned or notified never changes afterwards (a change replaces it), and
|
|
10
10
|
* writing into one throws a `TypeError` instead of changing the store behind its
|
|
11
11
|
* notifications.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* // Create the store yourself to keep a reference to it (to read it in a test, say)
|
|
16
|
-
* const store = new MemoryStore();
|
|
17
|
-
* const draw = createMapLibreGLDraw(map, { store });
|
|
18
|
-
* ```
|
|
19
12
|
*/
|
|
20
13
|
export interface MemoryStore extends Store {
|
|
21
14
|
}
|