@sakuzu/maplibre-gl-draw 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1016 -2
- package/README.ja.md +39 -19
- package/README.md +41 -21
- package/dist/api/datasets.d.ts +258 -0
- package/dist/api/document.d.ts +66 -0
- package/dist/api/draw.d.ts +135 -0
- package/dist/api/draw.js +18 -0
- package/dist/api/drawing.d.ts +87 -0
- package/dist/api/errors.d.ts +35 -0
- package/dist/api/errors.js +35 -0
- package/dist/api/events.d.ts +306 -0
- package/dist/api/extension/context.d.ts +247 -0
- package/dist/api/extension/feature-type.d.ts +129 -0
- package/dist/api/extension/mode.d.ts +123 -0
- package/dist/api/extension/plugin.d.ts +51 -0
- package/dist/api/extension/plugin.js +3 -0
- package/dist/api/extension/provider.d.ts +119 -0
- package/dist/api/extension/provider.js +3 -0
- package/dist/api/extension/render.d.ts +176 -0
- package/dist/api/extension/render.js +3 -0
- package/dist/api/extension/store.d.ts +190 -0
- package/dist/api/extension/store.js +3 -0
- package/dist/api/extensions.d.ts +306 -0
- package/dist/api/extensions.js +3 -0
- package/dist/api/features.d.ts +188 -0
- package/dist/api/features.js +3 -0
- package/dist/api/groups.d.ts +111 -0
- package/dist/api/groups.js +3 -0
- package/dist/api/hidden.d.ts +45 -0
- package/dist/api/hidden.js +3 -0
- package/dist/api/impl/adapters.js +463 -0
- package/dist/api/impl/contexts.js +466 -0
- package/dist/api/impl/create-draw.js +124 -0
- package/dist/api/impl/datasets.js +404 -0
- package/dist/api/impl/destroy-guard.js +74 -0
- package/dist/api/impl/document.js +280 -0
- package/dist/api/impl/drawing.js +180 -0
- package/dist/api/impl/engine-context.d.ts +7 -0
- package/dist/api/{context.js → impl/engine-context.js} +49 -38
- package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
- package/dist/api/impl/events.js +422 -0
- package/dist/api/impl/extension-host.js +361 -0
- package/dist/api/impl/extensions.js +229 -0
- package/dist/api/impl/features.js +445 -0
- package/dist/api/impl/geometry/apply.d.ts +32 -0
- package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
- package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
- package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/split.js +10 -21
- package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
- package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
- package/dist/api/impl/geometry/types.js +3 -0
- package/dist/api/impl/groups.d.ts +3 -0
- package/dist/api/impl/groups.js +268 -0
- package/dist/api/impl/hidden.js +60 -0
- package/dist/api/impl/import-export/constants.d.ts +22 -0
- package/dist/api/impl/import-export/constants.js +24 -0
- package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
- package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
- package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
- package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
- package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
- package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
- package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
- package/dist/api/impl/import-export/image-import.d.ts +16 -0
- package/dist/api/impl/import-export/image-import.js +73 -0
- package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
- package/dist/api/impl/import-export/legacy-image-style.js +49 -0
- package/dist/api/impl/import-export/native-format.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
- package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
- package/dist/api/impl/import-export/native-upgrade.js +139 -0
- package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
- package/dist/api/impl/import-export/style-validation.d.ts +24 -0
- package/dist/api/impl/import-export/style-validation.js +86 -0
- package/dist/api/impl/import-export/types.d.ts +52 -0
- package/dist/api/impl/import-export/types.js +3 -0
- package/dist/api/impl/input.js +180 -0
- package/dist/api/impl/layers.js +307 -0
- package/dist/api/impl/metadata.d.ts +1 -0
- package/dist/api/impl/metadata.js +22 -0
- package/dist/api/impl/options.d.ts +1 -0
- package/dist/api/impl/options.js +822 -0
- package/dist/api/impl/placement.d.ts +1 -0
- package/dist/api/impl/placement.js +138 -0
- package/dist/api/impl/render-context.d.ts +13 -0
- package/dist/api/impl/render-context.js +272 -0
- package/dist/api/impl/rows.d.ts +1 -0
- package/dist/api/impl/rows.js +46 -0
- package/dist/api/impl/selection.d.ts +1 -0
- package/dist/api/impl/selection.js +186 -0
- package/dist/api/impl/shared.d.ts +64 -0
- package/dist/api/impl/shared.js +178 -0
- package/dist/api/impl/validate-extension.d.ts +1 -0
- package/dist/api/impl/validate-extension.js +159 -0
- package/dist/api/layers.d.ts +130 -0
- package/dist/api/layers.js +3 -0
- package/dist/api/metadata.d.ts +18 -0
- package/dist/api/metadata.js +3 -0
- package/dist/api/model.d.ts +487 -0
- package/dist/api/model.js +47 -0
- package/dist/api/options.d.ts +466 -0
- package/dist/api/options.js +3 -0
- package/dist/api/selection.d.ts +94 -0
- package/dist/api/selection.js +3 -0
- package/dist/api/state.d.ts +155 -0
- package/dist/api/state.js +12 -0
- package/dist/{display → dataset}/chunk.d.ts +1 -1
- package/dist/{display → dataset}/chunk.js +4 -3
- package/dist/{display → dataset}/dataset.js +18 -21
- package/dist/dataset/interaction.d.ts +1 -0
- package/dist/{display → dataset}/interaction.js +18 -6
- package/dist/dataset/manager.d.ts +1 -0
- package/dist/dataset/provider.d.ts +1 -0
- package/dist/{display → dataset}/retained.d.ts +1 -1
- package/dist/{display → dataset}/retained.js +8 -7
- package/dist/dataset/source.d.ts +1 -0
- package/dist/{display → dataset}/source.js +17 -4
- package/dist/dataset/spatial.d.ts +1 -0
- package/dist/{display → dataset}/spatial.js +1 -1
- package/dist/dataset/style.d.ts +1 -0
- package/dist/{display → dataset}/style.js +1 -1
- package/dist/dataset/table-source.d.ts +1 -0
- package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
- package/dist/{display → dataset}/thinning.d.ts +0 -10
- package/dist/{display → dataset}/thinning.js +3 -2
- package/dist/dataset/triangulation.d.ts +1 -0
- package/dist/{display → dataset}/triangulation.js +0 -0
- package/dist/{display → dataset}/types.d.ts +82 -121
- package/dist/dataset/types.js +61 -0
- package/dist/dispatcher/hit-test/box-strategies.js +13 -13
- package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
- package/dist/dispatcher/hit-test/globe-shape.js +5 -4
- package/dist/dispatcher/hit-test/service.d.ts +17 -0
- package/dist/dispatcher/hit-test/service.js +80 -16
- package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
- package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
- package/dist/dispatcher/hit-test/strategies/image.js +6 -18
- package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
- package/dist/dispatcher/hit-test/strategies/line.js +9 -2
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
- package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
- package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
- package/dist/dispatcher/hit-test/strategies/point.js +8 -4
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
- package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
- package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
- package/dist/dispatcher/input-router.js +152 -69
- package/dist/dispatcher/normalizer.js +6 -2
- package/dist/dispatcher/types.d.ts +6 -1
- package/dist/extension/feature-handler.d.ts +1 -182
- package/dist/extension/index.d.ts +4 -7
- package/dist/extension/renderers.d.ts +1 -208
- package/dist/geometry/angle.d.ts +0 -8
- package/dist/geometry/angle.js +0 -8
- package/dist/geometry/bbox.d.ts +4 -12
- package/dist/geometry/bbox.js +4 -12
- package/dist/geometry/boolean.d.ts +0 -51
- package/dist/geometry/boolean.js +0 -51
- package/dist/geometry/buffer.d.ts +0 -26
- package/dist/geometry/buffer.js +0 -26
- package/dist/geometry/circle.d.ts +0 -9
- package/dist/geometry/circle.js +0 -9
- package/dist/geometry/coords.d.ts +0 -16
- package/dist/geometry/coords.js +0 -16
- package/dist/geometry/distance.d.ts +0 -24
- package/dist/geometry/distance.js +0 -24
- package/dist/geometry/errors.d.ts +21 -36
- package/dist/geometry/errors.js +49 -29
- package/dist/geometry/geojson.d.ts +81 -0
- package/dist/geometry/geojson.js +164 -0
- package/dist/geometry/index.d.ts +38 -23
- package/dist/geometry/index.js +43 -31
- package/dist/geometry/measure.d.ts +0 -27
- package/dist/geometry/measure.js +0 -27
- package/dist/geometry/predicates.d.ts +0 -9
- package/dist/geometry/predicates.js +0 -9
- package/dist/geometry/public-bounds.d.ts +26 -0
- package/dist/geometry/public-bounds.js +30 -0
- package/dist/geometry/public-combine.d.ts +78 -0
- package/dist/geometry/public-combine.js +82 -0
- package/dist/geometry/public-create.d.ts +54 -0
- package/dist/geometry/public-create.js +70 -0
- package/dist/geometry/public-measure.d.ts +170 -0
- package/dist/geometry/public-measure.js +283 -0
- package/dist/geometry/public-predicates.d.ts +54 -0
- package/dist/geometry/public-predicates.js +144 -0
- package/dist/geometry/public-repair.d.ts +75 -0
- package/dist/geometry/public-repair.js +77 -0
- package/dist/geometry/simplify.d.ts +0 -7
- package/dist/geometry/simplify.js +0 -7
- package/dist/geometry/split.d.ts +0 -20
- package/dist/geometry/split.js +0 -20
- package/dist/geometry/units.d.ts +20 -12
- package/dist/geometry/units.js +20 -12
- package/dist/index.d.ts +52 -66
- package/dist/index.js +6 -18
- package/dist/messages.d.ts +7 -7
- package/dist/modes/draw/circle.js +83 -207
- package/dist/modes/draw/commit-layer.d.ts +5 -16
- package/dist/modes/draw/commit-layer.js +2 -13
- package/dist/modes/draw/freehand.js +108 -246
- package/dist/modes/draw/image.js +4 -2
- package/dist/modes/draw/index.d.ts +5 -5
- package/dist/modes/draw/index.js +5 -5
- package/dist/modes/draw/line.js +18 -354
- package/dist/modes/draw/point.js +29 -78
- package/dist/modes/draw/polygon.js +23 -368
- package/dist/modes/draw/trace-support.d.ts +43 -36
- package/dist/modes/draw/trace-support.js +95 -98
- package/dist/modes/draw/vertex-drawing.d.ts +1 -0
- package/dist/modes/draw/vertex-drawing.js +176 -0
- package/dist/modes/handler.d.ts +1 -285
- package/dist/modes/manager.d.ts +2 -2
- package/dist/modes/manager.js +3 -0
- package/dist/modes/select/box-selection.d.ts +3 -3
- package/dist/modes/select/box-selection.js +2 -1
- package/dist/modes/select/click-handler.d.ts +5 -5
- package/dist/modes/select/click-handler.js +22 -20
- package/dist/modes/select/cursor-handler.d.ts +2 -2
- package/dist/modes/select/drag/intermediate-writes.js +1 -1
- package/dist/modes/select/drag/move.js +3 -3
- package/dist/modes/select/drag/operation.d.ts +3 -3
- package/dist/modes/select/drag/radius.js +5 -4
- package/dist/modes/select/drag/transform.d.ts +2 -2
- package/dist/modes/select/drag/transform.js +11 -5
- package/dist/modes/select/drag/vertex.d.ts +2 -2
- package/dist/modes/select/drag/vertex.js +13 -8
- package/dist/modes/select/drag-handler.js +44 -25
- package/dist/modes/select/mode.js +17 -17
- package/dist/modes/select/shortcut-handler.d.ts +8 -8
- package/dist/modes/select/shortcut-handler.js +9 -7
- package/dist/operations/layer-operations.js +29 -168
- package/dist/operations/resize.d.ts +2 -2
- package/dist/operations/resize.js +5 -5
- package/dist/operations/rotate.js +5 -5
- package/dist/operations/selection-operations.d.ts +16 -1
- package/dist/operations/selection-operations.js +28 -13
- package/dist/operations/shared-vertex.js +4 -2
- package/dist/operations/trace-graph.d.ts +0 -18
- package/dist/operations/trace-graph.js +0 -18
- package/dist/operations/vertex.js +36 -35
- package/dist/shared/color.d.ts +1 -0
- package/dist/shared/color.js +245 -0
- package/dist/shared/config/constants.d.ts +1 -54
- package/dist/shared/config/constants.js +1 -58
- package/dist/shared/config/feature-style.d.ts +16 -13
- package/dist/shared/config/feature-style.js +9 -0
- package/dist/shared/config/rendering.d.ts +3 -3
- package/dist/shared/config/selection-highlight.d.ts +0 -15
- package/dist/shared/config/selection-highlight.js +4 -7
- package/dist/shared/config/selection.d.ts +2 -32
- package/dist/shared/config/selection.js +0 -18
- package/dist/shared/config/topology.d.ts +2 -2
- package/dist/shared/config/trace.d.ts +4 -4
- package/dist/shared/math/angle.d.ts +1 -1
- package/dist/shared/math/angle.js +1 -1
- package/dist/shared/math/circle.d.ts +1 -1
- package/dist/shared/math/circle.js +1 -1
- package/dist/shared/math/distance.d.ts +2 -1
- package/dist/shared/math/distance.js +3 -2
- package/dist/shared/math/index.d.ts +1 -1
- package/dist/shared/math/index.js +1 -1
- package/dist/shared/math/transform.d.ts +23 -0
- package/dist/shared/math/transform.js +47 -28
- package/dist/shared/properties.d.ts +18 -0
- package/dist/shared/properties.js +129 -0
- package/dist/shared/types/events.d.ts +15 -7
- package/dist/shared/types/model.d.ts +109 -159
- package/dist/shared/types/style.d.ts +1 -1
- package/dist/shared/utils/color.d.ts +2 -36
- package/dist/shared/utils/color.js +13 -70
- package/dist/shared/utils/coordinates.d.ts +30 -4
- package/dist/shared/utils/coordinates.js +56 -10
- package/dist/shared/utils/event-emitter.d.ts +1 -262
- package/dist/shared/utils/event-emitter.js +4 -3
- package/dist/shared/utils/feature-bbox.js +8 -7
- package/dist/shared/utils/feature-segments.js +5 -4
- package/dist/shared/utils/image.d.ts +0 -4
- package/dist/shared/utils/image.js +0 -6
- package/dist/shared/utils/name-generator.d.ts +14 -20
- package/dist/shared/utils/name-generator.js +20 -3
- package/dist/shared/utils/pixel-ratio.d.ts +9 -3
- package/dist/shared/utils/pixel-ratio.js +13 -4
- package/dist/shared/utils/property.d.ts +7 -50
- package/dist/shared/utils/property.js +22 -87
- package/dist/snapping/custom-targets.js +21 -4
- package/dist/snapping/indicator.js +20 -11
- package/dist/snapping/providers/display.d.ts +6 -1
- package/dist/snapping/providers/display.js +2 -1
- package/dist/snapping/providers/guide.d.ts +3 -43
- package/dist/snapping/providers/guide.js +1 -44
- package/dist/snapping/providers/intersection.js +1 -1
- package/dist/snapping/providers/store.js +3 -3
- package/dist/snapping/service.js +18 -7
- package/dist/snapping/types.d.ts +9 -35
- package/dist/store/draw-store.js +233 -142
- package/dist/store/local-visibility.d.ts +11 -6
- package/dist/store/local-visibility.js +38 -7
- package/dist/store/lock.d.ts +0 -6
- package/dist/store/lock.js +0 -6
- package/dist/store/memory/change-bus.d.ts +3 -3
- package/dist/store/memory/change-bus.js +12 -0
- package/dist/store/memory/file-store.d.ts +2 -2
- package/dist/store/memory/ui-state.d.ts +1 -51
- package/dist/store/memory/ui-state.js +122 -134
- package/dist/store/memory.d.ts +1 -8
- package/dist/store/memory.js +249 -45
- package/dist/store/ordering.d.ts +9 -0
- package/dist/store/ordering.js +17 -0
- package/dist/store/spatial/spatial-index.d.ts +1 -1
- package/dist/store/spatial/spatial-index.js +1 -1
- package/dist/store/spatial/store-spatial-index.d.ts +3 -1
- package/dist/store/spatial/store-spatial-index.js +9 -3
- package/dist/store/store.d.ts +66 -107
- package/dist/store/types.d.ts +1 -1
- package/dist/store/writable-layer.d.ts +1 -1
- package/dist/store/writable-layer.js +2 -2
- package/dist/table/builder.d.ts +83 -0
- package/dist/table/builder.js +381 -0
- package/dist/table/index.d.ts +37 -0
- package/dist/table/index.js +5 -0
- package/dist/table/packed-rtree.d.ts +1 -0
- package/dist/{display → table}/packed-rtree.js +1 -1
- package/dist/table/partition.d.ts +1 -0
- package/dist/{display → table}/partition.js +3 -3
- package/dist/table/prepare.d.ts +44 -0
- package/dist/table/prepare.js +136 -0
- package/dist/table/table.d.ts +1 -0
- package/dist/{display/columnar → table}/table.js +29 -25
- package/dist/{display/columnar → table}/types.d.ts +68 -72
- package/dist/table/types.js +3 -0
- package/dist/view/coordinator.js +4 -3
- package/dist/view/feature-companion.d.ts +13 -7
- package/dist/view/feature-companion.js +11 -3
- package/dist/view/globe-subdivision.js +3 -3
- package/dist/view/layer/attach.d.ts +1 -1
- package/dist/view/layer/attach.js +1 -1
- package/dist/view/layer/custom-layer.js +40 -11
- package/dist/view/layer/display-list.js +2 -1
- package/dist/view/layer/drape-planner.d.ts +2 -2
- package/dist/view/layer/frame-render.d.ts +3 -3
- package/dist/view/layer/frame-render.js +7 -2
- package/dist/view/layer/frame-state.d.ts +6 -6
- package/dist/view/layer/index.d.ts +2 -2
- package/dist/view/layer/index.js +1 -1
- package/dist/view/layer/render.d.ts +4 -4
- package/dist/view/layer/render.js +3 -8
- package/dist/view/layer/renderers.d.ts +2 -2
- package/dist/view/layer/renderers.js +1 -1
- package/dist/view/layer/slot-manager.d.ts +2 -2
- package/dist/view/layer/slot-manager.js +4 -4
- package/dist/view/layer/slots.d.ts +2 -2
- package/dist/view/layer/slots.js +1 -1
- package/dist/view/layer/store-retained-bbox.js +3 -2
- package/dist/view/layer/store-retained-classify.d.ts +5 -7
- package/dist/view/layer/store-retained-classify.js +19 -7
- package/dist/view/layer/store-retained-collect.js +8 -7
- package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
- package/dist/view/layer/store-retained-coord-patch.js +13 -4
- package/dist/view/layer/store-retained-immediate.d.ts +3 -3
- package/dist/view/layer/store-retained-immediate.js +3 -8
- package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
- package/dist/view/layer/store-retained.d.ts +2 -2
- package/dist/view/layer/store-retained.js +1 -1
- package/dist/view/renderers/batch-manager.js +8 -7
- package/dist/view/renderers/drawer.js +21 -15
- package/dist/view/renderers/image.js +13 -39
- package/dist/view/renderers/line/line-types.d.ts +3 -3
- package/dist/view/renderers/line/sdf-line.js +3 -1
- package/dist/view/renderers/point/billboard-depth.js +1 -1
- package/dist/view/renderers/point/point-instance.js +1 -1
- package/dist/view/renderers/point/point-shape.js +2 -2
- package/dist/view/renderers/point/point-style.js +48 -4
- package/dist/view/renderers/polygon/batch.js +1 -2
- package/dist/view/renderers/polygon/fill.js +3 -1
- package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
- package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
- package/dist/view/renderers/stroke.js +3 -1
- package/dist/view/shaders/helpers.d.ts +2 -42
- package/dist/view/shaders/helpers.js +0 -6
- package/dist/view/shaders/projection.d.ts +15 -7
- package/dist/view/shaders/projection.js +23 -6
- package/dist/view/shaders/quad.d.ts +16 -12
- package/dist/view/shaders/quad.js +34 -13
- package/dist/view/style-rule.d.ts +5 -42
- package/dist/view/style-rule.js +20 -44
- package/dist/view/terrain/binding.d.ts +1 -0
- package/dist/view/terrain/binding.js +29 -0
- package/dist/view/terrain/context.d.ts +3 -4
- package/dist/view/terrain/context.js +4 -5
- package/dist/view/terrain/drape/geometry.js +1 -1
- package/dist/view/terrain/drape/pass.d.ts +1 -1
- package/dist/view/terrain/drape/pass.js +8 -7
- package/dist/view/terrain/polygon.d.ts +9 -5
- package/dist/view/terrain/polygon.js +16 -2
- package/dist/view/terrain/state.d.ts +1 -1
- package/dist/view/terrain/state.js +1 -1
- package/dist/view/terrain/tessellation.d.ts +2 -2
- package/dist/view/terrain/tessellation.js +1 -1
- package/dist/view/ui/auxiliary-handles.d.ts +6 -29
- package/dist/view/ui/bounds.js +8 -12
- package/dist/view/ui/handle-test.js +2 -2
- package/dist/view/ui/handle-thinning.js +17 -17
- package/dist/view/ui/handles.js +21 -13
- package/dist/view/ui/helper.d.ts +1 -1
- package/dist/view/ui/helper.js +1 -1
- package/dist/view/ui/index.d.ts +1 -1
- package/dist/view/ui/selection-scope.js +4 -2
- package/dist/view/ui/selection-ui/bounding-box.js +6 -6
- package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
- package/dist/view/ui/selection-ui/extension-registry.js +70 -7
- package/dist/view/ui/selection-ui/index.d.ts +2 -2
- package/dist/view/ui/selection-ui/index.js +1 -1
- package/dist/view/ui/selection-ui/renderer.js +15 -38
- package/dist/view/ui/selection-ui/types.d.ts +17 -2
- package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
- package/dist/view/ui/selection-ui-drawer.js +63 -2
- package/dist/view/ui/tentative.js +1 -1
- package/dist/webgl/index.d.ts +65 -0
- package/dist/webgl/index.js +62 -0
- package/package.json +20 -9
- package/dist/api/api.d.ts +0 -1259
- package/dist/api/api.js +0 -86
- package/dist/api/context.d.ts +0 -173
- package/dist/api/display-api.js +0 -23
- package/dist/api/event-api.d.ts +0 -13
- package/dist/api/event-api.js +0 -17
- package/dist/api/extension-api.d.ts +0 -46
- package/dist/api/extension-api.js +0 -85
- package/dist/api/feature-api.d.ts +0 -11
- package/dist/api/feature-api.js +0 -101
- package/dist/api/geometry/apply.d.ts +0 -51
- package/dist/api/geometry/boolean.d.ts +0 -28
- package/dist/api/geometry/boolean.js +0 -65
- package/dist/api/geometry/types.d.ts +0 -31
- package/dist/api/geometry-operations.d.ts +0 -162
- package/dist/api/geometry-operations.js +0 -94
- package/dist/api/group-api.d.ts +0 -10
- package/dist/api/group-api.js +0 -78
- package/dist/api/import-export/constants.d.ts +0 -29
- package/dist/api/import-export/constants.js +0 -40
- package/dist/api/import-export/file-name.d.ts +0 -10
- package/dist/api/import-export/file-name.js +0 -20
- package/dist/api/import-export/geojson-export.d.ts +0 -19
- package/dist/api/import-export/image-import.d.ts +0 -12
- package/dist/api/import-export/image-import.js +0 -53
- package/dist/api/import-export/index.d.ts +0 -9
- package/dist/api/import-export/index.js +0 -107
- package/dist/api/import-export/native-format.d.ts +0 -15
- package/dist/api/import-export/style-validation.d.ts +0 -27
- package/dist/api/import-export/style-validation.js +0 -49
- package/dist/api/import-export/types.d.ts +0 -26
- package/dist/api/index.d.ts +0 -15
- package/dist/api/index.js +0 -3
- package/dist/api/input-api.d.ts +0 -158
- package/dist/api/input-api.js +0 -144
- package/dist/api/instance-api.d.ts +0 -38
- package/dist/api/instance-api.js +0 -136
- package/dist/api/layer-api.d.ts +0 -12
- package/dist/api/layer-api.js +0 -62
- package/dist/api/selection-api.d.ts +0 -7
- package/dist/api/selection-api.js +0 -78
- package/dist/api/snapping-api.d.ts +0 -125
- package/dist/api/snapping-api.js +0 -50
- package/dist/api/topology-api.d.ts +0 -30
- package/dist/api/topology-api.js +0 -16
- package/dist/api/tracing-api.d.ts +0 -31
- package/dist/api/tracing-api.js +0 -16
- package/dist/dispatcher/hit-test/index.d.ts +0 -14
- package/dist/dispatcher/hit-test/index.js +0 -9
- package/dist/dispatcher/index.d.ts +0 -15
- package/dist/dispatcher/index.js +0 -3
- package/dist/display/columnar/index.d.ts +0 -12
- package/dist/display/columnar/index.js +0 -13
- package/dist/display/columnar/prepare.d.ts +0 -42
- package/dist/display/columnar/prepare.js +0 -116
- package/dist/display/index.d.ts +0 -13
- package/dist/display/types.js +0 -43
- package/dist/maplibre-gl-draw.d.ts +0 -47
- package/dist/modes/cursor.js +0 -72
- package/dist/modes/index.d.ts +0 -7
- package/dist/operations/index.d.ts +0 -9
- package/dist/operations/index.js +0 -3
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/mutation-hooks.d.ts +0 -28
- package/dist/plugins/mutation-hooks.js +0 -84
- package/dist/plugins/plugin-context.js +0 -367
- package/dist/plugins/plugin-manager.d.ts +0 -103
- package/dist/plugins/plugin-manager.js +0 -316
- package/dist/plugins/plugin.d.ts +0 -529
- package/dist/shared/config/index.d.ts +0 -17
- package/dist/shared/config/index.js +0 -8
- package/dist/shared/utils/index.d.ts +0 -15
- package/dist/shared/utils/index.js +0 -24
- package/dist/snapping/index.d.ts +0 -14
- package/dist/snapping/index.js +0 -4
- package/dist/store/change-merger.js +0 -102
- package/dist/store/event-bridge.js +0 -161
- package/dist/store/index.d.ts +0 -12
- package/dist/store/index.js +0 -4
- package/dist/view/index.d.ts +0 -47
- package/dist/view/index.js +0 -20
- /package/dist/api/{geometry/types.js → datasets.js} +0 -0
- /package/dist/api/{import-export/types.js → document.js} +0 -0
- /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
- /package/dist/{display/index.js → api/events.js} +0 -0
- /package/dist/{modes/index.js → api/extension/context.js} +0 -0
- /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
- /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
- /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
- /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
- /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
- /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
- /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
- /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
- /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
- /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
- /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
- /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
- /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
- /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
- /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
- /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
- /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
- /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
- /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
- /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
- /package/dist/{display → dataset}/chunk-set.js +0 -0
- /package/dist/{display → dataset}/dataset.d.ts +0 -0
- /package/dist/{display → dataset}/manager.js +0 -0
- /package/dist/{display → dataset}/provider.js +0 -0
- /package/dist/{display → dataset}/selection.d.ts +0 -0
- /package/dist/{display → dataset}/selection.js +0 -0
package/dist/store/draw-store.js
CHANGED
|
@@ -11,31 +11,38 @@ 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 _DrawStore_instances,
|
|
14
|
+
var _DrawStore_instances, _DrawStore_contract, _DrawStore_bus, _DrawStore_drawing, _DrawStore_normalized, _DrawStore_write, _DrawStore_local, _DrawStore_receive, _DrawStore_feature, _DrawStore_features, _DrawStore_layer, _DrawStore_normalizeChanges, _DrawStore_forget, _DrawStore_pruneInvisible, _DrawStore_pruneVertices, _DrawStore_endVertexSelection;
|
|
15
15
|
/**
|
|
16
16
|
* DrawStore
|
|
17
17
|
*
|
|
18
|
-
* The Store core works with: a
|
|
19
|
-
* the
|
|
18
|
+
* The Store core works with: a {@link StoreContract} (the in-memory one, or one the host gave)
|
|
19
|
+
* and the state only the drawing reads, behind one gate. It reaches the contract only through
|
|
20
|
+
* the members of the public `Store`.
|
|
20
21
|
*
|
|
21
|
-
* - Read-only is enforced here, at the write methods
|
|
22
|
-
* returns false and touches nothing.
|
|
23
|
-
*
|
|
24
|
-
* - The notifications of the
|
|
25
|
-
*
|
|
26
|
-
* -
|
|
27
|
-
*
|
|
22
|
+
* - Read-only is enforced here, at the write methods of the document. A refused write
|
|
23
|
+
* returns false and touches nothing. Changes applied to the contract from elsewhere are not
|
|
24
|
+
* stopped by it.
|
|
25
|
+
* - The notifications of the contract are forwarded into the ChangeBus of this Store, so a
|
|
26
|
+
* listener gets one StoreChange per transaction with every kind of change.
|
|
27
|
+
* - What the contract returns and notifies is read in the shape of the public types: an
|
|
28
|
+
* optional field it gives as `null` (`Feature.groupId`, `Layer.metadata`,
|
|
29
|
+
* `Layer.styleRule`) is read as `undefined`. The normalized object is kept per object of
|
|
30
|
+
* the contract, so the same object of the contract always reads as the same object here.
|
|
31
|
+
* - Deletions reach the state of this client: the id of a deleted feature, group or layer
|
|
32
|
+
* leaves the selection, the features being edited and the locally hidden set, whatever
|
|
33
|
+
* deleted it, through the writes of the contract.
|
|
28
34
|
* - The selection holds only what can be seen: a change that hides a selected item (its own
|
|
29
35
|
* visible flag, the one of its group or layer, or local hiding) takes it out of the
|
|
30
36
|
* selection, and the vertex selection ends when its feature is deleted or its coordinates
|
|
31
37
|
* change other than by a drag. This is the only place that keeps these invariants; the
|
|
32
38
|
* modes and the public API rely on it.
|
|
33
39
|
*/
|
|
40
|
+
import { coordinatesOf } from '../shared/utils/coordinates.js';
|
|
34
41
|
import { ChangeBus } from './memory/change-bus.js';
|
|
35
|
-
import {
|
|
42
|
+
import { MemoryDrawingState } from './memory/ui-state.js';
|
|
36
43
|
/**
|
|
37
|
-
* Returns the Store for a store option: a Store is used as it is, a
|
|
38
|
-
*
|
|
44
|
+
* Returns the Store for a store option: a Store of core is used as it is, a Store of the host
|
|
45
|
+
* gets the drawing state and the read-only gate of core around it
|
|
39
46
|
*
|
|
40
47
|
* @internal
|
|
41
48
|
*/
|
|
@@ -43,188 +50,204 @@ export function toStore(store) {
|
|
|
43
50
|
return store instanceof DrawStore ? store : new DrawStore(store);
|
|
44
51
|
}
|
|
45
52
|
/**
|
|
46
|
-
* The Store of core over a
|
|
53
|
+
* The Store of core over a {@link StoreContract}
|
|
47
54
|
*
|
|
48
55
|
* @internal
|
|
49
56
|
*/
|
|
50
57
|
export class DrawStore {
|
|
51
|
-
constructor(
|
|
58
|
+
constructor(contract) {
|
|
52
59
|
_DrawStore_instances.add(this);
|
|
53
|
-
|
|
60
|
+
_DrawStore_contract.set(this, void 0);
|
|
54
61
|
_DrawStore_bus.set(this, new ChangeBus());
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
62
|
+
_DrawStore_drawing.set(this, new MemoryDrawingState(__classPrivateFieldGet(this, _DrawStore_bus, "f")));
|
|
63
|
+
/** The normalized copy of each object of the contract that gave `null` for an optional field */
|
|
64
|
+
_DrawStore_normalized.set(this, new WeakMap());
|
|
65
|
+
__classPrivateFieldSet(this, _DrawStore_contract, contract, "f");
|
|
66
|
+
contract.subscribe((changes) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_receive).call(this, changes));
|
|
58
67
|
}
|
|
59
68
|
// ============================================================================
|
|
60
69
|
// The document: reads
|
|
61
70
|
// ============================================================================
|
|
62
71
|
getFeature(id) {
|
|
63
|
-
|
|
72
|
+
const feature = __classPrivateFieldGet(this, _DrawStore_contract, "f").getFeature(id);
|
|
73
|
+
return feature && __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, feature);
|
|
64
74
|
}
|
|
65
|
-
|
|
66
|
-
return __classPrivateFieldGet(this,
|
|
75
|
+
listFeatures() {
|
|
76
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_features).call(this, __classPrivateFieldGet(this, _DrawStore_contract, "f").listFeatures());
|
|
67
77
|
}
|
|
68
|
-
|
|
69
|
-
return __classPrivateFieldGet(this,
|
|
78
|
+
listFeaturesInOrder() {
|
|
79
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_features).call(this, __classPrivateFieldGet(this, _DrawStore_contract, "f").listFeaturesInOrder());
|
|
70
80
|
}
|
|
71
81
|
getLayer(id) {
|
|
72
|
-
|
|
82
|
+
const layer = __classPrivateFieldGet(this, _DrawStore_contract, "f").getLayer(id);
|
|
83
|
+
return layer && __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, layer);
|
|
73
84
|
}
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
listLayers() {
|
|
86
|
+
const layers = __classPrivateFieldGet(this, _DrawStore_contract, "f").listLayers();
|
|
87
|
+
return layers.some(hasNullLayerField) ? layers.map((layer) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, layer)) : layers;
|
|
76
88
|
}
|
|
77
89
|
getLayerOrder() {
|
|
78
|
-
return __classPrivateFieldGet(this,
|
|
90
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getLayerOrder();
|
|
79
91
|
}
|
|
80
92
|
getGroup(id) {
|
|
81
|
-
return __classPrivateFieldGet(this,
|
|
93
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getGroup(id);
|
|
82
94
|
}
|
|
83
|
-
|
|
84
|
-
return __classPrivateFieldGet(this,
|
|
95
|
+
listGroups() {
|
|
96
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").listGroups();
|
|
85
97
|
}
|
|
86
98
|
getFile(id) {
|
|
87
|
-
return __classPrivateFieldGet(this,
|
|
99
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getFile(id);
|
|
88
100
|
}
|
|
89
|
-
|
|
90
|
-
return __classPrivateFieldGet(this,
|
|
101
|
+
listFiles() {
|
|
102
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").listFiles();
|
|
91
103
|
}
|
|
92
104
|
getMetadata() {
|
|
93
|
-
return __classPrivateFieldGet(this,
|
|
105
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getMetadata();
|
|
94
106
|
}
|
|
95
107
|
// ============================================================================
|
|
96
108
|
// The document: writes (gated by read-only)
|
|
97
109
|
// ============================================================================
|
|
98
110
|
createFeature(feature) {
|
|
99
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
111
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").createFeature(feature));
|
|
100
112
|
}
|
|
101
113
|
updateFeature(id, updates, options) {
|
|
102
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
114
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").updateFeature(id, updates, options));
|
|
103
115
|
}
|
|
104
116
|
abortIntermediateUpdates(ids) {
|
|
105
|
-
__classPrivateFieldGet(this,
|
|
117
|
+
__classPrivateFieldGet(this, _DrawStore_contract, "f").abortIntermediateUpdates?.(ids);
|
|
106
118
|
}
|
|
107
119
|
deleteFeature(id) {
|
|
108
120
|
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => {
|
|
109
|
-
__classPrivateFieldGet(this,
|
|
121
|
+
const deleted = __classPrivateFieldGet(this, _DrawStore_contract, "f").deleteFeature(id);
|
|
110
122
|
// At once, so that the rest of a transaction already sees the selection without it
|
|
111
|
-
|
|
123
|
+
if (deleted)
|
|
124
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, id);
|
|
125
|
+
return deleted;
|
|
112
126
|
});
|
|
113
127
|
}
|
|
114
128
|
createLayer(layer) {
|
|
115
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
129
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").createLayer(layer));
|
|
116
130
|
}
|
|
117
131
|
updateLayer(id, updates) {
|
|
118
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
132
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").updateLayer(id, updates));
|
|
119
133
|
}
|
|
120
134
|
deleteLayer(id) {
|
|
121
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
135
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").deleteLayer(id));
|
|
122
136
|
}
|
|
123
137
|
setLayerOrder(order) {
|
|
124
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
138
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setLayerOrder(order));
|
|
125
139
|
}
|
|
126
140
|
reorderInLayer(itemId, layerId, newIndex) {
|
|
127
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
141
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").reorderInLayer(itemId, layerId, newIndex));
|
|
128
142
|
}
|
|
129
143
|
reorderInGroup(featureId, groupId, newIndex) {
|
|
130
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
144
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").reorderInGroup(featureId, groupId, newIndex));
|
|
131
145
|
}
|
|
132
146
|
createGroup(group) {
|
|
133
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
147
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").createGroup(group));
|
|
134
148
|
}
|
|
135
149
|
updateGroup(id, updates) {
|
|
136
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
150
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").updateGroup(id, updates));
|
|
137
151
|
}
|
|
138
152
|
deleteGroup(id) {
|
|
139
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
153
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").deleteGroup(id));
|
|
140
154
|
}
|
|
141
155
|
createFile(file) {
|
|
142
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
156
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").createFile(file));
|
|
143
157
|
}
|
|
144
158
|
deleteFile(id) {
|
|
145
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
159
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").deleteFile(id));
|
|
146
160
|
}
|
|
147
161
|
setMetadata(metadata) {
|
|
148
|
-
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this,
|
|
162
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setMetadata(metadata));
|
|
149
163
|
}
|
|
150
164
|
// ============================================================================
|
|
151
|
-
// The
|
|
165
|
+
// The state of this client (kept by the contract)
|
|
152
166
|
// ============================================================================
|
|
153
167
|
getSelection() {
|
|
154
|
-
return __classPrivateFieldGet(this,
|
|
168
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getSelection();
|
|
155
169
|
}
|
|
156
170
|
setSelection(type, ids) {
|
|
157
|
-
__classPrivateFieldGet(this,
|
|
171
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setSelection(type, ids));
|
|
158
172
|
}
|
|
159
173
|
getEditingIds() {
|
|
160
|
-
return __classPrivateFieldGet(this,
|
|
174
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getEditingIds();
|
|
161
175
|
}
|
|
162
176
|
startEditing(ids) {
|
|
163
|
-
__classPrivateFieldGet(this,
|
|
177
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").startEditing(ids));
|
|
164
178
|
}
|
|
165
179
|
endEditing(ids) {
|
|
166
|
-
__classPrivateFieldGet(this,
|
|
180
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").endEditing(ids));
|
|
167
181
|
}
|
|
168
|
-
|
|
169
|
-
return __classPrivateFieldGet(this,
|
|
170
|
-
}
|
|
171
|
-
setTentative(state) {
|
|
172
|
-
__classPrivateFieldGet(this, _DrawStore_ui, "f").setTentative(state);
|
|
173
|
-
}
|
|
174
|
-
getBoxSelection() {
|
|
175
|
-
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getBoxSelection();
|
|
176
|
-
}
|
|
177
|
-
setBoxSelection(box) {
|
|
178
|
-
__classPrivateFieldGet(this, _DrawStore_ui, "f").setBoxSelection(box);
|
|
179
|
-
}
|
|
180
|
-
getDragState() {
|
|
181
|
-
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getDragState();
|
|
182
|
-
}
|
|
183
|
-
setDragState(state) {
|
|
184
|
-
__classPrivateFieldGet(this, _DrawStore_ui, "f").setDragState(state);
|
|
185
|
-
}
|
|
186
|
-
getSelectedVertices() {
|
|
187
|
-
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelectedVertices();
|
|
182
|
+
getVertexSelection() {
|
|
183
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getVertexSelection();
|
|
188
184
|
}
|
|
189
185
|
setSelectedVertices(selection) {
|
|
190
|
-
__classPrivateFieldGet(this,
|
|
191
|
-
}
|
|
192
|
-
getFollowedVertices() {
|
|
193
|
-
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getFollowedVertices();
|
|
194
|
-
}
|
|
195
|
-
setFollowedVertices(selections) {
|
|
196
|
-
__classPrivateFieldGet(this, _DrawStore_ui, "f").setFollowedVertices(selections);
|
|
186
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setSelectedVertices(selection), true);
|
|
197
187
|
}
|
|
198
188
|
getMode() {
|
|
199
|
-
return __classPrivateFieldGet(this,
|
|
189
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").getMode();
|
|
200
190
|
}
|
|
201
191
|
setMode(mode) {
|
|
202
|
-
__classPrivateFieldGet(this,
|
|
192
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setMode(mode));
|
|
203
193
|
}
|
|
204
194
|
isReadOnly() {
|
|
205
|
-
return __classPrivateFieldGet(this,
|
|
195
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").isReadOnly();
|
|
206
196
|
}
|
|
207
197
|
setReadOnly(value) {
|
|
208
|
-
__classPrivateFieldGet(this,
|
|
198
|
+
if (__classPrivateFieldGet(this, _DrawStore_contract, "f").isReadOnly() === value)
|
|
199
|
+
return;
|
|
200
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setReadOnly(value), true);
|
|
209
201
|
}
|
|
210
202
|
isInteractionLocked() {
|
|
211
|
-
return __classPrivateFieldGet(this,
|
|
203
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").isInteractionLocked();
|
|
212
204
|
}
|
|
213
205
|
setInteractionLock(value) {
|
|
214
|
-
__classPrivateFieldGet(this,
|
|
206
|
+
if (__classPrivateFieldGet(this, _DrawStore_contract, "f").isInteractionLocked() === value)
|
|
207
|
+
return;
|
|
208
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => __classPrivateFieldGet(this, _DrawStore_contract, "f").setInteractionLock(value), true);
|
|
215
209
|
}
|
|
216
|
-
|
|
217
|
-
return __classPrivateFieldGet(this,
|
|
210
|
+
isHidden(id) {
|
|
211
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").isHidden(id);
|
|
218
212
|
}
|
|
219
|
-
|
|
220
|
-
return __classPrivateFieldGet(this,
|
|
213
|
+
listHidden() {
|
|
214
|
+
return __classPrivateFieldGet(this, _DrawStore_contract, "f").listHidden();
|
|
221
215
|
}
|
|
222
216
|
setLocallyHidden(id, hidden) {
|
|
223
|
-
__classPrivateFieldGet(this,
|
|
224
|
-
|
|
217
|
+
if (__classPrivateFieldGet(this, _DrawStore_contract, "f").isHidden(id) === hidden)
|
|
218
|
+
return;
|
|
219
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_local).call(this, () => {
|
|
220
|
+
__classPrivateFieldGet(this, _DrawStore_contract, "f").setLocallyHidden(id, hidden);
|
|
225
221
|
if (hidden)
|
|
226
222
|
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
|
|
227
|
-
},
|
|
223
|
+
}, true);
|
|
224
|
+
}
|
|
225
|
+
// ============================================================================
|
|
226
|
+
// The state only the drawing reads (kept here)
|
|
227
|
+
// ============================================================================
|
|
228
|
+
getTentative() {
|
|
229
|
+
return __classPrivateFieldGet(this, _DrawStore_drawing, "f").getTentative();
|
|
230
|
+
}
|
|
231
|
+
setTentative(state) {
|
|
232
|
+
__classPrivateFieldGet(this, _DrawStore_drawing, "f").setTentative(state);
|
|
233
|
+
}
|
|
234
|
+
getBoxSelection() {
|
|
235
|
+
return __classPrivateFieldGet(this, _DrawStore_drawing, "f").getBoxSelection();
|
|
236
|
+
}
|
|
237
|
+
setBoxSelection(box) {
|
|
238
|
+
__classPrivateFieldGet(this, _DrawStore_drawing, "f").setBoxSelection(box);
|
|
239
|
+
}
|
|
240
|
+
getDragState() {
|
|
241
|
+
return __classPrivateFieldGet(this, _DrawStore_drawing, "f").getDragState();
|
|
242
|
+
}
|
|
243
|
+
setDragState(state) {
|
|
244
|
+
__classPrivateFieldGet(this, _DrawStore_drawing, "f").setDragState(state);
|
|
245
|
+
}
|
|
246
|
+
getFollowedVertices() {
|
|
247
|
+
return __classPrivateFieldGet(this, _DrawStore_drawing, "f").getFollowedVertices();
|
|
248
|
+
}
|
|
249
|
+
setFollowedVertices(selections) {
|
|
250
|
+
__classPrivateFieldGet(this, _DrawStore_drawing, "f").setFollowedVertices(selections);
|
|
228
251
|
}
|
|
229
252
|
// ============================================================================
|
|
230
253
|
// Subscription and transactions
|
|
@@ -233,17 +256,22 @@ export class DrawStore {
|
|
|
233
256
|
return __classPrivateFieldGet(this, _DrawStore_bus, "f").subscribe(listener);
|
|
234
257
|
}
|
|
235
258
|
transact(fn, source = 'local') {
|
|
236
|
-
return __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => __classPrivateFieldGet(this,
|
|
259
|
+
return __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => __classPrivateFieldGet(this, _DrawStore_contract, "f").transact(fn, source), source);
|
|
237
260
|
}
|
|
238
261
|
}
|
|
239
|
-
|
|
240
|
-
if (__classPrivateFieldGet(this,
|
|
262
|
+
_DrawStore_contract = new WeakMap(), _DrawStore_bus = new WeakMap(), _DrawStore_drawing = new WeakMap(), _DrawStore_normalized = new WeakMap(), _DrawStore_instances = new WeakSet(), _DrawStore_write = function _DrawStore_write(fn) {
|
|
263
|
+
if (__classPrivateFieldGet(this, _DrawStore_contract, "f").isReadOnly())
|
|
241
264
|
return false;
|
|
242
|
-
this.transact(fn);
|
|
243
|
-
|
|
265
|
+
return this.transact(fn);
|
|
266
|
+
}, _DrawStore_local = function _DrawStore_local(fn, redraw = false) {
|
|
267
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
|
|
268
|
+
fn();
|
|
269
|
+
if (redraw)
|
|
270
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge({ uiStateChanged: true });
|
|
271
|
+
}, 'local');
|
|
244
272
|
}, _DrawStore_receive = function _DrawStore_receive(changes) {
|
|
245
273
|
__classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
|
|
246
|
-
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge(
|
|
274
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge(__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_normalizeChanges).call(this, withoutSource(changes)));
|
|
247
275
|
for (const feature of changes.features?.deleted ?? [])
|
|
248
276
|
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, feature.id);
|
|
249
277
|
for (const group of changes.groups?.deleted ?? [])
|
|
@@ -254,31 +282,96 @@ _DrawStore_document = new WeakMap(), _DrawStore_bus = new WeakMap(), _DrawStore_
|
|
|
254
282
|
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
|
|
255
283
|
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneVertices).call(this, changes);
|
|
256
284
|
}, changes.source ?? 'local');
|
|
285
|
+
}, _DrawStore_feature = function _DrawStore_feature(feature) {
|
|
286
|
+
if (!hasNullFeatureField(feature))
|
|
287
|
+
return feature;
|
|
288
|
+
const known = __classPrivateFieldGet(this, _DrawStore_normalized, "f").get(feature);
|
|
289
|
+
if (known)
|
|
290
|
+
return known;
|
|
291
|
+
const normalized = { ...feature, groupId: undefined };
|
|
292
|
+
__classPrivateFieldGet(this, _DrawStore_normalized, "f").set(feature, normalized);
|
|
293
|
+
return normalized;
|
|
294
|
+
}, _DrawStore_features = function _DrawStore_features(features) {
|
|
295
|
+
return features.some(hasNullFeatureField)
|
|
296
|
+
? features.map((feature) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, feature))
|
|
297
|
+
: features;
|
|
298
|
+
}, _DrawStore_layer = function _DrawStore_layer(layer) {
|
|
299
|
+
if (!hasNullLayerField(layer))
|
|
300
|
+
return layer;
|
|
301
|
+
const known = __classPrivateFieldGet(this, _DrawStore_normalized, "f").get(layer);
|
|
302
|
+
if (known)
|
|
303
|
+
return known;
|
|
304
|
+
const normalized = {
|
|
305
|
+
...layer,
|
|
306
|
+
metadata: layer.metadata ?? undefined,
|
|
307
|
+
styleRule: layer.styleRule ?? undefined,
|
|
308
|
+
};
|
|
309
|
+
__classPrivateFieldGet(this, _DrawStore_normalized, "f").set(layer, normalized);
|
|
310
|
+
return normalized;
|
|
311
|
+
}, _DrawStore_normalizeChanges = function _DrawStore_normalizeChanges(changes) {
|
|
312
|
+
const { features, layers } = changes;
|
|
313
|
+
const normalized = { ...changes };
|
|
314
|
+
if (features) {
|
|
315
|
+
normalized.features = {
|
|
316
|
+
...features,
|
|
317
|
+
...(features.created && { created: features.created.map((f) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, f)) }),
|
|
318
|
+
...(features.updated && {
|
|
319
|
+
updated: features.updated.map((entry) => ({
|
|
320
|
+
...entry,
|
|
321
|
+
feature: __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, entry.feature),
|
|
322
|
+
previous: __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, entry.previous),
|
|
323
|
+
})),
|
|
324
|
+
}),
|
|
325
|
+
...(features.deleted && { deleted: features.deleted.map((f) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_feature).call(this, f)) }),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
if (layers) {
|
|
329
|
+
normalized.layers = {
|
|
330
|
+
...layers,
|
|
331
|
+
...(layers.created && { created: layers.created.map((l) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, l)) }),
|
|
332
|
+
...(layers.updated && {
|
|
333
|
+
updated: layers.updated.map((entry) => ({
|
|
334
|
+
...entry,
|
|
335
|
+
layer: __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, entry.layer),
|
|
336
|
+
previous: __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, entry.previous),
|
|
337
|
+
})),
|
|
338
|
+
}),
|
|
339
|
+
...(layers.deleted && { deleted: layers.deleted.map((l) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_layer).call(this, l)) }),
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
return normalized;
|
|
257
343
|
}, _DrawStore_forget = function _DrawStore_forget(id) {
|
|
258
|
-
|
|
344
|
+
const contract = __classPrivateFieldGet(this, _DrawStore_contract, "f");
|
|
345
|
+
if (contract.getFeature(id) || contract.getGroup(id) || contract.getLayer(id))
|
|
259
346
|
return;
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
347
|
+
const selection = contract.getSelection();
|
|
348
|
+
if (selection.ids.includes(id)) {
|
|
349
|
+
const ids = selection.ids.filter((selected) => selected !== id);
|
|
350
|
+
contract.setSelection(ids.length === 0 ? null : selection.type, ids);
|
|
351
|
+
}
|
|
352
|
+
if (contract.getEditingIds().includes(id))
|
|
353
|
+
contract.endEditing([id]);
|
|
354
|
+
if (contract.isHidden(id)) {
|
|
355
|
+
contract.setLocallyHidden(id, false);
|
|
356
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge({ uiStateChanged: true });
|
|
357
|
+
}
|
|
265
358
|
}, _DrawStore_pruneInvisible = function _DrawStore_pruneInvisible() {
|
|
266
|
-
const selection = __classPrivateFieldGet(this,
|
|
359
|
+
const selection = __classPrivateFieldGet(this, _DrawStore_contract, "f").getSelection();
|
|
267
360
|
const type = selection.type;
|
|
268
361
|
if (type === null || selection.ids.length === 0)
|
|
269
362
|
return;
|
|
270
|
-
const shown = createShownLookup(__classPrivateFieldGet(this,
|
|
363
|
+
const shown = createShownLookup(__classPrivateFieldGet(this, _DrawStore_contract, "f"));
|
|
271
364
|
const kept = selection.ids.filter((id) => shown(type, id));
|
|
272
365
|
if (kept.length !== selection.ids.length) {
|
|
273
|
-
__classPrivateFieldGet(this,
|
|
366
|
+
__classPrivateFieldGet(this, _DrawStore_contract, "f").setSelection(kept.length > 0 ? type : null, kept);
|
|
274
367
|
}
|
|
275
368
|
}, _DrawStore_pruneVertices = function _DrawStore_pruneVertices(changes) {
|
|
276
|
-
const vertices = __classPrivateFieldGet(this,
|
|
369
|
+
const vertices = __classPrivateFieldGet(this, _DrawStore_contract, "f").getVertexSelection();
|
|
277
370
|
if (!vertices)
|
|
278
371
|
return;
|
|
279
372
|
const featureId = vertices.featureId;
|
|
280
|
-
if (!__classPrivateFieldGet(this,
|
|
281
|
-
__classPrivateFieldGet(this,
|
|
373
|
+
if (!__classPrivateFieldGet(this, _DrawStore_contract, "f").getFeature(featureId)) {
|
|
374
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_endVertexSelection).call(this);
|
|
282
375
|
return;
|
|
283
376
|
}
|
|
284
377
|
const local = changes.source !== 'remote';
|
|
@@ -286,13 +379,16 @@ _DrawStore_document = new WeakMap(), _DrawStore_bus = new WeakMap(), _DrawStore_
|
|
|
286
379
|
if (entry.id !== featureId)
|
|
287
380
|
continue;
|
|
288
381
|
// The frames and the commit of a local drag keep the vertices being dragged selected
|
|
289
|
-
if (local && (entry.isIntermediate || __classPrivateFieldGet(this,
|
|
382
|
+
if (local && (entry.isIntermediate || __classPrivateFieldGet(this, _DrawStore_drawing, "f").getDragState() !== null))
|
|
290
383
|
continue;
|
|
291
|
-
if (sameCoordinates(entry.feature
|
|
384
|
+
if (sameCoordinates(coordinatesOf(entry.feature), coordinatesOf(entry.previous)))
|
|
292
385
|
continue;
|
|
293
|
-
__classPrivateFieldGet(this,
|
|
386
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_endVertexSelection).call(this);
|
|
294
387
|
return;
|
|
295
388
|
}
|
|
389
|
+
}, _DrawStore_endVertexSelection = function _DrawStore_endVertexSelection() {
|
|
390
|
+
__classPrivateFieldGet(this, _DrawStore_contract, "f").setSelectedVertices(null);
|
|
391
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge({ uiStateChanged: true });
|
|
296
392
|
};
|
|
297
393
|
/**
|
|
298
394
|
* Whether a notification can hide something that was visible: a change of the visible flag
|
|
@@ -316,14 +412,15 @@ function mayHide(changes) {
|
|
|
316
412
|
* Each layer and group is looked up once per call site (a document can take time to read a
|
|
317
413
|
* layer).
|
|
318
414
|
*/
|
|
319
|
-
function createShownLookup(document
|
|
415
|
+
function createShownLookup(document) {
|
|
416
|
+
const ui = document;
|
|
320
417
|
const layers = new Map();
|
|
321
418
|
const groups = new Map();
|
|
322
419
|
const layerShown = (id) => {
|
|
323
420
|
let shown = layers.get(id);
|
|
324
421
|
if (shown === undefined) {
|
|
325
422
|
const layer = document.getLayer(id);
|
|
326
|
-
shown = layer?.visible === true && !ui.
|
|
423
|
+
shown = layer?.visible === true && !ui.isHidden(id);
|
|
327
424
|
layers.set(id, shown);
|
|
328
425
|
}
|
|
329
426
|
return shown;
|
|
@@ -335,7 +432,7 @@ function createShownLookup(document, ui) {
|
|
|
335
432
|
const layerId = group ? groupLayerId(document, group) : undefined;
|
|
336
433
|
shown =
|
|
337
434
|
group?.visible === true &&
|
|
338
|
-
!ui.
|
|
435
|
+
!ui.isHidden(id) &&
|
|
339
436
|
(layerId === undefined || layerShown(layerId));
|
|
340
437
|
groups.set(id, shown);
|
|
341
438
|
}
|
|
@@ -347,7 +444,7 @@ function createShownLookup(document, ui) {
|
|
|
347
444
|
if (type === 'group')
|
|
348
445
|
return groupShown(id);
|
|
349
446
|
const feature = document.getFeature(id);
|
|
350
|
-
if (!feature?.visible || ui.
|
|
447
|
+
if (!feature?.visible || ui.isHidden(id))
|
|
351
448
|
return false;
|
|
352
449
|
if (feature.groupId && !groupShown(feature.groupId))
|
|
353
450
|
return false;
|
|
@@ -361,7 +458,7 @@ function groupLayerId(document, group) {
|
|
|
361
458
|
if (feature)
|
|
362
459
|
return feature.layerId;
|
|
363
460
|
}
|
|
364
|
-
return document.
|
|
461
|
+
return document.listLayers().find((layer) => layer.items.includes(group.id))?.id;
|
|
365
462
|
}
|
|
366
463
|
/** Whether two coordinate values are equal, position by position */
|
|
367
464
|
function sameCoordinates(a, b) {
|
|
@@ -375,22 +472,16 @@ function sameCoordinates(a, b) {
|
|
|
375
472
|
}
|
|
376
473
|
return true;
|
|
377
474
|
}
|
|
378
|
-
/**
|
|
379
|
-
function
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
part.groupReorder = changes.groupReorder;
|
|
391
|
-
if (changes.metadata)
|
|
392
|
-
part.metadata = changes.metadata;
|
|
393
|
-
if (changes.uiStateChanged)
|
|
394
|
-
part.uiStateChanged = true;
|
|
395
|
-
return part;
|
|
475
|
+
/** Whether a feature of the contract gives `null` for an optional field */
|
|
476
|
+
function hasNullFeatureField(feature) {
|
|
477
|
+
return feature.groupId === null;
|
|
478
|
+
}
|
|
479
|
+
/** Whether a layer of the contract gives `null` for an optional field */
|
|
480
|
+
function hasNullLayerField(layer) {
|
|
481
|
+
return layer.metadata === null || layer.styleRule === null;
|
|
482
|
+
}
|
|
483
|
+
/** A notification of the contract without its source (the transaction here carries it) */
|
|
484
|
+
function withoutSource(changes) {
|
|
485
|
+
const { source: _source, ...rest } = changes;
|
|
486
|
+
return rest;
|
|
396
487
|
}
|
|
@@ -7,15 +7,20 @@
|
|
|
7
7
|
* visible, and rendering, hit testing and box selection respect it.
|
|
8
8
|
*
|
|
9
9
|
* A pure function with the same standing as lock.ts (isFeatureLocked). It does not change
|
|
10
|
-
* the shared data (feature.visible and so on) at all.
|
|
11
|
-
*
|
|
10
|
+
* the shared data (feature.visible and so on) at all. listFeaturesInOrder lists every feature,
|
|
11
|
+
* and the visible flags and local hiding are applied here.
|
|
12
12
|
*/
|
|
13
|
-
import type { Feature } from './types.js';
|
|
13
|
+
import type { Feature, Group, Layer } from './types.js';
|
|
14
14
|
/** The minimal interface that isLocallyHidden requires. */
|
|
15
15
|
export interface LocalHiddenStore {
|
|
16
|
-
|
|
16
|
+
isHidden(id: string): boolean;
|
|
17
|
+
}
|
|
18
|
+
/** The minimal interface that listShownFeatures requires. */
|
|
19
|
+
export interface OrderedStore {
|
|
20
|
+
listFeaturesInOrder(): Feature[];
|
|
21
|
+
getLayer(id: string): Layer | undefined;
|
|
22
|
+
getGroup(id: string): Group | undefined;
|
|
17
23
|
}
|
|
18
24
|
/** The minimal interface that getDisplayFeatures requires. */
|
|
19
|
-
export interface DisplayStore extends LocalHiddenStore {
|
|
20
|
-
getOrderedFeatures(): Feature[];
|
|
25
|
+
export interface DisplayStore extends LocalHiddenStore, OrderedStore {
|
|
21
26
|
}
|