@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,22 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The registry of the Selection UI extension points
|
|
3
|
-
*
|
|
4
|
-
* A mechanism for the custom feature types of extension implementations to provide their own
|
|
5
|
-
* boundingBox computation / resize handles / resize strategy / point frame extent.
|
|
6
|
-
*
|
|
7
|
-
* One registry belongs to one draw instance (it is created by createMapLibreGLDraw and handed
|
|
8
|
-
* to the CustomLayer, the modes and the extension API). Two draw instances on the same page
|
|
9
|
-
* never see each other's registrations, and destroying an instance clears its registry.
|
|
10
|
-
* The tile size of the instance's map is held here as well, because the custom bounding box
|
|
11
|
-
* calculators take it as an argument.
|
|
12
|
-
*/
|
|
13
1
|
import type { Feature } from '../../../store/types.js';
|
|
14
|
-
import type { AdditionalResizeHandlesCalculator, CustomBoundingBoxCalculator,
|
|
2
|
+
import type { AdditionalResizeHandlesCalculator, CustomBoundingBoxCalculator, FramePoint, PointFrameExtent, PointFrameExtentProvider, PointFrameOutlineProvider, ResizeStrategy, TypeResizeCalculator } from './types.js';
|
|
15
3
|
/**
|
|
16
4
|
* The side of the square selection frame of a point, in CSS px: 12.
|
|
17
5
|
*
|
|
18
|
-
* The same value as DEFAULT_POINT_STYLE.size. Types with
|
|
19
|
-
*
|
|
6
|
+
* The same value as DEFAULT_POINT_STYLE.size. Types with neither a registered extent nor a
|
|
7
|
+
* default extent of the registry become this square. A draw instance gives its registry the
|
|
8
|
+
* extent of the marker of a built-in point as the default.
|
|
20
9
|
*/
|
|
21
10
|
export declare const DEFAULT_POINT_FRAME_SIZE = 12;
|
|
22
11
|
/**
|
|
@@ -35,9 +24,9 @@ export interface SelectionExtensionRegistry {
|
|
|
35
24
|
/** Returns the additional resize handles calculator of a type, or `undefined` */
|
|
36
25
|
getAdditionalResizeHandlesCalculator(type: string): AdditionalResizeHandlesCalculator | undefined;
|
|
37
26
|
/** Registers how a feature type is resized, replacing the built-in computation */
|
|
38
|
-
registerCustomResize(type: string, calculator:
|
|
27
|
+
registerCustomResize(type: string, calculator: TypeResizeCalculator): () => void;
|
|
39
28
|
/** Returns the custom resize calculator of a type, or `undefined` */
|
|
40
|
-
getCustomResizeCalculator(type: string):
|
|
29
|
+
getCustomResizeCalculator(type: string): TypeResizeCalculator | undefined;
|
|
41
30
|
/** Registers whether a feature type resizes by its coordinates or by its scale */
|
|
42
31
|
registerResizeStrategy(type: string, strategy: ResizeStrategy): () => void;
|
|
43
32
|
/** Returns the resize strategy of a type, or `undefined` */
|
|
@@ -50,10 +39,21 @@ export interface SelectionExtensionRegistry {
|
|
|
50
39
|
* Resolve the half width and half height of the selection box of a zero-area point
|
|
51
40
|
*
|
|
52
41
|
* Types with no registration, types that return null and values that are not finite
|
|
53
|
-
* degrade to the default
|
|
54
|
-
* extension side is not yet determined).
|
|
42
|
+
* degrade to the default extent of the registry, and then to the default square (the frame
|
|
43
|
+
* is not broken while the actual size on the extension side is not yet determined).
|
|
55
44
|
*/
|
|
56
45
|
resolvePointFrameExtent(feature: Feature): PointFrameExtent;
|
|
46
|
+
/** Registers the outline of the selection frame of a point-like feature type */
|
|
47
|
+
registerPointFrameOutline(type: string, provider: PointFrameOutlineProvider): () => void;
|
|
48
|
+
/**
|
|
49
|
+
* The four corners of the selection frame of a zero-area feature on the screen, expanded by
|
|
50
|
+
* the margin: the registered outline when it gives four finite corners, else the rectangle
|
|
51
|
+
* of {@link resolvePointFrameExtent} around the center
|
|
52
|
+
*
|
|
53
|
+
* @param center The center of the frame on the screen, in CSS px
|
|
54
|
+
* @param margin The margin of the frame, in CSS px
|
|
55
|
+
*/
|
|
56
|
+
resolvePointFrameCorners(feature: Feature, center: FramePoint, margin: number): FramePoint[];
|
|
57
57
|
/** The tile size in px of the instance's map (passed to the custom bounding box calculators) */
|
|
58
58
|
getTileSize(): number;
|
|
59
59
|
/** Sets the tile size in px (the draw instance sets it from the map) */
|
|
@@ -65,12 +65,23 @@ export interface SelectionExtensionRegistry {
|
|
|
65
65
|
* Creates an empty {@link SelectionExtensionRegistry} with a tile size of 512 px, for testing a
|
|
66
66
|
* custom feature handler in isolation.
|
|
67
67
|
*
|
|
68
|
+
* @param defaultPointFrameExtent - The extent of the frame of a point whose type registers
|
|
69
|
+
* none, or whose provider gives none; without it (or when it returns null) the frame is the
|
|
70
|
+
* square of DEFAULT_POINT_FRAME_SIZE
|
|
68
71
|
* @returns A new registry with no registration
|
|
69
72
|
*/
|
|
70
|
-
export declare function createSelectionExtensionRegistry(): SelectionExtensionRegistry;
|
|
73
|
+
export declare function createSelectionExtensionRegistry(defaultPointFrameExtent?: PointFrameExtentProvider): SelectionExtensionRegistry;
|
|
71
74
|
/**
|
|
72
75
|
* Resolve the extent of a point's selection box with an optional provider
|
|
73
76
|
*
|
|
74
77
|
* Without a registry (callers outside a draw instance) the default square is returned.
|
|
75
78
|
*/
|
|
76
79
|
export declare function resolvePointFrameExtentWith(provider: PointFrameExtentProvider | undefined, feature: Feature): PointFrameExtent;
|
|
80
|
+
/**
|
|
81
|
+
* The four corners of the selection frame of a zero-area feature on the screen, expanded by
|
|
82
|
+
* the margin, with optional providers
|
|
83
|
+
*
|
|
84
|
+
* An outline of four finite corners has every edge moved outward by the margin; any other
|
|
85
|
+
* outline, or none, gives the rectangle of the extent around the center, widened the same way.
|
|
86
|
+
*/
|
|
87
|
+
export declare function resolvePointFrameCornersWith(extentProvider: PointFrameExtentProvider | undefined, outlineProvider: PointFrameOutlineProvider | undefined, feature: Feature, center: FramePoint, margin: number): FramePoint[];
|
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* The registry of the Selection UI extension points
|
|
5
|
+
*
|
|
6
|
+
* A mechanism for the custom feature types of extension implementations to provide their own
|
|
7
|
+
* boundingBox computation / resize handles / resize strategy / point frame extent.
|
|
8
|
+
*
|
|
9
|
+
* One registry belongs to one draw instance (it is created by its engine and handed to the
|
|
10
|
+
* CustomLayer, the modes and the extension host). Two draw instances on the same page
|
|
11
|
+
* never see each other's registrations, and destroying an instance clears its registry.
|
|
12
|
+
* The tile size of the instance's map is held here as well, because the custom bounding box
|
|
13
|
+
* calculators take it as an argument.
|
|
14
|
+
*/
|
|
15
|
+
import { expandQuad } from '../../../shared/math/transform.js';
|
|
3
16
|
/**
|
|
4
17
|
* The side of the square selection frame of a point, in CSS px: 12.
|
|
5
18
|
*
|
|
6
|
-
* The same value as DEFAULT_POINT_STYLE.size. Types with
|
|
7
|
-
*
|
|
19
|
+
* The same value as DEFAULT_POINT_STYLE.size. Types with neither a registered extent nor a
|
|
20
|
+
* default extent of the registry become this square. A draw instance gives its registry the
|
|
21
|
+
* extent of the marker of a built-in point as the default.
|
|
8
22
|
*/
|
|
9
23
|
export const DEFAULT_POINT_FRAME_SIZE = 12;
|
|
10
24
|
/** The tile size used until the map reports its own (maplibre's default) */
|
|
@@ -23,15 +37,28 @@ function registerIn(map, type, value) {
|
|
|
23
37
|
* Creates an empty {@link SelectionExtensionRegistry} with a tile size of 512 px, for testing a
|
|
24
38
|
* custom feature handler in isolation.
|
|
25
39
|
*
|
|
40
|
+
* @param defaultPointFrameExtent - The extent of the frame of a point whose type registers
|
|
41
|
+
* none, or whose provider gives none; without it (or when it returns null) the frame is the
|
|
42
|
+
* square of DEFAULT_POINT_FRAME_SIZE
|
|
26
43
|
* @returns A new registry with no registration
|
|
27
44
|
*/
|
|
28
|
-
export function createSelectionExtensionRegistry() {
|
|
45
|
+
export function createSelectionExtensionRegistry(defaultPointFrameExtent) {
|
|
29
46
|
const boundingBoxes = new Map();
|
|
30
47
|
const additionalHandles = new Map();
|
|
31
48
|
const customResizes = new Map();
|
|
32
49
|
const resizeStrategies = new Map();
|
|
33
50
|
const pointFrameExtents = new Map();
|
|
51
|
+
const pointFrameOutlines = new Map();
|
|
34
52
|
let tileSize = DEFAULT_REGISTRY_TILE_SIZE;
|
|
53
|
+
/** The extent provider of a type, falling back to the default extent of the registry */
|
|
54
|
+
const extentProviderOf = (type) => {
|
|
55
|
+
const own = pointFrameExtents.get(type);
|
|
56
|
+
if (!defaultPointFrameExtent)
|
|
57
|
+
return own;
|
|
58
|
+
if (!own)
|
|
59
|
+
return defaultPointFrameExtent;
|
|
60
|
+
return (feature) => validExtent(own(feature)) ?? defaultPointFrameExtent(feature);
|
|
61
|
+
};
|
|
35
62
|
return {
|
|
36
63
|
registerBoundingBox: (type, calculator) => registerIn(boundingBoxes, type, calculator),
|
|
37
64
|
getBoundingBoxCalculator: (type) => boundingBoxes.get(type),
|
|
@@ -44,7 +71,11 @@ export function createSelectionExtensionRegistry() {
|
|
|
44
71
|
registerPointFrameExtent: (type, provider) => registerIn(pointFrameExtents, type, provider),
|
|
45
72
|
getPointFrameExtentProvider: (type) => pointFrameExtents.get(type),
|
|
46
73
|
resolvePointFrameExtent(feature) {
|
|
47
|
-
return resolvePointFrameExtentWith(
|
|
74
|
+
return resolvePointFrameExtentWith(extentProviderOf(feature.type), feature);
|
|
75
|
+
},
|
|
76
|
+
registerPointFrameOutline: (type, provider) => registerIn(pointFrameOutlines, type, provider),
|
|
77
|
+
resolvePointFrameCorners(feature, center, margin) {
|
|
78
|
+
return resolvePointFrameCornersWith(extentProviderOf(feature.type), pointFrameOutlines.get(feature.type), feature, center, margin);
|
|
48
79
|
},
|
|
49
80
|
getTileSize: () => tileSize,
|
|
50
81
|
setTileSize(value) {
|
|
@@ -56,6 +87,7 @@ export function createSelectionExtensionRegistry() {
|
|
|
56
87
|
customResizes.clear();
|
|
57
88
|
resizeStrategies.clear();
|
|
58
89
|
pointFrameExtents.clear();
|
|
90
|
+
pointFrameOutlines.clear();
|
|
59
91
|
},
|
|
60
92
|
};
|
|
61
93
|
}
|
|
@@ -65,14 +97,45 @@ export function createSelectionExtensionRegistry() {
|
|
|
65
97
|
* Without a registry (callers outside a draw instance) the default square is returned.
|
|
66
98
|
*/
|
|
67
99
|
export function resolvePointFrameExtentWith(provider, feature) {
|
|
68
|
-
const extent = provider?.(feature);
|
|
100
|
+
const extent = validExtent(provider?.(feature));
|
|
101
|
+
if (!extent) {
|
|
102
|
+
const half = DEFAULT_POINT_FRAME_SIZE / 2;
|
|
103
|
+
return { halfWidth: half, halfHeight: half };
|
|
104
|
+
}
|
|
105
|
+
return extent;
|
|
106
|
+
}
|
|
107
|
+
/** The extent when it is one (finite and not negative), else null */
|
|
108
|
+
function validExtent(extent) {
|
|
69
109
|
if (!extent ||
|
|
70
110
|
!Number.isFinite(extent.halfWidth) ||
|
|
71
111
|
!Number.isFinite(extent.halfHeight) ||
|
|
72
112
|
extent.halfWidth < 0 ||
|
|
73
113
|
extent.halfHeight < 0) {
|
|
74
|
-
|
|
75
|
-
return { halfWidth: half, halfHeight: half };
|
|
114
|
+
return null;
|
|
76
115
|
}
|
|
77
116
|
return extent;
|
|
78
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* The four corners of the selection frame of a zero-area feature on the screen, expanded by
|
|
120
|
+
* the margin, with optional providers
|
|
121
|
+
*
|
|
122
|
+
* An outline of four finite corners has every edge moved outward by the margin; any other
|
|
123
|
+
* outline, or none, gives the rectangle of the extent around the center, widened the same way.
|
|
124
|
+
*/
|
|
125
|
+
export function resolvePointFrameCornersWith(extentProvider, outlineProvider, feature, center, margin) {
|
|
126
|
+
const outline = outlineProvider?.(feature);
|
|
127
|
+
if (outline &&
|
|
128
|
+
outline.length === 4 &&
|
|
129
|
+
outline.every((corner) => Number.isFinite(corner.x) && Number.isFinite(corner.y))) {
|
|
130
|
+
return expandQuad(outline, margin);
|
|
131
|
+
}
|
|
132
|
+
const extent = resolvePointFrameExtentWith(extentProvider, feature);
|
|
133
|
+
const halfWidth = extent.halfWidth + margin;
|
|
134
|
+
const halfHeight = extent.halfHeight + margin;
|
|
135
|
+
return [
|
|
136
|
+
{ x: center.x - halfWidth, y: center.y - halfHeight },
|
|
137
|
+
{ x: center.x + halfWidth, y: center.y - halfHeight },
|
|
138
|
+
{ x: center.x + halfWidth, y: center.y + halfHeight },
|
|
139
|
+
{ x: center.x - halfWidth, y: center.y + halfHeight },
|
|
140
|
+
];
|
|
141
|
+
}
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { computeBoundingBox, computeCombinedBoundingBox, hasZeroArea, rotateBoundingBox, } from './bounding-box.js';
|
|
9
9
|
export type { SelectionExtensionRegistry } from './extension-registry.js';
|
|
10
|
-
export { createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, resolvePointFrameExtentWith, } from './extension-registry.js';
|
|
10
|
+
export { createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, resolvePointFrameCornersWith, resolvePointFrameExtentWith, } from './extension-registry.js';
|
|
11
11
|
export { SelectionUIRenderer } from './renderer.js';
|
|
12
|
-
export type { AdditionalHandleInfo, AdditionalResizeHandlesCalculator, BoundingBoxCoords, CustomBoundingBoxCalculator,
|
|
12
|
+
export type { AdditionalHandleInfo, AdditionalResizeHandlesCalculator, BoundingBoxCoords, CustomBoundingBoxCalculator, FramePoint, PointFrameExtent, PointFrameExtentProvider, PointFrameOutlineProvider, ResizeStrategy, TypeResizeCalculator, } from './types.js';
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
* symbols.
|
|
9
9
|
*/
|
|
10
10
|
export { computeBoundingBox, computeCombinedBoundingBox, hasZeroArea, rotateBoundingBox, } from './bounding-box.js';
|
|
11
|
-
export { createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, resolvePointFrameExtentWith, } from './extension-registry.js';
|
|
11
|
+
export { createSelectionExtensionRegistry, DEFAULT_POINT_FRAME_SIZE, resolvePointFrameCornersWith, resolvePointFrameExtentWith, } from './extension-registry.js';
|
|
12
12
|
export { SelectionUIRenderer } from './renderer.js';
|
|
@@ -129,18 +129,13 @@ _SelectionUIRenderer_strokeRenderer = new WeakMap(), _SelectionUIRenderer_extens
|
|
|
129
129
|
// coordinates must not be treated as a Coordinate)
|
|
130
130
|
if (hasZeroArea(bbox)) {
|
|
131
131
|
const center = transform.project(bbox.center);
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
});
|
|
140
|
-
minLng = Math.min(minLng, topLeft.lng, bottomRight.lng);
|
|
141
|
-
maxLng = Math.max(maxLng, topLeft.lng, bottomRight.lng);
|
|
142
|
-
minLat = Math.min(minLat, topLeft.lat, bottomRight.lat);
|
|
143
|
-
maxLat = Math.max(maxLat, topLeft.lat, bottomRight.lat);
|
|
132
|
+
for (const corner of __classPrivateFieldGet(this, _SelectionUIRenderer_extensions, "f").resolvePointFrameCorners(feature, center, margin)) {
|
|
133
|
+
const at = transform.unproject(corner);
|
|
134
|
+
minLng = Math.min(minLng, at.lng);
|
|
135
|
+
maxLng = Math.max(maxLng, at.lng);
|
|
136
|
+
minLat = Math.min(minLat, at.lat);
|
|
137
|
+
maxLat = Math.max(maxLat, at.lat);
|
|
138
|
+
}
|
|
144
139
|
continue;
|
|
145
140
|
}
|
|
146
141
|
const marginedBbox = applyMarginToBoundingBox(bbox, margin, transform, zoom);
|
|
@@ -175,34 +170,16 @@ _SelectionUIRenderer_strokeRenderer = new WeakMap(), _SelectionUIRenderer_extens
|
|
|
175
170
|
}, _SelectionUIRenderer_drawPointBoundingBox = function _SelectionUIRenderer_drawPointBoundingBox(feature, coord, zoom) {
|
|
176
171
|
if (!__classPrivateFieldGet(this, _SelectionUIRenderer_transform, "f"))
|
|
177
172
|
return;
|
|
178
|
-
const
|
|
173
|
+
const transform = __classPrivateFieldGet(this, _SelectionUIRenderer_transform, "f");
|
|
174
|
+
const center = transform.project(coord);
|
|
179
175
|
const margin = __classPrivateFieldGet(this, _SelectionUIRenderer_config, "f").boundingBox.margin;
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
y: center.y - halfHeight,
|
|
186
|
-
});
|
|
187
|
-
const topRight = __classPrivateFieldGet(this, _SelectionUIRenderer_transform, "f").unproject({
|
|
188
|
-
x: center.x + halfWidth,
|
|
189
|
-
y: center.y - halfHeight,
|
|
190
|
-
});
|
|
191
|
-
const bottomRight = __classPrivateFieldGet(this, _SelectionUIRenderer_transform, "f").unproject({
|
|
192
|
-
x: center.x + halfWidth,
|
|
193
|
-
y: center.y + halfHeight,
|
|
176
|
+
const coords = __classPrivateFieldGet(this, _SelectionUIRenderer_extensions, "f")
|
|
177
|
+
.resolvePointFrameCorners(feature, center, margin)
|
|
178
|
+
.map((corner) => {
|
|
179
|
+
const at = transform.unproject(corner);
|
|
180
|
+
return [at.lng, at.lat];
|
|
194
181
|
});
|
|
195
|
-
|
|
196
|
-
x: center.x - halfWidth,
|
|
197
|
-
y: center.y + halfHeight,
|
|
198
|
-
});
|
|
199
|
-
const coords = [
|
|
200
|
-
[topLeft.lng, topLeft.lat],
|
|
201
|
-
[topRight.lng, topRight.lat],
|
|
202
|
-
[bottomRight.lng, bottomRight.lat],
|
|
203
|
-
[bottomLeft.lng, bottomLeft.lat],
|
|
204
|
-
[topLeft.lng, topLeft.lat],
|
|
205
|
-
];
|
|
182
|
+
coords.push(coords[0]);
|
|
206
183
|
__classPrivateFieldGet(this, _SelectionUIRenderer_instances, "m", _SelectionUIRenderer_strokePath).call(this, coords, zoom);
|
|
207
184
|
}, _SelectionUIRenderer_applyMargin = function _SelectionUIRenderer_applyMargin(bbox, zoom) {
|
|
208
185
|
if (!__classPrivateFieldGet(this, _SelectionUIRenderer_transform, "f"))
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { BoundingBoxCoords } from '../../../shared/types/selection-box.js';
|
|
7
7
|
import type { Coordinate, Feature } from '../../../store/types.js';
|
|
8
|
-
export type {
|
|
8
|
+
export type { TypeResizeCalculator } from '../../../extension/index.js';
|
|
9
9
|
export type { BoundingBoxCoords } from '../../../shared/types/selection-box.js';
|
|
10
10
|
/**
|
|
11
11
|
* Computes the selection box of a feature of a custom type.
|
|
@@ -29,9 +29,24 @@ export interface PointFrameExtent {
|
|
|
29
29
|
/**
|
|
30
30
|
* Returns the size of the selection frame of a point-like feature.
|
|
31
31
|
*
|
|
32
|
-
* Returning null gives the default dimensions
|
|
32
|
+
* Returning null gives the default dimensions: the extent of the marker for a point the
|
|
33
|
+
* built-in type draws, else the square of DEFAULT_POINT_FRAME_SIZE.
|
|
33
34
|
*/
|
|
34
35
|
export type PointFrameExtentProvider = (feature: Feature) => PointFrameExtent | null;
|
|
36
|
+
/** A point on the screen in CSS px, from the top left of the map */
|
|
37
|
+
export interface FramePoint {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns the outline of the selection frame of a point-like feature: its four corners on the
|
|
43
|
+
* screen in CSS px, in the order top left, top right, bottom right, bottom left of the shape.
|
|
44
|
+
*
|
|
45
|
+
* The frame of a rotated shape is drawn along it. The point stays zero-area: no resize or
|
|
46
|
+
* rotate handle appears. Returning null (or anything but four finite corners) gives the frame
|
|
47
|
+
* of {@link PointFrameExtentProvider}.
|
|
48
|
+
*/
|
|
49
|
+
export type PointFrameOutlineProvider = (feature: Feature) => readonly FramePoint[] | null;
|
|
35
50
|
/**
|
|
36
51
|
* A resize handle a custom feature type adds to the built-in ones (the same shape as
|
|
37
52
|
* {@link HandleInfo}).
|
|
@@ -32,6 +32,14 @@ export declare function renderSelectionUI(selectedFeatures: Feature[], zoom: num
|
|
|
32
32
|
* not suggest editing).
|
|
33
33
|
*/
|
|
34
34
|
isLocked?: boolean): void;
|
|
35
|
+
/**
|
|
36
|
+
* Draw the auxiliary handles that belong to no feature (`getGlobalHandles`), whatever is
|
|
37
|
+
* selected
|
|
38
|
+
*
|
|
39
|
+
* The caller draws them only while they can be grabbed (the select mode, and the document
|
|
40
|
+
* neither read-only nor under the interaction lock).
|
|
41
|
+
*/
|
|
42
|
+
export declare function renderGlobalAuxiliaryHandles(zoom: number, projectionData: CustomRenderMethodInput['defaultProjectionData'], deps: SelectionUIDrawerDeps, dragState: DragState | null): void;
|
|
35
43
|
/**
|
|
36
44
|
* The minimal interface of the Store that drawing the following vertices needs
|
|
37
45
|
*
|
|
@@ -57,14 +57,75 @@ isLocked = false) {
|
|
|
57
57
|
if (selectedFeatures.length === 1) {
|
|
58
58
|
// Get the selected vertex reference (only for the target feature)
|
|
59
59
|
const selectedVertexRefs = selectedVertices?.featureId === selectedFeatures[0].id
|
|
60
|
-
? selectedVertices.
|
|
60
|
+
? selectedVertices.vertices
|
|
61
61
|
: undefined;
|
|
62
62
|
renderSingleSelectionHandles(selectedFeatures[0], zoom, selectionUIRenderer, selectionHandlesRenderer, operation, dragState, selectedVertexRefs, prepareVisibleHandleSet(selectedFeatures[0], map, scope), scope);
|
|
63
|
+
// The handles of the extensions, shown as the other handles are (hidden while another
|
|
64
|
+
// operation runs)
|
|
65
|
+
if (operation === null || operation === 'auxiliary') {
|
|
66
|
+
const context = auxiliaryHandleContext(map, zoom);
|
|
67
|
+
const positions = scope.auxiliaryHandles
|
|
68
|
+
.list()
|
|
69
|
+
.flatMap((provider) => provider.getHandles(selectedFeatures[0], context).map((handle) => handle.position));
|
|
70
|
+
if (positions.length > 0)
|
|
71
|
+
selectionHandlesRenderer.drawAuxiliaryHandles(positions, zoom);
|
|
72
|
+
}
|
|
63
73
|
}
|
|
64
74
|
else {
|
|
65
75
|
renderMultiSelectionHandles(selectedFeatures, bbox, zoom, selectionHandlesRenderer, operation, scope);
|
|
66
76
|
}
|
|
67
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Draw the auxiliary handles that belong to no feature (`getGlobalHandles`), whatever is
|
|
80
|
+
* selected
|
|
81
|
+
*
|
|
82
|
+
* The caller draws them only while they can be grabbed (the select mode, and the document
|
|
83
|
+
* neither read-only nor under the interaction lock).
|
|
84
|
+
*/
|
|
85
|
+
export function renderGlobalAuxiliaryHandles(zoom, projectionData, deps, dragState) {
|
|
86
|
+
const { selectionHandlesRenderer, pointInstanceRenderer, map, scope } = deps;
|
|
87
|
+
if (!selectionHandlesRenderer)
|
|
88
|
+
return;
|
|
89
|
+
const operation = dragState?.operation ?? null;
|
|
90
|
+
if (operation !== null && operation !== 'auxiliary')
|
|
91
|
+
return;
|
|
92
|
+
const providers = scope.auxiliaryHandles.list();
|
|
93
|
+
if (!providers.some((provider) => provider.getGlobalHandles !== undefined))
|
|
94
|
+
return;
|
|
95
|
+
const context = auxiliaryHandleContext(map, zoom);
|
|
96
|
+
const positions = providers.flatMap((provider) => provider.getGlobalHandles?.(context).map((handle) => handle.position) ?? []);
|
|
97
|
+
if (positions.length === 0)
|
|
98
|
+
return;
|
|
99
|
+
if (pointInstanceRenderer)
|
|
100
|
+
pointInstanceRenderer.setProjectionData(projectionData);
|
|
101
|
+
selectionHandlesRenderer.setTransform(coordinateTransformOf(map));
|
|
102
|
+
selectionHandlesRenderer.setProjectionData(projectionData);
|
|
103
|
+
selectionHandlesRenderer.drawAuxiliaryHandles(positions, zoom);
|
|
104
|
+
}
|
|
105
|
+
/** The coordinate transform of the map */
|
|
106
|
+
function coordinateTransformOf(map) {
|
|
107
|
+
return {
|
|
108
|
+
project: (lngLat) => map.project([lngLat[0], lngLat[1]]),
|
|
109
|
+
unproject: (point) => {
|
|
110
|
+
const ll = map.unproject([point.x, point.y]);
|
|
111
|
+
return { lng: ll.lng, lat: ll.lat };
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The context the providers of auxiliary handles get when their handles are drawn: the
|
|
117
|
+
* point is the center of the canvas, as there is no pointer to test
|
|
118
|
+
*/
|
|
119
|
+
function auxiliaryHandleContext(map, zoom) {
|
|
120
|
+
const transform = coordinateTransformOf(map);
|
|
121
|
+
const canvas = map.getCanvas();
|
|
122
|
+
return {
|
|
123
|
+
point: { x: canvas.clientWidth / 2, y: canvas.clientHeight / 2 },
|
|
124
|
+
project: (lngLat) => transform.project(lngLat),
|
|
125
|
+
unproject: (point) => transform.unproject(point),
|
|
126
|
+
zoom,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
68
129
|
/**
|
|
69
130
|
* Prepare the thinning set
|
|
70
131
|
*
|
|
@@ -153,7 +214,7 @@ export function renderFollowedVertices(followedVertices, store, zoom, projection
|
|
|
153
214
|
// The handles of features that disappeared or were hidden during the drag are not drawn
|
|
154
215
|
if (!feature?.visible || isLocallyHidden(feature, store))
|
|
155
216
|
continue;
|
|
156
|
-
selectionHandlesRenderer.drawFollowedVertexHandles(feature, followed.
|
|
217
|
+
selectionHandlesRenderer.drawFollowedVertexHandles(feature, followed.vertices, zoom);
|
|
157
218
|
}
|
|
158
219
|
}
|
|
159
220
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
import { destinationPoint } from '../../geometry/
|
|
3
|
+
import { destinationPoint } from '../../geometry/distance.js';
|
|
4
4
|
import { generateCirclePolygon } from '../../shared/math/index.js';
|
|
5
5
|
import { FillShaderManager } from '../renderers/polygon/fill.js';
|
|
6
6
|
/**
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write your own shaders that draw the way the library does.
|
|
3
|
+
*
|
|
4
|
+
* Use it only when a custom feature type or an overlay needs a shader of its own. The
|
|
5
|
+
* {@link maplibre-gl-draw!RenderContext | RenderContext} a renderer receives already carries
|
|
6
|
+
* the shared renderers of lines, areas and point markers, and most renderers need nothing
|
|
7
|
+
* more. This entry holds the GLSL of the projection, the uniforms that go with it, the quad
|
|
8
|
+
* shader, and the rules the shared renderers follow for dashes and terrain. The parts that draw
|
|
9
|
+
* on the terrain take the render context of the draw call (or its `terrain`). Unlike the main
|
|
10
|
+
* entry, it may change in a minor release.
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* import {
|
|
14
|
+
* createProgram, OFFSET_MODE_GLSL, ProjectionUniformManager,
|
|
15
|
+
* } from '@sakuzu/maplibre-gl-draw/webgl';
|
|
16
|
+
*
|
|
17
|
+
* let program: WebGLProgram | null = null;
|
|
18
|
+
* let uniforms: ProjectionUniformManager | null = null;
|
|
19
|
+
* draw.extensions.overlays.add({
|
|
20
|
+
* name: 'my-shader',
|
|
21
|
+
* onAdd: () => {},
|
|
22
|
+
* draw(ctx) {
|
|
23
|
+
* if (!program) {
|
|
24
|
+
* const vertex = vertexSource(ctx.shader.vertexShaderPrelude, OFFSET_MODE_GLSL);
|
|
25
|
+
* program = createProgram(ctx.gl, vertex, fragmentSource);
|
|
26
|
+
* uniforms = new ProjectionUniformManager(ctx.gl);
|
|
27
|
+
* uniforms.getLocations(program);
|
|
28
|
+
* }
|
|
29
|
+
* ctx.gl.useProgram(program);
|
|
30
|
+
* uniforms?.setTerrain(ctx);
|
|
31
|
+
* uniforms?.setUniforms(ctx.projection, ctx.zoom, ctx.offset);
|
|
32
|
+
* // bind the buffers of your shape and draw it
|
|
33
|
+
* },
|
|
34
|
+
* onRemove: (_map, gl) => gl.deleteProgram(program),
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Read next: the guide
|
|
39
|
+
* [custom feature types](https://sakuzu.github.io/maplibre-gl-draw/guides/custom-types). The
|
|
40
|
+
* parts used most are {@link createProgram}, {@link OFFSET_MODE_GLSL} and
|
|
41
|
+
* {@link ProjectionUniformManager}.
|
|
42
|
+
*
|
|
43
|
+
* @module webgl
|
|
44
|
+
*/
|
|
45
|
+
export { DEFAULT_TILE_SIZE } from '../shared/math/constants.js';
|
|
46
|
+
export { calculateLngLatOffset, createProgram, OFFSET_MODE_GLSL, } from '../view/shaders/helpers.js';
|
|
47
|
+
export { ProjectionUniformManager } from '../view/shaders/projection.js';
|
|
48
|
+
export { applyDrawBlendState } from '../view/layer/blend.js';
|
|
49
|
+
export { drawBillboardsWithoutDepth } from '../view/renderers/point/billboard-depth.js';
|
|
50
|
+
export type { QuadDrapeGlyphs } from '../view/terrain/drape/quad.js';
|
|
51
|
+
export type { QuadVertices } from '../view/shaders/quad.js';
|
|
52
|
+
export { computeQuadVertices, drawQuadSurfaceOnTerrain, QuadShader } from '../view/shaders/quad.js';
|
|
53
|
+
export { QUAD_GLYPH_STRIDE } from '../view/terrain/drape/quad-glyphs.js';
|
|
54
|
+
export type { SDFStrokeOptions, SDFStrokeStyle } from '../view/renderers/line/sdf-line.js';
|
|
55
|
+
export type { WidthUnit } from '../view/renderers/stroke.js';
|
|
56
|
+
export { getStrokeDashPattern as dashPattern, splitIntoDashes, } from '../view/renderers/line/dash.js';
|
|
57
|
+
export { terrainTessellationStep } from '../view/terrain/polygon.js';
|
|
58
|
+
export { densifyPath } from '../view/terrain/tessellation.js';
|
|
59
|
+
export { PointHitTestStrategy } from '../dispatcher/hit-test/strategies/point.js';
|
|
60
|
+
export type { Coordinate } from '../shared/types/model.js';
|
|
61
|
+
export type { BlendCapableGL } from '../view/layer/blend.js';
|
|
62
|
+
export type { DashSegment } from '../view/renderers/line/dash.js';
|
|
63
|
+
export type { ProjectionUniformLocations } from '../view/shaders/projection.js';
|
|
64
|
+
export type { DrapeQuadCorners, QuadDrapeColor, QuadDrapeFill, QuadDrapeSurface, } from '../view/terrain/drape/quad.js';
|
|
65
|
+
export type { MercatorRect, TessellationStep, TessellationTiling, } from '../view/terrain/tessellation.js';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Write your own shaders that draw the way the library does.
|
|
5
|
+
*
|
|
6
|
+
* Use it only when a custom feature type or an overlay needs a shader of its own. The
|
|
7
|
+
* {@link maplibre-gl-draw!RenderContext | RenderContext} a renderer receives already carries
|
|
8
|
+
* the shared renderers of lines, areas and point markers, and most renderers need nothing
|
|
9
|
+
* more. This entry holds the GLSL of the projection, the uniforms that go with it, the quad
|
|
10
|
+
* shader, and the rules the shared renderers follow for dashes and terrain. The parts that draw
|
|
11
|
+
* on the terrain take the render context of the draw call (or its `terrain`). Unlike the main
|
|
12
|
+
* entry, it may change in a minor release.
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import {
|
|
16
|
+
* createProgram, OFFSET_MODE_GLSL, ProjectionUniformManager,
|
|
17
|
+
* } from '@sakuzu/maplibre-gl-draw/webgl';
|
|
18
|
+
*
|
|
19
|
+
* let program: WebGLProgram | null = null;
|
|
20
|
+
* let uniforms: ProjectionUniformManager | null = null;
|
|
21
|
+
* draw.extensions.overlays.add({
|
|
22
|
+
* name: 'my-shader',
|
|
23
|
+
* onAdd: () => {},
|
|
24
|
+
* draw(ctx) {
|
|
25
|
+
* if (!program) {
|
|
26
|
+
* const vertex = vertexSource(ctx.shader.vertexShaderPrelude, OFFSET_MODE_GLSL);
|
|
27
|
+
* program = createProgram(ctx.gl, vertex, fragmentSource);
|
|
28
|
+
* uniforms = new ProjectionUniformManager(ctx.gl);
|
|
29
|
+
* uniforms.getLocations(program);
|
|
30
|
+
* }
|
|
31
|
+
* ctx.gl.useProgram(program);
|
|
32
|
+
* uniforms?.setTerrain(ctx);
|
|
33
|
+
* uniforms?.setUniforms(ctx.projection, ctx.zoom, ctx.offset);
|
|
34
|
+
* // bind the buffers of your shape and draw it
|
|
35
|
+
* },
|
|
36
|
+
* onRemove: (_map, gl) => gl.deleteProgram(program),
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* Read next: the guide
|
|
41
|
+
* [custom feature types](https://sakuzu.github.io/maplibre-gl-draw/guides/custom-types). The
|
|
42
|
+
* parts used most are {@link createProgram}, {@link OFFSET_MODE_GLSL} and
|
|
43
|
+
* {@link ProjectionUniformManager}.
|
|
44
|
+
*
|
|
45
|
+
* @module webgl
|
|
46
|
+
*/
|
|
47
|
+
// biome-ignore-all assist/source/organizeImports: the exports are grouped by section
|
|
48
|
+
// Shaders and projection
|
|
49
|
+
export { DEFAULT_TILE_SIZE } from '../shared/math/constants.js';
|
|
50
|
+
export { calculateLngLatOffset, createProgram, OFFSET_MODE_GLSL, } from '../view/shaders/helpers.js';
|
|
51
|
+
export { ProjectionUniformManager } from '../view/shaders/projection.js';
|
|
52
|
+
// Blending and billboards
|
|
53
|
+
export { applyDrawBlendState } from '../view/layer/blend.js';
|
|
54
|
+
export { drawBillboardsWithoutDepth } from '../view/renderers/point/billboard-depth.js';
|
|
55
|
+
export { computeQuadVertices, drawQuadSurfaceOnTerrain, QuadShader } from '../view/shaders/quad.js';
|
|
56
|
+
export { QUAD_GLYPH_STRIDE } from '../view/terrain/drape/quad-glyphs.js';
|
|
57
|
+
export { getStrokeDashPattern as dashPattern, splitIntoDashes, } from '../view/renderers/line/dash.js';
|
|
58
|
+
// Terrain
|
|
59
|
+
export { terrainTessellationStep } from '../view/terrain/polygon.js';
|
|
60
|
+
export { densifyPath } from '../view/terrain/tessellation.js';
|
|
61
|
+
// Hit testing
|
|
62
|
+
export { PointHitTestStrategy } from '../dispatcher/hit-test/strategies/point.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sakuzu/maplibre-gl-draw",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "WebGL2 drawing and editing engine for MapLibre GL JS: points, lines, and polygons rendered in a custom layer, with selection, hit testing, and geometry utilities.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"maplibre",
|
|
@@ -38,10 +38,15 @@
|
|
|
38
38
|
"import": "./dist/geometry/index.js",
|
|
39
39
|
"default": "./dist/geometry/index.js"
|
|
40
40
|
},
|
|
41
|
-
"./
|
|
42
|
-
"types": "./dist/
|
|
43
|
-
"import": "./dist/
|
|
44
|
-
"default": "./dist/
|
|
41
|
+
"./table": {
|
|
42
|
+
"types": "./dist/table/index.d.ts",
|
|
43
|
+
"import": "./dist/table/index.js",
|
|
44
|
+
"default": "./dist/table/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./webgl": {
|
|
47
|
+
"types": "./dist/webgl/index.d.ts",
|
|
48
|
+
"import": "./dist/webgl/index.js",
|
|
49
|
+
"default": "./dist/webgl/index.js"
|
|
45
50
|
},
|
|
46
51
|
"./package.json": "./package.json"
|
|
47
52
|
},
|
|
@@ -67,10 +72,10 @@
|
|
|
67
72
|
"build": "rm -rf dist tsconfig.build.tsbuildinfo && tsc -p tsconfig.build.json",
|
|
68
73
|
"typecheck": "tsc --noEmit",
|
|
69
74
|
"check:spdx": "node scripts/spdx.mjs",
|
|
70
|
-
"lint": "biome check src examples playground bench scripts && npm run check:layers && npm run check:terms && npm run check:spdx",
|
|
75
|
+
"lint": "biome check src examples playground bench scripts docs/.vitepress/config.mts && npm run check:layers && npm run check:terms && npm run check:spdx",
|
|
71
76
|
"check:layers": "node scripts/check-layers.mjs",
|
|
72
77
|
"check:terms": "node scripts/check-terms.mjs",
|
|
73
|
-
"docs:api": "typedoc",
|
|
78
|
+
"docs:api": "typedoc --options typedoc.site.json",
|
|
74
79
|
"docs:check": "node scripts/docs-check.mjs",
|
|
75
80
|
"docs:image": "node scripts/capture-readme-image.mjs",
|
|
76
81
|
"build:site": "node scripts/build-site.mjs",
|
|
@@ -83,8 +88,11 @@
|
|
|
83
88
|
"dev": "npm run dev -w examples",
|
|
84
89
|
"dev:playground": "npm run dev -w playground",
|
|
85
90
|
"dev:bench": "npm run dev -w bench",
|
|
86
|
-
"check:package": "publint && rm -rf .pack && mkdir -p .pack && npm pack --ignore-scripts --pack-destination .pack >/dev/null && attw .pack/*.tgz --profile esm-only && node --input-type=module -e \"await import('./dist/index.js'); await import('./dist/geometry/index.js'); await import('./dist/
|
|
87
|
-
"prepack": "npm run build"
|
|
91
|
+
"check:package": "publint && rm -rf .pack && mkdir -p .pack && npm pack --ignore-scripts --pack-destination .pack >/dev/null && attw .pack/*.tgz --profile esm-only && node --input-type=module -e \"await import('./dist/index.js'); await import('./dist/geometry/index.js'); await import('./dist/table/index.js'); await import('./dist/webgl/index.js'); console.log('dist imports ok')\" && rm -rf .pack",
|
|
92
|
+
"prepack": "npm run build",
|
|
93
|
+
"site:dev": "npm run docs:api && vitepress dev docs",
|
|
94
|
+
"site:build": "npm run docs:api && vitepress build docs",
|
|
95
|
+
"site:preview": "vitepress preview docs"
|
|
88
96
|
},
|
|
89
97
|
"dependencies": {
|
|
90
98
|
"@types/geojson": "^7946.0.16",
|
|
@@ -107,7 +115,10 @@
|
|
|
107
115
|
"playwright-core": "1.62.1",
|
|
108
116
|
"publint": "^0.3.24",
|
|
109
117
|
"typedoc": "0.28.20",
|
|
118
|
+
"typedoc-plugin-markdown": "^4.13.1",
|
|
119
|
+
"typedoc-vitepress-theme": "^1.1.4",
|
|
110
120
|
"typescript": "^6.0.3",
|
|
121
|
+
"vitepress": "^1.6.4",
|
|
111
122
|
"vitest": "^4.1.11"
|
|
112
123
|
}
|
|
113
124
|
}
|