@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,42 +0,0 @@
|
|
|
1
|
-
import type { DatasetColumnarInput, DatasetColumnarPrepared } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Computes the bboxes, the spatial chunks and the spatial index of a columnar table.
|
|
4
|
-
*
|
|
5
|
-
* It is the work that `Dataset.setColumnar` would otherwise do on the main thread. Call it where the table is read (in a Worker), send the result along with the table,
|
|
6
|
-
* and pass both to `setColumnar` (or to `addDataset` as `columnar` and `prepared`). It
|
|
7
|
-
* uses neither maplibre nor WebGL, so it runs in any Worker.
|
|
8
|
-
*
|
|
9
|
-
* @param input The table
|
|
10
|
-
* @returns The prepared arrays, which belong to this table only
|
|
11
|
-
* @throws when the shape of the table does not add up (the same checks as `setColumnar`)
|
|
12
|
-
*
|
|
13
|
-
* @example In a Worker
|
|
14
|
-
* ```ts
|
|
15
|
-
* import { columnarTransferables, prepareDatasetColumnar } from '@sakuzu/maplibre-gl-draw/columnar';
|
|
16
|
-
*
|
|
17
|
-
* self.onmessage = async (event) => {
|
|
18
|
-
* const input = await readTable(event.data); // your reader: a DatasetColumnarInput
|
|
19
|
-
* const prepared = prepareDatasetColumnar(input);
|
|
20
|
-
* self.postMessage({ input, prepared }, columnarTransferables(input, prepared));
|
|
21
|
-
* };
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare function prepareDatasetColumnar(input: DatasetColumnarInput): DatasetColumnarPrepared;
|
|
25
|
-
/**
|
|
26
|
-
* Lists the buffers of a columnar table (and of its prepared arrays) for the transfer list of
|
|
27
|
-
* `postMessage`, so that they move to the other thread without a copy.
|
|
28
|
-
*
|
|
29
|
-
* The geometry arrays of every child of a mixed geometry column are listed too. Each buffer
|
|
30
|
-
* appears once, even when several arrays share it. A `SharedArrayBuffer` is left out
|
|
31
|
-
* (it is shared, not moved). After the transfer the arrays are empty on the sending side.
|
|
32
|
-
*
|
|
33
|
-
* @param input The table
|
|
34
|
-
* @param prepared The result of {@link prepareDatasetColumnar} for the table (optional)
|
|
35
|
-
* @returns The buffers to pass as the transfer list
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* worker.postMessage({ input, prepared }, columnarTransferables(input, prepared));
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export declare function columnarTransferables(input: DatasetColumnarInput, prepared?: DatasetColumnarPrepared): ArrayBuffer[];
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* The preparation of a columnar table, callable in a Worker
|
|
5
|
-
*
|
|
6
|
-
* It computes what a dataset needs before it can draw and hit test a table: the
|
|
7
|
-
* bbox of every row, the spatial chunks and the spatial index. Done in a Worker together with the
|
|
8
|
-
* reading of a file, the main thread receives the table and this result without a copy and
|
|
9
|
-
* computes none of it again.
|
|
10
|
-
*
|
|
11
|
-
* A pure module: it depends on neither maplibre nor WebGL nor the DOM.
|
|
12
|
-
*/
|
|
13
|
-
import { buildPackedRTree } from '../packed-rtree.js';
|
|
14
|
-
import { partitionRows } from '../partition.js';
|
|
15
|
-
import { ColumnarTable, isDictionaryColumn } from './table.js';
|
|
16
|
-
/**
|
|
17
|
-
* Computes the bboxes, the spatial chunks and the spatial index of a columnar table.
|
|
18
|
-
*
|
|
19
|
-
* It is the work that `Dataset.setColumnar` would otherwise do on the main thread. Call it where the table is read (in a Worker), send the result along with the table,
|
|
20
|
-
* and pass both to `setColumnar` (or to `addDataset` as `columnar` and `prepared`). It
|
|
21
|
-
* uses neither maplibre nor WebGL, so it runs in any Worker.
|
|
22
|
-
*
|
|
23
|
-
* @param input The table
|
|
24
|
-
* @returns The prepared arrays, which belong to this table only
|
|
25
|
-
* @throws when the shape of the table does not add up (the same checks as `setColumnar`)
|
|
26
|
-
*
|
|
27
|
-
* @example In a Worker
|
|
28
|
-
* ```ts
|
|
29
|
-
* import { columnarTransferables, prepareDatasetColumnar } from '@sakuzu/maplibre-gl-draw/columnar';
|
|
30
|
-
*
|
|
31
|
-
* self.onmessage = async (event) => {
|
|
32
|
-
* const input = await readTable(event.data); // your reader: a DatasetColumnarInput
|
|
33
|
-
* const prepared = prepareDatasetColumnar(input);
|
|
34
|
-
* self.postMessage({ input, prepared }, columnarTransferables(input, prepared));
|
|
35
|
-
* };
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export function prepareDatasetColumnar(input) {
|
|
39
|
-
const table = new ColumnarTable(input);
|
|
40
|
-
const bounds = table.computeBounds();
|
|
41
|
-
const chunks = partitionRows(bounds, table.computeVertexCounts());
|
|
42
|
-
const index = buildPackedRTree(bounds);
|
|
43
|
-
return {
|
|
44
|
-
length: table.length,
|
|
45
|
-
bounds,
|
|
46
|
-
chunkRows: chunks.rows,
|
|
47
|
-
chunkOffsets: chunks.offsets,
|
|
48
|
-
chunkBounds: chunks.bounds,
|
|
49
|
-
indexNodeSize: index.nodeSize,
|
|
50
|
-
indexItemCount: index.numItems,
|
|
51
|
-
indexBoxes: index.boxes,
|
|
52
|
-
indexEntries: index.indices,
|
|
53
|
-
indexLevels: index.levelBounds,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Lists the buffers of a columnar table (and of its prepared arrays) for the transfer list of
|
|
58
|
-
* `postMessage`, so that they move to the other thread without a copy.
|
|
59
|
-
*
|
|
60
|
-
* The geometry arrays of every child of a mixed geometry column are listed too. Each buffer
|
|
61
|
-
* appears once, even when several arrays share it. A `SharedArrayBuffer` is left out
|
|
62
|
-
* (it is shared, not moved). After the transfer the arrays are empty on the sending side.
|
|
63
|
-
*
|
|
64
|
-
* @param input The table
|
|
65
|
-
* @param prepared The result of {@link prepareDatasetColumnar} for the table (optional)
|
|
66
|
-
* @returns The buffers to pass as the transfer list
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```ts
|
|
70
|
-
* worker.postMessage({ input, prepared }, columnarTransferables(input, prepared));
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
export function columnarTransferables(input, prepared) {
|
|
74
|
-
const buffers = new Set();
|
|
75
|
-
const add = (view) => {
|
|
76
|
-
if (view && view.buffer instanceof ArrayBuffer)
|
|
77
|
-
buffers.add(view.buffer);
|
|
78
|
-
};
|
|
79
|
-
const addColumn = (column) => {
|
|
80
|
-
if (!column)
|
|
81
|
-
return;
|
|
82
|
-
if (isDictionaryColumn(column))
|
|
83
|
-
add(column.codes);
|
|
84
|
-
else if (ArrayBuffer.isView(column))
|
|
85
|
-
add(column);
|
|
86
|
-
};
|
|
87
|
-
const addGeometry = (geometry) => {
|
|
88
|
-
add(geometry.coords);
|
|
89
|
-
for (const offsets of geometry.offsets ?? [])
|
|
90
|
-
add(offsets);
|
|
91
|
-
};
|
|
92
|
-
const geometry = input.geometry;
|
|
93
|
-
if (geometry.type === 'Mixed') {
|
|
94
|
-
add(geometry.types);
|
|
95
|
-
add(geometry.offsets);
|
|
96
|
-
for (const child of geometry.children)
|
|
97
|
-
addGeometry(child);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
addGeometry(geometry);
|
|
101
|
-
}
|
|
102
|
-
add(input.validity);
|
|
103
|
-
addColumn(input.ids);
|
|
104
|
-
for (const column of Object.values(input.columns ?? {}))
|
|
105
|
-
addColumn(column);
|
|
106
|
-
if (prepared) {
|
|
107
|
-
add(prepared.bounds);
|
|
108
|
-
add(prepared.chunkRows);
|
|
109
|
-
add(prepared.chunkOffsets);
|
|
110
|
-
add(prepared.chunkBounds);
|
|
111
|
-
add(prepared.indexBoxes);
|
|
112
|
-
add(prepared.indexEntries);
|
|
113
|
-
add(prepared.indexLevels);
|
|
114
|
-
}
|
|
115
|
-
return [...buffers];
|
|
116
|
-
}
|
package/dist/display/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Display module
|
|
3
|
-
*
|
|
4
|
-
* Read-only layers that show large amounts of data (datasets). They are a
|
|
5
|
-
* path independent of the Store and do not go through the mechanisms of editing,
|
|
6
|
-
* undo or events.
|
|
7
|
-
*
|
|
8
|
-
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
9
|
-
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
10
|
-
*/
|
|
11
|
-
export type { DatasetColumn, DatasetColumnarGeometry, DatasetColumnarGeometryType, DatasetColumnarInput, DatasetColumnarMixedGeometry, DatasetColumnarPrepared, DatasetDictionaryCodes, DatasetDictionaryColumn, } from './columnar/types.js';
|
|
12
|
-
export type { DatasetCollisionThinning, DatasetThinningStats, ResolvedCollisionThinning, } from './thinning.js';
|
|
13
|
-
export type { Dataset, DatasetBaseStyle, DatasetChangePayload, DatasetClickEventPayload, DatasetClickPayload, DatasetEventMap, DatasetFeatureInput, DatasetFeatureProvider, DatasetHoverPayload, DatasetOptions, DatasetOrder, DatasetPlacement, DatasetZoomScale, } from './types.js';
|
package/dist/display/types.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/** Recursively checks whether it contains a position with 3 or more elements */
|
|
4
|
-
function hasExtraPositionElements(value) {
|
|
5
|
-
if (typeof value[0] === 'number') {
|
|
6
|
-
return value.length !== 2;
|
|
7
|
-
}
|
|
8
|
-
return value.some(hasExtraPositionElements);
|
|
9
|
-
}
|
|
10
|
-
/** Returns a copy with every position truncated to the 2 elements [longitude, latitude] */
|
|
11
|
-
function truncatePositions(value) {
|
|
12
|
-
if (typeof value[0] === 'number') {
|
|
13
|
-
return [value[0], value[1]];
|
|
14
|
-
}
|
|
15
|
-
return value.map(truncatePositions);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Normalizes the input into a feature of the same shape as in the Store
|
|
19
|
-
*
|
|
20
|
-
* It fills in the optional fields and, since it is not put into the Store, layerId defaults to an
|
|
21
|
-
* empty string. The coordinates may contain 3-element positions coming from GeoJSON (with an
|
|
22
|
-
* elevation), so a copy truncated to 2 elements is made only when they do (ordinary input with
|
|
23
|
-
* only 2 elements is not copied).
|
|
24
|
-
*
|
|
25
|
-
* @internal
|
|
26
|
-
*/
|
|
27
|
-
export function normalizeDisplayFeature(input) {
|
|
28
|
-
const coords = input.coordinates;
|
|
29
|
-
const coordinates = hasExtraPositionElements(coords)
|
|
30
|
-
? truncatePositions(coords)
|
|
31
|
-
: input.coordinates;
|
|
32
|
-
return {
|
|
33
|
-
id: input.id,
|
|
34
|
-
type: input.type,
|
|
35
|
-
coordinates,
|
|
36
|
-
layerId: input.layerId ?? '',
|
|
37
|
-
groupId: input.groupId,
|
|
38
|
-
properties: input.properties ?? {},
|
|
39
|
-
style: input.style,
|
|
40
|
-
locked: input.locked ?? false,
|
|
41
|
-
visible: input.visible !== false,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The factory of a draw instance: it builds the context, the event bridge, the rendering,
|
|
3
|
-
* the input handling, the modes and the plugin manager, and registers the release of each
|
|
4
|
-
* one for destroy.
|
|
5
|
-
*
|
|
6
|
-
* The Store is the single source of truth: input goes through the dispatcher into the Store,
|
|
7
|
-
* and the view and the events follow the Store's notifications.
|
|
8
|
-
*/
|
|
9
|
-
import type { Map as MapLibreMap } from 'maplibre-gl';
|
|
10
|
-
import type { MapLibreGLDraw } from './api/api.js';
|
|
11
|
-
import type { Options } from './api/context.js';
|
|
12
|
-
export type { EventPayloads, MapLibreGLDraw } from './api/api.js';
|
|
13
|
-
export type { Options } from './api/context.js';
|
|
14
|
-
export type { ImportExportAPI } from './api/import-export/index.js';
|
|
15
|
-
export type { Data, LoadResult, Metadata } from './store/types.js';
|
|
16
|
-
/**
|
|
17
|
-
* Creates a draw instance on a MapLibre map: the drawing and editing tools, their rendering and
|
|
18
|
-
* their input handling.
|
|
19
|
-
*
|
|
20
|
-
* It can be called before, while or after the map loads. The render layers are added as soon
|
|
21
|
-
* as the style accepts layers, and added again after `setStyle`. Unless
|
|
22
|
-
* `initDefaultLayer: false` is given, the document starts with one empty layer. The instance
|
|
23
|
-
* turns off the map's box zoom (Shift + drag selects features instead) and gives it back on
|
|
24
|
-
* {@link MapLibreGLDraw.destroy}. Several instances can share a page, each on its own map.
|
|
25
|
-
*
|
|
26
|
-
* @param map the MapLibre map to draw on
|
|
27
|
-
* @param options the options; every one can be omitted (see {@link Options})
|
|
28
|
-
* @returns the draw instance
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* import { createMapLibreGLDraw } from '@sakuzu/maplibre-gl-draw';
|
|
33
|
-
* import * as maplibregl from 'maplibre-gl';
|
|
34
|
-
*
|
|
35
|
-
* const map = new maplibregl.Map({
|
|
36
|
-
* container: 'map',
|
|
37
|
-
* style: 'https://demotiles.maplibre.org/style.json',
|
|
38
|
-
* center: [139.767, 35.681],
|
|
39
|
-
* zoom: 12,
|
|
40
|
-
* });
|
|
41
|
-
* const draw = createMapLibreGLDraw(map, { defaultMode: 'select' });
|
|
42
|
-
*
|
|
43
|
-
* draw.setMode('draw_polygon');
|
|
44
|
-
* draw.on('draw.feature.create', ({ feature }) => console.log('Created', feature.id));
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export declare function createMapLibreGLDraw(map: MapLibreMap, options?: Options): MapLibreGLDraw;
|
package/dist/modes/cursor.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
import { getCursorForHandle, hitTestHandles, } from '../view/ui/handle-test.js';
|
|
4
|
-
/**
|
|
5
|
-
* Cursor management class
|
|
6
|
-
*
|
|
7
|
-
* @internal
|
|
8
|
-
*/
|
|
9
|
-
export class CursorManager {
|
|
10
|
-
constructor(canvas, defaultCursor = 'default') {
|
|
11
|
-
Object.defineProperty(this, "canvas", {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: true,
|
|
15
|
-
value: void 0
|
|
16
|
-
});
|
|
17
|
-
Object.defineProperty(this, "defaultCursor", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true,
|
|
21
|
-
value: void 0
|
|
22
|
-
});
|
|
23
|
-
this.canvas = canvas;
|
|
24
|
-
this.defaultCursor = defaultCursor;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Sets the default cursor
|
|
28
|
-
*/
|
|
29
|
-
setDefault() {
|
|
30
|
-
this.canvas.style.cursor = this.defaultCursor;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Sets the cursor
|
|
34
|
-
*/
|
|
35
|
-
set(cursor) {
|
|
36
|
-
this.canvas.style.cursor = cursor;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Sets the cursor based on the handle hit result
|
|
40
|
-
*/
|
|
41
|
-
setForHandle(handleHit) {
|
|
42
|
-
this.canvas.style.cursor = getCursorForHandle(handleHit);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Sets the pointer cursor
|
|
46
|
-
*/
|
|
47
|
-
setPointer() {
|
|
48
|
-
this.canvas.style.cursor = 'pointer';
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Sets the text cursor
|
|
52
|
-
*/
|
|
53
|
-
setText() {
|
|
54
|
-
this.canvas.style.cursor = 'text';
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Updates the cursor based on the selected features and the mouse position
|
|
58
|
-
*
|
|
59
|
-
* @returns true if a handle was hit
|
|
60
|
-
*/
|
|
61
|
-
updateForSelection(screenPoint, selectedFeatures, bbox, transform, config, zoom, scope) {
|
|
62
|
-
if (!bbox || selectedFeatures.length === 0) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
const handleHit = hitTestHandles(screenPoint, selectedFeatures, transform, config, zoom, scope);
|
|
66
|
-
if (handleHit) {
|
|
67
|
-
this.setForHandle(handleHit);
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
}
|
package/dist/modes/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Modes module
|
|
3
|
-
*
|
|
4
|
-
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
5
|
-
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
6
|
-
*/
|
|
7
|
-
export type { ModeContext, ModeFactory, ModeHandler, SnapInputType } from './handler.js';
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Operations module
|
|
3
|
-
*
|
|
4
|
-
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
5
|
-
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
6
|
-
*/
|
|
7
|
-
export type { ResizeState } from './resize.js';
|
|
8
|
-
export type { TraceGraph, TraceGraphEdge, TraceGraphEndpoint, TraceGraphNode, } from './trace-graph.js';
|
|
9
|
-
export { buildTraceGraph, findTracePath } from './trace-graph.js';
|
package/dist/operations/index.js
DELETED
package/dist/plugins/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin System
|
|
3
|
-
*
|
|
4
|
-
* Public API of the plugin system.
|
|
5
|
-
*
|
|
6
|
-
* Only the symbols that src/index.ts publishes are listed here (see "The public
|
|
7
|
-
* surface" in CONTRIBUTING.md). Internal code imports from the defining file.
|
|
8
|
-
*/
|
|
9
|
-
export type { DragEndData, DragStartData, Hooks, HoverEvent, MouseLeaveEvent, MutationContext, Plugin, PluginContext, } from './plugin.js';
|
|
10
|
-
export type { HookName, PluginManager } from './plugin-manager.js';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mutation hooks
|
|
3
|
-
*
|
|
4
|
-
* Fires the after-mutation hooks of the plugins (feature / group / layer create, update and
|
|
5
|
-
* delete, and the selection change) from the change notification of the Store. Every write
|
|
6
|
-
* reaches the Store, so a hook sees every mutation whatever made it: the public API, a
|
|
7
|
-
* drawing mode, a drag, the Delete key, import, a plugin, or a change applied from outside to
|
|
8
|
-
* a replaced Store.
|
|
9
|
-
*
|
|
10
|
-
* The hooks run after the Store has changed, once per notification (one transaction), and
|
|
11
|
-
* the hooks of one notification share its batchId and its source. The intermediate updates
|
|
12
|
-
* of an edit in progress (isIntermediate) are not reported; the committing update that
|
|
13
|
-
* follows them is.
|
|
14
|
-
*/
|
|
15
|
-
import type { Store } from '../store/store.js';
|
|
16
|
-
import type { StateChanges } from '../store/types.js';
|
|
17
|
-
import type { MutationContext } from './plugin.js';
|
|
18
|
-
import type { PluginManager } from './plugin-manager.js';
|
|
19
|
-
/**
|
|
20
|
-
* Subscribes to the Store and fires the mutation hooks of the plugins
|
|
21
|
-
*
|
|
22
|
-
* @returns the function that stops it
|
|
23
|
-
*/
|
|
24
|
-
export declare function subscribeMutationHooks(store: Store, pluginManager: PluginManager): () => void;
|
|
25
|
-
/**
|
|
26
|
-
* Fires the mutation hooks for one change notification of the Store
|
|
27
|
-
*/
|
|
28
|
-
export declare function runMutationHooks(pluginManager: PluginManager, changes: StateChanges, ctx: MutationContext): void;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* Subscribes to the Store and fires the mutation hooks of the plugins
|
|
5
|
-
*
|
|
6
|
-
* @returns the function that stops it
|
|
7
|
-
*/
|
|
8
|
-
export function subscribeMutationHooks(store, pluginManager) {
|
|
9
|
-
let notification = 0;
|
|
10
|
-
return store.subscribe((changes) => {
|
|
11
|
-
runMutationHooks(pluginManager, changes, {
|
|
12
|
-
source: changes.source ?? 'local',
|
|
13
|
-
batchId: `change_${++notification}`,
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Fires the mutation hooks for one change notification of the Store
|
|
19
|
-
*/
|
|
20
|
-
export function runMutationHooks(pluginManager, changes, ctx) {
|
|
21
|
-
const { features, groups, layers, selection } = changes;
|
|
22
|
-
if (features) {
|
|
23
|
-
if (features.created && features.created.length > 0) {
|
|
24
|
-
pluginManager.runHook('feature:afterCreate', [...features.created], ctx);
|
|
25
|
-
}
|
|
26
|
-
const committed = foldCommittedUpdates(features.updated);
|
|
27
|
-
if (committed.updated.length > 0) {
|
|
28
|
-
pluginManager.runHook('feature:afterUpdate', committed.updated, committed.original, ctx);
|
|
29
|
-
}
|
|
30
|
-
if (features.deleted && features.deleted.length > 0) {
|
|
31
|
-
pluginManager.runHook('feature:afterDelete', [...features.deleted], ctx);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (groups) {
|
|
35
|
-
for (const group of groups.created ?? []) {
|
|
36
|
-
pluginManager.runHook('group:afterCreate', group, ctx);
|
|
37
|
-
}
|
|
38
|
-
for (const entry of groups.updated ?? []) {
|
|
39
|
-
pluginManager.runHook('group:afterUpdate', entry.group, entry.previous, ctx);
|
|
40
|
-
}
|
|
41
|
-
for (const group of groups.deleted ?? []) {
|
|
42
|
-
pluginManager.runHook('group:afterDelete', group, ctx);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (layers) {
|
|
46
|
-
for (const layer of layers.created ?? []) {
|
|
47
|
-
pluginManager.runHook('layer:afterCreate', layer, ctx);
|
|
48
|
-
}
|
|
49
|
-
for (const entry of layers.updated ?? []) {
|
|
50
|
-
pluginManager.runHook('layer:afterUpdate', entry.layer, entry.previous, ctx);
|
|
51
|
-
}
|
|
52
|
-
for (const layer of layers.deleted ?? []) {
|
|
53
|
-
pluginManager.runHook('layer:afterDelete', layer, ctx);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (selection) {
|
|
57
|
-
pluginManager.runHook('selection:afterChange', [...selection.ids], [...selection.previousIds], ctx);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Folds the committed updates of one notification into one entry per feature (the last
|
|
62
|
-
* state, and the state before the first update), in the order of their first update
|
|
63
|
-
*/
|
|
64
|
-
function foldCommittedUpdates(updates) {
|
|
65
|
-
const byId = new Map();
|
|
66
|
-
for (const entry of updates ?? []) {
|
|
67
|
-
if (entry.isIntermediate)
|
|
68
|
-
continue;
|
|
69
|
-
const existing = byId.get(entry.id);
|
|
70
|
-
if (existing) {
|
|
71
|
-
existing.feature = entry.feature;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
byId.set(entry.id, { feature: entry.feature, previous: entry.previous });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const updated = [];
|
|
78
|
-
const original = [];
|
|
79
|
-
for (const { feature, previous } of byId.values()) {
|
|
80
|
-
updated.push(feature);
|
|
81
|
-
original.push(previous);
|
|
82
|
-
}
|
|
83
|
-
return { updated, original };
|
|
84
|
-
}
|