@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,189 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
import { pixelsToDegreesLat, pixelsToDegreesLng } from './distance.js';
|
|
4
|
+
/**
|
|
5
|
+
* Clamps a latitude into the valid range
|
|
6
|
+
*
|
|
7
|
+
* MapLibre's project() throws an error when the latitude is outside the range -90 to 90, and
|
|
8
|
+
* the latitude can fall outside that range, for example when a large image is placed at a low
|
|
9
|
+
* zoom level.
|
|
10
|
+
*
|
|
11
|
+
* @param latitude - The latitude to clamp (degrees)
|
|
12
|
+
* @returns The latitude clamped into the range -89.9 to 89.9
|
|
13
|
+
*/
|
|
14
|
+
export function clampLatitude(latitude) {
|
|
15
|
+
return Math.max(-89.9, Math.min(89.9, latitude));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Clamps the latitude of a coordinate into the valid range
|
|
19
|
+
*
|
|
20
|
+
* @param coord - The coordinate to clamp [lng, lat]
|
|
21
|
+
* @returns The coordinate with its latitude clamped
|
|
22
|
+
*/
|
|
23
|
+
export function clampCoordinate(coord) {
|
|
24
|
+
return [coord[0], clampLatitude(coord[1])];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Converts a longitude/latitude into a Mercator coordinate (in the range 0-1)
|
|
28
|
+
*
|
|
29
|
+
* @param coord Longitude/latitude coordinate [lng, lat]
|
|
30
|
+
* @returns Mercator coordinate [x, y] (in the range 0-1)
|
|
31
|
+
*/
|
|
32
|
+
export function lngLatToMercator(coord) {
|
|
33
|
+
const x = (coord[0] + 180) / 360;
|
|
34
|
+
const y = (1 -
|
|
35
|
+
Math.log(Math.tan((coord[1] * Math.PI) / 180) + 1 / Math.cos((coord[1] * Math.PI) / 180)) /
|
|
36
|
+
Math.PI) /
|
|
37
|
+
2;
|
|
38
|
+
return [x, y];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The injected anchor projection (per map)
|
|
42
|
+
*
|
|
43
|
+
* A single page can have several rendering instances (the screen + a thumbnail + a
|
|
44
|
+
* preview + printing), so holding just one globally would make hit testing use the frame of
|
|
45
|
+
* the instance that was created last. Keying by the map structurally rules out that mix-up.
|
|
46
|
+
*/
|
|
47
|
+
const anchorProjectors = new WeakMap();
|
|
48
|
+
/**
|
|
49
|
+
* Injects an anchor projection (the view layer calls this per map; null removes it)
|
|
50
|
+
*/
|
|
51
|
+
export function setAnchorProjector(map, projector) {
|
|
52
|
+
if (projector)
|
|
53
|
+
anchorProjectors.set(map, projector);
|
|
54
|
+
else
|
|
55
|
+
anchorProjectors.delete(map);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Gets the anchor projection that is currently injected
|
|
59
|
+
*/
|
|
60
|
+
export function getAnchorProjector(map) {
|
|
61
|
+
return anchorProjectors.get(map) ?? null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates a CoordinateTransform from a MapLibre map
|
|
65
|
+
*
|
|
66
|
+
* When terrain is enabled, project goes through the anchor projection (elevation included, one
|
|
67
|
+
* matrix pass). With terrain enabled, MapLibre's map.project internally raycasts against the
|
|
68
|
+
* terrain mesh, which measured at roughly 307μs per point (roughly 1μs without terrain). Hit
|
|
69
|
+
* testing calls project for every vertex, so editing would not hold up as is.
|
|
70
|
+
*
|
|
71
|
+
* unproject is called for only a single screen point (roughly 43μs), so MapLibre's is used as
|
|
72
|
+
* is. That is also because it has to solve the intersection with the terrain mesh by
|
|
73
|
+
* raycasting, which cannot be obtained from matrices alone.
|
|
74
|
+
*
|
|
75
|
+
* @param map MapLibre map instance
|
|
76
|
+
* @returns A CoordinateTransform instance
|
|
77
|
+
*/
|
|
78
|
+
export function createCoordinateTransform(map) {
|
|
79
|
+
return {
|
|
80
|
+
project: (coord) => {
|
|
81
|
+
const anchored = anchorProjectors.get(map)?.project(coord[0], coord[1]);
|
|
82
|
+
if (anchored)
|
|
83
|
+
return anchored;
|
|
84
|
+
const p = map.project([coord[0], coord[1]]);
|
|
85
|
+
return { x: p.x, y: p.y };
|
|
86
|
+
},
|
|
87
|
+
unproject: (point) => {
|
|
88
|
+
const ll = map.unproject([point.x, point.y]);
|
|
89
|
+
return { lng: ll.lng, lat: ll.lat };
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Applies a margin in pixels to a bounding box
|
|
95
|
+
*
|
|
96
|
+
* When zoom is passed, the expansion is done on the map plane. When it is not passed, the
|
|
97
|
+
* expansion round-trips through screen coordinates. It must not round-trip when there is
|
|
98
|
+
* terrain: with terrain enabled, project projects a point at the height of the ground surface
|
|
99
|
+
* and unproject casts a ray from the screen onto the ground surface and comes back, so the
|
|
100
|
+
* round trip is no longer the identity mapping. With a tilted view, the returned values drift
|
|
101
|
+
* by kilometers, and the box appears far away from the feature, with a different shape too.
|
|
102
|
+
*
|
|
103
|
+
* @param coords Coordinates of the 4 corners of the bounding box
|
|
104
|
+
* [topLeft, topRight, bottomRight, bottomLeft]
|
|
105
|
+
* @param margin Margin size (pixels)
|
|
106
|
+
* @param transform Coordinate transformation interface
|
|
107
|
+
* @param zoom Current zoom (when passed, the expansion is done on the map plane; required when
|
|
108
|
+
* there is terrain)
|
|
109
|
+
* @returns Coordinates of the 4 corners after the margin is applied
|
|
110
|
+
*/
|
|
111
|
+
export function applyMarginToBoundingBox(coords, margin, transform, zoom) {
|
|
112
|
+
if (zoom !== undefined)
|
|
113
|
+
return marginOnMapPlane(coords, margin, zoom);
|
|
114
|
+
// Convert the 4 corners into screen coordinates (clamp the latitude to prevent
|
|
115
|
+
// out-of-range errors)
|
|
116
|
+
const corners = [
|
|
117
|
+
transform.project(clampCoordinate(coords.topLeft)),
|
|
118
|
+
transform.project(clampCoordinate(coords.topRight)),
|
|
119
|
+
transform.project(clampCoordinate(coords.bottomRight)),
|
|
120
|
+
transform.project(clampCoordinate(coords.bottomLeft)),
|
|
121
|
+
];
|
|
122
|
+
// Compute the center of the OBB
|
|
123
|
+
const centerX = (corners[0].x + corners[1].x + corners[2].x + corners[3].x) / 4;
|
|
124
|
+
const centerY = (corners[0].y + corners[1].y + corners[2].y + corners[3].y) / 4;
|
|
125
|
+
// Expand each vertex outward from the center
|
|
126
|
+
const expandedCorners = corners.map((corner) => {
|
|
127
|
+
const dx = corner.x - centerX;
|
|
128
|
+
const dy = corner.y - centerY;
|
|
129
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
130
|
+
if (dist === 0)
|
|
131
|
+
return corner;
|
|
132
|
+
// Extend by the margin while keeping the direction of the vector
|
|
133
|
+
const scale = (dist + margin) / dist;
|
|
134
|
+
return {
|
|
135
|
+
x: centerX + dx * scale,
|
|
136
|
+
y: centerY + dy * scale,
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
// Convert into geographic coordinates
|
|
140
|
+
const topLeftResult = transform.unproject(expandedCorners[0]);
|
|
141
|
+
const topRightResult = transform.unproject(expandedCorners[1]);
|
|
142
|
+
const bottomRightResult = transform.unproject(expandedCorners[2]);
|
|
143
|
+
const bottomLeftResult = transform.unproject(expandedCorners[3]);
|
|
144
|
+
return {
|
|
145
|
+
topLeft: [topLeftResult.lng, topLeftResult.lat],
|
|
146
|
+
topRight: [topRightResult.lng, topRightResult.lat],
|
|
147
|
+
bottomRight: [bottomRightResult.lng, bottomRightResult.lat],
|
|
148
|
+
bottomLeft: [bottomLeftResult.lng, bottomLeftResult.lat],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Widens the 4 corners outward from the center on the map plane
|
|
153
|
+
*
|
|
154
|
+
* It does not round-trip through screen coordinates, so it is affected by neither terrain nor
|
|
155
|
+
* tilt. How many degrees one pixel amounts to is derived from the latitude of the center and
|
|
156
|
+
* the current zoom.
|
|
157
|
+
*/
|
|
158
|
+
function marginOnMapPlane(coords, margin, zoom) {
|
|
159
|
+
const corners = [coords.topLeft, coords.topRight, coords.bottomRight, coords.bottomLeft];
|
|
160
|
+
const centerLng = (corners[0][0] + corners[1][0] + corners[2][0] + corners[3][0]) / 4;
|
|
161
|
+
const centerLat = (corners[0][1] + corners[1][1] + corners[2][1] + corners[3][1]) / 4;
|
|
162
|
+
const degPerPxLng = pixelsToDegreesLng(1, centerLat, zoom);
|
|
163
|
+
const degPerPxLat = pixelsToDegreesLat(1, centerLat, zoom);
|
|
164
|
+
if (!(degPerPxLng > 0) || !(degPerPxLat > 0)) {
|
|
165
|
+
return {
|
|
166
|
+
topLeft: coords.topLeft,
|
|
167
|
+
topRight: coords.topRight,
|
|
168
|
+
bottomRight: coords.bottomRight,
|
|
169
|
+
bottomLeft: coords.bottomLeft,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// The vertical and horizontal scales differ, so convert into pixel-equivalent amounts
|
|
173
|
+
// first and then widen
|
|
174
|
+
const expanded = corners.map(([lng, lat]) => {
|
|
175
|
+
const dx = (lng - centerLng) / degPerPxLng;
|
|
176
|
+
const dy = (lat - centerLat) / degPerPxLat;
|
|
177
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
178
|
+
if (dist === 0)
|
|
179
|
+
return [lng, lat];
|
|
180
|
+
const scale = (dist + margin) / dist;
|
|
181
|
+
return [centerLng + dx * scale * degPerPxLng, centerLat + dy * scale * degPerPxLat];
|
|
182
|
+
});
|
|
183
|
+
return {
|
|
184
|
+
topLeft: expanded[0],
|
|
185
|
+
topRight: expanded[1],
|
|
186
|
+
bottomRight: expanded[2],
|
|
187
|
+
bottomLeft: expanded[3],
|
|
188
|
+
};
|
|
189
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The payloads of the public events that are defined by the areas above shared/
|
|
3
|
+
*
|
|
4
|
+
* The EventEmitter (shared/utils/event-emitter.ts) types every event, so the payloads it
|
|
5
|
+
* carries sit here, below every layer. The defining areas re-export them.
|
|
6
|
+
*/
|
|
7
|
+
import type { Coordinate, Feature, VertexRef } from './model.js';
|
|
8
|
+
/**
|
|
9
|
+
* Payload of draw.map.click (an event exposed on the instance)
|
|
10
|
+
*
|
|
11
|
+
* This exists to emit the normalized click of select mode as a single stream, as-is,
|
|
12
|
+
* regardless of whether anything was hit or of what was hit. The coordinates are the
|
|
13
|
+
* ones from before snapping (the raw normalized event). It is meant for read-only
|
|
14
|
+
* subscription and has no effect at all on the selection behavior of the mode.
|
|
15
|
+
*/
|
|
16
|
+
export interface MapClickEventPayload {
|
|
17
|
+
/** Map coordinates [lng, lat] */
|
|
18
|
+
lngLat: Coordinate;
|
|
19
|
+
/** Screen coordinates */
|
|
20
|
+
point: {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Payload of draw.dataset.click (a public instance event)
|
|
27
|
+
*
|
|
28
|
+
* It reports in one event how a click in the select mode was resolved by the interception of the
|
|
29
|
+
* datasets. When a feature of an interactive dataset is hit, datasetId and
|
|
30
|
+
* feature are filled in; when nothing at all was hit (including a block by a non-interactive
|
|
31
|
+
* dataset) both are null. It does not fire for a click that hit a feature of the Store (that
|
|
32
|
+
* is the domain of selection.change on the selection side of the Store). The host can treat this
|
|
33
|
+
* null as "a click on empty space = clearing the data selection".
|
|
34
|
+
*/
|
|
35
|
+
export interface DatasetClickEventPayload {
|
|
36
|
+
/** Id of the dataset that was hit. null when there was no hit */
|
|
37
|
+
datasetId: string | null;
|
|
38
|
+
/** The feature that was hit. null when there was no hit */
|
|
39
|
+
feature: Feature | null;
|
|
40
|
+
/**
|
|
41
|
+
* The row of the feature in its dataset (its index in the features given to the
|
|
42
|
+
* dataset, or its row in a columnar table). null when there was no hit
|
|
43
|
+
*/
|
|
44
|
+
row: number | null;
|
|
45
|
+
/** Map coordinate [lng, lat] */
|
|
46
|
+
lngLat: Coordinate;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A geographic coordinate (the same shape as the lngLat of a normalized event)
|
|
50
|
+
*/
|
|
51
|
+
export interface SnapLngLat {
|
|
52
|
+
/** The longitude in degrees */
|
|
53
|
+
lng: number;
|
|
54
|
+
/** The latitude in degrees */
|
|
55
|
+
lat: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The kind of a snapping target
|
|
59
|
+
*
|
|
60
|
+
* The priority order is vertex > intersection > edge > guide, and ties are decided by
|
|
61
|
+
* distance.
|
|
62
|
+
*/
|
|
63
|
+
export type SnapTargetKind = 'vertex' | 'edge' | 'intersection' | 'guide';
|
|
64
|
+
/**
|
|
65
|
+
* A segment to snap to (an edge or a guide)
|
|
66
|
+
*/
|
|
67
|
+
export interface SnapTargetSegment {
|
|
68
|
+
/** The start point of the segment */
|
|
69
|
+
start: Coordinate;
|
|
70
|
+
/** The end point of the segment */
|
|
71
|
+
end: Coordinate;
|
|
72
|
+
/** For a real edge, the vertex reference of the start point */
|
|
73
|
+
startRef?: VertexRef;
|
|
74
|
+
/** For a real edge, the vertex reference of the end point */
|
|
75
|
+
endRef?: VertexRef;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Information about a snapping target
|
|
79
|
+
*
|
|
80
|
+
* The geometric references of the target (vertex / segment) are read by tracing and
|
|
81
|
+
* by the rendering of the guide line.
|
|
82
|
+
*/
|
|
83
|
+
export interface SnapTarget {
|
|
84
|
+
/** The kind of the target */
|
|
85
|
+
kind: SnapTargetKind;
|
|
86
|
+
/** The feature ID of the target (only for candidates originating from the Store) */
|
|
87
|
+
featureId?: string;
|
|
88
|
+
/**
|
|
89
|
+
* The dataset ID of the target (only for candidates originating from a
|
|
90
|
+
* dataset)
|
|
91
|
+
*/
|
|
92
|
+
datasetId?: string;
|
|
93
|
+
/** A description for display (read by the status bar and the like) */
|
|
94
|
+
description?: string;
|
|
95
|
+
/** When the target is a vertex, its vertex reference */
|
|
96
|
+
vertex?: VertexRef;
|
|
97
|
+
/** When the target is an edge or a guide, its segment */
|
|
98
|
+
segment?: SnapTargetSegment;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The result of snapping
|
|
102
|
+
*
|
|
103
|
+
* When nothing was snapped to, the input coordinate goes into lngLat as it is and no
|
|
104
|
+
* target is attached.
|
|
105
|
+
*/
|
|
106
|
+
export interface SnapResult {
|
|
107
|
+
/** The coordinate after snapping (the input as it is when nothing was snapped to) */
|
|
108
|
+
lngLat: SnapLngLat;
|
|
109
|
+
/** The snapping target (absent when nothing was snapped to) */
|
|
110
|
+
target?: SnapTarget;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* One frame of the stacking order: the maplibre layer that draws one run of the layer order
|
|
114
|
+
* between two external entries
|
|
115
|
+
*
|
|
116
|
+
* When the `isExternalEntry` option marks entries of the layer order as external, the draw
|
|
117
|
+
* instance draws each run between them in a maplibre custom layer of its own, so the host can
|
|
118
|
+
* place its own maplibre layers between the frames. `getRenderSlots()` lists the frames, and
|
|
119
|
+
* the `draw.renderslots.change` event announces a change of them.
|
|
120
|
+
*/
|
|
121
|
+
export interface RenderSlot {
|
|
122
|
+
/** The maplibre layer ID of the custom layer that draws this run */
|
|
123
|
+
readonly layerId: string;
|
|
124
|
+
/** The index in the layer order where the run starts (inclusive) */
|
|
125
|
+
readonly from: number;
|
|
126
|
+
/** The index in the layer order where the run ends (exclusive) */
|
|
127
|
+
readonly to: number;
|
|
128
|
+
}
|