@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
|
@@ -1,208 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* The renderer contracts of an extension
|
|
3
|
-
*
|
|
4
|
-
* The shapes an extension implements to draw with the WebGL context of a draw instance: the
|
|
5
|
-
* renderer of a custom feature type and the overlay renderers. They are types only and sit low
|
|
6
|
-
* in the layer order, so the view and snapping layers read them without reaching up into api.
|
|
7
|
-
*/
|
|
8
|
-
import type { Map as MapLibreMap, ProjectionData } from 'maplibre-gl';
|
|
9
|
-
import type { SDFLineRenderer } from '../view/renderers/line/sdf-line.js';
|
|
10
|
-
import type { PointShapeRenderer } from '../view/renderers/point/point-shape.js';
|
|
11
|
-
import type { FillShaderManager } from '../view/renderers/polygon/fill.js';
|
|
12
|
-
import type { TerrainContext } from '../view/terrain/context.js';
|
|
13
|
-
/**
|
|
14
|
-
* Rendering context for custom renderers
|
|
15
|
-
*
|
|
16
|
-
* Provides the shader data and offset information needed when using QuadShader and the like.
|
|
17
|
-
* It also holds references to the shared renderers, which makes high-quality rendering possible.
|
|
18
|
-
*/
|
|
19
|
-
export interface CustomRendererDrawContext {
|
|
20
|
-
/** Shader data (vertexShaderPrelude, define, variantName) */
|
|
21
|
-
shaderData: {
|
|
22
|
-
vertexShaderPrelude: string;
|
|
23
|
-
define: string;
|
|
24
|
-
variantName: string;
|
|
25
|
-
};
|
|
26
|
-
/** Viewport center coordinate [lng, lat] */
|
|
27
|
-
centerLngLat: [number, number];
|
|
28
|
-
/** The mainMatrix converted into an array */
|
|
29
|
-
mainMatrixArray: number[];
|
|
30
|
-
/**
|
|
31
|
-
* The resolved rendering scale factor (the conversion factor from CSS pixels to device pixels)
|
|
32
|
-
*
|
|
33
|
-
* It is the value of `pixelRatio` in Options when one has been injected, and otherwise the
|
|
34
|
-
* `window.devicePixelRatio` read in that frame. Renderers on the extension side use this
|
|
35
|
-
* instead of reading `window.devicePixelRatio` directly.
|
|
36
|
-
*/
|
|
37
|
-
pixelRatio: number;
|
|
38
|
-
/**
|
|
39
|
-
* The terrain state of the draw instance being drawn
|
|
40
|
-
*
|
|
41
|
-
* A renderer that owns a `ProjectionUniformManager` or a `QuadShader` passes it with
|
|
42
|
-
* `setTerrain(context.terrain)` before drawing, and the anchor functions (`projectAnchor`,
|
|
43
|
-
* `anchorElevationMeters`, `anchorGhostOpacity`, `drawQuadSurfaceOnTerrain` and so on) take
|
|
44
|
-
* it as their first argument. It is valid for this draw call only; a renderer shared between
|
|
45
|
-
* draw instances must not keep it.
|
|
46
|
-
*/
|
|
47
|
-
terrain: TerrainContext;
|
|
48
|
-
/**
|
|
49
|
-
* The opacity of the layer being drawn, from 0 to 1 (`Layer.opacity`)
|
|
50
|
-
*
|
|
51
|
-
* Core multiplies it into everything it draws for the layer, and a renderer multiplies it
|
|
52
|
-
* into its own alpha, so that what it draws fades with the layer. It is the opacity of the
|
|
53
|
-
* layer of the feature for a {@link CustomFeatureRenderer} and a feature companion, and 1 for
|
|
54
|
-
* an overlay (which does not belong to a layer). The shared renderers of this context do not
|
|
55
|
-
* apply it by themselves. It changes nothing about hit testing: a feature in a layer at
|
|
56
|
-
* opacity 0 can still be selected.
|
|
57
|
-
*/
|
|
58
|
-
opacity: number;
|
|
59
|
-
/** SDF line rendering (high-quality line rendering, anti-aliasing, dashes and so on) */
|
|
60
|
-
sdfLineRenderer: SDFLineRenderer;
|
|
61
|
-
/** Polygon fill rendering */
|
|
62
|
-
fillShaderManager: FillShaderManager;
|
|
63
|
-
/** Point shape rendering */
|
|
64
|
-
pointShapeRenderer: PointShapeRenderer;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Draws the features of a custom feature type with the WebGL context of the map
|
|
68
|
-
*
|
|
69
|
-
* It is the `renderer` of a {@link CustomFeatureHandler}. `onAdd` runs when the draw layer is
|
|
70
|
-
* added to the map (create the WebGL resources there), `draw` runs for each visible feature of
|
|
71
|
-
* the type in stacking order on every frame, and `onRemove` runs when the layer is removed. The
|
|
72
|
-
* shared renderers of the context draw lines, fills and point shapes the same way the built-in
|
|
73
|
-
* types are drawn, terrain included.
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
* ```ts
|
|
77
|
-
* import type { CustomFeatureRenderer, PointStyle } from '@sakuzu/maplibre-gl-draw';
|
|
78
|
-
*
|
|
79
|
-
* const markerStyle: PointStyle = {
|
|
80
|
-
* shape: 'square',
|
|
81
|
-
* size: 14,
|
|
82
|
-
* fillColor: [0, 0.4, 1, 1],
|
|
83
|
-
* fillOpacity: 1,
|
|
84
|
-
* strokeColor: [1, 1, 1, 1],
|
|
85
|
-
* strokeWidth: 2,
|
|
86
|
-
* strokeOpacity: 1,
|
|
87
|
-
* };
|
|
88
|
-
*
|
|
89
|
-
* const markerRenderer: CustomFeatureRenderer = {
|
|
90
|
-
* name: 'marker',
|
|
91
|
-
* onAdd() {}, // nothing to create: the shared point renderer does the drawing
|
|
92
|
-
* draw(feature, _projectionData, zoom, context) {
|
|
93
|
-
* const coordinate = feature.coordinates as [number, number];
|
|
94
|
-
* // Fade with the layer: the opacity of the layer is multiplied into the alpha
|
|
95
|
-
* const style = {
|
|
96
|
-
* ...markerStyle,
|
|
97
|
-
* fillOpacity: markerStyle.fillOpacity * context.opacity,
|
|
98
|
-
* strokeOpacity: markerStyle.strokeOpacity * context.opacity,
|
|
99
|
-
* };
|
|
100
|
-
* context.pointShapeRenderer.draw(coordinate, style, zoom, feature.id);
|
|
101
|
-
* },
|
|
102
|
-
* onRemove() {},
|
|
103
|
-
* };
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
export interface CustomFeatureRenderer {
|
|
107
|
-
/** Renderer name (for debugging) */
|
|
108
|
-
readonly name: string;
|
|
109
|
-
/**
|
|
110
|
-
* Initializes the WebGL resources
|
|
111
|
-
*/
|
|
112
|
-
onAdd(gl: WebGL2RenderingContext, map: MapLibreMap): void;
|
|
113
|
-
/**
|
|
114
|
-
* Draws a feature
|
|
115
|
-
*
|
|
116
|
-
* @param feature The feature to draw
|
|
117
|
-
* @param projectionData MapLibre's ProjectionData
|
|
118
|
-
* @param zoom The current zoom level
|
|
119
|
-
* @param context The rendering context (shader data, offset information, and the opacity of
|
|
120
|
-
* the layer of the feature, which the renderer multiplies into its own alpha)
|
|
121
|
-
*/
|
|
122
|
-
draw(feature: {
|
|
123
|
-
id: string;
|
|
124
|
-
type: string;
|
|
125
|
-
coordinates: unknown;
|
|
126
|
-
properties: Record<string, unknown>;
|
|
127
|
-
style?: unknown;
|
|
128
|
-
}, projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
|
|
129
|
-
/**
|
|
130
|
-
* Releases the WebGL resources
|
|
131
|
-
*/
|
|
132
|
-
onRemove(): void;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Custom renderer
|
|
136
|
-
*
|
|
137
|
-
* Responsible for overlay rendering (independent of features).
|
|
138
|
-
*/
|
|
139
|
-
export interface CustomOverlayRenderer {
|
|
140
|
-
/** Renderer name (for debugging) */
|
|
141
|
-
readonly name: string;
|
|
142
|
-
/**
|
|
143
|
-
* The priority in the draw order
|
|
144
|
-
* - 'background': drawn behind the features
|
|
145
|
-
* - 'foreground': drawn in front of the features (behind the selection UI)
|
|
146
|
-
* - 'overlay': drawn in front of the selection UI
|
|
147
|
-
*/
|
|
148
|
-
readonly order: 'background' | 'foreground' | 'overlay';
|
|
149
|
-
/**
|
|
150
|
-
* Initializes the WebGL resources
|
|
151
|
-
*/
|
|
152
|
-
onAdd(gl: WebGL2RenderingContext, map: MapLibreMap): void;
|
|
153
|
-
/**
|
|
154
|
-
* Draws
|
|
155
|
-
*
|
|
156
|
-
* @param projectionData MapLibre's ProjectionData
|
|
157
|
-
* @param zoom The current zoom level
|
|
158
|
-
* @param context The rendering context (shared renderers, shader data and so on)
|
|
159
|
-
*/
|
|
160
|
-
draw(projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
|
|
161
|
-
/**
|
|
162
|
-
* Releases the WebGL resources
|
|
163
|
-
*/
|
|
164
|
-
onRemove(): void;
|
|
165
|
-
/**
|
|
166
|
-
* Whether the renderer still has work that later frames finish on their own and that will
|
|
167
|
-
* change what it draws (resources it prepares over several frames, say). Optional: a renderer
|
|
168
|
-
* without it has none
|
|
169
|
-
*
|
|
170
|
-
* `MapLibreGLDraw.hasPendingWork` asks every overlay renderer, so a host that waits for a
|
|
171
|
-
* complete picture waits for this renderer too. A renderer that returns true requests the
|
|
172
|
-
* repaints that finish the work itself. With `timeSlicing: false` in the rendering settings,
|
|
173
|
-
* a renderer should finish in the frame what it would otherwise spread over frames.
|
|
174
|
-
*/
|
|
175
|
-
hasPendingWork?(): boolean;
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Layer-aware overlay renderer
|
|
179
|
-
*
|
|
180
|
-
* An extension of CustomOverlayRenderer that supports rendering per layer.
|
|
181
|
-
* Used for rendering that follows the layer order, such as Tentative.
|
|
182
|
-
*/
|
|
183
|
-
export interface LayerAwareOverlayRenderer extends CustomOverlayRenderer {
|
|
184
|
-
/**
|
|
185
|
-
* Performs the rendering that corresponds to the given layer (lines and fills only)
|
|
186
|
-
*
|
|
187
|
-
* Called in the per-layer rendering loop, after the features of each layer have been drawn.
|
|
188
|
-
* When this method exists, it is used instead of draw().
|
|
189
|
-
* Vertices are drawn in the foreground, so they are not drawn here.
|
|
190
|
-
*
|
|
191
|
-
* @param layerId The ID of the target layer
|
|
192
|
-
* @param projectionData MapLibre's ProjectionData
|
|
193
|
-
* @param zoom The current zoom level
|
|
194
|
-
* @param context The rendering context
|
|
195
|
-
*/
|
|
196
|
-
drawForLayer(layerId: string, projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
|
|
197
|
-
/**
|
|
198
|
-
* Draws the vertices in the foreground
|
|
199
|
-
*
|
|
200
|
-
* Called after the selection UI, it draws the vertices of all layers in the foreground at once.
|
|
201
|
-
* This is needed so that the vertices stay visible even while drawing on a layer that is behind.
|
|
202
|
-
*
|
|
203
|
-
* @param projectionData MapLibre's ProjectionData
|
|
204
|
-
* @param zoom The current zoom level
|
|
205
|
-
* @param context The rendering context
|
|
206
|
-
*/
|
|
207
|
-
drawVertices?(projectionData: ProjectionData, zoom: number, context: CustomRendererDrawContext): void;
|
|
208
|
-
}
|
|
1
|
+
export {};
|
package/dist/geometry/angle.d.ts
CHANGED
|
@@ -35,13 +35,5 @@ import type { Coordinate } from './types.js';
|
|
|
35
35
|
* @param radiusMeters The distance from the center in meters
|
|
36
36
|
* @param angleDegrees The bearing in degrees, clockwise with north as 0
|
|
37
37
|
* @returns The position `[lng, lat]` in degrees
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* import { getPointAtAngle } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
42
|
-
*
|
|
43
|
-
* // 1 km due east of Tokyo Station, on the same parallel
|
|
44
|
-
* getPointAtAngle([139.767, 35.681], 1000, 90); // [139.77807..., 35.681]
|
|
45
|
-
* ```
|
|
46
38
|
*/
|
|
47
39
|
export declare function getPointAtAngle(center: Coordinate, radiusMeters: number, angleDegrees: number): Coordinate;
|
package/dist/geometry/angle.js
CHANGED
|
@@ -21,14 +21,6 @@ import { EARTH_RADIUS_METERS, toRadians } from './units.js';
|
|
|
21
21
|
* @param radiusMeters The distance from the center in meters
|
|
22
22
|
* @param angleDegrees The bearing in degrees, clockwise with north as 0
|
|
23
23
|
* @returns The position `[lng, lat]` in degrees
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```ts
|
|
27
|
-
* import { getPointAtAngle } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
28
|
-
*
|
|
29
|
-
* // 1 km due east of Tokyo Station, on the same parallel
|
|
30
|
-
* getPointAtAngle([139.767, 35.681], 1000, 90); // [139.77807..., 35.681]
|
|
31
|
-
* ```
|
|
32
24
|
*/
|
|
33
25
|
export function getPointAtAngle(center, radiusMeters, angleDegrees) {
|
|
34
26
|
const earthRadius = EARTH_RADIUS_METERS;
|
package/dist/geometry/bbox.d.ts
CHANGED
|
@@ -9,14 +9,6 @@ import type { AreaCoordinates, BBox, Coordinate } from './types.js';
|
|
|
9
9
|
* @param coordinates Positions `[lng, lat]` in degrees
|
|
10
10
|
* @returns `[minLng, minLat, maxLng, maxLat]` in degrees. `null` when there is not a single
|
|
11
11
|
* finite coordinate (an empty array included)
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* import { coordinatesBBox } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
16
|
-
*
|
|
17
|
-
* coordinatesBBox([[139.7, 35.6], [139.8, 35.7]]); // [139.7, 35.6, 139.8, 35.7]
|
|
18
|
-
* coordinatesBBox([]); // null
|
|
19
|
-
* ```
|
|
20
12
|
*/
|
|
21
13
|
export declare function coordinatesBBox(coordinates: Coordinate[]): BBox | null;
|
|
22
14
|
/**
|
|
@@ -33,16 +25,16 @@ export declare function boundingBox(coordinates: AreaCoordinates): BBox | null;
|
|
|
33
25
|
/**
|
|
34
26
|
* Determines whether two bounding boxes overlap, touching included.
|
|
35
27
|
*
|
|
36
|
-
* @param a A box `[minLng, minLat, maxLng, maxLat]`
|
|
37
|
-
* @param b A box `[minLng, minLat, maxLng, maxLat]`
|
|
28
|
+
* @param a A box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
29
|
+
* @param b A box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
38
30
|
* @returns `true` when the boxes share at least one point, an edge or a corner included
|
|
39
31
|
*/
|
|
40
32
|
export declare function bboxIntersects(a: BBox, b: BBox): boolean;
|
|
41
33
|
/**
|
|
42
34
|
* Determines whether one bounding box contains another, coincident boundaries included.
|
|
43
35
|
*
|
|
44
|
-
* @param outer The containing box `[minLng, minLat, maxLng, maxLat]`
|
|
45
|
-
* @param inner The contained box `[minLng, minLat, maxLng, maxLat]`
|
|
36
|
+
* @param outer The containing box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
37
|
+
* @param inner The contained box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
46
38
|
* @returns `true` when every point of `inner` lies in `outer`. A box contains itself
|
|
47
39
|
*/
|
|
48
40
|
export declare function bboxContains(outer: BBox, inner: BBox): boolean;
|
package/dist/geometry/bbox.js
CHANGED
|
@@ -17,14 +17,6 @@ import { flattenAreaCoordinates, isFiniteCoordinate } from './coords.js';
|
|
|
17
17
|
* @param coordinates Positions `[lng, lat]` in degrees
|
|
18
18
|
* @returns `[minLng, minLat, maxLng, maxLat]` in degrees. `null` when there is not a single
|
|
19
19
|
* finite coordinate (an empty array included)
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* import { coordinatesBBox } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
24
|
-
*
|
|
25
|
-
* coordinatesBBox([[139.7, 35.6], [139.8, 35.7]]); // [139.7, 35.6, 139.8, 35.7]
|
|
26
|
-
* coordinatesBBox([]); // null
|
|
27
|
-
* ```
|
|
28
20
|
*/
|
|
29
21
|
export function coordinatesBBox(coordinates) {
|
|
30
22
|
let found = false;
|
|
@@ -64,8 +56,8 @@ export function boundingBox(coordinates) {
|
|
|
64
56
|
/**
|
|
65
57
|
* Determines whether two bounding boxes overlap, touching included.
|
|
66
58
|
*
|
|
67
|
-
* @param a A box `[minLng, minLat, maxLng, maxLat]`
|
|
68
|
-
* @param b A box `[minLng, minLat, maxLng, maxLat]`
|
|
59
|
+
* @param a A box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
60
|
+
* @param b A box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
69
61
|
* @returns `true` when the boxes share at least one point, an edge or a corner included
|
|
70
62
|
*/
|
|
71
63
|
export function bboxIntersects(a, b) {
|
|
@@ -74,8 +66,8 @@ export function bboxIntersects(a, b) {
|
|
|
74
66
|
/**
|
|
75
67
|
* Determines whether one bounding box contains another, coincident boundaries included.
|
|
76
68
|
*
|
|
77
|
-
* @param outer The containing box `[minLng, minLat, maxLng, maxLat]`
|
|
78
|
-
* @param inner The contained box `[minLng, minLat, maxLng, maxLat]`
|
|
69
|
+
* @param outer The containing box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
70
|
+
* @param inner The contained box `[minLng, minLat, maxLng, maxLat]` in degrees
|
|
79
71
|
* @returns `true` when every point of `inner` lies in `outer`. A box contains itself
|
|
80
72
|
*/
|
|
81
73
|
export function bboxContains(outer, inner) {
|
|
@@ -12,15 +12,6 @@ import type { AreaCoordinates, MultiPolygonCoordinates } from './types.js';
|
|
|
12
12
|
* the input has no area
|
|
13
13
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
14
14
|
* retry on the 1e-9 degree grid
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```ts
|
|
18
|
-
* import { normalizeArea } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
19
|
-
*
|
|
20
|
-
* // A self-intersecting bow tie becomes two triangles
|
|
21
|
-
* normalizeArea([[[0, 0], [1, 1], [1, 0], [0, 1], [0, 0]]]);
|
|
22
|
-
* // [[[[0, 0], [0.5, 0.5], [0, 1], [0, 0]]], [[[0.5, 0.5], [1, 0], [1, 1], [0.5, 0.5]]]]
|
|
23
|
-
* ```
|
|
24
15
|
*/
|
|
25
16
|
export declare function normalizeArea(coordinates: AreaCoordinates): MultiPolygonCoordinates;
|
|
26
17
|
/**
|
|
@@ -36,16 +27,6 @@ export declare function normalizeArea(coordinates: AreaCoordinates): MultiPolygo
|
|
|
36
27
|
* several parts. An empty array when neither input has an area
|
|
37
28
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
38
29
|
* retry on the 1e-9 degree grid
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```ts
|
|
42
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
43
|
-
* import { union } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
44
|
-
*
|
|
45
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
46
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
47
|
-
* union(a, b); // [[[[0, 0], [1.5, 0], [1.5, 1], [0, 1], [0, 0]]]]
|
|
48
|
-
* ```
|
|
49
30
|
*/
|
|
50
31
|
export declare function union(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
|
|
51
32
|
/**
|
|
@@ -59,16 +40,6 @@ export declare function union(a: AreaCoordinates, b: AreaCoordinates): MultiPoly
|
|
|
59
40
|
* when `a` has no area or `b` covers it. `a` normalized when `b` has no area
|
|
60
41
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
61
42
|
* retry on the 1e-9 degree grid
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```ts
|
|
65
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
66
|
-
* import { difference } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
67
|
-
*
|
|
68
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
69
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
70
|
-
* difference(a, b); // [[[[0, 0], [0.5, 0], [0.5, 1], [0, 1], [0, 0]]]]
|
|
71
|
-
* ```
|
|
72
43
|
*/
|
|
73
44
|
export declare function difference(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
|
|
74
45
|
/**
|
|
@@ -81,16 +52,6 @@ export declare function difference(a: AreaCoordinates, b: AreaCoordinates): Mult
|
|
|
81
52
|
* area
|
|
82
53
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
83
54
|
* retry on the 1e-9 degree grid
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* ```ts
|
|
87
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
88
|
-
* import { intersection } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
89
|
-
*
|
|
90
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
91
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
92
|
-
* intersection(a, b); // [[[[0.5, 0], [1, 0], [1, 1], [0.5, 1], [0.5, 0]]]]
|
|
93
|
-
* ```
|
|
94
55
|
*/
|
|
95
56
|
export declare function intersection(a: AreaCoordinates, b: AreaCoordinates): MultiPolygonCoordinates;
|
|
96
57
|
/**
|
|
@@ -120,18 +81,6 @@ export declare function clip(subject: AreaCoordinates, clipRegion: AreaCoordinat
|
|
|
120
81
|
* empty array and when no element has an area
|
|
121
82
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
122
83
|
* retry on the 1e-9 degree grid
|
|
123
|
-
*
|
|
124
|
-
* @example
|
|
125
|
-
* ```ts
|
|
126
|
-
* import { unionAll } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
127
|
-
*
|
|
128
|
-
* const merged = unionAll([
|
|
129
|
-
* [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
|
|
130
|
-
* [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]],
|
|
131
|
-
* [[[5, 5], [6, 5], [6, 6], [5, 5]]],
|
|
132
|
-
* ]);
|
|
133
|
-
* merged.length; // 2 (the overlapping squares fuse; the triangle stays apart)
|
|
134
|
-
* ```
|
|
135
84
|
*/
|
|
136
85
|
export declare function unionAll(geometries: AreaCoordinates[]): MultiPolygonCoordinates;
|
|
137
86
|
/**
|
package/dist/geometry/boolean.js
CHANGED
|
@@ -106,15 +106,6 @@ function normalize(coordinates) {
|
|
|
106
106
|
* the input has no area
|
|
107
107
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
108
108
|
* retry on the 1e-9 degree grid
|
|
109
|
-
*
|
|
110
|
-
* @example
|
|
111
|
-
* ```ts
|
|
112
|
-
* import { normalizeArea } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
113
|
-
*
|
|
114
|
-
* // A self-intersecting bow tie becomes two triangles
|
|
115
|
-
* normalizeArea([[[0, 0], [1, 1], [1, 0], [0, 1], [0, 0]]]);
|
|
116
|
-
* // [[[[0, 0], [0.5, 0.5], [0, 1], [0, 0]]], [[[0.5, 0.5], [1, 0], [1, 1], [0.5, 0.5]]]]
|
|
117
|
-
* ```
|
|
118
109
|
*/
|
|
119
110
|
export function normalizeArea(coordinates) {
|
|
120
111
|
return normalize(sanitize(coordinates));
|
|
@@ -132,16 +123,6 @@ export function normalizeArea(coordinates) {
|
|
|
132
123
|
* several parts. An empty array when neither input has an area
|
|
133
124
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
134
125
|
* retry on the 1e-9 degree grid
|
|
135
|
-
*
|
|
136
|
-
* @example
|
|
137
|
-
* ```ts
|
|
138
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
139
|
-
* import { union } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
140
|
-
*
|
|
141
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
142
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
143
|
-
* union(a, b); // [[[[0, 0], [1.5, 0], [1.5, 1], [0, 1], [0, 0]]]]
|
|
144
|
-
* ```
|
|
145
126
|
*/
|
|
146
127
|
export function union(a, b) {
|
|
147
128
|
const left = sanitize(a);
|
|
@@ -165,16 +146,6 @@ export function union(a, b) {
|
|
|
165
146
|
* when `a` has no area or `b` covers it. `a` normalized when `b` has no area
|
|
166
147
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
167
148
|
* retry on the 1e-9 degree grid
|
|
168
|
-
*
|
|
169
|
-
* @example
|
|
170
|
-
* ```ts
|
|
171
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
172
|
-
* import { difference } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
173
|
-
*
|
|
174
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
175
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
176
|
-
* difference(a, b); // [[[[0, 0], [0.5, 0], [0.5, 1], [0, 1], [0, 0]]]]
|
|
177
|
-
* ```
|
|
178
149
|
*/
|
|
179
150
|
export function difference(a, b) {
|
|
180
151
|
const left = sanitize(a);
|
|
@@ -197,16 +168,6 @@ export function difference(a, b) {
|
|
|
197
168
|
* area
|
|
198
169
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
199
170
|
* retry on the 1e-9 degree grid
|
|
200
|
-
*
|
|
201
|
-
* @example
|
|
202
|
-
* ```ts
|
|
203
|
-
* import type { PolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
204
|
-
* import { intersection } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
205
|
-
*
|
|
206
|
-
* const a: PolygonCoordinates = [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]];
|
|
207
|
-
* const b: PolygonCoordinates = [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]];
|
|
208
|
-
* intersection(a, b); // [[[[0.5, 0], [1, 0], [1, 1], [0.5, 1], [0.5, 0]]]]
|
|
209
|
-
* ```
|
|
210
171
|
*/
|
|
211
172
|
export function intersection(a, b) {
|
|
212
173
|
const left = sanitize(a);
|
|
@@ -245,18 +206,6 @@ export function clip(subject, clipRegion) {
|
|
|
245
206
|
* empty array and when no element has an area
|
|
246
207
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
247
208
|
* retry on the 1e-9 degree grid
|
|
248
|
-
*
|
|
249
|
-
* @example
|
|
250
|
-
* ```ts
|
|
251
|
-
* import { unionAll } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
252
|
-
*
|
|
253
|
-
* const merged = unionAll([
|
|
254
|
-
* [[[0, 0], [1, 0], [1, 1], [0, 1], [0, 0]]],
|
|
255
|
-
* [[[0.5, 0], [1.5, 0], [1.5, 1], [0.5, 1], [0.5, 0]]],
|
|
256
|
-
* [[[5, 5], [6, 5], [6, 6], [5, 5]]],
|
|
257
|
-
* ]);
|
|
258
|
-
* merged.length; // 2 (the overlapping squares fuse; the triangle stays apart)
|
|
259
|
-
* ```
|
|
260
209
|
*/
|
|
261
210
|
export function unionAll(geometries) {
|
|
262
211
|
const parts = geometries.map(sanitize).filter((part) => part.length > 0);
|
|
@@ -42,31 +42,5 @@ export interface BufferOptions {
|
|
|
42
42
|
* shrunk polygon vanishes. `null` when the operation is not defined for the input
|
|
43
43
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
44
44
|
* retry on the 1e-9 degree grid
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```ts
|
|
48
|
-
* import { buffer } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
49
|
-
*
|
|
50
|
-
* // The area within 100 m of a line
|
|
51
|
-
* const corridor = buffer(
|
|
52
|
-
* { type: 'LineString', coordinates: [[139.76, 35.68], [139.77, 35.69]] },
|
|
53
|
-
* 100,
|
|
54
|
-
* { segments: 32 },
|
|
55
|
-
* );
|
|
56
|
-
*
|
|
57
|
-
* // Shrink a polygon by 50 m
|
|
58
|
-
* const shrunk = buffer(
|
|
59
|
-
* {
|
|
60
|
-
* type: 'Polygon',
|
|
61
|
-
* coordinates: [[[139.76, 35.68], [139.77, 35.68], [139.77, 35.69], [139.76, 35.68]]],
|
|
62
|
-
* },
|
|
63
|
-
* -50,
|
|
64
|
-
* );
|
|
65
|
-
* if (shrunk === null) {
|
|
66
|
-
* // Not defined for the input
|
|
67
|
-
* } else if (shrunk.length === 0) {
|
|
68
|
-
* // The whole area vanished
|
|
69
|
-
* }
|
|
70
|
-
* ```
|
|
71
45
|
*/
|
|
72
46
|
export declare function buffer(geometry: GeometryInput, meters: number, options?: BufferOptions): MultiPolygonCoordinates | null;
|
package/dist/geometry/buffer.js
CHANGED
|
@@ -161,32 +161,6 @@ function isAreaGeometry(geometry) {
|
|
|
161
161
|
* shrunk polygon vanishes. `null` when the operation is not defined for the input
|
|
162
162
|
* @throws {@link GeometryError} when the boolean operation engine fails even after the
|
|
163
163
|
* retry on the 1e-9 degree grid
|
|
164
|
-
*
|
|
165
|
-
* @example
|
|
166
|
-
* ```ts
|
|
167
|
-
* import { buffer } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
168
|
-
*
|
|
169
|
-
* // The area within 100 m of a line
|
|
170
|
-
* const corridor = buffer(
|
|
171
|
-
* { type: 'LineString', coordinates: [[139.76, 35.68], [139.77, 35.69]] },
|
|
172
|
-
* 100,
|
|
173
|
-
* { segments: 32 },
|
|
174
|
-
* );
|
|
175
|
-
*
|
|
176
|
-
* // Shrink a polygon by 50 m
|
|
177
|
-
* const shrunk = buffer(
|
|
178
|
-
* {
|
|
179
|
-
* type: 'Polygon',
|
|
180
|
-
* coordinates: [[[139.76, 35.68], [139.77, 35.68], [139.77, 35.69], [139.76, 35.68]]],
|
|
181
|
-
* },
|
|
182
|
-
* -50,
|
|
183
|
-
* );
|
|
184
|
-
* if (shrunk === null) {
|
|
185
|
-
* // Not defined for the input
|
|
186
|
-
* } else if (shrunk.length === 0) {
|
|
187
|
-
* // The whole area vanished
|
|
188
|
-
* }
|
|
189
|
-
* ```
|
|
190
164
|
*/
|
|
191
165
|
export function buffer(geometry, meters, options) {
|
|
192
166
|
if (!Number.isFinite(meters)) {
|
|
@@ -26,15 +26,6 @@ export declare function normalizeCircleSegments(segments: number | undefined, fa
|
|
|
26
26
|
* @returns The ring, `segments + 1` positions `[lng, lat]` with the first repeated at the
|
|
27
27
|
* end. An empty array for a center that is not finite and for a radius that is negative
|
|
28
28
|
* or not finite
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```ts
|
|
32
|
-
* import { generateCirclePolygon } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
33
|
-
*
|
|
34
|
-
* const ring = generateCirclePolygon([139.767, 35.681], 500, 32);
|
|
35
|
-
* ring.length; // 33
|
|
36
|
-
* const polygon = [ring]; // Polygon coordinates
|
|
37
|
-
* ```
|
|
38
29
|
*/
|
|
39
30
|
export declare function generateCirclePolygon(center: Coordinate, radiusMeters: number, segments?: number): Coordinate[];
|
|
40
31
|
/**
|
package/dist/geometry/circle.js
CHANGED
|
@@ -48,15 +48,6 @@ export function normalizeCircleSegments(segments, fallback = DEFAULT_CIRCLE_SEGM
|
|
|
48
48
|
* @returns The ring, `segments + 1` positions `[lng, lat]` with the first repeated at the
|
|
49
49
|
* end. An empty array for a center that is not finite and for a radius that is negative
|
|
50
50
|
* or not finite
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```ts
|
|
54
|
-
* import { generateCirclePolygon } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
55
|
-
*
|
|
56
|
-
* const ring = generateCirclePolygon([139.767, 35.681], 500, 32);
|
|
57
|
-
* ring.length; // 33
|
|
58
|
-
* const polygon = [ring]; // Polygon coordinates
|
|
59
|
-
* ```
|
|
60
51
|
*/
|
|
61
52
|
export function generateCirclePolygon(center, radiusMeters, segments = DEFAULT_CIRCLE_SEGMENTS) {
|
|
62
53
|
if (!isFiniteCoordinate(center) || !Number.isFinite(radiusMeters) || radiusMeters < 0) {
|
|
@@ -18,15 +18,6 @@ import type { AreaCoordinates, Coordinate, MultiPolygonCoordinates, Ring } from
|
|
|
18
18
|
* @param coordinates Polygon or MultiPolygon coordinates
|
|
19
19
|
* @returns `true` for MultiPolygon coordinates (a type guard). `false` for Polygon
|
|
20
20
|
* coordinates and for coordinates with no position
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```ts
|
|
24
|
-
* import { isMultiPolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
25
|
-
*
|
|
26
|
-
* const ring: [number, number][] = [[0, 0], [1, 0], [1, 1], [0, 0]];
|
|
27
|
-
* isMultiPolygonCoordinates([ring]); // false (Polygon)
|
|
28
|
-
* isMultiPolygonCoordinates([[ring]]); // true (MultiPolygon)
|
|
29
|
-
* ```
|
|
30
21
|
*/
|
|
31
22
|
export declare function isMultiPolygonCoordinates(coordinates: AreaCoordinates): coordinates is MultiPolygonCoordinates;
|
|
32
23
|
/**
|
|
@@ -75,13 +66,6 @@ export declare function isRingClosed(ring: Ring): boolean;
|
|
|
75
66
|
*
|
|
76
67
|
* @param ring A coordinate sequence
|
|
77
68
|
* @returns A new closed array. The input itself when it is already closed or empty
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```ts
|
|
81
|
-
* import { closeRing } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
82
|
-
*
|
|
83
|
-
* closeRing([[0, 0], [1, 0], [1, 1]]); // [[0, 0], [1, 0], [1, 1], [0, 0]]
|
|
84
|
-
* ```
|
|
85
69
|
*/
|
|
86
70
|
export declare function closeRing(ring: Ring): Ring;
|
|
87
71
|
/**
|
package/dist/geometry/coords.js
CHANGED
|
@@ -13,15 +13,6 @@
|
|
|
13
13
|
* @param coordinates Polygon or MultiPolygon coordinates
|
|
14
14
|
* @returns `true` for MultiPolygon coordinates (a type guard). `false` for Polygon
|
|
15
15
|
* coordinates and for coordinates with no position
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```ts
|
|
19
|
-
* import { isMultiPolygonCoordinates } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
20
|
-
*
|
|
21
|
-
* const ring: [number, number][] = [[0, 0], [1, 0], [1, 1], [0, 0]];
|
|
22
|
-
* isMultiPolygonCoordinates([ring]); // false (Polygon)
|
|
23
|
-
* isMultiPolygonCoordinates([[ring]]); // true (MultiPolygon)
|
|
24
|
-
* ```
|
|
25
16
|
*/
|
|
26
17
|
export function isMultiPolygonCoordinates(coordinates) {
|
|
27
18
|
for (const element of coordinates) {
|
|
@@ -112,13 +103,6 @@ export function isRingClosed(ring) {
|
|
|
112
103
|
*
|
|
113
104
|
* @param ring A coordinate sequence
|
|
114
105
|
* @returns A new closed array. The input itself when it is already closed or empty
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```ts
|
|
118
|
-
* import { closeRing } from '@sakuzu/maplibre-gl-draw/geometry';
|
|
119
|
-
*
|
|
120
|
-
* closeRing([[0, 0], [1, 0], [1, 1]]); // [[0, 0], [1, 0], [1, 1], [0, 0]]
|
|
121
|
-
* ```
|
|
122
106
|
*/
|
|
123
107
|
export function closeRing(ring) {
|
|
124
108
|
if (ring.length === 0 || isRingClosed(ring)) {
|