@sakuzu/maplibre-gl-draw 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1016 -2
- package/README.ja.md +39 -19
- package/README.md +41 -21
- package/dist/api/datasets.d.ts +258 -0
- package/dist/api/document.d.ts +66 -0
- package/dist/api/draw.d.ts +135 -0
- package/dist/api/draw.js +18 -0
- package/dist/api/drawing.d.ts +87 -0
- package/dist/api/errors.d.ts +35 -0
- package/dist/api/errors.js +35 -0
- package/dist/api/events.d.ts +306 -0
- package/dist/api/extension/context.d.ts +247 -0
- package/dist/api/extension/feature-type.d.ts +129 -0
- package/dist/api/extension/mode.d.ts +123 -0
- package/dist/api/extension/plugin.d.ts +51 -0
- package/dist/api/extension/plugin.js +3 -0
- package/dist/api/extension/provider.d.ts +119 -0
- package/dist/api/extension/provider.js +3 -0
- package/dist/api/extension/render.d.ts +176 -0
- package/dist/api/extension/render.js +3 -0
- package/dist/api/extension/store.d.ts +190 -0
- package/dist/api/extension/store.js +3 -0
- package/dist/api/extensions.d.ts +306 -0
- package/dist/api/extensions.js +3 -0
- package/dist/api/features.d.ts +188 -0
- package/dist/api/features.js +3 -0
- package/dist/api/groups.d.ts +111 -0
- package/dist/api/groups.js +3 -0
- package/dist/api/hidden.d.ts +45 -0
- package/dist/api/hidden.js +3 -0
- package/dist/api/impl/adapters.js +463 -0
- package/dist/api/impl/contexts.js +466 -0
- package/dist/api/impl/create-draw.js +124 -0
- package/dist/api/impl/datasets.js +404 -0
- package/dist/api/impl/destroy-guard.js +74 -0
- package/dist/api/impl/document.js +280 -0
- package/dist/api/impl/drawing.js +180 -0
- package/dist/api/impl/engine-context.d.ts +7 -0
- package/dist/api/{context.js → impl/engine-context.js} +49 -38
- package/dist/{maplibre-gl-draw.js → api/impl/engine.js} +145 -177
- package/dist/api/impl/events.js +422 -0
- package/dist/api/impl/extension-host.js +361 -0
- package/dist/api/impl/extensions.js +229 -0
- package/dist/api/impl/features.js +445 -0
- package/dist/api/impl/geometry/apply.d.ts +32 -0
- package/dist/api/{geometry → impl/geometry}/apply.js +10 -27
- package/dist/api/{geometry → impl/geometry}/buffer.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/buffer.js +12 -23
- package/dist/api/{geometry → impl/geometry}/split.d.ts +4 -3
- package/dist/api/{geometry → impl/geometry}/split.js +10 -21
- package/dist/api/{geometry → impl/geometry}/targets.d.ts +2 -20
- package/dist/api/{geometry → impl/geometry}/targets.js +8 -35
- package/dist/api/impl/geometry/types.js +3 -0
- package/dist/api/impl/groups.d.ts +3 -0
- package/dist/api/impl/groups.js +268 -0
- package/dist/api/impl/hidden.js +60 -0
- package/dist/api/impl/import-export/constants.d.ts +22 -0
- package/dist/api/impl/import-export/constants.js +24 -0
- package/dist/api/{import-export → impl/import-export}/embedded-file.js +2 -2
- package/dist/api/{import-export → impl/import-export}/format-detection.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/format-detection.js +2 -1
- package/dist/api/impl/import-export/geojson-export.d.ts +19 -0
- package/dist/api/{import-export → impl/import-export}/geojson-export.js +71 -104
- package/dist/api/{import-export → impl/import-export}/geojson-import.d.ts +11 -7
- package/dist/api/{import-export → impl/import-export}/geojson-import.js +139 -97
- package/dist/api/{import-export → impl/import-export}/geometry-validation.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/geometry-validation.js +45 -0
- package/dist/api/impl/import-export/image-import.d.ts +16 -0
- package/dist/api/impl/import-export/image-import.js +73 -0
- package/dist/api/impl/import-export/legacy-image-style.d.ts +16 -0
- package/dist/api/impl/import-export/legacy-image-style.js +49 -0
- package/dist/api/impl/import-export/native-format.d.ts +14 -0
- package/dist/api/{import-export → impl/import-export}/native-format.js +32 -22
- package/dist/api/impl/import-export/native-upgrade.d.ts +8 -0
- package/dist/api/impl/import-export/native-upgrade.js +139 -0
- package/dist/api/{import-export → impl/import-export}/native-validation.d.ts +1 -1
- package/dist/api/{import-export → impl/import-export}/native-validation.js +15 -14
- package/dist/api/impl/import-export/style-validation.d.ts +24 -0
- package/dist/api/impl/import-export/style-validation.js +86 -0
- package/dist/api/impl/import-export/types.d.ts +52 -0
- package/dist/api/impl/import-export/types.js +3 -0
- package/dist/api/impl/input.js +180 -0
- package/dist/api/impl/layers.js +307 -0
- package/dist/api/impl/metadata.d.ts +1 -0
- package/dist/api/impl/metadata.js +22 -0
- package/dist/api/impl/options.d.ts +1 -0
- package/dist/api/impl/options.js +822 -0
- package/dist/api/impl/placement.d.ts +1 -0
- package/dist/api/impl/placement.js +138 -0
- package/dist/api/impl/render-context.d.ts +13 -0
- package/dist/api/impl/render-context.js +272 -0
- package/dist/api/impl/rows.d.ts +1 -0
- package/dist/api/impl/rows.js +46 -0
- package/dist/api/impl/selection.d.ts +1 -0
- package/dist/api/impl/selection.js +186 -0
- package/dist/api/impl/shared.d.ts +64 -0
- package/dist/api/impl/shared.js +178 -0
- package/dist/api/impl/validate-extension.d.ts +1 -0
- package/dist/api/impl/validate-extension.js +159 -0
- package/dist/api/layers.d.ts +130 -0
- package/dist/api/layers.js +3 -0
- package/dist/api/metadata.d.ts +18 -0
- package/dist/api/metadata.js +3 -0
- package/dist/api/model.d.ts +487 -0
- package/dist/api/model.js +47 -0
- package/dist/api/options.d.ts +466 -0
- package/dist/api/options.js +3 -0
- package/dist/api/selection.d.ts +94 -0
- package/dist/api/selection.js +3 -0
- package/dist/api/state.d.ts +155 -0
- package/dist/api/state.js +12 -0
- package/dist/{display → dataset}/chunk.d.ts +1 -1
- package/dist/{display → dataset}/chunk.js +4 -3
- package/dist/{display → dataset}/dataset.js +18 -21
- package/dist/dataset/interaction.d.ts +1 -0
- package/dist/{display → dataset}/interaction.js +18 -6
- package/dist/dataset/manager.d.ts +1 -0
- package/dist/dataset/provider.d.ts +1 -0
- package/dist/{display → dataset}/retained.d.ts +1 -1
- package/dist/{display → dataset}/retained.js +8 -7
- package/dist/dataset/source.d.ts +1 -0
- package/dist/{display → dataset}/source.js +17 -4
- package/dist/dataset/spatial.d.ts +1 -0
- package/dist/{display → dataset}/spatial.js +1 -1
- package/dist/dataset/style.d.ts +1 -0
- package/dist/{display → dataset}/style.js +1 -1
- package/dist/dataset/table-source.d.ts +1 -0
- package/dist/{display/columnar/source.js → dataset/table-source.js} +53 -25
- package/dist/{display → dataset}/thinning.d.ts +0 -10
- package/dist/{display → dataset}/thinning.js +3 -2
- package/dist/dataset/triangulation.d.ts +1 -0
- package/dist/{display → dataset}/triangulation.js +0 -0
- package/dist/{display → dataset}/types.d.ts +82 -121
- package/dist/dataset/types.js +61 -0
- package/dist/dispatcher/hit-test/box-strategies.js +13 -13
- package/dist/dispatcher/hit-test/box-strategy.d.ts +2 -15
- package/dist/dispatcher/hit-test/globe-shape.js +5 -4
- package/dist/dispatcher/hit-test/service.d.ts +17 -0
- package/dist/dispatcher/hit-test/service.js +80 -16
- package/dist/dispatcher/hit-test/strategies/base.d.ts +13 -19
- package/dist/dispatcher/hit-test/strategies/circle.js +3 -2
- package/dist/dispatcher/hit-test/strategies/image.js +6 -18
- package/dist/dispatcher/hit-test/strategies/line.d.ts +0 -6
- package/dist/dispatcher/hit-test/strategies/line.js +9 -2
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +0 -8
- package/dist/dispatcher/hit-test/strategies/multi.js +17 -8
- package/dist/dispatcher/hit-test/strategies/point.d.ts +9 -7
- package/dist/dispatcher/hit-test/strategies/point.js +8 -4
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +0 -7
- package/dist/dispatcher/hit-test/strategies/polygon.js +11 -3
- package/dist/dispatcher/hit-test/topmost.d.ts +1 -1
- package/dist/dispatcher/input-router.js +152 -69
- package/dist/dispatcher/normalizer.js +6 -2
- package/dist/dispatcher/types.d.ts +6 -1
- package/dist/extension/feature-handler.d.ts +1 -182
- package/dist/extension/index.d.ts +4 -7
- package/dist/extension/renderers.d.ts +1 -208
- package/dist/geometry/angle.d.ts +0 -8
- package/dist/geometry/angle.js +0 -8
- package/dist/geometry/bbox.d.ts +4 -12
- package/dist/geometry/bbox.js +4 -12
- package/dist/geometry/boolean.d.ts +0 -51
- package/dist/geometry/boolean.js +0 -51
- package/dist/geometry/buffer.d.ts +0 -26
- package/dist/geometry/buffer.js +0 -26
- package/dist/geometry/circle.d.ts +0 -9
- package/dist/geometry/circle.js +0 -9
- package/dist/geometry/coords.d.ts +0 -16
- package/dist/geometry/coords.js +0 -16
- package/dist/geometry/distance.d.ts +0 -24
- package/dist/geometry/distance.js +0 -24
- package/dist/geometry/errors.d.ts +21 -36
- package/dist/geometry/errors.js +49 -29
- package/dist/geometry/geojson.d.ts +81 -0
- package/dist/geometry/geojson.js +164 -0
- package/dist/geometry/index.d.ts +38 -23
- package/dist/geometry/index.js +43 -31
- package/dist/geometry/measure.d.ts +0 -27
- package/dist/geometry/measure.js +0 -27
- package/dist/geometry/predicates.d.ts +0 -9
- package/dist/geometry/predicates.js +0 -9
- package/dist/geometry/public-bounds.d.ts +26 -0
- package/dist/geometry/public-bounds.js +30 -0
- package/dist/geometry/public-combine.d.ts +78 -0
- package/dist/geometry/public-combine.js +82 -0
- package/dist/geometry/public-create.d.ts +54 -0
- package/dist/geometry/public-create.js +70 -0
- package/dist/geometry/public-measure.d.ts +170 -0
- package/dist/geometry/public-measure.js +283 -0
- package/dist/geometry/public-predicates.d.ts +54 -0
- package/dist/geometry/public-predicates.js +144 -0
- package/dist/geometry/public-repair.d.ts +75 -0
- package/dist/geometry/public-repair.js +77 -0
- package/dist/geometry/simplify.d.ts +0 -7
- package/dist/geometry/simplify.js +0 -7
- package/dist/geometry/split.d.ts +0 -20
- package/dist/geometry/split.js +0 -20
- package/dist/geometry/units.d.ts +20 -12
- package/dist/geometry/units.js +20 -12
- package/dist/index.d.ts +52 -66
- package/dist/index.js +6 -18
- package/dist/messages.d.ts +7 -7
- package/dist/modes/draw/circle.js +83 -207
- package/dist/modes/draw/commit-layer.d.ts +5 -16
- package/dist/modes/draw/commit-layer.js +2 -13
- package/dist/modes/draw/freehand.js +108 -246
- package/dist/modes/draw/image.js +4 -2
- package/dist/modes/draw/index.d.ts +5 -5
- package/dist/modes/draw/index.js +5 -5
- package/dist/modes/draw/line.js +18 -354
- package/dist/modes/draw/point.js +29 -78
- package/dist/modes/draw/polygon.js +23 -368
- package/dist/modes/draw/trace-support.d.ts +43 -36
- package/dist/modes/draw/trace-support.js +95 -98
- package/dist/modes/draw/vertex-drawing.d.ts +1 -0
- package/dist/modes/draw/vertex-drawing.js +176 -0
- package/dist/modes/handler.d.ts +1 -285
- package/dist/modes/manager.d.ts +2 -2
- package/dist/modes/manager.js +3 -0
- package/dist/modes/select/box-selection.d.ts +3 -3
- package/dist/modes/select/box-selection.js +2 -1
- package/dist/modes/select/click-handler.d.ts +5 -5
- package/dist/modes/select/click-handler.js +22 -20
- package/dist/modes/select/cursor-handler.d.ts +2 -2
- package/dist/modes/select/drag/intermediate-writes.js +1 -1
- package/dist/modes/select/drag/move.js +3 -3
- package/dist/modes/select/drag/operation.d.ts +3 -3
- package/dist/modes/select/drag/radius.js +5 -4
- package/dist/modes/select/drag/transform.d.ts +2 -2
- package/dist/modes/select/drag/transform.js +11 -5
- package/dist/modes/select/drag/vertex.d.ts +2 -2
- package/dist/modes/select/drag/vertex.js +13 -8
- package/dist/modes/select/drag-handler.js +44 -25
- package/dist/modes/select/mode.js +17 -17
- package/dist/modes/select/shortcut-handler.d.ts +8 -8
- package/dist/modes/select/shortcut-handler.js +9 -7
- package/dist/operations/layer-operations.js +29 -168
- package/dist/operations/resize.d.ts +2 -2
- package/dist/operations/resize.js +5 -5
- package/dist/operations/rotate.js +5 -5
- package/dist/operations/selection-operations.d.ts +16 -1
- package/dist/operations/selection-operations.js +28 -13
- package/dist/operations/shared-vertex.js +4 -2
- package/dist/operations/trace-graph.d.ts +0 -18
- package/dist/operations/trace-graph.js +0 -18
- package/dist/operations/vertex.js +36 -35
- package/dist/shared/color.d.ts +1 -0
- package/dist/shared/color.js +245 -0
- package/dist/shared/config/constants.d.ts +1 -54
- package/dist/shared/config/constants.js +1 -58
- package/dist/shared/config/feature-style.d.ts +16 -13
- package/dist/shared/config/feature-style.js +9 -0
- package/dist/shared/config/rendering.d.ts +3 -3
- package/dist/shared/config/selection-highlight.d.ts +0 -15
- package/dist/shared/config/selection-highlight.js +4 -7
- package/dist/shared/config/selection.d.ts +2 -32
- package/dist/shared/config/selection.js +0 -18
- package/dist/shared/config/topology.d.ts +2 -2
- package/dist/shared/config/trace.d.ts +4 -4
- package/dist/shared/math/angle.d.ts +1 -1
- package/dist/shared/math/angle.js +1 -1
- package/dist/shared/math/circle.d.ts +1 -1
- package/dist/shared/math/circle.js +1 -1
- package/dist/shared/math/distance.d.ts +2 -1
- package/dist/shared/math/distance.js +3 -2
- package/dist/shared/math/index.d.ts +1 -1
- package/dist/shared/math/index.js +1 -1
- package/dist/shared/math/transform.d.ts +23 -0
- package/dist/shared/math/transform.js +47 -28
- package/dist/shared/properties.d.ts +18 -0
- package/dist/shared/properties.js +129 -0
- package/dist/shared/types/events.d.ts +15 -7
- package/dist/shared/types/model.d.ts +109 -159
- package/dist/shared/types/style.d.ts +1 -1
- package/dist/shared/utils/color.d.ts +2 -36
- package/dist/shared/utils/color.js +13 -70
- package/dist/shared/utils/coordinates.d.ts +30 -4
- package/dist/shared/utils/coordinates.js +56 -10
- package/dist/shared/utils/event-emitter.d.ts +1 -262
- package/dist/shared/utils/event-emitter.js +4 -3
- package/dist/shared/utils/feature-bbox.js +8 -7
- package/dist/shared/utils/feature-segments.js +5 -4
- package/dist/shared/utils/image.d.ts +0 -4
- package/dist/shared/utils/image.js +0 -6
- package/dist/shared/utils/name-generator.d.ts +14 -20
- package/dist/shared/utils/name-generator.js +20 -3
- package/dist/shared/utils/pixel-ratio.d.ts +9 -3
- package/dist/shared/utils/pixel-ratio.js +13 -4
- package/dist/shared/utils/property.d.ts +7 -50
- package/dist/shared/utils/property.js +22 -87
- package/dist/snapping/custom-targets.js +21 -4
- package/dist/snapping/indicator.js +20 -11
- package/dist/snapping/providers/display.d.ts +6 -1
- package/dist/snapping/providers/display.js +2 -1
- package/dist/snapping/providers/guide.d.ts +3 -43
- package/dist/snapping/providers/guide.js +1 -44
- package/dist/snapping/providers/intersection.js +1 -1
- package/dist/snapping/providers/store.js +3 -3
- package/dist/snapping/service.js +18 -7
- package/dist/snapping/types.d.ts +9 -35
- package/dist/store/draw-store.js +233 -142
- package/dist/store/local-visibility.d.ts +11 -6
- package/dist/store/local-visibility.js +38 -7
- package/dist/store/lock.d.ts +0 -6
- package/dist/store/lock.js +0 -6
- package/dist/store/memory/change-bus.d.ts +3 -3
- package/dist/store/memory/change-bus.js +12 -0
- package/dist/store/memory/file-store.d.ts +2 -2
- package/dist/store/memory/ui-state.d.ts +1 -51
- package/dist/store/memory/ui-state.js +122 -134
- package/dist/store/memory.d.ts +1 -8
- package/dist/store/memory.js +249 -45
- package/dist/store/ordering.d.ts +9 -0
- package/dist/store/ordering.js +17 -0
- package/dist/store/spatial/spatial-index.d.ts +1 -1
- package/dist/store/spatial/spatial-index.js +1 -1
- package/dist/store/spatial/store-spatial-index.d.ts +3 -1
- package/dist/store/spatial/store-spatial-index.js +9 -3
- package/dist/store/store.d.ts +66 -107
- package/dist/store/types.d.ts +1 -1
- package/dist/store/writable-layer.d.ts +1 -1
- package/dist/store/writable-layer.js +2 -2
- package/dist/table/builder.d.ts +83 -0
- package/dist/table/builder.js +381 -0
- package/dist/table/index.d.ts +37 -0
- package/dist/table/index.js +5 -0
- package/dist/table/packed-rtree.d.ts +1 -0
- package/dist/{display → table}/packed-rtree.js +1 -1
- package/dist/table/partition.d.ts +1 -0
- package/dist/{display → table}/partition.js +3 -3
- package/dist/table/prepare.d.ts +44 -0
- package/dist/table/prepare.js +136 -0
- package/dist/table/table.d.ts +1 -0
- package/dist/{display/columnar → table}/table.js +29 -25
- package/dist/{display/columnar → table}/types.d.ts +68 -72
- package/dist/table/types.js +3 -0
- package/dist/view/coordinator.js +4 -3
- package/dist/view/feature-companion.d.ts +13 -7
- package/dist/view/feature-companion.js +11 -3
- package/dist/view/globe-subdivision.js +3 -3
- package/dist/view/layer/attach.d.ts +1 -1
- package/dist/view/layer/attach.js +1 -1
- package/dist/view/layer/custom-layer.js +40 -11
- package/dist/view/layer/display-list.js +2 -1
- package/dist/view/layer/drape-planner.d.ts +2 -2
- package/dist/view/layer/frame-render.d.ts +3 -3
- package/dist/view/layer/frame-render.js +7 -2
- package/dist/view/layer/frame-state.d.ts +6 -6
- package/dist/view/layer/index.d.ts +2 -2
- package/dist/view/layer/index.js +1 -1
- package/dist/view/layer/render.d.ts +4 -4
- package/dist/view/layer/render.js +3 -8
- package/dist/view/layer/renderers.d.ts +2 -2
- package/dist/view/layer/renderers.js +1 -1
- package/dist/view/layer/slot-manager.d.ts +2 -2
- package/dist/view/layer/slot-manager.js +4 -4
- package/dist/view/layer/slots.d.ts +2 -2
- package/dist/view/layer/slots.js +1 -1
- package/dist/view/layer/store-retained-bbox.js +3 -2
- package/dist/view/layer/store-retained-classify.d.ts +5 -7
- package/dist/view/layer/store-retained-classify.js +19 -7
- package/dist/view/layer/store-retained-collect.js +8 -7
- package/dist/view/layer/store-retained-coord-patch.d.ts +0 -8
- package/dist/view/layer/store-retained-coord-patch.js +13 -4
- package/dist/view/layer/store-retained-immediate.d.ts +3 -3
- package/dist/view/layer/store-retained-immediate.js +3 -8
- package/dist/view/layer/store-retained-invalidation.d.ts +2 -2
- package/dist/view/layer/store-retained.d.ts +2 -2
- package/dist/view/layer/store-retained.js +1 -1
- package/dist/view/renderers/batch-manager.js +8 -7
- package/dist/view/renderers/drawer.js +21 -15
- package/dist/view/renderers/image.js +13 -39
- package/dist/view/renderers/line/line-types.d.ts +3 -3
- package/dist/view/renderers/line/sdf-line.js +3 -1
- package/dist/view/renderers/point/billboard-depth.js +1 -1
- package/dist/view/renderers/point/point-instance.js +1 -1
- package/dist/view/renderers/point/point-shape.js +2 -2
- package/dist/view/renderers/point/point-style.js +48 -4
- package/dist/view/renderers/polygon/batch.js +1 -2
- package/dist/view/renderers/polygon/fill.js +3 -1
- package/dist/view/renderers/polygon/sdf-polygon.js +2 -3
- package/dist/view/renderers/polygon/triangulator.d.ts +1 -1
- package/dist/view/renderers/stroke.js +3 -1
- package/dist/view/shaders/helpers.d.ts +2 -42
- package/dist/view/shaders/helpers.js +0 -6
- package/dist/view/shaders/projection.d.ts +15 -7
- package/dist/view/shaders/projection.js +23 -6
- package/dist/view/shaders/quad.d.ts +16 -12
- package/dist/view/shaders/quad.js +34 -13
- package/dist/view/style-rule.d.ts +5 -42
- package/dist/view/style-rule.js +20 -44
- package/dist/view/terrain/binding.d.ts +1 -0
- package/dist/view/terrain/binding.js +29 -0
- package/dist/view/terrain/context.d.ts +3 -4
- package/dist/view/terrain/context.js +4 -5
- package/dist/view/terrain/drape/geometry.js +1 -1
- package/dist/view/terrain/drape/pass.d.ts +1 -1
- package/dist/view/terrain/drape/pass.js +8 -7
- package/dist/view/terrain/polygon.d.ts +9 -5
- package/dist/view/terrain/polygon.js +16 -2
- package/dist/view/terrain/state.d.ts +1 -1
- package/dist/view/terrain/state.js +1 -1
- package/dist/view/terrain/tessellation.d.ts +2 -2
- package/dist/view/terrain/tessellation.js +1 -1
- package/dist/view/ui/auxiliary-handles.d.ts +6 -29
- package/dist/view/ui/bounds.js +8 -12
- package/dist/view/ui/handle-test.js +2 -2
- package/dist/view/ui/handle-thinning.js +17 -17
- package/dist/view/ui/handles.js +21 -13
- package/dist/view/ui/helper.d.ts +1 -1
- package/dist/view/ui/helper.js +1 -1
- package/dist/view/ui/index.d.ts +1 -1
- package/dist/view/ui/selection-scope.js +4 -2
- package/dist/view/ui/selection-ui/bounding-box.js +6 -6
- package/dist/view/ui/selection-ui/extension-registry.d.ts +31 -20
- package/dist/view/ui/selection-ui/extension-registry.js +70 -7
- package/dist/view/ui/selection-ui/index.d.ts +2 -2
- package/dist/view/ui/selection-ui/index.js +1 -1
- package/dist/view/ui/selection-ui/renderer.js +15 -38
- package/dist/view/ui/selection-ui/types.d.ts +17 -2
- package/dist/view/ui/selection-ui-drawer.d.ts +8 -0
- package/dist/view/ui/selection-ui-drawer.js +63 -2
- package/dist/view/ui/tentative.js +1 -1
- package/dist/webgl/index.d.ts +65 -0
- package/dist/webgl/index.js +62 -0
- package/package.json +20 -9
- package/dist/api/api.d.ts +0 -1259
- package/dist/api/api.js +0 -86
- package/dist/api/context.d.ts +0 -173
- package/dist/api/display-api.js +0 -23
- package/dist/api/event-api.d.ts +0 -13
- package/dist/api/event-api.js +0 -17
- package/dist/api/extension-api.d.ts +0 -46
- package/dist/api/extension-api.js +0 -85
- package/dist/api/feature-api.d.ts +0 -11
- package/dist/api/feature-api.js +0 -101
- package/dist/api/geometry/apply.d.ts +0 -51
- package/dist/api/geometry/boolean.d.ts +0 -28
- package/dist/api/geometry/boolean.js +0 -65
- package/dist/api/geometry/types.d.ts +0 -31
- package/dist/api/geometry-operations.d.ts +0 -162
- package/dist/api/geometry-operations.js +0 -94
- package/dist/api/group-api.d.ts +0 -10
- package/dist/api/group-api.js +0 -78
- package/dist/api/import-export/constants.d.ts +0 -29
- package/dist/api/import-export/constants.js +0 -40
- package/dist/api/import-export/file-name.d.ts +0 -10
- package/dist/api/import-export/file-name.js +0 -20
- package/dist/api/import-export/geojson-export.d.ts +0 -19
- package/dist/api/import-export/image-import.d.ts +0 -12
- package/dist/api/import-export/image-import.js +0 -53
- package/dist/api/import-export/index.d.ts +0 -9
- package/dist/api/import-export/index.js +0 -107
- package/dist/api/import-export/native-format.d.ts +0 -15
- package/dist/api/import-export/style-validation.d.ts +0 -27
- package/dist/api/import-export/style-validation.js +0 -49
- package/dist/api/import-export/types.d.ts +0 -26
- package/dist/api/index.d.ts +0 -15
- package/dist/api/index.js +0 -3
- package/dist/api/input-api.d.ts +0 -158
- package/dist/api/input-api.js +0 -144
- package/dist/api/instance-api.d.ts +0 -38
- package/dist/api/instance-api.js +0 -136
- package/dist/api/layer-api.d.ts +0 -12
- package/dist/api/layer-api.js +0 -62
- package/dist/api/selection-api.d.ts +0 -7
- package/dist/api/selection-api.js +0 -78
- package/dist/api/snapping-api.d.ts +0 -125
- package/dist/api/snapping-api.js +0 -50
- package/dist/api/topology-api.d.ts +0 -30
- package/dist/api/topology-api.js +0 -16
- package/dist/api/tracing-api.d.ts +0 -31
- package/dist/api/tracing-api.js +0 -16
- package/dist/dispatcher/hit-test/index.d.ts +0 -14
- package/dist/dispatcher/hit-test/index.js +0 -9
- package/dist/dispatcher/index.d.ts +0 -15
- package/dist/dispatcher/index.js +0 -3
- package/dist/display/columnar/index.d.ts +0 -12
- package/dist/display/columnar/index.js +0 -13
- package/dist/display/columnar/prepare.d.ts +0 -42
- package/dist/display/columnar/prepare.js +0 -116
- package/dist/display/index.d.ts +0 -13
- package/dist/display/types.js +0 -43
- package/dist/maplibre-gl-draw.d.ts +0 -47
- package/dist/modes/cursor.js +0 -72
- package/dist/modes/index.d.ts +0 -7
- package/dist/operations/index.d.ts +0 -9
- package/dist/operations/index.js +0 -3
- package/dist/plugins/index.d.ts +0 -10
- package/dist/plugins/mutation-hooks.d.ts +0 -28
- package/dist/plugins/mutation-hooks.js +0 -84
- package/dist/plugins/plugin-context.js +0 -367
- package/dist/plugins/plugin-manager.d.ts +0 -103
- package/dist/plugins/plugin-manager.js +0 -316
- package/dist/plugins/plugin.d.ts +0 -529
- package/dist/shared/config/index.d.ts +0 -17
- package/dist/shared/config/index.js +0 -8
- package/dist/shared/utils/index.d.ts +0 -15
- package/dist/shared/utils/index.js +0 -24
- package/dist/snapping/index.d.ts +0 -14
- package/dist/snapping/index.js +0 -4
- package/dist/store/change-merger.js +0 -102
- package/dist/store/event-bridge.js +0 -161
- package/dist/store/index.d.ts +0 -12
- package/dist/store/index.js +0 -4
- package/dist/view/index.d.ts +0 -47
- package/dist/view/index.js +0 -20
- /package/dist/api/{geometry/types.js → datasets.js} +0 -0
- /package/dist/api/{import-export/types.js → document.js} +0 -0
- /package/dist/{display/columnar/types.js → api/drawing.js} +0 -0
- /package/dist/{display/index.js → api/events.js} +0 -0
- /package/dist/{modes/index.js → api/extension/context.js} +0 -0
- /package/dist/{plugins/index.js → api/extension/feature-type.js} +0 -0
- /package/dist/{plugins/plugin.js → api/extension/mode.js} +0 -0
- /package/dist/api/{display-api.d.ts → impl/adapters.d.ts} +0 -0
- /package/dist/{display/columnar/source.d.ts → api/impl/contexts.d.ts} +0 -0
- /package/dist/{display/columnar/table.d.ts → api/impl/create-draw.d.ts} +0 -0
- /package/dist/{display/interaction.d.ts → api/impl/datasets.d.ts} +0 -0
- /package/dist/{display/manager.d.ts → api/impl/destroy-guard.d.ts} +0 -0
- /package/dist/{display/packed-rtree.d.ts → api/impl/document.d.ts} +0 -0
- /package/dist/{display/partition.d.ts → api/impl/drawing.d.ts} +0 -0
- /package/dist/{display/provider.d.ts → api/impl/engine.d.ts} +0 -0
- /package/dist/{display/source.d.ts → api/impl/events.d.ts} +0 -0
- /package/dist/{display/spatial.d.ts → api/impl/extension-host.d.ts} +0 -0
- /package/dist/{display/style.d.ts → api/impl/extensions.d.ts} +0 -0
- /package/dist/{display/triangulation.d.ts → api/impl/features.d.ts} +0 -0
- /package/dist/{modes/cursor.d.ts → api/impl/geometry/types.d.ts} +0 -0
- /package/dist/{plugins/plugin-context.d.ts → api/impl/hidden.d.ts} +0 -0
- /package/dist/api/{import-export → impl/import-export}/embedded-file.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.d.ts +0 -0
- /package/dist/api/{import-export → impl/import-export}/own-property.js +0 -0
- /package/dist/{store/change-merger.d.ts → api/impl/input.d.ts} +0 -0
- /package/dist/{store/event-bridge.d.ts → api/impl/layers.d.ts} +0 -0
- /package/dist/{display → dataset}/chunk-set.d.ts +0 -0
- /package/dist/{display → dataset}/chunk-set.js +0 -0
- /package/dist/{display → dataset}/dataset.d.ts +0 -0
- /package/dist/{display → dataset}/manager.js +0 -0
- /package/dist/{display → dataset}/provider.js +0 -0
- /package/dist/{display → dataset}/selection.d.ts +0 -0
- /package/dist/{display → dataset}/selection.js +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repair: the public functions that tidy polygons and reduce vertices
|
|
3
|
+
*/
|
|
4
|
+
import type { Geometry, LineString, MultiPolygon, Polygon } from 'geojson';
|
|
5
|
+
/**
|
|
6
|
+
* Returns a polygon with its self-intersections resolved, its rings oriented and its rings
|
|
7
|
+
* without an area removed.
|
|
8
|
+
*
|
|
9
|
+
* @param polygon The Polygon or MultiPolygon, or a feature whose geometry is one; coordinates
|
|
10
|
+
* in degrees. A ring with fewer than 3 positions or a position that is not finite is dropped
|
|
11
|
+
* @returns A Polygon, or a MultiPolygon when the result falls apart (a figure eight becomes two
|
|
12
|
+
* parts), with outer rings counter-clockwise and holes clockwise. null when nothing with an
|
|
13
|
+
* area remains
|
|
14
|
+
* @throws {@link GeometryError} (`invalid-input`) when the input is not a Polygon or a
|
|
15
|
+
* MultiPolygon, and (`engine-failure`) when the boolean operation fails
|
|
16
|
+
*/
|
|
17
|
+
export declare function makeValid(polygon: Polygon | MultiPolygon | {
|
|
18
|
+
readonly geometry: Geometry;
|
|
19
|
+
}): Polygon | MultiPolygon | null;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a polygon with its rings oriented as RFC 7946 recommends: outer rings
|
|
22
|
+
* counter-clockwise and holes clockwise.
|
|
23
|
+
*
|
|
24
|
+
* @param polygon The Polygon or MultiPolygon, or a feature whose geometry is one; coordinates
|
|
25
|
+
* in degrees. Only the orientation changes; self-intersections are left as they are (see
|
|
26
|
+
* {@link makeValid})
|
|
27
|
+
* @returns A geometry of the same type as the input
|
|
28
|
+
* @throws {@link GeometryError} (`invalid-input`) when the input is not a Polygon or a
|
|
29
|
+
* MultiPolygon
|
|
30
|
+
*/
|
|
31
|
+
export declare function rewind(polygon: Polygon | {
|
|
32
|
+
readonly geometry: Polygon;
|
|
33
|
+
}): Polygon;
|
|
34
|
+
export declare function rewind(polygon: MultiPolygon | {
|
|
35
|
+
readonly geometry: MultiPolygon;
|
|
36
|
+
}): MultiPolygon;
|
|
37
|
+
export declare function rewind(polygon: Polygon | MultiPolygon | {
|
|
38
|
+
readonly geometry: Geometry;
|
|
39
|
+
}): Polygon | MultiPolygon;
|
|
40
|
+
/**
|
|
41
|
+
* Reduces the vertices of a line or a polygon with the Douglas-Peucker algorithm and a
|
|
42
|
+
* tolerance in meters.
|
|
43
|
+
*
|
|
44
|
+
* @param geometry The LineString, Polygon or MultiPolygon, or a feature whose geometry is one;
|
|
45
|
+
* coordinates in degrees
|
|
46
|
+
* @param toleranceMeters The largest distance in meters a removed vertex may lie from the
|
|
47
|
+
* simplified line, measured on a plane at the latitude of the center of the bounding box. 0
|
|
48
|
+
* or less removes nothing
|
|
49
|
+
* @returns A geometry of the same type. The ends of a line always remain, and a ring that
|
|
50
|
+
* would keep fewer than 4 positions is kept as it is. The result may intersect itself (see
|
|
51
|
+
* {@link makeValid})
|
|
52
|
+
* @throws {@link GeometryError} (`invalid-input`) when the input is not a LineString, a
|
|
53
|
+
* Polygon or a MultiPolygon, and when the tolerance is not a finite number
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* import { simplify } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
58
|
+
*
|
|
59
|
+
* // The middle vertex lies about 1 m off the line, within the 5 m tolerance
|
|
60
|
+
* simplify({ type: 'LineString', coordinates: [[0, 0], [0.001, 0.00001], [0.002, 0]] }, 5);
|
|
61
|
+
* // { type: 'LineString', coordinates: [[0, 0], [0.002, 0]] }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function simplify(geometry: LineString | {
|
|
65
|
+
readonly geometry: LineString;
|
|
66
|
+
}, toleranceMeters: number): LineString;
|
|
67
|
+
export declare function simplify(geometry: Polygon | {
|
|
68
|
+
readonly geometry: Polygon;
|
|
69
|
+
}, toleranceMeters: number): Polygon;
|
|
70
|
+
export declare function simplify(geometry: MultiPolygon | {
|
|
71
|
+
readonly geometry: MultiPolygon;
|
|
72
|
+
}, toleranceMeters: number): MultiPolygon;
|
|
73
|
+
export declare function simplify(geometry: LineString | Polygon | MultiPolygon | {
|
|
74
|
+
readonly geometry: Geometry;
|
|
75
|
+
}, toleranceMeters: number): LineString | Polygon | MultiPolygon;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
import { coordinatesBBox } from './bbox.js';
|
|
4
|
+
import { normalizeArea } from './boolean.js';
|
|
5
|
+
import { invalidInput, withOperation } from './errors.js';
|
|
6
|
+
import { areaGeometryOf, areaOf, geometryOf, positionsOf, toAreaGeometry } from './geojson.js';
|
|
7
|
+
import { normalizeMultiPolygonOrientation, normalizePolygonOrientation, simplify as simplifyPath, } from './simplify.js';
|
|
8
|
+
import { metersToDegrees, toRadians } from './units.js';
|
|
9
|
+
/**
|
|
10
|
+
* Returns a polygon with its self-intersections resolved, its rings oriented and its rings
|
|
11
|
+
* without an area removed.
|
|
12
|
+
*
|
|
13
|
+
* @param polygon The Polygon or MultiPolygon, or a feature whose geometry is one; coordinates
|
|
14
|
+
* in degrees. A ring with fewer than 3 positions or a position that is not finite is dropped
|
|
15
|
+
* @returns A Polygon, or a MultiPolygon when the result falls apart (a figure eight becomes two
|
|
16
|
+
* parts), with outer rings counter-clockwise and holes clockwise. null when nothing with an
|
|
17
|
+
* area remains
|
|
18
|
+
* @throws {@link GeometryError} (`invalid-input`) when the input is not a Polygon or a
|
|
19
|
+
* MultiPolygon, and (`engine-failure`) when the boolean operation fails
|
|
20
|
+
*/
|
|
21
|
+
export function makeValid(polygon) {
|
|
22
|
+
const coordinates = areaOf(polygon, 'makeValid');
|
|
23
|
+
return withOperation('makeValid', () => toAreaGeometry(normalizeArea(coordinates)));
|
|
24
|
+
}
|
|
25
|
+
export function rewind(polygon) {
|
|
26
|
+
const geometry = areaGeometryOf(polygon, 'rewind');
|
|
27
|
+
if (geometry.type === 'Polygon') {
|
|
28
|
+
return {
|
|
29
|
+
type: 'Polygon',
|
|
30
|
+
coordinates: normalizePolygonOrientation(geometry.coordinates),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
type: 'MultiPolygon',
|
|
35
|
+
coordinates: normalizeMultiPolygonOrientation(geometry.coordinates),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Simplifies a path with a tolerance in meters: the path is scaled to a local plane in which
|
|
40
|
+
* a degree of longitude is `cos(latitude)` degrees of latitude, and the tolerance is taken in
|
|
41
|
+
* degrees of latitude
|
|
42
|
+
*/
|
|
43
|
+
function simplifyInMeters(path, toleranceDegrees, lngScale) {
|
|
44
|
+
const scaled = path.map((position) => [position[0] * lngScale, position[1]]);
|
|
45
|
+
const indexOf = new Map();
|
|
46
|
+
scaled.forEach((position, index) => {
|
|
47
|
+
indexOf.set(position, index);
|
|
48
|
+
});
|
|
49
|
+
return simplifyPath(scaled, toleranceDegrees).map((position) => [
|
|
50
|
+
...path[indexOf.get(position) ?? 0],
|
|
51
|
+
]);
|
|
52
|
+
}
|
|
53
|
+
export function simplify(geometry, toleranceMeters) {
|
|
54
|
+
const input = geometryOf(geometry, 'simplify');
|
|
55
|
+
if (input.type !== 'LineString' && input.type !== 'Polygon' && input.type !== 'MultiPolygon') {
|
|
56
|
+
throw invalidInput('simplify', 'the input is not a LineString, a Polygon or a MultiPolygon');
|
|
57
|
+
}
|
|
58
|
+
if (!Number.isFinite(toleranceMeters)) {
|
|
59
|
+
throw invalidInput('simplify', 'the tolerance is not a finite number');
|
|
60
|
+
}
|
|
61
|
+
const box = coordinatesBBox(positionsOf(input));
|
|
62
|
+
const latitude = box === null ? 0 : (box[1] + box[3]) / 2;
|
|
63
|
+
const toleranceDegrees = metersToDegrees(toleranceMeters, latitude).lat;
|
|
64
|
+
const lngScale = Math.cos(toRadians(latitude));
|
|
65
|
+
const path = (positions) => simplifyInMeters(positions, toleranceDegrees, lngScale);
|
|
66
|
+
switch (input.type) {
|
|
67
|
+
case 'LineString':
|
|
68
|
+
return { type: 'LineString', coordinates: path(input.coordinates) };
|
|
69
|
+
case 'Polygon':
|
|
70
|
+
return { type: 'Polygon', coordinates: input.coordinates.map(path) };
|
|
71
|
+
case 'MultiPolygon':
|
|
72
|
+
return {
|
|
73
|
+
type: 'MultiPolygon',
|
|
74
|
+
coordinates: input.coordinates.map((polygon) => polygon.map(path)),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -14,13 +14,6 @@ import type { Coordinate, MultiPolygonCoordinates, PolygonCoordinates, Ring } fr
|
|
|
14
14
|
* simplified line
|
|
15
15
|
* @returns The simplified vertices as a new array. A copy of the input for 2 positions or
|
|
16
16
|
* fewer, for a tolerance that is not positive, and for a ring that would collapse
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* import { simplify } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
21
|
-
*
|
|
22
|
-
* simplify([[0, 0], [1, 0.00001], [2, 0], [3, 1]], 0.001); // [[0, 0], [2, 0], [3, 1]]
|
|
23
|
-
* ```
|
|
24
17
|
*/
|
|
25
18
|
export declare function simplify(path: Coordinate[], toleranceDegrees: number): Coordinate[];
|
|
26
19
|
/**
|
|
@@ -69,13 +69,6 @@ function markKeep(path, first, last, squaredTolerance, keep) {
|
|
|
69
69
|
* simplified line
|
|
70
70
|
* @returns The simplified vertices as a new array. A copy of the input for 2 positions or
|
|
71
71
|
* fewer, for a tolerance that is not positive, and for a ring that would collapse
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```ts
|
|
75
|
-
* import { simplify } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
76
|
-
*
|
|
77
|
-
* simplify([[0, 0], [1, 0.00001], [2, 0], [3, 1]], 0.001); // [[0, 0], [2, 0], [3, 1]]
|
|
78
|
-
* ```
|
|
79
72
|
*/
|
|
80
73
|
export function simplify(path, toleranceDegrees) {
|
|
81
74
|
if (path.length <= 2 || !(toleranceDegrees > 0)) {
|
package/dist/geometry/split.d.ts
CHANGED
|
@@ -18,14 +18,6 @@ import type { AreaCoordinates, Coordinate, MultiPolygonCoordinates } from './typ
|
|
|
18
18
|
* @param b2 The end of segment B, `[lng, lat]` in degrees
|
|
19
19
|
* @returns The intersection `[lng, lat]`, taken on segment A. `null` when they do not
|
|
20
20
|
* cross, are parallel or collinear, or either has length 0
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```ts
|
|
24
|
-
* import { segmentIntersection } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
25
|
-
*
|
|
26
|
-
* segmentIntersection([0, 0], [2, 2], [0, 2], [2, 0]); // [1, 1]
|
|
27
|
-
* segmentIntersection([0, 0], [1, 0], [0, 1], [1, 1]); // null (parallel)
|
|
28
|
-
* ```
|
|
29
21
|
*/
|
|
30
22
|
export declare function segmentIntersection(a1: Coordinate, a2: Coordinate, b1: Coordinate, b2: Coordinate): Coordinate | null;
|
|
31
23
|
/**
|
|
@@ -52,17 +44,5 @@ export declare function segmentIntersection(a1: Coordinate, a2: Coordinate, b1:
|
|
|
52
44
|
* input normalized) when it is not split. An empty array when the input has no area
|
|
53
45
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
54
46
|
* retry on the 1e-9 degree grid
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```ts
|
|
58
|
-
* import { splitArea } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
59
|
-
*
|
|
60
|
-
* const square: [number, number][][] = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
61
|
-
* const parts = splitArea(square, [[0.5, -1], [0.5, 2]]);
|
|
62
|
-
* parts.length; // 2: the halves west and east of longitude 0.5
|
|
63
|
-
* if (parts.length === 1) {
|
|
64
|
-
* // Not split: the line does not cross the polygon
|
|
65
|
-
* }
|
|
66
|
-
* ```
|
|
67
47
|
*/
|
|
68
48
|
export declare function splitArea(area: AreaCoordinates, line: Coordinate[]): MultiPolygonCoordinates[];
|
package/dist/geometry/split.js
CHANGED
|
@@ -64,14 +64,6 @@ const NODE_QUANTUM = 1e-9;
|
|
|
64
64
|
* @param b2 The end of segment B, `[lng, lat]` in degrees
|
|
65
65
|
* @returns The intersection `[lng, lat]`, taken on segment A. `null` when they do not
|
|
66
66
|
* cross, are parallel or collinear, or either has length 0
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```ts
|
|
70
|
-
* import { segmentIntersection } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
71
|
-
*
|
|
72
|
-
* segmentIntersection([0, 0], [2, 2], [0, 2], [2, 0]); // [1, 1]
|
|
73
|
-
* segmentIntersection([0, 0], [1, 0], [0, 1], [1, 1]); // null (parallel)
|
|
74
|
-
* ```
|
|
75
67
|
*/
|
|
76
68
|
export function segmentIntersection(a1, a2, b1, b2) {
|
|
77
69
|
const ax = a2[0] - a1[0];
|
|
@@ -119,18 +111,6 @@ export function segmentIntersection(a1, a2, b1, b2) {
|
|
|
119
111
|
* input normalized) when it is not split. An empty array when the input has no area
|
|
120
112
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
121
113
|
* retry on the 1e-9 degree grid
|
|
122
|
-
*
|
|
123
|
-
* @example
|
|
124
|
-
* ```ts
|
|
125
|
-
* import { splitArea } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
126
|
-
*
|
|
127
|
-
* const square: [number, number][][] = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
128
|
-
* const parts = splitArea(square, [[0.5, -1], [0.5, 2]]);
|
|
129
|
-
* parts.length; // 2: the halves west and east of longitude 0.5
|
|
130
|
-
* if (parts.length === 1) {
|
|
131
|
-
* // Not split: the line does not cross the polygon
|
|
132
|
-
* }
|
|
133
|
-
* ```
|
|
134
114
|
*/
|
|
135
115
|
export function splitArea(area, line) {
|
|
136
116
|
const normalized = normalizeArea(area);
|
package/dist/geometry/units.d.ts
CHANGED
|
@@ -5,25 +5,18 @@
|
|
|
5
5
|
* whole geometry module.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* The radius of the sphere every
|
|
8
|
+
* The radius in meters of the sphere on which every function of this entry measures.
|
|
9
9
|
*
|
|
10
|
-
* The value is the mean Earth radius, 6,371,
|
|
11
|
-
* buffers all assume this sphere rather than an ellipsoid, so a result differs from
|
|
12
|
-
* ellipsoidal computation by up to about 0.5%.
|
|
10
|
+
* The value is the mean Earth radius of the IUGG, 6,371,008.8 m. Distances, bearings, areas,
|
|
11
|
+
* circles and buffers all assume this sphere rather than an ellipsoid, so a result differs from
|
|
12
|
+
* an ellipsoidal computation by up to about 0.5%.
|
|
13
13
|
*/
|
|
14
|
-
export declare const EARTH_RADIUS_METERS =
|
|
14
|
+
export declare const EARTH_RADIUS_METERS = 6371008.8;
|
|
15
15
|
/**
|
|
16
16
|
* Converts an angle in degrees to radians.
|
|
17
17
|
*
|
|
18
18
|
* @param degrees The angle in degrees
|
|
19
19
|
* @returns The angle in radians. NaN and infinities pass through unchanged
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* import { toRadians } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
24
|
-
*
|
|
25
|
-
* toRadians(180); // Math.PI
|
|
26
|
-
* ```
|
|
27
20
|
*/
|
|
28
21
|
export declare function toRadians(degrees: number): number;
|
|
29
22
|
/**
|
|
@@ -33,3 +26,18 @@ export declare function toRadians(degrees: number): number;
|
|
|
33
26
|
* @returns The angle in degrees. NaN and infinities pass through unchanged
|
|
34
27
|
*/
|
|
35
28
|
export declare function toDegrees(radians: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* Converts a distance at a latitude into degrees of longitude and latitude.
|
|
31
|
+
*
|
|
32
|
+
* On the sphere of {@link EARTH_RADIUS_METERS}: a degree of latitude is always the same
|
|
33
|
+
* length, and a degree of longitude shrinks with the cosine of the latitude. Use it to turn a
|
|
34
|
+
* tolerance in meters into one in degrees. Near the poles the longitude grows without bound.
|
|
35
|
+
*
|
|
36
|
+
* @param meters The distance in meters
|
|
37
|
+
* @param latitude The latitude in degrees at which the distance is taken
|
|
38
|
+
* @returns The distance in degrees of longitude (`lng`) and of latitude (`lat`)
|
|
39
|
+
*/
|
|
40
|
+
export declare function metersToDegrees(meters: number, latitude: number): {
|
|
41
|
+
lng: number;
|
|
42
|
+
lat: number;
|
|
43
|
+
};
|
package/dist/geometry/units.js
CHANGED
|
@@ -7,25 +7,18 @@
|
|
|
7
7
|
* whole geometry module.
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* The radius of the sphere every
|
|
10
|
+
* The radius in meters of the sphere on which every function of this entry measures.
|
|
11
11
|
*
|
|
12
|
-
* The value is the mean Earth radius, 6,371,
|
|
13
|
-
* buffers all assume this sphere rather than an ellipsoid, so a result differs from
|
|
14
|
-
* ellipsoidal computation by up to about 0.5%.
|
|
12
|
+
* The value is the mean Earth radius of the IUGG, 6,371,008.8 m. Distances, bearings, areas,
|
|
13
|
+
* circles and buffers all assume this sphere rather than an ellipsoid, so a result differs from
|
|
14
|
+
* an ellipsoidal computation by up to about 0.5%.
|
|
15
15
|
*/
|
|
16
|
-
export const EARTH_RADIUS_METERS =
|
|
16
|
+
export const EARTH_RADIUS_METERS = 6371008.8;
|
|
17
17
|
/**
|
|
18
18
|
* Converts an angle in degrees to radians.
|
|
19
19
|
*
|
|
20
20
|
* @param degrees The angle in degrees
|
|
21
21
|
* @returns The angle in radians. NaN and infinities pass through unchanged
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```ts
|
|
25
|
-
* import { toRadians } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
26
|
-
*
|
|
27
|
-
* toRadians(180); // Math.PI
|
|
28
|
-
* ```
|
|
29
22
|
*/
|
|
30
23
|
export function toRadians(degrees) {
|
|
31
24
|
return (degrees * Math.PI) / 180;
|
|
@@ -39,3 +32,18 @@ export function toRadians(degrees) {
|
|
|
39
32
|
export function toDegrees(radians) {
|
|
40
33
|
return (radians * 180) / Math.PI;
|
|
41
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Converts a distance at a latitude into degrees of longitude and latitude.
|
|
37
|
+
*
|
|
38
|
+
* On the sphere of {@link EARTH_RADIUS_METERS}: a degree of latitude is always the same
|
|
39
|
+
* length, and a degree of longitude shrinks with the cosine of the latitude. Use it to turn a
|
|
40
|
+
* tolerance in meters into one in degrees. Near the poles the longitude grows without bound.
|
|
41
|
+
*
|
|
42
|
+
* @param meters The distance in meters
|
|
43
|
+
* @param latitude The latitude in degrees at which the distance is taken
|
|
44
|
+
* @returns The distance in degrees of longitude (`lng`) and of latitude (`lat`)
|
|
45
|
+
*/
|
|
46
|
+
export function metersToDegrees(meters, latitude) {
|
|
47
|
+
const lat = toDegrees(meters / EARTH_RADIUS_METERS);
|
|
48
|
+
return { lng: lat / Math.cos(toRadians(latitude)), lat };
|
|
49
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,72 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MapLibre
|
|
2
|
+
* Draw and edit points, lines and areas on a MapLibre map, and show large data beside them.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Import from here for everything an application does with a drawing: create the instance,
|
|
5
|
+
* read and change its features, layers and groups, listen to what changes, save and load the
|
|
6
|
+
* document, and add plugins, modes and feature types. Three subpaths cover the rest: geometry
|
|
7
|
+
* that needs no map (`/geometry`), large tables read in a Worker (`/table`) and custom shaders
|
|
8
|
+
* (`/webgl`).
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* docs/reference/README.md):
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { createDraw } from '@sakuzu/maplibre-gl-draw';
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
13
|
+
* const draw = createDraw(map);
|
|
14
|
+
* draw.setMode('draw_polygon');
|
|
15
|
+
* draw.on('feature.created', ({ feature }) => {
|
|
16
|
+
* console.log(feature.id, feature.geometry);
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Read next: [getting started](https://sakuzu.github.io/maplibre-gl-draw/getting-started),
|
|
21
|
+
* then the guides for [drawing](https://sakuzu.github.io/maplibre-gl-draw/guides/drawing) and
|
|
22
|
+
* [saving and loading](https://sakuzu.github.io/maplibre-gl-draw/guides/save-load). The
|
|
23
|
+
* symbols used most are {@link createDraw}, {@link Draw}, {@link Feature} and
|
|
24
|
+
* {@link DrawEvents}.
|
|
25
|
+
*
|
|
26
|
+
* @module maplibre-gl-draw
|
|
22
27
|
*/
|
|
23
|
-
export type {
|
|
24
|
-
export {
|
|
25
|
-
export type {
|
|
26
|
-
export type {
|
|
27
|
-
export type {
|
|
28
|
-
export type {
|
|
29
|
-
export {
|
|
30
|
-
export type {
|
|
31
|
-
export type {
|
|
32
|
-
export type {
|
|
33
|
-
export {
|
|
34
|
-
export type {
|
|
35
|
-
export type {
|
|
36
|
-
export
|
|
37
|
-
export type {
|
|
38
|
-
export type {
|
|
39
|
-
export
|
|
40
|
-
export {
|
|
41
|
-
export type {
|
|
42
|
-
export {
|
|
43
|
-
export
|
|
44
|
-
export {
|
|
45
|
-
export {
|
|
46
|
-
export type {
|
|
47
|
-
export type {
|
|
48
|
-
export type {
|
|
49
|
-
export type {
|
|
50
|
-
export type {
|
|
51
|
-
export type {
|
|
52
|
-
export type {
|
|
53
|
-
export
|
|
54
|
-
export type { BoxSelectionStrategyRegistry, HitTestService, HitTestTopmost, TopHit, TopmostHitTestOptions, UnprojectFunction, } from './dispatcher/index.js';
|
|
55
|
-
export type { HookName, PluginManager } from './plugins/index.js';
|
|
56
|
-
export type { TraceConfig } from './shared/config/index.js';
|
|
57
|
-
export type { AutoNameGenerator, EventEmitter } from './shared/utils/index.js';
|
|
58
|
-
export type { SpatialQuery } from './store/index.js';
|
|
59
|
-
export type { AuxiliaryHandleRegistry, FeatureCompanionHitResult, FeatureCompanionRegistry, FillShaderManager, PointShapeRenderer, SDFLineRenderer, SDFStrokeOptions, SDFStrokeStyle, SelectionExtensionRegistry, SelectionScope, TerrainContext, TerrainRenderState, WidthUnit, } from './view/index.js';
|
|
60
|
-
export type { TerrainDiagnostics, TerrainRenderDiagnostics } from './api/index.js';
|
|
61
|
-
export type { TerrainDrapeDebug } from './view/index.js';
|
|
62
|
-
export { resolvePixelRatio } from './shared/utils/index.js';
|
|
63
|
-
export type { BlendCapableGL, DashSegment, DrapeQuadCorners, OffsetUniforms, ProjectionUniformLocations, QuadDrapeColor, QuadDrapeFill, QuadDrapeSurface, QuadDrapeGlyphs, QuadVertices, ShaderData, } from './view/index.js';
|
|
64
|
-
export { applyDrawBlendState, calculateLngLatOffset, calculateOffsetUniforms, computeQuadVertices, createProgram, drawBillboardsWithoutDepth, drawQuadSurfaceOnTerrain, getProjectionTransitionUniform, getStrokeDashPattern, OFFSET_MODE_GLSL, ProjectionUniformManager, QUAD_GLYPH_STRIDE, QuadShader, splitIntoDashes, } from './view/index.js';
|
|
65
|
-
export type { MercatorRect, TessellationStep, TessellationTiling } from './view/index.js';
|
|
66
|
-
export { anchorElevationMeters, anchorGhostOpacity, densifyPath, getAnchorElevationGeneration, getTerrainTessellationStep, metersToMercatorScale, } from './view/index.js';
|
|
67
|
-
export type { MercatorCoord, OBB, OBBCorners } from './shared/math/index.js';
|
|
68
|
-
export { createOBB, DEFAULT_TILE_SIZE, distanceToOBB, generateCirclePolygon, getOBBAABB, lngLatToMercator, metersToDegreesLat, metersToDegreesLng, pixelsToDegreesLat, pixelsToDegreesLng, rectangleIntersectsOBB, } from './shared/math/index.js';
|
|
69
|
-
export { getContrastColor } from './shared/utils/index.js';
|
|
70
|
-
export { PointHitTestStrategy } from './dispatcher/index.js';
|
|
71
|
-
export { createGeometryApi, type GeometryApi, type GeometryApiDeps } from './api/index.js';
|
|
72
|
-
export { computeBoundingBox, createFeatureCompanionRegistry, createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, DEFAULT_VIEWPORT_EXPANSION_FACTOR, getExpandedViewportBounds, getSelectedFeatureIds, hasZeroArea, } from './view/index.js';
|
|
28
|
+
export type { Draw, TransactOptions } from './api/draw.js';
|
|
29
|
+
export { createDraw } from './api/draw.js';
|
|
30
|
+
export type { AutoNameOptions, DrawOptions, OptionsResource, RenderingOptions, RuntimeOptions, SelectionStyleOptions, SnappingOptions, TopologyOptions, TracingOptions, } from './api/options.js';
|
|
31
|
+
export type { Messages } from './messages.js';
|
|
32
|
+
export type { FeaturesCollection } from './api/features.js';
|
|
33
|
+
export type { LayersCollection } from './api/layers.js';
|
|
34
|
+
export type { GroupsCollection } from './api/groups.js';
|
|
35
|
+
export type { HiddenCollection } from './api/hidden.js';
|
|
36
|
+
export type { SelectionResource, VertexSelectionResource } from './api/selection.js';
|
|
37
|
+
export type { MetadataResource } from './api/metadata.js';
|
|
38
|
+
export type { DrawingResource } from './api/drawing.js';
|
|
39
|
+
export type { DocumentResource } from './api/document.js';
|
|
40
|
+
export type { DrawDocument, DrawProperties, Feature, FeatureStyle, FeatureStyleResolved, FeatureType, FileData, Group, Layer, LegendEntry, LineStyle, Metadata, PointShape, StyleRule, } from './api/model.js';
|
|
41
|
+
export { DRAW_PROPERTY_PREFIX, isDrawProperty } from './api/model.js';
|
|
42
|
+
export type { FeatureFilter, FeatureInput, FeaturePatch, GroupFilter, GroupInput, GroupPatch, LayerFilter, LayerInput, LayerPatch, LoadOptions, LoadResult, LoadSource, MoveTarget, SkippedFeature, } from './api/model.js';
|
|
43
|
+
export type { LayerStackEntry, Mode, Selection, SelectionType, SnapPreference, SnapResult, TerrainDiagnostics, VertexRef, VertexSelection, } from './api/state.js';
|
|
44
|
+
export { MODES } from './api/state.js';
|
|
45
|
+
export type { DocumentChange, DrawEventListener, DrawEvents, ScreenPoint } from './api/events.js';
|
|
46
|
+
export type { Position } from 'geojson';
|
|
47
|
+
export type { DrawErrorCode } from './api/errors.js';
|
|
48
|
+
export { DrawError } from './api/errors.js';
|
|
49
|
+
export type { Dataset, DatasetBaseStyle, DatasetCollisionThinning, DatasetEvents, DatasetOptions, DatasetOrder, DatasetPlacement, DatasetProvider, DatasetRow, DatasetsCollection, DatasetThinningStats, DatasetZoomScale, } from './api/datasets.js';
|
|
50
|
+
export type { Store, StoreView, UpdateSource } from './api/extension/store.js';
|
|
51
|
+
export type { ExtensionContext, HitTestContext, ModeContext, NameGenerator, PluginContext, ScreenContext, SnapContext, TerrainAnchors, } from './api/extension/context.js';
|
|
52
|
+
export type { FeatureTypeDefinition, Handle } from './api/extension/feature-type.js';
|
|
53
|
+
export type { DrawKeyEvent, DrawPointerEvent, InputHandlers, ModeFactory, ModeHandler, Modifiers, } from './api/extension/mode.js';
|
|
54
|
+
export type { Plugin } from './api/extension/plugin.js';
|
|
55
|
+
export type { CompanionProvider, HandleProvider, Hit, SnapCandidate, SnapProvider, } from './api/extension/provider.js';
|
|
56
|
+
export type { FeatureRenderer, FillRenderer, LineRenderer, OffsetUniforms, OverlayRenderer, PointRenderer, RenderContext, ShaderData, } from './api/extension/render.js';
|
|
57
|
+
export type { ExtensionsCollections, FeatureTypesCollection, ModesCollection, OverlaysCollection, PluginsCollection, ProvidersCollection, } from './api/extensions.js';
|
|
58
|
+
export { deriveLegend, evaluateStyleRule, getStyleRuleChannel } from './api/model.js';
|
package/dist/index.js
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
// Property accessors
|
|
10
|
-
export { getCreatedZoom, getRotation, getScale, setCreatedZoom, setRotation, } from './shared/utils/index.js';
|
|
11
|
-
// WebGL building blocks
|
|
12
|
-
export { resolvePixelRatio } from './shared/utils/index.js';
|
|
13
|
-
export { applyDrawBlendState, calculateLngLatOffset, calculateOffsetUniforms, computeQuadVertices, createProgram, drawBillboardsWithoutDepth, drawQuadSurfaceOnTerrain, getProjectionTransitionUniform, getStrokeDashPattern, OFFSET_MODE_GLSL, ProjectionUniformManager, QUAD_GLYPH_STRIDE, QuadShader, splitIntoDashes, } from './view/index.js';
|
|
14
|
-
export { anchorElevationMeters, anchorGhostOpacity, densifyPath, getAnchorElevationGeneration, getTerrainTessellationStep, metersToMercatorScale, } from './view/index.js';
|
|
15
|
-
export { createOBB, DEFAULT_TILE_SIZE, distanceToOBB, generateCirclePolygon, getOBBAABB, lngLatToMercator, metersToDegreesLat, metersToDegreesLng, pixelsToDegreesLat, pixelsToDegreesLng, rectangleIntersectsOBB, } from './shared/math/index.js';
|
|
16
|
-
export { getContrastColor } from './shared/utils/index.js';
|
|
17
|
-
// Selection UI, hit testing and viewport helpers
|
|
18
|
-
export { PointHitTestStrategy } from './dispatcher/index.js';
|
|
19
|
-
export { createGeometryApi } from './api/index.js';
|
|
20
|
-
export { computeBoundingBox, createFeatureCompanionRegistry, createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, DEFAULT_VIEWPORT_EXPANSION_FACTOR, getExpandedViewportBounds, getSelectedFeatureIds, hasZeroArea, } from './view/index.js';
|
|
3
|
+
export { createDraw } from './api/draw.js';
|
|
4
|
+
export { DRAW_PROPERTY_PREFIX, isDrawProperty } from './api/model.js';
|
|
5
|
+
export { MODES } from './api/state.js';
|
|
6
|
+
export { DrawError } from './api/errors.js';
|
|
7
|
+
// Style rule functions
|
|
8
|
+
export { deriveLegend, evaluateStyleRule, getStyleRuleChannel } from './api/model.js';
|
package/dist/messages.d.ts
CHANGED
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
* - The keys are typed. A value is either a string or a function that formats one (it
|
|
10
10
|
* receives numbers already turned into strings)
|
|
11
11
|
* - `MESSAGES_EN` is the default, in English. The library ships no other language
|
|
12
|
-
* - `
|
|
12
|
+
* - `DrawOptions.messages` overrides part of the table for one instance. The table belongs to
|
|
13
13
|
* the instance and is never module-level state
|
|
14
14
|
* - There is no locale detection and no automatic switching: the host passes the table
|
|
15
15
|
* it wants
|
|
16
16
|
* - The words of the names generated for features, layers and groups are not in this table:
|
|
17
|
-
* they come from the
|
|
17
|
+
* they come from the `autoName` option
|
|
18
18
|
*/
|
|
19
19
|
/**
|
|
20
20
|
* The table of the strings the library returns as values: legend labels and the descriptions
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
*
|
|
23
23
|
* The library builds no such string inline; it reads it from the table of the instance, so
|
|
24
24
|
* the host can show them in its own language. Pass the entries to replace as the `messages`
|
|
25
|
-
* option of `
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
25
|
+
* option of `createDraw`; the entries left out keep the English defaults. A value is a string,
|
|
26
|
+
* or a function that formats one from numbers already turned into strings. There is no locale
|
|
27
|
+
* detection and no other built-in language. The words of generated names ("Layer 1") are
|
|
28
|
+
* translated through the `autoName` option, not here.
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```ts
|
|
32
|
-
* const draw =
|
|
32
|
+
* const draw = createDraw(map, {
|
|
33
33
|
* messages: {
|
|
34
34
|
* legendOther: 'Sonstige',
|
|
35
35
|
* legendRange: (lower, upper) => `${lower} bis unter ${upper}`,
|