@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,273 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection UI configuration
|
|
3
|
+
*
|
|
4
|
+
* Configuration related to rendering the UI of the selected state.
|
|
5
|
+
*/
|
|
6
|
+
import type { PointStyle, StrokeStyle } from '../types/style.js';
|
|
7
|
+
/**
|
|
8
|
+
* How the box around the selection looks (part of {@link SelectionUIConfig})
|
|
9
|
+
*/
|
|
10
|
+
export interface BoundingBoxStyle {
|
|
11
|
+
/**
|
|
12
|
+
* The line of the box
|
|
13
|
+
*
|
|
14
|
+
* @defaultValue `#FF2D55`, 2 px, solid
|
|
15
|
+
*/
|
|
16
|
+
stroke: StrokeStyle;
|
|
17
|
+
/**
|
|
18
|
+
* The gap between the selected features and the box, in CSS pixels
|
|
19
|
+
*
|
|
20
|
+
* @defaultValue `10`
|
|
21
|
+
*/
|
|
22
|
+
margin: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* How the four corner handles that resize the selection look (part of
|
|
26
|
+
* {@link SelectionUIConfig})
|
|
27
|
+
*/
|
|
28
|
+
export interface ResizeHandleStyle {
|
|
29
|
+
/**
|
|
30
|
+
* The handle
|
|
31
|
+
*
|
|
32
|
+
* @defaultValue a 10 px `#FF2D55` square without an outline
|
|
33
|
+
*/
|
|
34
|
+
point: PointStyle;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* How the handle that rotates the selection looks (part of {@link SelectionUIConfig})
|
|
38
|
+
*
|
|
39
|
+
* The handle sits above the middle of the top edge of the box, joined to it by a line.
|
|
40
|
+
*/
|
|
41
|
+
export interface RotateHandleStyle {
|
|
42
|
+
/**
|
|
43
|
+
* The handle
|
|
44
|
+
*
|
|
45
|
+
* @defaultValue a 10 px `#FF2D55` circle without an outline
|
|
46
|
+
*/
|
|
47
|
+
point: PointStyle;
|
|
48
|
+
/**
|
|
49
|
+
* The distance between the handle and the box, in CSS pixels
|
|
50
|
+
*
|
|
51
|
+
* @defaultValue `10`
|
|
52
|
+
*/
|
|
53
|
+
distance: number;
|
|
54
|
+
/**
|
|
55
|
+
* The line that joins the handle to the box
|
|
56
|
+
*
|
|
57
|
+
* @defaultValue `#FF2D55`, 2 px, solid
|
|
58
|
+
*/
|
|
59
|
+
connector: StrokeStyle;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* How the vertex handles of the selected line or polygon look (part of
|
|
63
|
+
* {@link SelectionUIConfig})
|
|
64
|
+
*/
|
|
65
|
+
export interface VertexHandleStyle {
|
|
66
|
+
/**
|
|
67
|
+
* A vertex handle
|
|
68
|
+
*
|
|
69
|
+
* @defaultValue a 12 px white circle with a 2 px `#FF2D55` outline
|
|
70
|
+
*/
|
|
71
|
+
point: PointStyle;
|
|
72
|
+
/**
|
|
73
|
+
* A selected vertex
|
|
74
|
+
*
|
|
75
|
+
* @defaultValue a 12 px white circle with a 3 px `#FF2D55` outline
|
|
76
|
+
*/
|
|
77
|
+
selected: PointStyle;
|
|
78
|
+
/**
|
|
79
|
+
* A vertex of another feature that follows along while shared vertices move together
|
|
80
|
+
*
|
|
81
|
+
* They are distinguished by inverting the fill while staying in the same color family as the
|
|
82
|
+
* selection (#FF2D55). No other hue is used, so that they are not confused with the snapping
|
|
83
|
+
* indicator (#00C7BE).
|
|
84
|
+
*
|
|
85
|
+
* @defaultValue a 12 px `#FF2D55` circle with a 2 px white outline
|
|
86
|
+
*/
|
|
87
|
+
followed: PointStyle;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* How the midpoint handles look: the handles at the middle of each edge, which add a vertex
|
|
91
|
+
* when dragged (part of {@link SelectionUIConfig})
|
|
92
|
+
*/
|
|
93
|
+
export interface MidpointHandleStyle {
|
|
94
|
+
/**
|
|
95
|
+
* A midpoint handle
|
|
96
|
+
*
|
|
97
|
+
* @defaultValue an 8 px white circle with a 1.5 px `#FF2D55` outline
|
|
98
|
+
*/
|
|
99
|
+
point: PointStyle;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* How the handle that changes the radius of a selected Circle looks (part of
|
|
103
|
+
* {@link SelectionUIConfig})
|
|
104
|
+
*/
|
|
105
|
+
export interface RadiusHandleStyle {
|
|
106
|
+
/**
|
|
107
|
+
* The handle
|
|
108
|
+
*
|
|
109
|
+
* @defaultValue a 10 px white circle with a 1 px `#FF2D55` outline
|
|
110
|
+
*/
|
|
111
|
+
point: PointStyle;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* How the marker at the center of a selected Circle looks (part of
|
|
115
|
+
* {@link SelectionUIConfig})
|
|
116
|
+
*/
|
|
117
|
+
export interface CenterMarkerStyle {
|
|
118
|
+
/**
|
|
119
|
+
* The marker
|
|
120
|
+
*
|
|
121
|
+
* @defaultValue a 6 px white circle with a 1 px `#FF2D55` outline
|
|
122
|
+
*/
|
|
123
|
+
point: PointStyle;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* How the line from the center of a selected Circle to its radius handle looks (part of
|
|
127
|
+
* {@link SelectionUIConfig})
|
|
128
|
+
*/
|
|
129
|
+
export interface RadiusLineStyle {
|
|
130
|
+
/**
|
|
131
|
+
* The line
|
|
132
|
+
*
|
|
133
|
+
* @defaultValue `#FF2D55`, 1 px, dashed with a 3 px dash and a 3 px gap
|
|
134
|
+
*/
|
|
135
|
+
stroke: StrokeStyle;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* How the selection UI looks: the box around the selection and its handles
|
|
139
|
+
*
|
|
140
|
+
* Give the parts to change through the `selectionStyle` option of `createMapLibreGLDraw`;
|
|
141
|
+
* the parts left out keep their defaults. Sizes and widths are in CSS pixels and stay the
|
|
142
|
+
* same at every zoom.
|
|
143
|
+
*
|
|
144
|
+
* A single selection shows the box with the resize handles at its corners and the rotate
|
|
145
|
+
* handle above it; a line or a polygon also shows its vertex and midpoint handles, and a Circle
|
|
146
|
+
* its center marker, radius line and radius handle. A multiple selection shows one box around
|
|
147
|
+
* every selected feature, with the resize and rotate handles, and a box without handles around
|
|
148
|
+
* each feature. A locked feature shows the box without handles.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```ts
|
|
152
|
+
* const draw = createMapLibreGLDraw(map, {
|
|
153
|
+
* selectionStyle: {
|
|
154
|
+
* boundingBox: {
|
|
155
|
+
* stroke: { width: 1, color: [0, 0.4, 1, 1], opacity: 1, lineStyle: 'solid' },
|
|
156
|
+
* margin: 6,
|
|
157
|
+
* },
|
|
158
|
+
* },
|
|
159
|
+
* });
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export interface SelectionUIConfig {
|
|
163
|
+
/**
|
|
164
|
+
* The box around the selection
|
|
165
|
+
*
|
|
166
|
+
* @defaultValue `#FF2D55`, 2 px, solid, 10 px from the features
|
|
167
|
+
*/
|
|
168
|
+
boundingBox: BoundingBoxStyle;
|
|
169
|
+
/**
|
|
170
|
+
* The resize handles at the four corners of the box
|
|
171
|
+
*
|
|
172
|
+
* @defaultValue 10 px `#FF2D55` squares without an outline
|
|
173
|
+
*/
|
|
174
|
+
resizeHandle: ResizeHandleStyle;
|
|
175
|
+
/**
|
|
176
|
+
* The rotate handle above the box
|
|
177
|
+
*
|
|
178
|
+
* @defaultValue a 10 px `#FF2D55` circle, 10 px above the box, joined by a 2 px line
|
|
179
|
+
*/
|
|
180
|
+
rotateHandle: RotateHandleStyle;
|
|
181
|
+
/**
|
|
182
|
+
* The vertex handles
|
|
183
|
+
*
|
|
184
|
+
* @defaultValue 12 px white circles with a 2 px `#FF2D55` outline (3 px when selected)
|
|
185
|
+
*/
|
|
186
|
+
vertexHandle: VertexHandleStyle;
|
|
187
|
+
/**
|
|
188
|
+
* The midpoint handles
|
|
189
|
+
*
|
|
190
|
+
* @defaultValue 8 px white circles with a 1.5 px `#FF2D55` outline
|
|
191
|
+
*/
|
|
192
|
+
midpointHandle: MidpointHandleStyle;
|
|
193
|
+
/**
|
|
194
|
+
* For a Circle: the radius handle
|
|
195
|
+
*
|
|
196
|
+
* @defaultValue a 10 px white circle with a 1 px `#FF2D55` outline
|
|
197
|
+
*/
|
|
198
|
+
radiusHandle: RadiusHandleStyle;
|
|
199
|
+
/**
|
|
200
|
+
* For a Circle: the center marker
|
|
201
|
+
*
|
|
202
|
+
* @defaultValue a 6 px white circle with a 1 px `#FF2D55` outline
|
|
203
|
+
*/
|
|
204
|
+
centerMarker: CenterMarkerStyle;
|
|
205
|
+
/**
|
|
206
|
+
* For a Circle: the radius line (the dashed line from the center to the radius handle)
|
|
207
|
+
*
|
|
208
|
+
* @defaultValue `#FF2D55`, 1 px, dashed 3 px / 3 px
|
|
209
|
+
*/
|
|
210
|
+
radiusLine: RadiusLineStyle;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Default selection UI configuration
|
|
214
|
+
*/
|
|
215
|
+
export declare const DEFAULT_SELECTION_CONFIG: SelectionUIConfig;
|
|
216
|
+
/**
|
|
217
|
+
* Style changes on hover
|
|
218
|
+
*/
|
|
219
|
+
export declare const HOVER_STYLE_MODIFIERS: {
|
|
220
|
+
/** Enlargement factor for the size */
|
|
221
|
+
sizeMultiplier: number;
|
|
222
|
+
/** Increase in opacity */
|
|
223
|
+
opacityIncrease: number;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Style changes while dragging
|
|
227
|
+
*/
|
|
228
|
+
export declare const DRAGGING_STYLE_MODIFIERS: {
|
|
229
|
+
/** Reduction factor for the size */
|
|
230
|
+
sizeMultiplier: number;
|
|
231
|
+
/** Opacity */
|
|
232
|
+
opacity: number;
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Threshold at which handle thinning kicks in
|
|
236
|
+
*
|
|
237
|
+
* Only features whose total number of vertex handles and midpoint handles exceeds this are
|
|
238
|
+
* thinned. Features at or below it do not run the thinning computation at all and show every
|
|
239
|
+
* handle, just as before.
|
|
240
|
+
*/
|
|
241
|
+
export declare const HANDLE_THINNING_THRESHOLD = 400;
|
|
242
|
+
/**
|
|
243
|
+
* Minimum screen distance from an already adopted handle (pixels)
|
|
244
|
+
*
|
|
245
|
+
* A greedy algorithm adopts only the vertices that are at least this far from "the vertex
|
|
246
|
+
* adopted just before".
|
|
247
|
+
*/
|
|
248
|
+
export declare const MIN_HANDLE_SPACING_PX = 14;
|
|
249
|
+
/**
|
|
250
|
+
* Minimum screen length of an edge that gets a midpoint handle (pixels)
|
|
251
|
+
*
|
|
252
|
+
* An edge shorter than this cannot be grabbed even if its midpoint is shown, so no midpoint is
|
|
253
|
+
* shown for it while thinning.
|
|
254
|
+
*/
|
|
255
|
+
export declare const MIDPOINT_MIN_EDGE_PX = 32;
|
|
256
|
+
/**
|
|
257
|
+
* Debounce from the camera coming to rest until the thinning is recomputed (milliseconds)
|
|
258
|
+
*
|
|
259
|
+
* While the camera is moving, the old set is drawn as is; once it has been at rest for this
|
|
260
|
+
* long, the set is rebuilt.
|
|
261
|
+
*/
|
|
262
|
+
export declare const THINNING_REFRESH_DEBOUNCE_MS = 150;
|
|
263
|
+
/**
|
|
264
|
+
* Margin of the viewport pre-filtering (pixels)
|
|
265
|
+
*
|
|
266
|
+
* Including vertices just outside the screen prevents the handles at the edge from
|
|
267
|
+
* disappearing on a slight pan.
|
|
268
|
+
*/
|
|
269
|
+
export declare const THINNING_VIEWPORT_MARGIN_PX = 100;
|
|
270
|
+
/**
|
|
271
|
+
* Helper function that merges configurations
|
|
272
|
+
*/
|
|
273
|
+
export declare function mergeSelectionUIConfig(base: SelectionUIConfig, override: Partial<SelectionUIConfig>): SelectionUIConfig;
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Default selection UI configuration
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_SELECTION_CONFIG = {
|
|
7
|
+
boundingBox: {
|
|
8
|
+
stroke: {
|
|
9
|
+
// 2px for better visibility (the documented specification is 1px, but that is too thin
|
|
10
|
+
// on high DPI)
|
|
11
|
+
width: 2,
|
|
12
|
+
color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
13
|
+
opacity: 1.0,
|
|
14
|
+
lineStyle: 'solid',
|
|
15
|
+
},
|
|
16
|
+
margin: 10, // Documented specification: default 10px
|
|
17
|
+
},
|
|
18
|
+
resizeHandle: {
|
|
19
|
+
point: {
|
|
20
|
+
shape: 'square',
|
|
21
|
+
size: 10,
|
|
22
|
+
fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
23
|
+
fillOpacity: 1.0,
|
|
24
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
25
|
+
strokeWidth: 0, // Documented specification: no border
|
|
26
|
+
strokeOpacity: 1.0,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
rotateHandle: {
|
|
30
|
+
point: {
|
|
31
|
+
shape: 'circle',
|
|
32
|
+
size: 10,
|
|
33
|
+
fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
34
|
+
fillOpacity: 1.0,
|
|
35
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
36
|
+
strokeWidth: 0,
|
|
37
|
+
strokeOpacity: 1.0,
|
|
38
|
+
},
|
|
39
|
+
distance: 10, // Documented specification: default 10px
|
|
40
|
+
connector: {
|
|
41
|
+
width: 2, // Unified with the same width as the bounding box
|
|
42
|
+
color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
43
|
+
opacity: 1.0,
|
|
44
|
+
lineStyle: 'solid',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
vertexHandle: {
|
|
48
|
+
point: {
|
|
49
|
+
shape: 'circle',
|
|
50
|
+
size: 12, // 12px for better visibility (the documented specification is 10px)
|
|
51
|
+
fillColor: [1.0, 1.0, 1.0, 1.0],
|
|
52
|
+
fillOpacity: 1.0,
|
|
53
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
54
|
+
strokeWidth: 2, // 2px for better visibility (the documented specification is 1px)
|
|
55
|
+
strokeOpacity: 1.0,
|
|
56
|
+
},
|
|
57
|
+
selected: {
|
|
58
|
+
shape: 'circle',
|
|
59
|
+
size: 12, // The same size as the normal state
|
|
60
|
+
fillColor: [1.0, 1.0, 1.0, 1.0], // white (the same as the normal state)
|
|
61
|
+
fillOpacity: 1.0,
|
|
62
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
63
|
+
strokeWidth: 3, // A slightly thicker line (normally 2px)
|
|
64
|
+
strokeOpacity: 1.0,
|
|
65
|
+
},
|
|
66
|
+
// Following vertices: the fill is inverted (#FF2D55 fill + white border). They are
|
|
67
|
+
// distinguishable at a glance from selected vertices (white fill + #FF2D55 border), while
|
|
68
|
+
// the color family is kept the same as the selection.
|
|
69
|
+
followed: {
|
|
70
|
+
shape: 'circle',
|
|
71
|
+
size: 12, // The same size as the normal and selected states
|
|
72
|
+
fillColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55 (fill)
|
|
73
|
+
fillOpacity: 1.0,
|
|
74
|
+
strokeColor: [1.0, 1.0, 1.0, 1.0], // white
|
|
75
|
+
strokeWidth: 2,
|
|
76
|
+
strokeOpacity: 1.0,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
midpointHandle: {
|
|
80
|
+
point: {
|
|
81
|
+
shape: 'circle',
|
|
82
|
+
// 8px for better visibility and easier manipulation (the documented specification is 5px)
|
|
83
|
+
size: 8,
|
|
84
|
+
fillColor: [1.0, 1.0, 1.0, 1.0],
|
|
85
|
+
fillOpacity: 1.0,
|
|
86
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
87
|
+
strokeWidth: 1.5, // 1.5px for better visibility (the documented specification is 1px)
|
|
88
|
+
strokeOpacity: 1.0,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
// For Circle: radius handle
|
|
92
|
+
// Specification: a 10px diameter circle, white fill, pink border (#FF2D55), 1px wide
|
|
93
|
+
radiusHandle: {
|
|
94
|
+
point: {
|
|
95
|
+
shape: 'circle',
|
|
96
|
+
size: 10,
|
|
97
|
+
fillColor: [1.0, 1.0, 1.0, 1.0], // white
|
|
98
|
+
fillOpacity: 1.0,
|
|
99
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
100
|
+
strokeWidth: 1,
|
|
101
|
+
strokeOpacity: 1.0,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
// For Circle: center marker
|
|
105
|
+
// Specification: a 6px diameter circle, white fill, pink border (#FF2D55), 1px wide
|
|
106
|
+
centerMarker: {
|
|
107
|
+
point: {
|
|
108
|
+
shape: 'circle',
|
|
109
|
+
size: 6,
|
|
110
|
+
fillColor: [1.0, 1.0, 1.0, 1.0], // white
|
|
111
|
+
fillOpacity: 1.0,
|
|
112
|
+
strokeColor: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
113
|
+
strokeWidth: 1,
|
|
114
|
+
strokeOpacity: 1.0,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
// For Circle: radius line
|
|
118
|
+
// Specification: a pink (#FF2D55) dotted line, 1px wide, with a pattern of a 3px dash and a
|
|
119
|
+
// 3px gap
|
|
120
|
+
radiusLine: {
|
|
121
|
+
stroke: {
|
|
122
|
+
width: 1,
|
|
123
|
+
color: [1.0, 0.176, 0.333, 1.0], // #FF2D55
|
|
124
|
+
opacity: 1.0,
|
|
125
|
+
lineStyle: 'dashed',
|
|
126
|
+
dashArray: [3, 3],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Style changes on hover
|
|
132
|
+
*/
|
|
133
|
+
export const HOVER_STYLE_MODIFIERS = {
|
|
134
|
+
/** Enlargement factor for the size */
|
|
135
|
+
sizeMultiplier: 1.2,
|
|
136
|
+
/** Increase in opacity */
|
|
137
|
+
opacityIncrease: 0.2,
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Style changes while dragging
|
|
141
|
+
*/
|
|
142
|
+
export const DRAGGING_STYLE_MODIFIERS = {
|
|
143
|
+
/** Reduction factor for the size */
|
|
144
|
+
sizeMultiplier: 0.9,
|
|
145
|
+
/** Opacity */
|
|
146
|
+
opacity: 0.8,
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Threshold at which handle thinning kicks in
|
|
150
|
+
*
|
|
151
|
+
* Only features whose total number of vertex handles and midpoint handles exceeds this are
|
|
152
|
+
* thinned. Features at or below it do not run the thinning computation at all and show every
|
|
153
|
+
* handle, just as before.
|
|
154
|
+
*/
|
|
155
|
+
export const HANDLE_THINNING_THRESHOLD = 400;
|
|
156
|
+
/**
|
|
157
|
+
* Minimum screen distance from an already adopted handle (pixels)
|
|
158
|
+
*
|
|
159
|
+
* A greedy algorithm adopts only the vertices that are at least this far from "the vertex
|
|
160
|
+
* adopted just before".
|
|
161
|
+
*/
|
|
162
|
+
export const MIN_HANDLE_SPACING_PX = 14;
|
|
163
|
+
/**
|
|
164
|
+
* Minimum screen length of an edge that gets a midpoint handle (pixels)
|
|
165
|
+
*
|
|
166
|
+
* An edge shorter than this cannot be grabbed even if its midpoint is shown, so no midpoint is
|
|
167
|
+
* shown for it while thinning.
|
|
168
|
+
*/
|
|
169
|
+
export const MIDPOINT_MIN_EDGE_PX = 32;
|
|
170
|
+
/**
|
|
171
|
+
* Debounce from the camera coming to rest until the thinning is recomputed (milliseconds)
|
|
172
|
+
*
|
|
173
|
+
* While the camera is moving, the old set is drawn as is; once it has been at rest for this
|
|
174
|
+
* long, the set is rebuilt.
|
|
175
|
+
*/
|
|
176
|
+
export const THINNING_REFRESH_DEBOUNCE_MS = 150;
|
|
177
|
+
/**
|
|
178
|
+
* Margin of the viewport pre-filtering (pixels)
|
|
179
|
+
*
|
|
180
|
+
* Including vertices just outside the screen prevents the handles at the edge from
|
|
181
|
+
* disappearing on a slight pan.
|
|
182
|
+
*/
|
|
183
|
+
export const THINNING_VIEWPORT_MARGIN_PX = 100;
|
|
184
|
+
/**
|
|
185
|
+
* Helper function that merges configurations
|
|
186
|
+
*/
|
|
187
|
+
export function mergeSelectionUIConfig(base, override) {
|
|
188
|
+
return {
|
|
189
|
+
boundingBox: {
|
|
190
|
+
...base.boundingBox,
|
|
191
|
+
...override.boundingBox,
|
|
192
|
+
stroke: {
|
|
193
|
+
...base.boundingBox.stroke,
|
|
194
|
+
...override.boundingBox?.stroke,
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
resizeHandle: {
|
|
198
|
+
...base.resizeHandle,
|
|
199
|
+
...override.resizeHandle,
|
|
200
|
+
point: {
|
|
201
|
+
...base.resizeHandle.point,
|
|
202
|
+
...override.resizeHandle?.point,
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
rotateHandle: {
|
|
206
|
+
...base.rotateHandle,
|
|
207
|
+
...override.rotateHandle,
|
|
208
|
+
point: {
|
|
209
|
+
...base.rotateHandle.point,
|
|
210
|
+
...override.rotateHandle?.point,
|
|
211
|
+
},
|
|
212
|
+
connector: {
|
|
213
|
+
...base.rotateHandle.connector,
|
|
214
|
+
...override.rotateHandle?.connector,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
vertexHandle: {
|
|
218
|
+
...base.vertexHandle,
|
|
219
|
+
...override.vertexHandle,
|
|
220
|
+
point: {
|
|
221
|
+
...base.vertexHandle.point,
|
|
222
|
+
...override.vertexHandle?.point,
|
|
223
|
+
},
|
|
224
|
+
selected: {
|
|
225
|
+
...base.vertexHandle.selected,
|
|
226
|
+
...override.vertexHandle?.selected,
|
|
227
|
+
},
|
|
228
|
+
followed: {
|
|
229
|
+
...base.vertexHandle.followed,
|
|
230
|
+
...override.vertexHandle?.followed,
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
midpointHandle: {
|
|
234
|
+
...base.midpointHandle,
|
|
235
|
+
...override.midpointHandle,
|
|
236
|
+
point: {
|
|
237
|
+
...base.midpointHandle.point,
|
|
238
|
+
...override.midpointHandle?.point,
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
radiusHandle: {
|
|
242
|
+
...base.radiusHandle,
|
|
243
|
+
...override.radiusHandle,
|
|
244
|
+
point: {
|
|
245
|
+
...base.radiusHandle.point,
|
|
246
|
+
...override.radiusHandle?.point,
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
centerMarker: {
|
|
250
|
+
...base.centerMarker,
|
|
251
|
+
...override.centerMarker,
|
|
252
|
+
point: {
|
|
253
|
+
...base.centerMarker.point,
|
|
254
|
+
...override.centerMarker?.point,
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
radiusLine: {
|
|
258
|
+
...base.radiusLine,
|
|
259
|
+
...override.radiusLine,
|
|
260
|
+
stroke: {
|
|
261
|
+
...base.radiusLine.stroke,
|
|
262
|
+
...override.radiusLine?.stroke,
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Topology configuration
|
|
3
|
+
*
|
|
4
|
+
* Settings that keep the "boundary" where adjacent features share coordinates from breaking
|
|
5
|
+
* when it is edited. Everything is disabled by default, and is layered on top of the existing
|
|
6
|
+
* editing behavior only when enabled.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Settings that keep a boundary shared by adjacent features intact while it is edited
|
|
10
|
+
*
|
|
11
|
+
* Give them through the `topology` option of `createMapLibreGLDraw`, or change them later
|
|
12
|
+
* through `draw.topology`. Everything is off by default.
|
|
13
|
+
*/
|
|
14
|
+
export interface TopologyConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Whether dragging a vertex also moves the vertices of other features at the same position
|
|
17
|
+
*
|
|
18
|
+
* When true, dragging a vertex in the select mode also moves, by the same amount, any other
|
|
19
|
+
* feature that has a vertex exactly matching (tolerance 0) the dragged vertex.
|
|
20
|
+
* This lets the boundary of adjacent polygons be edited without creating gaps or overlaps.
|
|
21
|
+
*
|
|
22
|
+
* @defaultValue `false`
|
|
23
|
+
*/
|
|
24
|
+
sharedVertexDrag: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Default topology configuration (everything disabled)
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_TOPOLOGY_CONFIG: TopologyConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Helper function that merges configurations
|
|
32
|
+
*/
|
|
33
|
+
export declare function mergeTopologyConfig(base: TopologyConfig, override: Partial<TopologyConfig>): TopologyConfig;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Default topology configuration (everything disabled)
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_TOPOLOGY_CONFIG = {
|
|
7
|
+
sharedVertexDrag: false,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Helper function that merges configurations
|
|
11
|
+
*/
|
|
12
|
+
export function mergeTopologyConfig(base, override) {
|
|
13
|
+
return {
|
|
14
|
+
...base,
|
|
15
|
+
...override,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace configuration
|
|
3
|
+
*
|
|
4
|
+
* Whether to enable the feature that follows the boundary of an existing feature while drawing
|
|
5
|
+
* and takes in its vertex sequence (edge tracing). It is enabled by default; when disabled,
|
|
6
|
+
* drawing behaves exactly as it did before tracing was introduced.
|
|
7
|
+
*
|
|
8
|
+
* The configuration object is shared as the same instance between Context and ModeContext.
|
|
9
|
+
* When `draw.tracing.setEnabled()` rewrites this object, the drawing modes run with the new
|
|
10
|
+
* value from the next click or move onward.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The setting of edge tracing: following the boundary of an existing feature while drawing
|
|
14
|
+
*
|
|
15
|
+
* Give it through the `trace` option of `createMapLibreGLDraw`, or change it later with
|
|
16
|
+
* `draw.tracing.setEnabled()`.
|
|
17
|
+
*/
|
|
18
|
+
export interface TraceOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Whether tracing is on
|
|
21
|
+
*
|
|
22
|
+
* @defaultValue `true`
|
|
23
|
+
*/
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The setting of edge tracing with its default filled in, as the drawing modes read it
|
|
28
|
+
*/
|
|
29
|
+
export interface TraceConfig {
|
|
30
|
+
/** Whether to enable tracing */
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Default trace configuration (enabled)
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_TRACE_CONFIG: TraceConfig;
|
|
37
|
+
/**
|
|
38
|
+
* Helper function that merges configurations
|
|
39
|
+
*/
|
|
40
|
+
export declare function mergeTraceConfig(base: TraceConfig, override: TraceOptions): TraceConfig;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Default trace configuration (enabled)
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_TRACE_CONFIG = {
|
|
7
|
+
enabled: true,
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Helper function that merges configurations
|
|
11
|
+
*/
|
|
12
|
+
export function mergeTraceConfig(base, override) {
|
|
13
|
+
return {
|
|
14
|
+
...base,
|
|
15
|
+
...override,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Angle computation utilities
|
|
3
|
+
*
|
|
4
|
+
* Angle computation functions used when rendering circle features and when manipulating the
|
|
5
|
+
* radius handle.
|
|
6
|
+
*/
|
|
7
|
+
import type { Coordinate } from '../types/model.js';
|
|
8
|
+
export { getPointAtAngle } from '../../geometry/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Computes the angle between two points (the bearing as seen from the center)
|
|
11
|
+
*
|
|
12
|
+
* The planar inverse of {@link getPointAtAngle}: the longitude difference is scaled by cos of
|
|
13
|
+
* the center latitude. It is not the great-circle bearing, so a point placed with
|
|
14
|
+
* destinationPoint (circles, buffers and the radius handle) must take its bearing from
|
|
15
|
+
* initialBearingDegrees in the geometry module instead.
|
|
16
|
+
*
|
|
17
|
+
* @param center Center coordinate
|
|
18
|
+
* @param point Coordinate of the target point
|
|
19
|
+
* @returns Angle (degrees, clockwise with north as 0, 0-360)
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAngleFromCenter(center: Coordinate, point: Coordinate): number;
|