@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,90 @@
|
|
|
1
|
+
import type { BoundingBox, Coordinate, Feature } from '../types.js';
|
|
2
|
+
export { getBoundingBox } from '../../shared/utils/feature-bbox.js';
|
|
3
|
+
/**
|
|
4
|
+
* The type of a custom bounding box calculation function
|
|
5
|
+
*/
|
|
6
|
+
export type CustomBoundingBoxCalculator = (feature: Feature, tileSize: number) => BoundingBox;
|
|
7
|
+
/**
|
|
8
|
+
* The queries of a spatial index (what the hit testing, the snapping, the rendering and the
|
|
9
|
+
* modes read)
|
|
10
|
+
*/
|
|
11
|
+
export interface SpatialQuery {
|
|
12
|
+
/**
|
|
13
|
+
* Gets the IDs of the features near the given coordinate
|
|
14
|
+
*
|
|
15
|
+
* @param coordinate the coordinate to search at [lng, lat]
|
|
16
|
+
* @param tolerance the tolerance (in degrees)
|
|
17
|
+
*/
|
|
18
|
+
findNear(coordinate: Coordinate, tolerance: number): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Gets the IDs of the features inside the given bounding box
|
|
21
|
+
*/
|
|
22
|
+
findInBounds(bounds: BoundingBox): string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The SpatialIndex interface
|
|
26
|
+
*
|
|
27
|
+
* The queries and the configuration of the extent calculation. It has no writes: the index
|
|
28
|
+
* a draw instance holds is derived from the Store (StoreSpatialIndex), so a feature enters
|
|
29
|
+
* and leaves it only through the Store. The writes belong to the implementation
|
|
30
|
+
* (RBushSpatialIndex).
|
|
31
|
+
*/
|
|
32
|
+
export interface SpatialIndex extends SpatialQuery {
|
|
33
|
+
/**
|
|
34
|
+
* Sets the tile size (used for computing the size of an Image)
|
|
35
|
+
*/
|
|
36
|
+
setTileSize?(tileSize: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Registers a custom bounding box calculation function
|
|
39
|
+
*
|
|
40
|
+
* This is to support the custom feature types of an extension (registerFeatureHandler).
|
|
41
|
+
* @param type the feature type
|
|
42
|
+
* @param calculator the bounding box calculation function
|
|
43
|
+
* @returns a function that cancels the registration (it does not remove a later
|
|
44
|
+
* registration of the same type)
|
|
45
|
+
*/
|
|
46
|
+
setCustomBoundingBoxCalculator?(type: string, calculator: CustomBoundingBoxCalculator): () => void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The rbush-based SpatialIndex implementation
|
|
50
|
+
*/
|
|
51
|
+
export declare class RBushSpatialIndex implements SpatialIndex {
|
|
52
|
+
private tree;
|
|
53
|
+
private items;
|
|
54
|
+
private tileSize;
|
|
55
|
+
private customCalculators;
|
|
56
|
+
/**
|
|
57
|
+
* Sets the tile size
|
|
58
|
+
*
|
|
59
|
+
* The tile size can differ depending on the MapLibre style, so setting an appropriate
|
|
60
|
+
* value improves the accuracy of the size computation for an Image
|
|
61
|
+
*/
|
|
62
|
+
setTileSize(tileSize: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Registers a custom bounding box calculation function
|
|
65
|
+
*/
|
|
66
|
+
setCustomBoundingBoxCalculator(type: string, calculator: CustomBoundingBoxCalculator): () => void;
|
|
67
|
+
/** Adds a feature to the index */
|
|
68
|
+
insert(feature: Feature): void;
|
|
69
|
+
/**
|
|
70
|
+
* Indexes several features at once (a bulk load of rbush, much faster than inserting one
|
|
71
|
+
* by one). A feature that is already indexed is replaced.
|
|
72
|
+
*/
|
|
73
|
+
load(features: readonly Feature[]): void;
|
|
74
|
+
/** Whether the feature with this id is indexed */
|
|
75
|
+
has(id: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Computes the bounding box of a feature
|
|
78
|
+
*
|
|
79
|
+
* If a custom calculation function is registered, it is used.
|
|
80
|
+
*/
|
|
81
|
+
private computeBoundingBoxForFeature;
|
|
82
|
+
/** Updates the entry of a feature */
|
|
83
|
+
update(id: string, feature: Feature): void;
|
|
84
|
+
/** Removes a feature from the index */
|
|
85
|
+
remove(id: string): void;
|
|
86
|
+
/** Clears the index */
|
|
87
|
+
clear(): void;
|
|
88
|
+
findNear(coordinate: Coordinate, tolerance: number): string[];
|
|
89
|
+
findInBounds(bounds: BoundingBox): string[];
|
|
90
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* SpatialIndex
|
|
5
|
+
*
|
|
6
|
+
* A spatial index that uses rbush.
|
|
7
|
+
* It provides fast spatial queries over features.
|
|
8
|
+
*/
|
|
9
|
+
import RBush from 'rbush';
|
|
10
|
+
import { getBoundingBox } from '../../shared/utils/feature-bbox.js';
|
|
11
|
+
// The bounding box of a feature is a pure function of the feature, so it is defined in
|
|
12
|
+
// shared/ (display/ uses it too); re-exported here for the existing imports
|
|
13
|
+
export { getBoundingBox } from '../../shared/utils/feature-bbox.js';
|
|
14
|
+
/**
|
|
15
|
+
* The rbush-based SpatialIndex implementation
|
|
16
|
+
*/
|
|
17
|
+
export class RBushSpatialIndex {
|
|
18
|
+
constructor() {
|
|
19
|
+
Object.defineProperty(this, "tree", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: new RBush()
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(this, "items", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: new Map()
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "tileSize", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: 512
|
|
36
|
+
}); // the MapLibre default
|
|
37
|
+
Object.defineProperty(this, "customCalculators", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: new Map()
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Sets the tile size
|
|
46
|
+
*
|
|
47
|
+
* The tile size can differ depending on the MapLibre style, so setting an appropriate
|
|
48
|
+
* value improves the accuracy of the size computation for an Image
|
|
49
|
+
*/
|
|
50
|
+
setTileSize(tileSize) {
|
|
51
|
+
this.tileSize = tileSize;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Registers a custom bounding box calculation function
|
|
55
|
+
*/
|
|
56
|
+
setCustomBoundingBoxCalculator(type, calculator) {
|
|
57
|
+
this.customCalculators.set(type, calculator);
|
|
58
|
+
return () => {
|
|
59
|
+
if (this.customCalculators.get(type) === calculator)
|
|
60
|
+
this.customCalculators.delete(type);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** Adds a feature to the index */
|
|
64
|
+
insert(feature) {
|
|
65
|
+
// An id is held at most once, so inserting a feature that is already indexed replaces it
|
|
66
|
+
this.update(feature.id, feature);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Indexes several features at once (a bulk load of rbush, much faster than inserting one
|
|
70
|
+
* by one). A feature that is already indexed is replaced.
|
|
71
|
+
*/
|
|
72
|
+
load(features) {
|
|
73
|
+
const items = [];
|
|
74
|
+
for (const feature of features) {
|
|
75
|
+
this.remove(feature.id);
|
|
76
|
+
const item = {
|
|
77
|
+
...this.computeBoundingBoxForFeature(feature),
|
|
78
|
+
featureId: feature.id,
|
|
79
|
+
};
|
|
80
|
+
this.items.set(feature.id, item);
|
|
81
|
+
items.push(item);
|
|
82
|
+
}
|
|
83
|
+
this.tree.load(items);
|
|
84
|
+
}
|
|
85
|
+
/** Whether the feature with this id is indexed */
|
|
86
|
+
has(id) {
|
|
87
|
+
return this.items.has(id);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Computes the bounding box of a feature
|
|
91
|
+
*
|
|
92
|
+
* If a custom calculation function is registered, it is used.
|
|
93
|
+
*/
|
|
94
|
+
computeBoundingBoxForFeature(feature) {
|
|
95
|
+
// Use the custom calculation function if there is one
|
|
96
|
+
const customCalc = this.customCalculators.get(feature.type);
|
|
97
|
+
if (customCalc) {
|
|
98
|
+
return customCalc(feature, this.tileSize);
|
|
99
|
+
}
|
|
100
|
+
// The default computation
|
|
101
|
+
return getBoundingBox(feature, this.tileSize);
|
|
102
|
+
}
|
|
103
|
+
/** Updates the entry of a feature */
|
|
104
|
+
update(id, feature) {
|
|
105
|
+
// Remove the existing item
|
|
106
|
+
this.remove(id);
|
|
107
|
+
// Compute the new bounding box and insert it
|
|
108
|
+
const bbox = this.computeBoundingBoxForFeature(feature);
|
|
109
|
+
const item = {
|
|
110
|
+
...bbox,
|
|
111
|
+
featureId: feature.id,
|
|
112
|
+
};
|
|
113
|
+
this.items.set(feature.id, item);
|
|
114
|
+
this.tree.insert(item);
|
|
115
|
+
}
|
|
116
|
+
/** Removes a feature from the index */
|
|
117
|
+
remove(id) {
|
|
118
|
+
const item = this.items.get(id);
|
|
119
|
+
if (item) {
|
|
120
|
+
this.tree.remove(item);
|
|
121
|
+
this.items.delete(id);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Clears the index */
|
|
125
|
+
clear() {
|
|
126
|
+
this.tree.clear();
|
|
127
|
+
this.items.clear();
|
|
128
|
+
}
|
|
129
|
+
findNear(coordinate, tolerance) {
|
|
130
|
+
const [lng, lat] = coordinate;
|
|
131
|
+
const bounds = {
|
|
132
|
+
minX: lng - tolerance,
|
|
133
|
+
minY: lat - tolerance,
|
|
134
|
+
maxX: lng + tolerance,
|
|
135
|
+
maxY: lat + tolerance,
|
|
136
|
+
};
|
|
137
|
+
return this.findInBounds(bounds);
|
|
138
|
+
}
|
|
139
|
+
findInBounds(bounds) {
|
|
140
|
+
const results = this.tree.search({
|
|
141
|
+
minX: bounds.minX,
|
|
142
|
+
minY: bounds.minY,
|
|
143
|
+
maxX: bounds.maxX,
|
|
144
|
+
maxY: bounds.maxY,
|
|
145
|
+
});
|
|
146
|
+
return results.map((item) => item.featureId);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StoreSpatialIndex
|
|
3
|
+
*
|
|
4
|
+
* The spatial index as a value derived from the Store. It subscribes to the Store and
|
|
5
|
+
* re-derives the entry of every feature a StateChanges names (created / updated / deleted)
|
|
6
|
+
* from the Store itself, so it holds exactly the features the Store holds, with the extent
|
|
7
|
+
* they have now:
|
|
8
|
+
*
|
|
9
|
+
* - every write path (the public API, the drawing modes, the drag, import, plugins, a mode
|
|
10
|
+
* of an extension, a change applied from elsewhere to a replaced Store) reaches it in the same way
|
|
11
|
+
* - a write the Store refuses (read-only) notifies nothing, so it leaves no trace here
|
|
12
|
+
* - an update of the properties (the radius of a Circle, the scale and rotation of an Image)
|
|
13
|
+
* re-indexes the feature like an update of the coordinates
|
|
14
|
+
* - the intermediate updates of a drag are Store updates too (isIntermediate), so the shape
|
|
15
|
+
* being dragged is the shape that is indexed
|
|
16
|
+
*
|
|
17
|
+
* The extent of a type registered with a custom bounding box calculator can change for
|
|
18
|
+
* reasons outside the Store (a font that arrives later, for example). Its owner announces
|
|
19
|
+
* that with invalidateType(), which re-derives the features of that type from the Store.
|
|
20
|
+
*/
|
|
21
|
+
import type { Store } from '../store.js';
|
|
22
|
+
import type { BoundingBox, Coordinate } from '../types.js';
|
|
23
|
+
import { type CustomBoundingBoxCalculator, type SpatialIndex } from './spatial-index.js';
|
|
24
|
+
/**
|
|
25
|
+
* The spatial index derived from a Store
|
|
26
|
+
*/
|
|
27
|
+
export declare class StoreSpatialIndex implements SpatialIndex {
|
|
28
|
+
#private;
|
|
29
|
+
constructor(store: Store);
|
|
30
|
+
findNear(coordinate: Coordinate, tolerance: number): string[];
|
|
31
|
+
findInBounds(bounds: BoundingBox): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Sets the tile size used to size an Image, and re-derives every feature (a custom
|
|
34
|
+
* calculator also receives the tile size)
|
|
35
|
+
*/
|
|
36
|
+
setTileSize(tileSize: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Registers the bounding box calculation of a custom feature type, and re-derives the
|
|
39
|
+
* features of that type the Store already holds
|
|
40
|
+
*
|
|
41
|
+
* @returns a function that cancels the registration and measures those features again
|
|
42
|
+
* with the default calculation
|
|
43
|
+
*/
|
|
44
|
+
setCustomBoundingBoxCalculator(type: string, calculator: CustomBoundingBoxCalculator): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Re-derives the extent of every feature of the given type from the Store
|
|
47
|
+
*
|
|
48
|
+
* For a type whose extent changed for a reason the Store does not see.
|
|
49
|
+
*/
|
|
50
|
+
invalidateType(type: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Re-derives the entries of the given features from the Store (an id the Store does not
|
|
53
|
+
* hold is dropped)
|
|
54
|
+
*/
|
|
55
|
+
invalidate(ids: Iterable<string>): void;
|
|
56
|
+
/**
|
|
57
|
+
* Stops following the Store and empties the index
|
|
58
|
+
*/
|
|
59
|
+
destroy(): void;
|
|
60
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
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 _StoreSpatialIndex_instances, _StoreSpatialIndex_store, _StoreSpatialIndex_index, _StoreSpatialIndex_unsubscribe, _StoreSpatialIndex_apply, _StoreSpatialIndex_refresh, _StoreSpatialIndex_rebuild;
|
|
15
|
+
import { RBushSpatialIndex, } from './spatial-index.js';
|
|
16
|
+
/**
|
|
17
|
+
* The spatial index derived from a Store
|
|
18
|
+
*/
|
|
19
|
+
export class StoreSpatialIndex {
|
|
20
|
+
constructor(store) {
|
|
21
|
+
_StoreSpatialIndex_instances.add(this);
|
|
22
|
+
_StoreSpatialIndex_store.set(this, void 0);
|
|
23
|
+
_StoreSpatialIndex_index.set(this, new RBushSpatialIndex());
|
|
24
|
+
_StoreSpatialIndex_unsubscribe.set(this, void 0);
|
|
25
|
+
__classPrivateFieldSet(this, _StoreSpatialIndex_store, store, "f");
|
|
26
|
+
__classPrivateFieldSet(this, _StoreSpatialIndex_unsubscribe, store.subscribe((changes) => __classPrivateFieldGet(this, _StoreSpatialIndex_instances, "m", _StoreSpatialIndex_apply).call(this, changes)), "f");
|
|
27
|
+
// A Store handed in from outside can already hold features
|
|
28
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").load(store.getAllFeatures());
|
|
29
|
+
}
|
|
30
|
+
findNear(coordinate, tolerance) {
|
|
31
|
+
return __classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").findNear(coordinate, tolerance);
|
|
32
|
+
}
|
|
33
|
+
findInBounds(bounds) {
|
|
34
|
+
return __classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").findInBounds(bounds);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Sets the tile size used to size an Image, and re-derives every feature (a custom
|
|
38
|
+
* calculator also receives the tile size)
|
|
39
|
+
*/
|
|
40
|
+
setTileSize(tileSize) {
|
|
41
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").setTileSize(tileSize);
|
|
42
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_instances, "m", _StoreSpatialIndex_rebuild).call(this);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Registers the bounding box calculation of a custom feature type, and re-derives the
|
|
46
|
+
* features of that type the Store already holds
|
|
47
|
+
*
|
|
48
|
+
* @returns a function that cancels the registration and measures those features again
|
|
49
|
+
* with the default calculation
|
|
50
|
+
*/
|
|
51
|
+
setCustomBoundingBoxCalculator(type, calculator) {
|
|
52
|
+
const cancel = __classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").setCustomBoundingBoxCalculator(type, calculator);
|
|
53
|
+
this.invalidateType(type);
|
|
54
|
+
return () => {
|
|
55
|
+
cancel();
|
|
56
|
+
this.invalidateType(type);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Re-derives the extent of every feature of the given type from the Store
|
|
61
|
+
*
|
|
62
|
+
* For a type whose extent changed for a reason the Store does not see.
|
|
63
|
+
*/
|
|
64
|
+
invalidateType(type) {
|
|
65
|
+
for (const feature of __classPrivateFieldGet(this, _StoreSpatialIndex_store, "f").getAllFeatures()) {
|
|
66
|
+
if (feature.type === type) {
|
|
67
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").update(feature.id, feature);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Re-derives the entries of the given features from the Store (an id the Store does not
|
|
73
|
+
* hold is dropped)
|
|
74
|
+
*/
|
|
75
|
+
invalidate(ids) {
|
|
76
|
+
for (const id of ids) {
|
|
77
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_instances, "m", _StoreSpatialIndex_refresh).call(this, id);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Stops following the Store and empties the index
|
|
82
|
+
*/
|
|
83
|
+
destroy() {
|
|
84
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_unsubscribe, "f")?.call(this);
|
|
85
|
+
__classPrivateFieldSet(this, _StoreSpatialIndex_unsubscribe, null, "f");
|
|
86
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").clear();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
_StoreSpatialIndex_store = new WeakMap(), _StoreSpatialIndex_index = new WeakMap(), _StoreSpatialIndex_unsubscribe = new WeakMap(), _StoreSpatialIndex_instances = new WeakSet(), _StoreSpatialIndex_apply = function _StoreSpatialIndex_apply(changes) {
|
|
90
|
+
const features = changes.features;
|
|
91
|
+
if (!features)
|
|
92
|
+
return;
|
|
93
|
+
// A bulk creation (import) is loaded in one pass
|
|
94
|
+
const created = features.created;
|
|
95
|
+
if (created && created.length > 0) {
|
|
96
|
+
const present = [];
|
|
97
|
+
for (const { id } of created) {
|
|
98
|
+
const feature = __classPrivateFieldGet(this, _StoreSpatialIndex_store, "f").getFeature(id);
|
|
99
|
+
if (feature)
|
|
100
|
+
present.push(feature);
|
|
101
|
+
}
|
|
102
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").load(present);
|
|
103
|
+
}
|
|
104
|
+
// The final state is read from the Store, so the order of the entries within one
|
|
105
|
+
// notification (created then deleted, updated several times) does not matter
|
|
106
|
+
if (features.updated) {
|
|
107
|
+
for (const { id } of features.updated)
|
|
108
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_instances, "m", _StoreSpatialIndex_refresh).call(this, id);
|
|
109
|
+
}
|
|
110
|
+
if (features.deleted) {
|
|
111
|
+
for (const { id } of features.deleted)
|
|
112
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_instances, "m", _StoreSpatialIndex_refresh).call(this, id);
|
|
113
|
+
}
|
|
114
|
+
}, _StoreSpatialIndex_refresh = function _StoreSpatialIndex_refresh(id) {
|
|
115
|
+
const feature = __classPrivateFieldGet(this, _StoreSpatialIndex_store, "f").getFeature(id);
|
|
116
|
+
if (feature) {
|
|
117
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").update(id, feature);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").remove(id);
|
|
121
|
+
}
|
|
122
|
+
}, _StoreSpatialIndex_rebuild = function _StoreSpatialIndex_rebuild() {
|
|
123
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").clear();
|
|
124
|
+
__classPrivateFieldGet(this, _StoreSpatialIndex_index, "f").load(__classPrivateFieldGet(this, _StoreSpatialIndex_store, "f").getAllFeatures());
|
|
125
|
+
};
|