@sakuzu/maplibre-gl-draw 1.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 +43 -0
- package/LICENSE +661 -0
- package/README.ja.md +248 -0
- package/README.md +255 -0
- package/THIRD_PARTY_NOTICES.md +275 -0
- package/dist/api/api.d.ts +1259 -0
- package/dist/api/api.js +86 -0
- package/dist/api/context.d.ts +173 -0
- package/dist/api/context.js +193 -0
- package/dist/api/display-api.d.ts +1 -0
- package/dist/api/display-api.js +23 -0
- package/dist/api/event-api.d.ts +13 -0
- package/dist/api/event-api.js +17 -0
- package/dist/api/extension-api.d.ts +46 -0
- package/dist/api/extension-api.js +85 -0
- package/dist/api/feature-api.d.ts +11 -0
- package/dist/api/feature-api.js +101 -0
- package/dist/api/geometry/apply.d.ts +51 -0
- package/dist/api/geometry/apply.js +114 -0
- package/dist/api/geometry/boolean.d.ts +28 -0
- package/dist/api/geometry/boolean.js +65 -0
- package/dist/api/geometry/buffer.d.ts +11 -0
- package/dist/api/geometry/buffer.js +105 -0
- package/dist/api/geometry/split.d.ts +16 -0
- package/dist/api/geometry/split.js +75 -0
- package/dist/api/geometry/targets.d.ts +76 -0
- package/dist/api/geometry/targets.js +158 -0
- package/dist/api/geometry/types.d.ts +31 -0
- package/dist/api/geometry/types.js +3 -0
- package/dist/api/geometry-operations.d.ts +162 -0
- package/dist/api/geometry-operations.js +94 -0
- package/dist/api/group-api.d.ts +10 -0
- package/dist/api/group-api.js +78 -0
- package/dist/api/import-export/constants.d.ts +29 -0
- package/dist/api/import-export/constants.js +40 -0
- package/dist/api/import-export/embedded-file.d.ts +13 -0
- package/dist/api/import-export/embedded-file.js +31 -0
- package/dist/api/import-export/file-name.d.ts +10 -0
- package/dist/api/import-export/file-name.js +20 -0
- package/dist/api/import-export/format-detection.d.ts +12 -0
- package/dist/api/import-export/format-detection.js +29 -0
- package/dist/api/import-export/geojson-export.d.ts +19 -0
- package/dist/api/import-export/geojson-export.js +262 -0
- package/dist/api/import-export/geojson-import.d.ts +34 -0
- package/dist/api/import-export/geojson-import.js +538 -0
- package/dist/api/import-export/geometry-validation.d.ts +20 -0
- package/dist/api/import-export/geometry-validation.js +107 -0
- package/dist/api/import-export/image-import.d.ts +12 -0
- package/dist/api/import-export/image-import.js +53 -0
- package/dist/api/import-export/index.d.ts +9 -0
- package/dist/api/import-export/index.js +107 -0
- package/dist/api/import-export/native-format.d.ts +15 -0
- package/dist/api/import-export/native-format.js +126 -0
- package/dist/api/import-export/native-validation.d.ts +28 -0
- package/dist/api/import-export/native-validation.js +212 -0
- package/dist/api/import-export/own-property.d.ts +10 -0
- package/dist/api/import-export/own-property.js +19 -0
- package/dist/api/import-export/style-validation.d.ts +27 -0
- package/dist/api/import-export/style-validation.js +49 -0
- package/dist/api/import-export/types.d.ts +26 -0
- package/dist/api/import-export/types.js +3 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.js +3 -0
- package/dist/api/input-api.d.ts +158 -0
- package/dist/api/input-api.js +144 -0
- package/dist/api/instance-api.d.ts +38 -0
- package/dist/api/instance-api.js +136 -0
- package/dist/api/layer-api.d.ts +12 -0
- package/dist/api/layer-api.js +62 -0
- package/dist/api/selection-api.d.ts +7 -0
- package/dist/api/selection-api.js +78 -0
- package/dist/api/snapping-api.d.ts +125 -0
- package/dist/api/snapping-api.js +50 -0
- package/dist/api/topology-api.d.ts +30 -0
- package/dist/api/topology-api.js +16 -0
- package/dist/api/tracing-api.d.ts +31 -0
- package/dist/api/tracing-api.js +16 -0
- package/dist/dispatcher/hit-test/box-strategies.d.ts +19 -0
- package/dist/dispatcher/hit-test/box-strategies.js +275 -0
- package/dist/dispatcher/hit-test/box-strategy.d.ts +59 -0
- package/dist/dispatcher/hit-test/box-strategy.js +37 -0
- package/dist/dispatcher/hit-test/globe-shape.d.ts +46 -0
- package/dist/dispatcher/hit-test/globe-shape.js +70 -0
- package/dist/dispatcher/hit-test/index.d.ts +14 -0
- package/dist/dispatcher/hit-test/index.js +9 -0
- package/dist/dispatcher/hit-test/local-frame.d.ts +77 -0
- package/dist/dispatcher/hit-test/local-frame.js +112 -0
- package/dist/dispatcher/hit-test/segment-grid.d.ts +32 -0
- package/dist/dispatcher/hit-test/segment-grid.js +79 -0
- package/dist/dispatcher/hit-test/service.d.ts +120 -0
- package/dist/dispatcher/hit-test/service.js +333 -0
- package/dist/dispatcher/hit-test/strategies/base.d.ts +136 -0
- package/dist/dispatcher/hit-test/strategies/base.js +66 -0
- package/dist/dispatcher/hit-test/strategies/circle.d.ts +10 -0
- package/dist/dispatcher/hit-test/strategies/circle.js +56 -0
- package/dist/dispatcher/hit-test/strategies/image.d.ts +22 -0
- package/dist/dispatcher/hit-test/strategies/image.js +115 -0
- package/dist/dispatcher/hit-test/strategies/index.d.ts +11 -0
- package/dist/dispatcher/hit-test/strategies/index.js +10 -0
- package/dist/dispatcher/hit-test/strategies/line.d.ts +17 -0
- package/dist/dispatcher/hit-test/strategies/line.js +30 -0
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +44 -0
- package/dist/dispatcher/hit-test/strategies/multi.js +141 -0
- package/dist/dispatcher/hit-test/strategies/point.d.ts +20 -0
- package/dist/dispatcher/hit-test/strategies/point.js +29 -0
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +52 -0
- package/dist/dispatcher/hit-test/strategies/polygon.js +138 -0
- package/dist/dispatcher/hit-test/topmost.d.ts +48 -0
- package/dist/dispatcher/hit-test/topmost.js +157 -0
- package/dist/dispatcher/hit-test/visibility-lookup.d.ts +23 -0
- package/dist/dispatcher/hit-test/visibility-lookup.js +40 -0
- package/dist/dispatcher/index.d.ts +15 -0
- package/dist/dispatcher/index.js +3 -0
- package/dist/dispatcher/input-router.d.ts +1 -0
- package/dist/dispatcher/input-router.js +288 -0
- package/dist/dispatcher/normalizer.d.ts +1 -0
- package/dist/dispatcher/normalizer.js +513 -0
- package/dist/dispatcher/types.d.ts +144 -0
- package/dist/dispatcher/types.js +15 -0
- package/dist/display/chunk-set.d.ts +24 -0
- package/dist/display/chunk-set.js +533 -0
- package/dist/display/chunk.d.ts +1 -0
- package/dist/display/chunk.js +104 -0
- package/dist/display/columnar/index.d.ts +12 -0
- package/dist/display/columnar/index.js +13 -0
- package/dist/display/columnar/prepare.d.ts +42 -0
- package/dist/display/columnar/prepare.js +116 -0
- package/dist/display/columnar/source.d.ts +1 -0
- package/dist/display/columnar/source.js +531 -0
- package/dist/display/columnar/table.d.ts +1 -0
- package/dist/display/columnar/table.js +471 -0
- package/dist/display/columnar/types.d.ts +223 -0
- package/dist/display/columnar/types.js +3 -0
- package/dist/display/dataset.d.ts +2 -0
- package/dist/display/dataset.js +891 -0
- package/dist/display/index.d.ts +13 -0
- package/dist/display/index.js +3 -0
- package/dist/display/interaction.d.ts +1 -0
- package/dist/display/interaction.js +90 -0
- package/dist/display/manager.d.ts +1 -0
- package/dist/display/manager.js +440 -0
- package/dist/display/packed-rtree.d.ts +1 -0
- package/dist/display/packed-rtree.js +244 -0
- package/dist/display/partition.d.ts +1 -0
- package/dist/display/partition.js +226 -0
- package/dist/display/provider.d.ts +1 -0
- package/dist/display/provider.js +342 -0
- package/dist/display/retained.d.ts +40 -0
- package/dist/display/retained.js +898 -0
- package/dist/display/selection.d.ts +13 -0
- package/dist/display/selection.js +226 -0
- package/dist/display/source.d.ts +1 -0
- package/dist/display/source.js +119 -0
- package/dist/display/spatial.d.ts +1 -0
- package/dist/display/spatial.js +71 -0
- package/dist/display/style.d.ts +1 -0
- package/dist/display/style.js +126 -0
- package/dist/display/thinning.d.ts +65 -0
- package/dist/display/thinning.js +910 -0
- package/dist/display/triangulation.d.ts +1 -0
- package/dist/display/triangulation.js +0 -0
- package/dist/display/types.d.ts +561 -0
- package/dist/display/types.js +43 -0
- package/dist/extension/feature-handler.d.ts +182 -0
- package/dist/extension/feature-handler.js +3 -0
- package/dist/extension/index.d.ts +9 -0
- package/dist/extension/index.js +3 -0
- package/dist/extension/renderers.d.ts +208 -0
- package/dist/extension/renderers.js +3 -0
- package/dist/geometry/angle.d.ts +47 -0
- package/dist/geometry/angle.js +44 -0
- package/dist/geometry/bbox.d.ts +48 -0
- package/dist/geometry/bbox.js +83 -0
- package/dist/geometry/boolean.d.ts +162 -0
- package/dist/geometry/boolean.js +331 -0
- package/dist/geometry/buffer.d.ts +72 -0
- package/dist/geometry/buffer.js +218 -0
- package/dist/geometry/circle.d.ts +55 -0
- package/dist/geometry/circle.js +107 -0
- package/dist/geometry/coords.d.ts +97 -0
- package/dist/geometry/coords.js +149 -0
- package/dist/geometry/distance.d.ts +79 -0
- package/dist/geometry/distance.js +111 -0
- package/dist/geometry/errors.d.ts +74 -0
- package/dist/geometry/errors.js +104 -0
- package/dist/geometry/index.d.ts +28 -0
- package/dist/geometry/index.js +38 -0
- package/dist/geometry/measure.d.ts +81 -0
- package/dist/geometry/measure.js +236 -0
- package/dist/geometry/predicates.d.ts +62 -0
- package/dist/geometry/predicates.js +132 -0
- package/dist/geometry/simplify.d.ts +74 -0
- package/dist/geometry/simplify.js +159 -0
- package/dist/geometry/split.d.ts +68 -0
- package/dist/geometry/split.js +430 -0
- package/dist/geometry/types.d.ts +95 -0
- package/dist/geometry/types.js +3 -0
- package/dist/geometry/units.d.ts +35 -0
- package/dist/geometry/units.js +41 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.js +20 -0
- package/dist/maplibre-gl-draw.d.ts +47 -0
- package/dist/maplibre-gl-draw.js +407 -0
- package/dist/messages.d.ts +64 -0
- package/dist/messages.js +36 -0
- package/dist/modes/cursor.d.ts +1 -0
- package/dist/modes/cursor.js +72 -0
- package/dist/modes/draw/circle.d.ts +1 -0
- package/dist/modes/draw/circle.js +222 -0
- package/dist/modes/draw/commit-layer.d.ts +26 -0
- package/dist/modes/draw/commit-layer.js +31 -0
- package/dist/modes/draw/freehand.d.ts +1 -0
- package/dist/modes/draw/freehand.js +264 -0
- package/dist/modes/draw/image.d.ts +1 -0
- package/dist/modes/draw/image.js +60 -0
- package/dist/modes/draw/index.d.ts +9 -0
- package/dist/modes/draw/index.js +11 -0
- package/dist/modes/draw/line.d.ts +1 -0
- package/dist/modes/draw/line.js +363 -0
- package/dist/modes/draw/point.d.ts +1 -0
- package/dist/modes/draw/point.js +87 -0
- package/dist/modes/draw/polygon.d.ts +1 -0
- package/dist/modes/draw/polygon.js +378 -0
- package/dist/modes/draw/trace-support.d.ts +79 -0
- package/dist/modes/draw/trace-support.js +161 -0
- package/dist/modes/handler.d.ts +285 -0
- package/dist/modes/handler.js +3 -0
- package/dist/modes/index.d.ts +7 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/manager.d.ts +15 -0
- package/dist/modes/manager.js +196 -0
- package/dist/modes/select/box-selection.d.ts +52 -0
- package/dist/modes/select/box-selection.js +140 -0
- package/dist/modes/select/click-handler.d.ts +32 -0
- package/dist/modes/select/click-handler.js +166 -0
- package/dist/modes/select/cursor-handler.d.ts +15 -0
- package/dist/modes/select/cursor-handler.js +59 -0
- package/dist/modes/select/drag/auxiliary.d.ts +26 -0
- package/dist/modes/select/drag/auxiliary.js +56 -0
- package/dist/modes/select/drag/intermediate-writes.d.ts +1 -0
- package/dist/modes/select/drag/intermediate-writes.js +171 -0
- package/dist/modes/select/drag/move.d.ts +24 -0
- package/dist/modes/select/drag/move.js +59 -0
- package/dist/modes/select/drag/operation.d.ts +30 -0
- package/dist/modes/select/drag/operation.js +18 -0
- package/dist/modes/select/drag/radius.d.ts +15 -0
- package/dist/modes/select/drag/radius.js +49 -0
- package/dist/modes/select/drag/transform.d.ts +17 -0
- package/dist/modes/select/drag/transform.js +155 -0
- package/dist/modes/select/drag/vertex.d.ts +17 -0
- package/dist/modes/select/drag/vertex.js +163 -0
- package/dist/modes/select/drag-handler.d.ts +1 -0
- package/dist/modes/select/drag-handler.js +254 -0
- package/dist/modes/select/hit-helpers.d.ts +40 -0
- package/dist/modes/select/hit-helpers.js +51 -0
- package/dist/modes/select/mode.d.ts +1 -0
- package/dist/modes/select/mode.js +397 -0
- package/dist/modes/select/shortcut-handler.d.ts +40 -0
- package/dist/modes/select/shortcut-handler.js +128 -0
- package/dist/operations/index.d.ts +9 -0
- package/dist/operations/index.js +3 -0
- package/dist/operations/layer-operations.d.ts +1 -0
- package/dist/operations/layer-operations.js +350 -0
- package/dist/operations/resize.d.ts +71 -0
- package/dist/operations/resize.js +252 -0
- package/dist/operations/rotate.d.ts +17 -0
- package/dist/operations/rotate.js +166 -0
- package/dist/operations/selection-operations.d.ts +20 -0
- package/dist/operations/selection-operations.js +159 -0
- package/dist/operations/shared-vertex.d.ts +1 -0
- package/dist/operations/shared-vertex.js +210 -0
- package/dist/operations/trace-graph.d.ts +96 -0
- package/dist/operations/trace-graph.js +283 -0
- package/dist/operations/vertex.d.ts +1 -0
- package/dist/operations/vertex.js +538 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/mutation-hooks.d.ts +28 -0
- package/dist/plugins/mutation-hooks.js +84 -0
- package/dist/plugins/plugin-context.d.ts +1 -0
- package/dist/plugins/plugin-context.js +367 -0
- package/dist/plugins/plugin-manager.d.ts +103 -0
- package/dist/plugins/plugin-manager.js +316 -0
- package/dist/plugins/plugin.d.ts +529 -0
- package/dist/plugins/plugin.js +3 -0
- package/dist/shared/config/constants.d.ts +66 -0
- package/dist/shared/config/constants.js +60 -0
- package/dist/shared/config/feature-style.d.ts +155 -0
- package/dist/shared/config/feature-style.js +154 -0
- package/dist/shared/config/index.d.ts +17 -0
- package/dist/shared/config/index.js +8 -0
- package/dist/shared/config/rendering.d.ts +107 -0
- package/dist/shared/config/rendering.js +33 -0
- package/dist/shared/config/selection-highlight.d.ts +29 -0
- package/dist/shared/config/selection-highlight.js +35 -0
- package/dist/shared/config/selection.d.ts +273 -0
- package/dist/shared/config/selection.js +266 -0
- package/dist/shared/config/topology.d.ts +33 -0
- package/dist/shared/config/topology.js +17 -0
- package/dist/shared/config/trace.d.ts +40 -0
- package/dist/shared/config/trace.js +17 -0
- package/dist/shared/math/angle.d.ts +21 -0
- package/dist/shared/math/angle.js +34 -0
- package/dist/shared/math/circle.d.ts +6 -0
- package/dist/shared/math/circle.js +10 -0
- package/dist/shared/math/constants.d.ts +48 -0
- package/dist/shared/math/constants.js +59 -0
- package/dist/shared/math/distance.d.ts +78 -0
- package/dist/shared/math/distance.js +147 -0
- package/dist/shared/math/globe-subdivision.d.ts +62 -0
- package/dist/shared/math/globe-subdivision.js +99 -0
- package/dist/shared/math/index.d.ts +17 -0
- package/dist/shared/math/index.js +21 -0
- package/dist/shared/math/intersection.d.ts +63 -0
- package/dist/shared/math/intersection.js +236 -0
- package/dist/shared/math/longitude.d.ts +20 -0
- package/dist/shared/math/longitude.js +31 -0
- package/dist/shared/math/mercator-plane.d.ts +27 -0
- package/dist/shared/math/mercator-plane.js +26 -0
- package/dist/shared/math/obb.d.ts +65 -0
- package/dist/shared/math/obb.js +107 -0
- package/dist/shared/math/rotation.d.ts +93 -0
- package/dist/shared/math/rotation.js +186 -0
- package/dist/shared/math/segment-grid.d.ts +69 -0
- package/dist/shared/math/segment-grid.js +159 -0
- package/dist/shared/math/transform.d.ts +140 -0
- package/dist/shared/math/transform.js +189 -0
- package/dist/shared/types/events.d.ts +128 -0
- package/dist/shared/types/events.js +3 -0
- package/dist/shared/types/model.d.ts +950 -0
- package/dist/shared/types/model.js +3 -0
- package/dist/shared/types/selection-box.d.ts +23 -0
- package/dist/shared/types/selection-box.js +3 -0
- package/dist/shared/types/style.d.ts +68 -0
- package/dist/shared/types/style.js +3 -0
- package/dist/shared/utils/color.d.ts +49 -0
- package/dist/shared/utils/color.js +180 -0
- package/dist/shared/utils/coordinates.d.ts +52 -0
- package/dist/shared/utils/coordinates.js +75 -0
- package/dist/shared/utils/embedded-image.d.ts +34 -0
- package/dist/shared/utils/embedded-image.js +161 -0
- package/dist/shared/utils/event-emitter.d.ts +262 -0
- package/dist/shared/utils/event-emitter.js +44 -0
- package/dist/shared/utils/feature-bbox.d.ts +8 -0
- package/dist/shared/utils/feature-bbox.js +207 -0
- package/dist/shared/utils/feature-segments.d.ts +23 -0
- package/dist/shared/utils/feature-segments.js +179 -0
- package/dist/shared/utils/id.d.ts +1 -0
- package/dist/shared/utils/id.js +35 -0
- package/dist/shared/utils/image.d.ts +34 -0
- package/dist/shared/utils/image.js +106 -0
- package/dist/shared/utils/index.d.ts +15 -0
- package/dist/shared/utils/index.js +24 -0
- package/dist/shared/utils/map.d.ts +26 -0
- package/dist/shared/utils/map.js +35 -0
- package/dist/shared/utils/name-generator.d.ts +197 -0
- package/dist/shared/utils/name-generator.js +337 -0
- package/dist/shared/utils/pixel-ratio.d.ts +111 -0
- package/dist/shared/utils/pixel-ratio.js +85 -0
- package/dist/shared/utils/property.d.ts +88 -0
- package/dist/shared/utils/property.js +140 -0
- package/dist/shared/utils/vertex-ref.d.ts +23 -0
- package/dist/shared/utils/vertex-ref.js +20 -0
- package/dist/snapping/custom-targets.d.ts +1 -0
- package/dist/snapping/custom-targets.js +21 -0
- package/dist/snapping/geometry.d.ts +1 -0
- package/dist/snapping/geometry.js +61 -0
- package/dist/snapping/index.d.ts +14 -0
- package/dist/snapping/index.js +4 -0
- package/dist/snapping/indicator.d.ts +19 -0
- package/dist/snapping/indicator.js +145 -0
- package/dist/snapping/providers/display.d.ts +72 -0
- package/dist/snapping/providers/display.js +268 -0
- package/dist/snapping/providers/guide.d.ts +69 -0
- package/dist/snapping/providers/guide.js +187 -0
- package/dist/snapping/providers/intersection.d.ts +1 -0
- package/dist/snapping/providers/intersection.js +92 -0
- package/dist/snapping/providers/shared.d.ts +39 -0
- package/dist/snapping/providers/shared.js +146 -0
- package/dist/snapping/providers/store.d.ts +1 -0
- package/dist/snapping/providers/store.js +132 -0
- package/dist/snapping/service.d.ts +1 -0
- package/dist/snapping/service.js +272 -0
- package/dist/snapping/types.d.ts +267 -0
- package/dist/snapping/types.js +66 -0
- package/dist/store/change-merger.d.ts +1 -0
- package/dist/store/change-merger.js +102 -0
- package/dist/store/draw-store.d.ts +1 -0
- package/dist/store/draw-store.js +396 -0
- package/dist/store/event-bridge.d.ts +1 -0
- package/dist/store/event-bridge.js +161 -0
- package/dist/store/index.d.ts +12 -0
- package/dist/store/index.js +4 -0
- package/dist/store/local-visibility.d.ts +21 -0
- package/dist/store/local-visibility.js +27 -0
- package/dist/store/lock.d.ts +67 -0
- package/dist/store/lock.js +54 -0
- package/dist/store/memory/change-bus.d.ts +60 -0
- package/dist/store/memory/change-bus.js +232 -0
- package/dist/store/memory/file-store.d.ts +15 -0
- package/dist/store/memory/file-store.js +33 -0
- package/dist/store/memory/frozen.d.ts +21 -0
- package/dist/store/memory/frozen.js +51 -0
- package/dist/store/memory/ui-state.d.ts +51 -0
- package/dist/store/memory/ui-state.js +223 -0
- package/dist/store/memory.d.ts +26 -0
- package/dist/store/memory.js +708 -0
- package/dist/store/spatial/index.d.ts +6 -0
- package/dist/store/spatial/index.js +4 -0
- package/dist/store/spatial/spatial-index.d.ts +90 -0
- package/dist/store/spatial/spatial-index.js +148 -0
- package/dist/store/spatial/store-spatial-index.d.ts +60 -0
- package/dist/store/spatial/store-spatial-index.js +125 -0
- package/dist/store/store.d.ts +417 -0
- package/dist/store/store.js +3 -0
- package/dist/store/types.d.ts +8 -0
- package/dist/store/types.js +3 -0
- package/dist/store/writable-layer.d.ts +35 -0
- package/dist/store/writable-layer.js +20 -0
- package/dist/view/cache/buffer.d.ts +28 -0
- package/dist/view/cache/buffer.js +176 -0
- package/dist/view/cache/earcut.d.ts +1 -0
- package/dist/view/cache/earcut.js +122 -0
- package/dist/view/cache/style-rule.d.ts +1 -0
- package/dist/view/cache/style-rule.js +97 -0
- package/dist/view/cache/terrain-fill.d.ts +30 -0
- package/dist/view/cache/terrain-fill.js +60 -0
- package/dist/view/cache/texture.d.ts +14 -0
- package/dist/view/cache/texture.js +292 -0
- package/dist/view/coordinator.d.ts +27 -0
- package/dist/view/coordinator.js +72 -0
- package/dist/view/feature-companion.d.ts +173 -0
- package/dist/view/feature-companion.js +108 -0
- package/dist/view/globe-subdivision.d.ts +78 -0
- package/dist/view/globe-subdivision.js +128 -0
- package/dist/view/index.d.ts +47 -0
- package/dist/view/index.js +20 -0
- package/dist/view/layer/attach.d.ts +20 -0
- package/dist/view/layer/attach.js +47 -0
- package/dist/view/layer/blend.d.ts +57 -0
- package/dist/view/layer/blend.js +14 -0
- package/dist/view/layer/custom-layer.d.ts +1 -0
- package/dist/view/layer/custom-layer.js +509 -0
- package/dist/view/layer/depth-state.d.ts +14 -0
- package/dist/view/layer/depth-state.js +44 -0
- package/dist/view/layer/display-list.d.ts +1 -0
- package/dist/view/layer/display-list.js +111 -0
- package/dist/view/layer/drape-planner.d.ts +139 -0
- package/dist/view/layer/drape-planner.js +726 -0
- package/dist/view/layer/frame-render.d.ts +57 -0
- package/dist/view/layer/frame-render.js +209 -0
- package/dist/view/layer/frame-state.d.ts +147 -0
- package/dist/view/layer/frame-state.js +484 -0
- package/dist/view/layer/gl-state.d.ts +77 -0
- package/dist/view/layer/gl-state.js +132 -0
- package/dist/view/layer/index.d.ts +6 -0
- package/dist/view/layer/index.js +5 -0
- package/dist/view/layer/render-scope.d.ts +30 -0
- package/dist/view/layer/render-scope.js +28 -0
- package/dist/view/layer/render.d.ts +87 -0
- package/dist/view/layer/render.js +187 -0
- package/dist/view/layer/renderers.d.ts +81 -0
- package/dist/view/layer/renderers.js +142 -0
- package/dist/view/layer/slot-manager.d.ts +26 -0
- package/dist/view/layer/slot-manager.js +133 -0
- package/dist/view/layer/slots.d.ts +33 -0
- package/dist/view/layer/slots.js +50 -0
- package/dist/view/layer/store-retained-bbox.d.ts +36 -0
- package/dist/view/layer/store-retained-bbox.js +188 -0
- package/dist/view/layer/store-retained-chunk.d.ts +97 -0
- package/dist/view/layer/store-retained-chunk.js +94 -0
- package/dist/view/layer/store-retained-classify.d.ts +34 -0
- package/dist/view/layer/store-retained-classify.js +88 -0
- package/dist/view/layer/store-retained-collect.d.ts +24 -0
- package/dist/view/layer/store-retained-collect.js +121 -0
- package/dist/view/layer/store-retained-coord-patch.d.ts +119 -0
- package/dist/view/layer/store-retained-coord-patch.js +168 -0
- package/dist/view/layer/store-retained-immediate.d.ts +63 -0
- package/dist/view/layer/store-retained-immediate.js +49 -0
- package/dist/view/layer/store-retained-invalidation.d.ts +96 -0
- package/dist/view/layer/store-retained-invalidation.js +192 -0
- package/dist/view/layer/store-retained.d.ts +198 -0
- package/dist/view/layer/store-retained.js +430 -0
- package/dist/view/layer/terrain-resolver.d.ts +1 -0
- package/dist/view/layer/terrain-resolver.js +174 -0
- package/dist/view/renderers/batch-manager.d.ts +61 -0
- package/dist/view/renderers/batch-manager.js +718 -0
- package/dist/view/renderers/draw-factors.d.ts +60 -0
- package/dist/view/renderers/draw-factors.js +35 -0
- package/dist/view/renderers/drawer.d.ts +1 -0
- package/dist/view/renderers/drawer.js +346 -0
- package/dist/view/renderers/image.d.ts +1 -0
- package/dist/view/renderers/image.js +255 -0
- package/dist/view/renderers/line/dash.d.ts +31 -0
- package/dist/view/renderers/line/dash.js +152 -0
- package/dist/view/renderers/line/line-geometry.d.ts +39 -0
- package/dist/view/renderers/line/line-geometry.js +460 -0
- package/dist/view/renderers/line/line-gl.d.ts +1 -0
- package/dist/view/renderers/line/line-gl.js +236 -0
- package/dist/view/renderers/line/line-shader.d.ts +1 -0
- package/dist/view/renderers/line/line-shader.js +364 -0
- package/dist/view/renderers/line/line-types.d.ts +43 -0
- package/dist/view/renderers/line/line-types.js +3 -0
- package/dist/view/renderers/line/line-uniforms.d.ts +1 -0
- package/dist/view/renderers/line/line-uniforms.js +390 -0
- package/dist/view/renderers/line/sdf-line.d.ts +92 -0
- package/dist/view/renderers/line/sdf-line.js +567 -0
- package/dist/view/renderers/point/billboard-depth.d.ts +10 -0
- package/dist/view/renderers/point/billboard-depth.js +56 -0
- package/dist/view/renderers/point/point-instance.d.ts +124 -0
- package/dist/view/renderers/point/point-instance.js +738 -0
- package/dist/view/renderers/point/point-sdf.d.ts +58 -0
- package/dist/view/renderers/point/point-sdf.js +170 -0
- package/dist/view/renderers/point/point-shape.d.ts +99 -0
- package/dist/view/renderers/point/point-shape.js +504 -0
- package/dist/view/renderers/point/point-style.d.ts +1 -0
- package/dist/view/renderers/point/point-style.js +46 -0
- package/dist/view/renderers/polygon/batch.d.ts +26 -0
- package/dist/view/renderers/polygon/batch.js +336 -0
- package/dist/view/renderers/polygon/earcut-input.d.ts +37 -0
- package/dist/view/renderers/polygon/earcut-input.js +55 -0
- package/dist/view/renderers/polygon/earcut-sliced.d.ts +69 -0
- package/dist/view/renderers/polygon/earcut-sliced.js +960 -0
- package/dist/view/renderers/polygon/fill.d.ts +74 -0
- package/dist/view/renderers/polygon/fill.js +251 -0
- package/dist/view/renderers/polygon/sdf-polygon.d.ts +62 -0
- package/dist/view/renderers/polygon/sdf-polygon.js +919 -0
- package/dist/view/renderers/polygon/terrain-cull.d.ts +3 -0
- package/dist/view/renderers/polygon/terrain-cull.js +14 -0
- package/dist/view/renderers/polygon/triangulator.d.ts +41 -0
- package/dist/view/renderers/polygon/triangulator.js +3 -0
- package/dist/view/renderers/retained.d.ts +43 -0
- package/dist/view/renderers/retained.js +3 -0
- package/dist/view/renderers/stroke.d.ts +121 -0
- package/dist/view/renderers/stroke.js +621 -0
- package/dist/view/shaders/frame.d.ts +8 -0
- package/dist/view/shaders/frame.js +37 -0
- package/dist/view/shaders/helpers.d.ts +238 -0
- package/dist/view/shaders/helpers.js +611 -0
- package/dist/view/shaders/initializer.d.ts +27 -0
- package/dist/view/shaders/initializer.js +125 -0
- package/dist/view/shaders/projection.d.ts +123 -0
- package/dist/view/shaders/projection.js +299 -0
- package/dist/view/shaders/quad-grid.d.ts +77 -0
- package/dist/view/shaders/quad-grid.js +128 -0
- package/dist/view/shaders/quad.d.ts +189 -0
- package/dist/view/shaders/quad.js +582 -0
- package/dist/view/shaders/retained-origin.d.ts +50 -0
- package/dist/view/shaders/retained-origin.js +67 -0
- package/dist/view/shaders/terrain-shade.d.ts +23 -0
- package/dist/view/shaders/terrain-shade.js +93 -0
- package/dist/view/style-rule.d.ts +166 -0
- package/dist/view/style-rule.js +300 -0
- package/dist/view/terrain/anchor.d.ts +135 -0
- package/dist/view/terrain/anchor.js +226 -0
- package/dist/view/terrain/context.d.ts +132 -0
- package/dist/view/terrain/context.js +437 -0
- package/dist/view/terrain/dem-atlas.d.ts +97 -0
- package/dist/view/terrain/dem-atlas.js +534 -0
- package/dist/view/terrain/detect.d.ts +126 -0
- package/dist/view/terrain/detect.js +198 -0
- package/dist/view/terrain/drape/bin-store.d.ts +179 -0
- package/dist/view/terrain/drape/bin-store.js +529 -0
- package/dist/view/terrain/drape/binning.d.ts +259 -0
- package/dist/view/terrain/drape/binning.js +604 -0
- package/dist/view/terrain/drape/edge-constrain.d.ts +37 -0
- package/dist/view/terrain/drape/edge-constrain.js +175 -0
- package/dist/view/terrain/drape/geometry.d.ts +95 -0
- package/dist/view/terrain/drape/geometry.js +260 -0
- package/dist/view/terrain/drape/mesh.d.ts +50 -0
- package/dist/view/terrain/drape/mesh.js +86 -0
- package/dist/view/terrain/drape/pass.d.ts +122 -0
- package/dist/view/terrain/drape/pass.js +379 -0
- package/dist/view/terrain/drape/quad-glyphs.d.ts +64 -0
- package/dist/view/terrain/drape/quad-glyphs.js +117 -0
- package/dist/view/terrain/drape/quad.d.ts +249 -0
- package/dist/view/terrain/drape/quad.js +835 -0
- package/dist/view/terrain/drape/renderer.d.ts +184 -0
- package/dist/view/terrain/drape/renderer.js +706 -0
- package/dist/view/terrain/drape/shared.d.ts +80 -0
- package/dist/view/terrain/drape/shared.js +173 -0
- package/dist/view/terrain/drape/stitch.d.ts +155 -0
- package/dist/view/terrain/drape/stitch.js +228 -0
- package/dist/view/terrain/ground.d.ts +72 -0
- package/dist/view/terrain/ground.js +151 -0
- package/dist/view/terrain/metrics.d.ts +180 -0
- package/dist/view/terrain/metrics.js +231 -0
- package/dist/view/terrain/occlusion.d.ts +11 -0
- package/dist/view/terrain/occlusion.js +129 -0
- package/dist/view/terrain/polygon.d.ts +86 -0
- package/dist/view/terrain/polygon.js +301 -0
- package/dist/view/terrain/shade.d.ts +48 -0
- package/dist/view/terrain/shade.js +45 -0
- package/dist/view/terrain/state.d.ts +99 -0
- package/dist/view/terrain/state.js +186 -0
- package/dist/view/terrain/tessellation.d.ts +265 -0
- package/dist/view/terrain/tessellation.js +924 -0
- package/dist/view/terrain/tiling.d.ts +56 -0
- package/dist/view/terrain/tiling.js +155 -0
- package/dist/view/terrain/upstream-terrain.d.ts +82 -0
- package/dist/view/terrain/upstream-terrain.js +116 -0
- package/dist/view/ui/auxiliary-handles.d.ts +151 -0
- package/dist/view/ui/auxiliary-handles.js +22 -0
- package/dist/view/ui/bounds.d.ts +53 -0
- package/dist/view/ui/bounds.js +149 -0
- package/dist/view/ui/box-selection.d.ts +1 -0
- package/dist/view/ui/box-selection.js +83 -0
- package/dist/view/ui/handle-test.d.ts +1 -0
- package/dist/view/ui/handle-test.js +437 -0
- package/dist/view/ui/handle-thinning.d.ts +122 -0
- package/dist/view/ui/handle-thinning.js +430 -0
- package/dist/view/ui/handles.d.ts +25 -0
- package/dist/view/ui/handles.js +673 -0
- package/dist/view/ui/helper.d.ts +19 -0
- package/dist/view/ui/helper.js +76 -0
- package/dist/view/ui/index.d.ts +15 -0
- package/dist/view/ui/index.js +15 -0
- package/dist/view/ui/selection-scope.d.ts +25 -0
- package/dist/view/ui/selection-scope.js +34 -0
- package/dist/view/ui/selection-ui/bounding-box.d.ts +44 -0
- package/dist/view/ui/selection-ui/bounding-box.js +240 -0
- package/dist/view/ui/selection-ui/extension-registry.d.ts +76 -0
- package/dist/view/ui/selection-ui/extension-registry.js +78 -0
- package/dist/view/ui/selection-ui/index.d.ts +12 -0
- package/dist/view/ui/selection-ui/index.js +12 -0
- package/dist/view/ui/selection-ui/renderer.d.ts +29 -0
- package/dist/view/ui/selection-ui/renderer.js +227 -0
- package/dist/view/ui/selection-ui/types.d.ts +55 -0
- package/dist/view/ui/selection-ui/types.js +3 -0
- package/dist/view/ui/selection-ui-drawer.d.ts +52 -0
- package/dist/view/ui/selection-ui-drawer.js +329 -0
- package/dist/view/ui/tentative.d.ts +1 -0
- package/dist/view/ui/tentative.js +320 -0
- package/dist/view/viewport.d.ts +119 -0
- package/dist/view/viewport.js +254 -0
- package/package.json +113 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
4
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
5
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
6
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
7
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
8
|
+
};
|
|
9
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
10
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
13
|
+
};
|
|
14
|
+
var _DrawStore_instances, _DrawStore_document, _DrawStore_bus, _DrawStore_ui, _DrawStore_write, _DrawStore_receive, _DrawStore_forget, _DrawStore_pruneInvisible, _DrawStore_pruneVertices;
|
|
15
|
+
/**
|
|
16
|
+
* DrawStore
|
|
17
|
+
*
|
|
18
|
+
* The Store core works with: a DocumentStore (the in-memory one, or one the host gave) and
|
|
19
|
+
* the local UiState of this client behind one gate.
|
|
20
|
+
*
|
|
21
|
+
* - Read-only is enforced here, at the write methods, and nowhere else. A refused write
|
|
22
|
+
* returns false and touches nothing. The DocumentStore never sees the gate, so changes
|
|
23
|
+
* applied to the document from elsewhere are not stopped by it.
|
|
24
|
+
* - The notifications of the document are forwarded into the ChangeBus of the local state,
|
|
25
|
+
* so a listener gets one StateChanges per transaction with both kinds of change.
|
|
26
|
+
* - Deletions reach the local state: the id of a deleted feature, group or layer leaves the
|
|
27
|
+
* selection, the features being edited and the locally hidden set, whatever deleted it.
|
|
28
|
+
* - The selection holds only what can be seen: a change that hides a selected item (its own
|
|
29
|
+
* visible flag, the one of its group or layer, or local hiding) takes it out of the
|
|
30
|
+
* selection, and the vertex selection ends when its feature is deleted or its coordinates
|
|
31
|
+
* change other than by a drag. This is the only place that keeps these invariants; the
|
|
32
|
+
* modes and the public API rely on it.
|
|
33
|
+
*/
|
|
34
|
+
import { ChangeBus } from './memory/change-bus.js';
|
|
35
|
+
import { MemoryUiState } from './memory/ui-state.js';
|
|
36
|
+
/**
|
|
37
|
+
* Returns the Store for a store option: a Store is used as it is, a DocumentStore gets the
|
|
38
|
+
* local state and the read-only gate of core around it
|
|
39
|
+
*
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
export function toStore(store) {
|
|
43
|
+
return store instanceof DrawStore ? store : new DrawStore(store);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The Store of core over a DocumentStore
|
|
47
|
+
*
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
50
|
+
export class DrawStore {
|
|
51
|
+
constructor(document) {
|
|
52
|
+
_DrawStore_instances.add(this);
|
|
53
|
+
_DrawStore_document.set(this, void 0);
|
|
54
|
+
_DrawStore_bus.set(this, new ChangeBus());
|
|
55
|
+
_DrawStore_ui.set(this, new MemoryUiState(__classPrivateFieldGet(this, _DrawStore_bus, "f")));
|
|
56
|
+
__classPrivateFieldSet(this, _DrawStore_document, document, "f");
|
|
57
|
+
document.subscribe((changes) => __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_receive).call(this, changes));
|
|
58
|
+
}
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// The document: reads
|
|
61
|
+
// ============================================================================
|
|
62
|
+
getFeature(id) {
|
|
63
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(id);
|
|
64
|
+
}
|
|
65
|
+
getAllFeatures() {
|
|
66
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllFeatures();
|
|
67
|
+
}
|
|
68
|
+
getOrderedFeatures() {
|
|
69
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getOrderedFeatures();
|
|
70
|
+
}
|
|
71
|
+
getLayer(id) {
|
|
72
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getLayer(id);
|
|
73
|
+
}
|
|
74
|
+
getAllLayers() {
|
|
75
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllLayers();
|
|
76
|
+
}
|
|
77
|
+
getLayerOrder() {
|
|
78
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getLayerOrder();
|
|
79
|
+
}
|
|
80
|
+
getGroup(id) {
|
|
81
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getGroup(id);
|
|
82
|
+
}
|
|
83
|
+
getAllGroups() {
|
|
84
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllGroups();
|
|
85
|
+
}
|
|
86
|
+
getFile(id) {
|
|
87
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getFile(id);
|
|
88
|
+
}
|
|
89
|
+
getAllFiles() {
|
|
90
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getAllFiles();
|
|
91
|
+
}
|
|
92
|
+
getMetadata() {
|
|
93
|
+
return __classPrivateFieldGet(this, _DrawStore_document, "f").getMetadata();
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// The document: writes (gated by read-only)
|
|
97
|
+
// ============================================================================
|
|
98
|
+
createFeature(feature) {
|
|
99
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createFeature(feature));
|
|
100
|
+
}
|
|
101
|
+
updateFeature(id, updates, options) {
|
|
102
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateFeature(id, updates, options));
|
|
103
|
+
}
|
|
104
|
+
abortIntermediateUpdates(ids) {
|
|
105
|
+
__classPrivateFieldGet(this, _DrawStore_document, "f").abortIntermediateUpdates?.(ids);
|
|
106
|
+
}
|
|
107
|
+
deleteFeature(id) {
|
|
108
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => {
|
|
109
|
+
__classPrivateFieldGet(this, _DrawStore_document, "f").deleteFeature(id);
|
|
110
|
+
// At once, so that the rest of a transaction already sees the selection without it
|
|
111
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, id);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
createLayer(layer) {
|
|
115
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createLayer(layer));
|
|
116
|
+
}
|
|
117
|
+
updateLayer(id, updates) {
|
|
118
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateLayer(id, updates));
|
|
119
|
+
}
|
|
120
|
+
deleteLayer(id) {
|
|
121
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteLayer(id));
|
|
122
|
+
}
|
|
123
|
+
setLayerOrder(order) {
|
|
124
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").setLayerOrder(order));
|
|
125
|
+
}
|
|
126
|
+
reorderInLayer(itemId, layerId, newIndex) {
|
|
127
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").reorderInLayer(itemId, layerId, newIndex));
|
|
128
|
+
}
|
|
129
|
+
reorderInGroup(featureId, groupId, newIndex) {
|
|
130
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").reorderInGroup(featureId, groupId, newIndex));
|
|
131
|
+
}
|
|
132
|
+
createGroup(group) {
|
|
133
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createGroup(group));
|
|
134
|
+
}
|
|
135
|
+
updateGroup(id, updates) {
|
|
136
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").updateGroup(id, updates));
|
|
137
|
+
}
|
|
138
|
+
deleteGroup(id) {
|
|
139
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteGroup(id));
|
|
140
|
+
}
|
|
141
|
+
createFile(file) {
|
|
142
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").createFile(file));
|
|
143
|
+
}
|
|
144
|
+
deleteFile(id) {
|
|
145
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").deleteFile(id));
|
|
146
|
+
}
|
|
147
|
+
setMetadata(metadata) {
|
|
148
|
+
return __classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_write).call(this, () => __classPrivateFieldGet(this, _DrawStore_document, "f").setMetadata(metadata));
|
|
149
|
+
}
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// The local state
|
|
152
|
+
// ============================================================================
|
|
153
|
+
getSelection() {
|
|
154
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelection();
|
|
155
|
+
}
|
|
156
|
+
setSelection(type, ids) {
|
|
157
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setSelection(type, ids);
|
|
158
|
+
}
|
|
159
|
+
getEditingIds() {
|
|
160
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getEditingIds();
|
|
161
|
+
}
|
|
162
|
+
startEditing(ids) {
|
|
163
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").startEditing(ids);
|
|
164
|
+
}
|
|
165
|
+
endEditing(ids) {
|
|
166
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").endEditing(ids);
|
|
167
|
+
}
|
|
168
|
+
getTentative() {
|
|
169
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getTentative();
|
|
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();
|
|
188
|
+
}
|
|
189
|
+
setSelectedVertices(selection) {
|
|
190
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(selection);
|
|
191
|
+
}
|
|
192
|
+
getFollowedVertices() {
|
|
193
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getFollowedVertices();
|
|
194
|
+
}
|
|
195
|
+
setFollowedVertices(selections) {
|
|
196
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setFollowedVertices(selections);
|
|
197
|
+
}
|
|
198
|
+
getMode() {
|
|
199
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getMode();
|
|
200
|
+
}
|
|
201
|
+
setMode(mode) {
|
|
202
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setMode(mode);
|
|
203
|
+
}
|
|
204
|
+
isReadOnly() {
|
|
205
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").isReadOnly();
|
|
206
|
+
}
|
|
207
|
+
setReadOnly(value) {
|
|
208
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setReadOnly(value);
|
|
209
|
+
}
|
|
210
|
+
isInteractionLocked() {
|
|
211
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").isInteractionLocked();
|
|
212
|
+
}
|
|
213
|
+
setInteractionLock(value) {
|
|
214
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setInteractionLock(value);
|
|
215
|
+
}
|
|
216
|
+
isLocallyHidden(id) {
|
|
217
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").isLocallyHidden(id);
|
|
218
|
+
}
|
|
219
|
+
getLocallyHidden() {
|
|
220
|
+
return __classPrivateFieldGet(this, _DrawStore_ui, "f").getLocallyHidden();
|
|
221
|
+
}
|
|
222
|
+
setLocallyHidden(id, hidden) {
|
|
223
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
|
|
224
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setLocallyHidden(id, hidden);
|
|
225
|
+
if (hidden)
|
|
226
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
|
|
227
|
+
}, 'local');
|
|
228
|
+
}
|
|
229
|
+
// ============================================================================
|
|
230
|
+
// Subscription and transactions
|
|
231
|
+
// ============================================================================
|
|
232
|
+
subscribe(listener) {
|
|
233
|
+
return __classPrivateFieldGet(this, _DrawStore_bus, "f").subscribe(listener);
|
|
234
|
+
}
|
|
235
|
+
transact(fn, source = 'local') {
|
|
236
|
+
return __classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => __classPrivateFieldGet(this, _DrawStore_document, "f").transact(fn, source), source);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
_DrawStore_document = new WeakMap(), _DrawStore_bus = new WeakMap(), _DrawStore_ui = new WeakMap(), _DrawStore_instances = new WeakSet(), _DrawStore_write = function _DrawStore_write(fn) {
|
|
240
|
+
if (__classPrivateFieldGet(this, _DrawStore_ui, "f").isReadOnly())
|
|
241
|
+
return false;
|
|
242
|
+
this.transact(fn);
|
|
243
|
+
return true;
|
|
244
|
+
}, _DrawStore_receive = function _DrawStore_receive(changes) {
|
|
245
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").transact(() => {
|
|
246
|
+
__classPrivateFieldGet(this, _DrawStore_bus, "f").merge(documentPart(changes));
|
|
247
|
+
for (const feature of changes.features?.deleted ?? [])
|
|
248
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, feature.id);
|
|
249
|
+
for (const group of changes.groups?.deleted ?? [])
|
|
250
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, group.id);
|
|
251
|
+
for (const layer of changes.layers?.deleted ?? [])
|
|
252
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_forget).call(this, layer.id);
|
|
253
|
+
if (mayHide(changes))
|
|
254
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneInvisible).call(this);
|
|
255
|
+
__classPrivateFieldGet(this, _DrawStore_instances, "m", _DrawStore_pruneVertices).call(this, changes);
|
|
256
|
+
}, changes.source ?? 'local');
|
|
257
|
+
}, _DrawStore_forget = function _DrawStore_forget(id) {
|
|
258
|
+
if (__classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(id) || __classPrivateFieldGet(this, _DrawStore_document, "f").getGroup(id))
|
|
259
|
+
return;
|
|
260
|
+
if (__classPrivateFieldGet(this, _DrawStore_document, "f").getLayer(id))
|
|
261
|
+
return;
|
|
262
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromSelection(id);
|
|
263
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromEditing(id);
|
|
264
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").removeFromLocallyHidden(id);
|
|
265
|
+
}, _DrawStore_pruneInvisible = function _DrawStore_pruneInvisible() {
|
|
266
|
+
const selection = __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelection();
|
|
267
|
+
const type = selection.type;
|
|
268
|
+
if (type === null || selection.ids.length === 0)
|
|
269
|
+
return;
|
|
270
|
+
const shown = createShownLookup(__classPrivateFieldGet(this, _DrawStore_document, "f"), __classPrivateFieldGet(this, _DrawStore_ui, "f"));
|
|
271
|
+
const kept = selection.ids.filter((id) => shown(type, id));
|
|
272
|
+
if (kept.length !== selection.ids.length) {
|
|
273
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setSelection(kept.length > 0 ? type : null, kept);
|
|
274
|
+
}
|
|
275
|
+
}, _DrawStore_pruneVertices = function _DrawStore_pruneVertices(changes) {
|
|
276
|
+
const vertices = __classPrivateFieldGet(this, _DrawStore_ui, "f").getSelectedVertices();
|
|
277
|
+
if (!vertices)
|
|
278
|
+
return;
|
|
279
|
+
const featureId = vertices.featureId;
|
|
280
|
+
if (!__classPrivateFieldGet(this, _DrawStore_document, "f").getFeature(featureId)) {
|
|
281
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(null);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const local = changes.source !== 'remote';
|
|
285
|
+
for (const entry of changes.features?.updated ?? []) {
|
|
286
|
+
if (entry.id !== featureId)
|
|
287
|
+
continue;
|
|
288
|
+
// The frames and the commit of a local drag keep the vertices being dragged selected
|
|
289
|
+
if (local && (entry.isIntermediate || __classPrivateFieldGet(this, _DrawStore_ui, "f").getDragState() !== null))
|
|
290
|
+
continue;
|
|
291
|
+
if (sameCoordinates(entry.feature.coordinates, entry.previous.coordinates))
|
|
292
|
+
continue;
|
|
293
|
+
__classPrivateFieldGet(this, _DrawStore_ui, "f").setSelectedVertices(null);
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
/**
|
|
298
|
+
* Whether a notification can hide something that was visible: a change of the visible flag
|
|
299
|
+
* of a feature, or of its place (a feature moved into a hidden layer or group), and any
|
|
300
|
+
* update of a group or a layer
|
|
301
|
+
*/
|
|
302
|
+
function mayHide(changes) {
|
|
303
|
+
if (changes.layers?.updated?.length || changes.groups?.updated?.length)
|
|
304
|
+
return true;
|
|
305
|
+
for (const { feature, previous } of changes.features?.updated ?? []) {
|
|
306
|
+
if (feature.visible !== previous.visible)
|
|
307
|
+
return true;
|
|
308
|
+
if (feature.layerId !== previous.layerId || feature.groupId !== previous.groupId)
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Whether a selected item can be seen: it exists, its own visible flag and the ones of its
|
|
315
|
+
* group and layer are on, and neither it nor its group nor its layer is hidden locally.
|
|
316
|
+
* Each layer and group is looked up once per call site (a document can take time to read a
|
|
317
|
+
* layer).
|
|
318
|
+
*/
|
|
319
|
+
function createShownLookup(document, ui) {
|
|
320
|
+
const layers = new Map();
|
|
321
|
+
const groups = new Map();
|
|
322
|
+
const layerShown = (id) => {
|
|
323
|
+
let shown = layers.get(id);
|
|
324
|
+
if (shown === undefined) {
|
|
325
|
+
const layer = document.getLayer(id);
|
|
326
|
+
shown = layer?.visible === true && !ui.isLocallyHidden(id);
|
|
327
|
+
layers.set(id, shown);
|
|
328
|
+
}
|
|
329
|
+
return shown;
|
|
330
|
+
};
|
|
331
|
+
const groupShown = (id) => {
|
|
332
|
+
let shown = groups.get(id);
|
|
333
|
+
if (shown === undefined) {
|
|
334
|
+
const group = document.getGroup(id);
|
|
335
|
+
const layerId = group ? groupLayerId(document, group) : undefined;
|
|
336
|
+
shown =
|
|
337
|
+
group?.visible === true &&
|
|
338
|
+
!ui.isLocallyHidden(id) &&
|
|
339
|
+
(layerId === undefined || layerShown(layerId));
|
|
340
|
+
groups.set(id, shown);
|
|
341
|
+
}
|
|
342
|
+
return shown;
|
|
343
|
+
};
|
|
344
|
+
return (type, id) => {
|
|
345
|
+
if (type === 'layer')
|
|
346
|
+
return layerShown(id);
|
|
347
|
+
if (type === 'group')
|
|
348
|
+
return groupShown(id);
|
|
349
|
+
const feature = document.getFeature(id);
|
|
350
|
+
if (!feature?.visible || ui.isLocallyHidden(id))
|
|
351
|
+
return false;
|
|
352
|
+
if (feature.groupId && !groupShown(feature.groupId))
|
|
353
|
+
return false;
|
|
354
|
+
return layerShown(feature.layerId);
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
/** The layer of a group: the one of its members, or the layer that lists an empty group */
|
|
358
|
+
function groupLayerId(document, group) {
|
|
359
|
+
for (const featureId of group.featureIds) {
|
|
360
|
+
const feature = document.getFeature(featureId);
|
|
361
|
+
if (feature)
|
|
362
|
+
return feature.layerId;
|
|
363
|
+
}
|
|
364
|
+
return document.getAllLayers().find((layer) => layer.order.includes(group.id))?.id;
|
|
365
|
+
}
|
|
366
|
+
/** Whether two coordinate values are equal, position by position */
|
|
367
|
+
function sameCoordinates(a, b) {
|
|
368
|
+
if (a === b)
|
|
369
|
+
return true;
|
|
370
|
+
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
|
|
371
|
+
return false;
|
|
372
|
+
for (let i = 0; i < a.length; i++) {
|
|
373
|
+
if (!sameCoordinates(a[i], b[i]))
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
/** The categories of a notification that belong to the document */
|
|
379
|
+
function documentPart(changes) {
|
|
380
|
+
const part = {};
|
|
381
|
+
if (changes.features)
|
|
382
|
+
part.features = changes.features;
|
|
383
|
+
if (changes.layers)
|
|
384
|
+
part.layers = changes.layers;
|
|
385
|
+
if (changes.groups)
|
|
386
|
+
part.groups = changes.groups;
|
|
387
|
+
if (changes.layerReorder)
|
|
388
|
+
part.layerReorder = changes.layerReorder;
|
|
389
|
+
if (changes.groupReorder)
|
|
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;
|
|
396
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* EventBridge implementation
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export class EventBridgeImpl {
|
|
9
|
+
constructor(store, emitter) {
|
|
10
|
+
Object.defineProperty(this, "store", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
writable: true,
|
|
14
|
+
value: store
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(this, "emitter", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
writable: true,
|
|
20
|
+
value: emitter
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(this, "unsubscribe", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: true,
|
|
25
|
+
writable: true,
|
|
26
|
+
value: null
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
start() {
|
|
30
|
+
if (this.unsubscribe)
|
|
31
|
+
return;
|
|
32
|
+
this.unsubscribe = this.store.subscribe((changes) => {
|
|
33
|
+
this.handleChanges(changes);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
stop() {
|
|
37
|
+
if (this.unsubscribe) {
|
|
38
|
+
this.unsubscribe();
|
|
39
|
+
this.unsubscribe = null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
handleChanges(changes) {
|
|
43
|
+
// Every change is emitted as its own event, whatever the source: a subscriber that keeps
|
|
44
|
+
// another copy in sync (a server, an index) needs each of them. A subscriber that only
|
|
45
|
+
// rebuilds a view on any change subscribes to features.change instead, which comes once
|
|
46
|
+
// per flush, so a bulk load of N features does not cost it N rebuilds.
|
|
47
|
+
const features = changes.features;
|
|
48
|
+
if (features) {
|
|
49
|
+
const created = [...(features.created ?? [])];
|
|
50
|
+
const updated = (features.updated ?? []).map(({ feature, previous }) => ({
|
|
51
|
+
feature,
|
|
52
|
+
previous,
|
|
53
|
+
}));
|
|
54
|
+
const deleted = [...(features.deleted ?? [])];
|
|
55
|
+
for (const feature of created) {
|
|
56
|
+
this.emitter.emit('feature.create', { feature });
|
|
57
|
+
}
|
|
58
|
+
for (const payload of updated) {
|
|
59
|
+
this.emitter.emit('feature.update', payload);
|
|
60
|
+
}
|
|
61
|
+
for (const feature of deleted) {
|
|
62
|
+
this.emitter.emit('feature.delete', { feature });
|
|
63
|
+
}
|
|
64
|
+
if (created.length > 0 || updated.length > 0 || deleted.length > 0) {
|
|
65
|
+
this.emitter.emit('features.change', {
|
|
66
|
+
created,
|
|
67
|
+
updated,
|
|
68
|
+
deleted,
|
|
69
|
+
source: changes.source ?? 'local',
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Layer events
|
|
74
|
+
if (changes.layers) {
|
|
75
|
+
if (changes.layers.created) {
|
|
76
|
+
for (const layer of changes.layers.created) {
|
|
77
|
+
this.emitter.emit('layer.create', { layer });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (changes.layers.updated) {
|
|
81
|
+
for (const { layer, previous } of changes.layers.updated) {
|
|
82
|
+
this.emitter.emit('layer.update', { layer, previous });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (changes.layers.deleted) {
|
|
86
|
+
for (const layer of changes.layers.deleted) {
|
|
87
|
+
this.emitter.emit('layer.delete', { layer });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (changes.layers.orderChanged) {
|
|
91
|
+
this.emitter.emit('layer.reorder', {
|
|
92
|
+
order: changes.layers.orderChanged.order,
|
|
93
|
+
previous: changes.layers.orderChanged.previous,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Group events
|
|
98
|
+
if (changes.groups) {
|
|
99
|
+
if (changes.groups.created) {
|
|
100
|
+
for (const group of changes.groups.created) {
|
|
101
|
+
this.emitter.emit('group.create', { group });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (changes.groups.updated) {
|
|
105
|
+
for (const { group, previous } of changes.groups.updated) {
|
|
106
|
+
this.emitter.emit('group.update', { group, previous });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (changes.groups.deleted) {
|
|
110
|
+
for (const group of changes.groups.deleted) {
|
|
111
|
+
this.emitter.emit('group.delete', { group });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Layer reorder event (reordering within a layer)
|
|
116
|
+
if (changes.layerReorder) {
|
|
117
|
+
// Emitted as a layer.update event (in order to update the UI)
|
|
118
|
+
const layer = this.store.getLayer(changes.layerReorder.layerId);
|
|
119
|
+
if (layer) {
|
|
120
|
+
this.emitter.emit('layer.update', {
|
|
121
|
+
layer,
|
|
122
|
+
previous: { ...layer, order: changes.layerReorder.previous },
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Group reorder event (reordering within a group)
|
|
127
|
+
if (changes.groupReorder) {
|
|
128
|
+
// Emitted as a group.update event (in order to update the UI)
|
|
129
|
+
const group = this.store.getGroup(changes.groupReorder.groupId);
|
|
130
|
+
if (group) {
|
|
131
|
+
this.emitter.emit('group.update', {
|
|
132
|
+
group,
|
|
133
|
+
previous: { ...group, featureIds: changes.groupReorder.previous },
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Selection event
|
|
138
|
+
if (changes.selection) {
|
|
139
|
+
this.emitter.emit('selection.change', {
|
|
140
|
+
type: changes.selection.type,
|
|
141
|
+
ids: changes.selection.ids,
|
|
142
|
+
previousType: changes.selection.previousType,
|
|
143
|
+
previousIds: changes.selection.previousIds,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
// Mode event
|
|
147
|
+
if (changes.mode) {
|
|
148
|
+
this.emitter.emit('mode.change', {
|
|
149
|
+
mode: changes.mode.mode,
|
|
150
|
+
previousMode: changes.mode.previous,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// Metadata event
|
|
154
|
+
if (changes.metadata) {
|
|
155
|
+
this.emitter.emit('metadata.change', {
|
|
156
|
+
metadata: changes.metadata.metadata,
|
|
157
|
+
previous: changes.metadata.previous,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store module
|
|
3
|
+
*
|
|
4
|
+
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
5
|
+
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
6
|
+
*/
|
|
7
|
+
export type { FeatureLockStore, InteractionGateStore } from './lock.js';
|
|
8
|
+
export { isFeatureLocked, isGroupLocked, isInteractionBlocked } from './lock.js';
|
|
9
|
+
export { MemoryStore } from './memory.js';
|
|
10
|
+
export type { SpatialQuery } from './spatial/spatial-index.js';
|
|
11
|
+
export type { DocumentStore, Store, StoreView, UiState } from './store.js';
|
|
12
|
+
export type { BoundingBox, BoundingBoxCoordsSimple, BoxSelection, Coordinate, Data, DragOperationType, DragState, ExportFormat, ExportOptions, ExportResult, Feature, FeatureCoordinates, FeatureInput, FeatureStyle, FeatureType, FileData, Group, ImageProperties, ImageStyle, Layer, LoadOptions, LoadResult, Metadata, Mode, RotateInfo, Selection, SelectionType, SkippedFeature, StateChanges, StyleRule, TentativeState, UpdateFeatureOptions, UpdateSource, VertexRef, VertexSelection, } from './types.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derivation of local visibility
|
|
3
|
+
*
|
|
4
|
+
* Resolves the visibility hidden only on this client (the set accumulated by
|
|
5
|
+
* setLocallyHidden) through a 3-step cascade of the feature (the ids of itself / the
|
|
6
|
+
* group it belongs to / the layer it belongs to). It is a layer separate from the shared
|
|
7
|
+
* visible, and rendering, hit testing and box selection respect it.
|
|
8
|
+
*
|
|
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. getOrderedFeatures is kept pure and
|
|
11
|
+
* this is derived separately here.
|
|
12
|
+
*/
|
|
13
|
+
import type { Feature } from './types.js';
|
|
14
|
+
/** The minimal interface that isLocallyHidden requires. */
|
|
15
|
+
export interface LocalHiddenStore {
|
|
16
|
+
isLocallyHidden(id: string): boolean;
|
|
17
|
+
}
|
|
18
|
+
/** The minimal interface that getDisplayFeatures requires. */
|
|
19
|
+
export interface DisplayStore extends LocalHiddenStore {
|
|
20
|
+
getOrderedFeatures(): Feature[];
|
|
21
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Whether the feature is locally hidden on this client (true if itself / the group it
|
|
5
|
+
* belongs to / the layer it belongs to is in the hidden set).
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export function isLocallyHidden(feature, store) {
|
|
10
|
+
if (store.isLocallyHidden(feature.id))
|
|
11
|
+
return true;
|
|
12
|
+
if (feature.groupId && store.isLocallyHidden(feature.groupId))
|
|
13
|
+
return true;
|
|
14
|
+
if (store.isLocallyHidden(feature.layerId))
|
|
15
|
+
return true;
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The list of features that should be displayed, for rendering and hit testing.
|
|
20
|
+
* getOrderedFeatures (the pure list narrowed by the shared visible) with the locally
|
|
21
|
+
* hidden ones removed on top of that.
|
|
22
|
+
*
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export function getDisplayFeatures(store) {
|
|
26
|
+
return store.getOrderedFeatures().filter((feature) => !isLocallyHidden(feature, store));
|
|
27
|
+
}
|