@sakuzu/maplibre-gl-draw 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/LICENSE +661 -0
- package/README.ja.md +248 -0
- package/README.md +255 -0
- package/THIRD_PARTY_NOTICES.md +275 -0
- package/dist/api/api.d.ts +1259 -0
- package/dist/api/api.js +86 -0
- package/dist/api/context.d.ts +173 -0
- package/dist/api/context.js +193 -0
- package/dist/api/display-api.d.ts +1 -0
- package/dist/api/display-api.js +23 -0
- package/dist/api/event-api.d.ts +13 -0
- package/dist/api/event-api.js +17 -0
- package/dist/api/extension-api.d.ts +46 -0
- package/dist/api/extension-api.js +85 -0
- package/dist/api/feature-api.d.ts +11 -0
- package/dist/api/feature-api.js +101 -0
- package/dist/api/geometry/apply.d.ts +51 -0
- package/dist/api/geometry/apply.js +114 -0
- package/dist/api/geometry/boolean.d.ts +28 -0
- package/dist/api/geometry/boolean.js +65 -0
- package/dist/api/geometry/buffer.d.ts +11 -0
- package/dist/api/geometry/buffer.js +105 -0
- package/dist/api/geometry/split.d.ts +16 -0
- package/dist/api/geometry/split.js +75 -0
- package/dist/api/geometry/targets.d.ts +76 -0
- package/dist/api/geometry/targets.js +158 -0
- package/dist/api/geometry/types.d.ts +31 -0
- package/dist/api/geometry/types.js +3 -0
- package/dist/api/geometry-operations.d.ts +162 -0
- package/dist/api/geometry-operations.js +94 -0
- package/dist/api/group-api.d.ts +10 -0
- package/dist/api/group-api.js +78 -0
- package/dist/api/import-export/constants.d.ts +29 -0
- package/dist/api/import-export/constants.js +40 -0
- package/dist/api/import-export/embedded-file.d.ts +13 -0
- package/dist/api/import-export/embedded-file.js +31 -0
- package/dist/api/import-export/file-name.d.ts +10 -0
- package/dist/api/import-export/file-name.js +20 -0
- package/dist/api/import-export/format-detection.d.ts +12 -0
- package/dist/api/import-export/format-detection.js +29 -0
- package/dist/api/import-export/geojson-export.d.ts +19 -0
- package/dist/api/import-export/geojson-export.js +262 -0
- package/dist/api/import-export/geojson-import.d.ts +34 -0
- package/dist/api/import-export/geojson-import.js +538 -0
- package/dist/api/import-export/geometry-validation.d.ts +20 -0
- package/dist/api/import-export/geometry-validation.js +107 -0
- package/dist/api/import-export/image-import.d.ts +12 -0
- package/dist/api/import-export/image-import.js +53 -0
- package/dist/api/import-export/index.d.ts +9 -0
- package/dist/api/import-export/index.js +107 -0
- package/dist/api/import-export/native-format.d.ts +15 -0
- package/dist/api/import-export/native-format.js +126 -0
- package/dist/api/import-export/native-validation.d.ts +28 -0
- package/dist/api/import-export/native-validation.js +212 -0
- package/dist/api/import-export/own-property.d.ts +10 -0
- package/dist/api/import-export/own-property.js +19 -0
- package/dist/api/import-export/style-validation.d.ts +27 -0
- package/dist/api/import-export/style-validation.js +49 -0
- package/dist/api/import-export/types.d.ts +26 -0
- package/dist/api/import-export/types.js +3 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.js +3 -0
- package/dist/api/input-api.d.ts +158 -0
- package/dist/api/input-api.js +144 -0
- package/dist/api/instance-api.d.ts +38 -0
- package/dist/api/instance-api.js +136 -0
- package/dist/api/layer-api.d.ts +12 -0
- package/dist/api/layer-api.js +62 -0
- package/dist/api/selection-api.d.ts +7 -0
- package/dist/api/selection-api.js +78 -0
- package/dist/api/snapping-api.d.ts +125 -0
- package/dist/api/snapping-api.js +50 -0
- package/dist/api/topology-api.d.ts +30 -0
- package/dist/api/topology-api.js +16 -0
- package/dist/api/tracing-api.d.ts +31 -0
- package/dist/api/tracing-api.js +16 -0
- package/dist/dispatcher/hit-test/box-strategies.d.ts +19 -0
- package/dist/dispatcher/hit-test/box-strategies.js +275 -0
- package/dist/dispatcher/hit-test/box-strategy.d.ts +59 -0
- package/dist/dispatcher/hit-test/box-strategy.js +37 -0
- package/dist/dispatcher/hit-test/globe-shape.d.ts +46 -0
- package/dist/dispatcher/hit-test/globe-shape.js +70 -0
- package/dist/dispatcher/hit-test/index.d.ts +14 -0
- package/dist/dispatcher/hit-test/index.js +9 -0
- package/dist/dispatcher/hit-test/local-frame.d.ts +77 -0
- package/dist/dispatcher/hit-test/local-frame.js +112 -0
- package/dist/dispatcher/hit-test/segment-grid.d.ts +32 -0
- package/dist/dispatcher/hit-test/segment-grid.js +79 -0
- package/dist/dispatcher/hit-test/service.d.ts +120 -0
- package/dist/dispatcher/hit-test/service.js +333 -0
- package/dist/dispatcher/hit-test/strategies/base.d.ts +136 -0
- package/dist/dispatcher/hit-test/strategies/base.js +66 -0
- package/dist/dispatcher/hit-test/strategies/circle.d.ts +10 -0
- package/dist/dispatcher/hit-test/strategies/circle.js +56 -0
- package/dist/dispatcher/hit-test/strategies/image.d.ts +22 -0
- package/dist/dispatcher/hit-test/strategies/image.js +115 -0
- package/dist/dispatcher/hit-test/strategies/index.d.ts +11 -0
- package/dist/dispatcher/hit-test/strategies/index.js +10 -0
- package/dist/dispatcher/hit-test/strategies/line.d.ts +17 -0
- package/dist/dispatcher/hit-test/strategies/line.js +30 -0
- package/dist/dispatcher/hit-test/strategies/multi.d.ts +44 -0
- package/dist/dispatcher/hit-test/strategies/multi.js +141 -0
- package/dist/dispatcher/hit-test/strategies/point.d.ts +20 -0
- package/dist/dispatcher/hit-test/strategies/point.js +29 -0
- package/dist/dispatcher/hit-test/strategies/polygon.d.ts +52 -0
- package/dist/dispatcher/hit-test/strategies/polygon.js +138 -0
- package/dist/dispatcher/hit-test/topmost.d.ts +48 -0
- package/dist/dispatcher/hit-test/topmost.js +157 -0
- package/dist/dispatcher/hit-test/visibility-lookup.d.ts +23 -0
- package/dist/dispatcher/hit-test/visibility-lookup.js +40 -0
- package/dist/dispatcher/index.d.ts +15 -0
- package/dist/dispatcher/index.js +3 -0
- package/dist/dispatcher/input-router.d.ts +1 -0
- package/dist/dispatcher/input-router.js +288 -0
- package/dist/dispatcher/normalizer.d.ts +1 -0
- package/dist/dispatcher/normalizer.js +513 -0
- package/dist/dispatcher/types.d.ts +144 -0
- package/dist/dispatcher/types.js +15 -0
- package/dist/display/chunk-set.d.ts +24 -0
- package/dist/display/chunk-set.js +533 -0
- package/dist/display/chunk.d.ts +1 -0
- package/dist/display/chunk.js +104 -0
- package/dist/display/columnar/index.d.ts +12 -0
- package/dist/display/columnar/index.js +13 -0
- package/dist/display/columnar/prepare.d.ts +42 -0
- package/dist/display/columnar/prepare.js +116 -0
- package/dist/display/columnar/source.d.ts +1 -0
- package/dist/display/columnar/source.js +531 -0
- package/dist/display/columnar/table.d.ts +1 -0
- package/dist/display/columnar/table.js +471 -0
- package/dist/display/columnar/types.d.ts +223 -0
- package/dist/display/columnar/types.js +3 -0
- package/dist/display/dataset.d.ts +2 -0
- package/dist/display/dataset.js +891 -0
- package/dist/display/index.d.ts +13 -0
- package/dist/display/index.js +3 -0
- package/dist/display/interaction.d.ts +1 -0
- package/dist/display/interaction.js +90 -0
- package/dist/display/manager.d.ts +1 -0
- package/dist/display/manager.js +440 -0
- package/dist/display/packed-rtree.d.ts +1 -0
- package/dist/display/packed-rtree.js +244 -0
- package/dist/display/partition.d.ts +1 -0
- package/dist/display/partition.js +226 -0
- package/dist/display/provider.d.ts +1 -0
- package/dist/display/provider.js +342 -0
- package/dist/display/retained.d.ts +40 -0
- package/dist/display/retained.js +898 -0
- package/dist/display/selection.d.ts +13 -0
- package/dist/display/selection.js +226 -0
- package/dist/display/source.d.ts +1 -0
- package/dist/display/source.js +119 -0
- package/dist/display/spatial.d.ts +1 -0
- package/dist/display/spatial.js +71 -0
- package/dist/display/style.d.ts +1 -0
- package/dist/display/style.js +126 -0
- package/dist/display/thinning.d.ts +65 -0
- package/dist/display/thinning.js +910 -0
- package/dist/display/triangulation.d.ts +1 -0
- package/dist/display/triangulation.js +0 -0
- package/dist/display/types.d.ts +561 -0
- package/dist/display/types.js +43 -0
- package/dist/extension/feature-handler.d.ts +182 -0
- package/dist/extension/feature-handler.js +3 -0
- package/dist/extension/index.d.ts +9 -0
- package/dist/extension/index.js +3 -0
- package/dist/extension/renderers.d.ts +208 -0
- package/dist/extension/renderers.js +3 -0
- package/dist/geometry/angle.d.ts +47 -0
- package/dist/geometry/angle.js +44 -0
- package/dist/geometry/bbox.d.ts +48 -0
- package/dist/geometry/bbox.js +83 -0
- package/dist/geometry/boolean.d.ts +162 -0
- package/dist/geometry/boolean.js +331 -0
- package/dist/geometry/buffer.d.ts +72 -0
- package/dist/geometry/buffer.js +218 -0
- package/dist/geometry/circle.d.ts +55 -0
- package/dist/geometry/circle.js +107 -0
- package/dist/geometry/coords.d.ts +97 -0
- package/dist/geometry/coords.js +149 -0
- package/dist/geometry/distance.d.ts +79 -0
- package/dist/geometry/distance.js +111 -0
- package/dist/geometry/errors.d.ts +74 -0
- package/dist/geometry/errors.js +104 -0
- package/dist/geometry/index.d.ts +28 -0
- package/dist/geometry/index.js +38 -0
- package/dist/geometry/measure.d.ts +81 -0
- package/dist/geometry/measure.js +236 -0
- package/dist/geometry/predicates.d.ts +62 -0
- package/dist/geometry/predicates.js +132 -0
- package/dist/geometry/simplify.d.ts +74 -0
- package/dist/geometry/simplify.js +159 -0
- package/dist/geometry/split.d.ts +68 -0
- package/dist/geometry/split.js +430 -0
- package/dist/geometry/types.d.ts +95 -0
- package/dist/geometry/types.js +3 -0
- package/dist/geometry/units.d.ts +35 -0
- package/dist/geometry/units.js +41 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.js +20 -0
- package/dist/maplibre-gl-draw.d.ts +47 -0
- package/dist/maplibre-gl-draw.js +407 -0
- package/dist/messages.d.ts +64 -0
- package/dist/messages.js +36 -0
- package/dist/modes/cursor.d.ts +1 -0
- package/dist/modes/cursor.js +72 -0
- package/dist/modes/draw/circle.d.ts +1 -0
- package/dist/modes/draw/circle.js +222 -0
- package/dist/modes/draw/commit-layer.d.ts +26 -0
- package/dist/modes/draw/commit-layer.js +31 -0
- package/dist/modes/draw/freehand.d.ts +1 -0
- package/dist/modes/draw/freehand.js +264 -0
- package/dist/modes/draw/image.d.ts +1 -0
- package/dist/modes/draw/image.js +60 -0
- package/dist/modes/draw/index.d.ts +9 -0
- package/dist/modes/draw/index.js +11 -0
- package/dist/modes/draw/line.d.ts +1 -0
- package/dist/modes/draw/line.js +363 -0
- package/dist/modes/draw/point.d.ts +1 -0
- package/dist/modes/draw/point.js +87 -0
- package/dist/modes/draw/polygon.d.ts +1 -0
- package/dist/modes/draw/polygon.js +378 -0
- package/dist/modes/draw/trace-support.d.ts +79 -0
- package/dist/modes/draw/trace-support.js +161 -0
- package/dist/modes/handler.d.ts +285 -0
- package/dist/modes/handler.js +3 -0
- package/dist/modes/index.d.ts +7 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/manager.d.ts +15 -0
- package/dist/modes/manager.js +196 -0
- package/dist/modes/select/box-selection.d.ts +52 -0
- package/dist/modes/select/box-selection.js +140 -0
- package/dist/modes/select/click-handler.d.ts +32 -0
- package/dist/modes/select/click-handler.js +166 -0
- package/dist/modes/select/cursor-handler.d.ts +15 -0
- package/dist/modes/select/cursor-handler.js +59 -0
- package/dist/modes/select/drag/auxiliary.d.ts +26 -0
- package/dist/modes/select/drag/auxiliary.js +56 -0
- package/dist/modes/select/drag/intermediate-writes.d.ts +1 -0
- package/dist/modes/select/drag/intermediate-writes.js +171 -0
- package/dist/modes/select/drag/move.d.ts +24 -0
- package/dist/modes/select/drag/move.js +59 -0
- package/dist/modes/select/drag/operation.d.ts +30 -0
- package/dist/modes/select/drag/operation.js +18 -0
- package/dist/modes/select/drag/radius.d.ts +15 -0
- package/dist/modes/select/drag/radius.js +49 -0
- package/dist/modes/select/drag/transform.d.ts +17 -0
- package/dist/modes/select/drag/transform.js +155 -0
- package/dist/modes/select/drag/vertex.d.ts +17 -0
- package/dist/modes/select/drag/vertex.js +163 -0
- package/dist/modes/select/drag-handler.d.ts +1 -0
- package/dist/modes/select/drag-handler.js +254 -0
- package/dist/modes/select/hit-helpers.d.ts +40 -0
- package/dist/modes/select/hit-helpers.js +51 -0
- package/dist/modes/select/mode.d.ts +1 -0
- package/dist/modes/select/mode.js +397 -0
- package/dist/modes/select/shortcut-handler.d.ts +40 -0
- package/dist/modes/select/shortcut-handler.js +128 -0
- package/dist/operations/index.d.ts +9 -0
- package/dist/operations/index.js +3 -0
- package/dist/operations/layer-operations.d.ts +1 -0
- package/dist/operations/layer-operations.js +350 -0
- package/dist/operations/resize.d.ts +71 -0
- package/dist/operations/resize.js +252 -0
- package/dist/operations/rotate.d.ts +17 -0
- package/dist/operations/rotate.js +166 -0
- package/dist/operations/selection-operations.d.ts +20 -0
- package/dist/operations/selection-operations.js +159 -0
- package/dist/operations/shared-vertex.d.ts +1 -0
- package/dist/operations/shared-vertex.js +210 -0
- package/dist/operations/trace-graph.d.ts +96 -0
- package/dist/operations/trace-graph.js +283 -0
- package/dist/operations/vertex.d.ts +1 -0
- package/dist/operations/vertex.js +538 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/mutation-hooks.d.ts +28 -0
- package/dist/plugins/mutation-hooks.js +84 -0
- package/dist/plugins/plugin-context.d.ts +1 -0
- package/dist/plugins/plugin-context.js +367 -0
- package/dist/plugins/plugin-manager.d.ts +103 -0
- package/dist/plugins/plugin-manager.js +316 -0
- package/dist/plugins/plugin.d.ts +529 -0
- package/dist/plugins/plugin.js +3 -0
- package/dist/shared/config/constants.d.ts +66 -0
- package/dist/shared/config/constants.js +60 -0
- package/dist/shared/config/feature-style.d.ts +155 -0
- package/dist/shared/config/feature-style.js +154 -0
- package/dist/shared/config/index.d.ts +17 -0
- package/dist/shared/config/index.js +8 -0
- package/dist/shared/config/rendering.d.ts +107 -0
- package/dist/shared/config/rendering.js +33 -0
- package/dist/shared/config/selection-highlight.d.ts +29 -0
- package/dist/shared/config/selection-highlight.js +35 -0
- package/dist/shared/config/selection.d.ts +273 -0
- package/dist/shared/config/selection.js +266 -0
- package/dist/shared/config/topology.d.ts +33 -0
- package/dist/shared/config/topology.js +17 -0
- package/dist/shared/config/trace.d.ts +40 -0
- package/dist/shared/config/trace.js +17 -0
- package/dist/shared/math/angle.d.ts +21 -0
- package/dist/shared/math/angle.js +34 -0
- package/dist/shared/math/circle.d.ts +6 -0
- package/dist/shared/math/circle.js +10 -0
- package/dist/shared/math/constants.d.ts +48 -0
- package/dist/shared/math/constants.js +59 -0
- package/dist/shared/math/distance.d.ts +78 -0
- package/dist/shared/math/distance.js +147 -0
- package/dist/shared/math/globe-subdivision.d.ts +62 -0
- package/dist/shared/math/globe-subdivision.js +99 -0
- package/dist/shared/math/index.d.ts +17 -0
- package/dist/shared/math/index.js +21 -0
- package/dist/shared/math/intersection.d.ts +63 -0
- package/dist/shared/math/intersection.js +236 -0
- package/dist/shared/math/longitude.d.ts +20 -0
- package/dist/shared/math/longitude.js +31 -0
- package/dist/shared/math/mercator-plane.d.ts +27 -0
- package/dist/shared/math/mercator-plane.js +26 -0
- package/dist/shared/math/obb.d.ts +65 -0
- package/dist/shared/math/obb.js +107 -0
- package/dist/shared/math/rotation.d.ts +93 -0
- package/dist/shared/math/rotation.js +186 -0
- package/dist/shared/math/segment-grid.d.ts +69 -0
- package/dist/shared/math/segment-grid.js +159 -0
- package/dist/shared/math/transform.d.ts +140 -0
- package/dist/shared/math/transform.js +189 -0
- package/dist/shared/types/events.d.ts +128 -0
- package/dist/shared/types/events.js +3 -0
- package/dist/shared/types/model.d.ts +950 -0
- package/dist/shared/types/model.js +3 -0
- package/dist/shared/types/selection-box.d.ts +23 -0
- package/dist/shared/types/selection-box.js +3 -0
- package/dist/shared/types/style.d.ts +68 -0
- package/dist/shared/types/style.js +3 -0
- package/dist/shared/utils/color.d.ts +49 -0
- package/dist/shared/utils/color.js +180 -0
- package/dist/shared/utils/coordinates.d.ts +52 -0
- package/dist/shared/utils/coordinates.js +75 -0
- package/dist/shared/utils/embedded-image.d.ts +34 -0
- package/dist/shared/utils/embedded-image.js +161 -0
- package/dist/shared/utils/event-emitter.d.ts +262 -0
- package/dist/shared/utils/event-emitter.js +44 -0
- package/dist/shared/utils/feature-bbox.d.ts +8 -0
- package/dist/shared/utils/feature-bbox.js +207 -0
- package/dist/shared/utils/feature-segments.d.ts +23 -0
- package/dist/shared/utils/feature-segments.js +179 -0
- package/dist/shared/utils/id.d.ts +1 -0
- package/dist/shared/utils/id.js +35 -0
- package/dist/shared/utils/image.d.ts +34 -0
- package/dist/shared/utils/image.js +106 -0
- package/dist/shared/utils/index.d.ts +15 -0
- package/dist/shared/utils/index.js +24 -0
- package/dist/shared/utils/map.d.ts +26 -0
- package/dist/shared/utils/map.js +35 -0
- package/dist/shared/utils/name-generator.d.ts +197 -0
- package/dist/shared/utils/name-generator.js +337 -0
- package/dist/shared/utils/pixel-ratio.d.ts +111 -0
- package/dist/shared/utils/pixel-ratio.js +85 -0
- package/dist/shared/utils/property.d.ts +88 -0
- package/dist/shared/utils/property.js +140 -0
- package/dist/shared/utils/vertex-ref.d.ts +23 -0
- package/dist/shared/utils/vertex-ref.js +20 -0
- package/dist/snapping/custom-targets.d.ts +1 -0
- package/dist/snapping/custom-targets.js +21 -0
- package/dist/snapping/geometry.d.ts +1 -0
- package/dist/snapping/geometry.js +61 -0
- package/dist/snapping/index.d.ts +14 -0
- package/dist/snapping/index.js +4 -0
- package/dist/snapping/indicator.d.ts +19 -0
- package/dist/snapping/indicator.js +145 -0
- package/dist/snapping/providers/display.d.ts +72 -0
- package/dist/snapping/providers/display.js +268 -0
- package/dist/snapping/providers/guide.d.ts +69 -0
- package/dist/snapping/providers/guide.js +187 -0
- package/dist/snapping/providers/intersection.d.ts +1 -0
- package/dist/snapping/providers/intersection.js +92 -0
- package/dist/snapping/providers/shared.d.ts +39 -0
- package/dist/snapping/providers/shared.js +146 -0
- package/dist/snapping/providers/store.d.ts +1 -0
- package/dist/snapping/providers/store.js +132 -0
- package/dist/snapping/service.d.ts +1 -0
- package/dist/snapping/service.js +272 -0
- package/dist/snapping/types.d.ts +267 -0
- package/dist/snapping/types.js +66 -0
- package/dist/store/change-merger.d.ts +1 -0
- package/dist/store/change-merger.js +102 -0
- package/dist/store/draw-store.d.ts +1 -0
- package/dist/store/draw-store.js +396 -0
- package/dist/store/event-bridge.d.ts +1 -0
- package/dist/store/event-bridge.js +161 -0
- package/dist/store/index.d.ts +12 -0
- package/dist/store/index.js +4 -0
- package/dist/store/local-visibility.d.ts +21 -0
- package/dist/store/local-visibility.js +27 -0
- package/dist/store/lock.d.ts +67 -0
- package/dist/store/lock.js +54 -0
- package/dist/store/memory/change-bus.d.ts +60 -0
- package/dist/store/memory/change-bus.js +232 -0
- package/dist/store/memory/file-store.d.ts +15 -0
- package/dist/store/memory/file-store.js +33 -0
- package/dist/store/memory/frozen.d.ts +21 -0
- package/dist/store/memory/frozen.js +51 -0
- package/dist/store/memory/ui-state.d.ts +51 -0
- package/dist/store/memory/ui-state.js +223 -0
- package/dist/store/memory.d.ts +26 -0
- package/dist/store/memory.js +708 -0
- package/dist/store/spatial/index.d.ts +6 -0
- package/dist/store/spatial/index.js +4 -0
- package/dist/store/spatial/spatial-index.d.ts +90 -0
- package/dist/store/spatial/spatial-index.js +148 -0
- package/dist/store/spatial/store-spatial-index.d.ts +60 -0
- package/dist/store/spatial/store-spatial-index.js +125 -0
- package/dist/store/store.d.ts +417 -0
- package/dist/store/store.js +3 -0
- package/dist/store/types.d.ts +8 -0
- package/dist/store/types.js +3 -0
- package/dist/store/writable-layer.d.ts +35 -0
- package/dist/store/writable-layer.js +20 -0
- package/dist/view/cache/buffer.d.ts +28 -0
- package/dist/view/cache/buffer.js +176 -0
- package/dist/view/cache/earcut.d.ts +1 -0
- package/dist/view/cache/earcut.js +122 -0
- package/dist/view/cache/style-rule.d.ts +1 -0
- package/dist/view/cache/style-rule.js +97 -0
- package/dist/view/cache/terrain-fill.d.ts +30 -0
- package/dist/view/cache/terrain-fill.js +60 -0
- package/dist/view/cache/texture.d.ts +14 -0
- package/dist/view/cache/texture.js +292 -0
- package/dist/view/coordinator.d.ts +27 -0
- package/dist/view/coordinator.js +72 -0
- package/dist/view/feature-companion.d.ts +173 -0
- package/dist/view/feature-companion.js +108 -0
- package/dist/view/globe-subdivision.d.ts +78 -0
- package/dist/view/globe-subdivision.js +128 -0
- package/dist/view/index.d.ts +47 -0
- package/dist/view/index.js +20 -0
- package/dist/view/layer/attach.d.ts +20 -0
- package/dist/view/layer/attach.js +47 -0
- package/dist/view/layer/blend.d.ts +57 -0
- package/dist/view/layer/blend.js +14 -0
- package/dist/view/layer/custom-layer.d.ts +1 -0
- package/dist/view/layer/custom-layer.js +509 -0
- package/dist/view/layer/depth-state.d.ts +14 -0
- package/dist/view/layer/depth-state.js +44 -0
- package/dist/view/layer/display-list.d.ts +1 -0
- package/dist/view/layer/display-list.js +111 -0
- package/dist/view/layer/drape-planner.d.ts +139 -0
- package/dist/view/layer/drape-planner.js +726 -0
- package/dist/view/layer/frame-render.d.ts +57 -0
- package/dist/view/layer/frame-render.js +209 -0
- package/dist/view/layer/frame-state.d.ts +147 -0
- package/dist/view/layer/frame-state.js +484 -0
- package/dist/view/layer/gl-state.d.ts +77 -0
- package/dist/view/layer/gl-state.js +132 -0
- package/dist/view/layer/index.d.ts +6 -0
- package/dist/view/layer/index.js +5 -0
- package/dist/view/layer/render-scope.d.ts +30 -0
- package/dist/view/layer/render-scope.js +28 -0
- package/dist/view/layer/render.d.ts +87 -0
- package/dist/view/layer/render.js +187 -0
- package/dist/view/layer/renderers.d.ts +81 -0
- package/dist/view/layer/renderers.js +142 -0
- package/dist/view/layer/slot-manager.d.ts +26 -0
- package/dist/view/layer/slot-manager.js +133 -0
- package/dist/view/layer/slots.d.ts +33 -0
- package/dist/view/layer/slots.js +50 -0
- package/dist/view/layer/store-retained-bbox.d.ts +36 -0
- package/dist/view/layer/store-retained-bbox.js +188 -0
- package/dist/view/layer/store-retained-chunk.d.ts +97 -0
- package/dist/view/layer/store-retained-chunk.js +94 -0
- package/dist/view/layer/store-retained-classify.d.ts +34 -0
- package/dist/view/layer/store-retained-classify.js +88 -0
- package/dist/view/layer/store-retained-collect.d.ts +24 -0
- package/dist/view/layer/store-retained-collect.js +121 -0
- package/dist/view/layer/store-retained-coord-patch.d.ts +119 -0
- package/dist/view/layer/store-retained-coord-patch.js +168 -0
- package/dist/view/layer/store-retained-immediate.d.ts +63 -0
- package/dist/view/layer/store-retained-immediate.js +49 -0
- package/dist/view/layer/store-retained-invalidation.d.ts +96 -0
- package/dist/view/layer/store-retained-invalidation.js +192 -0
- package/dist/view/layer/store-retained.d.ts +198 -0
- package/dist/view/layer/store-retained.js +430 -0
- package/dist/view/layer/terrain-resolver.d.ts +1 -0
- package/dist/view/layer/terrain-resolver.js +174 -0
- package/dist/view/renderers/batch-manager.d.ts +61 -0
- package/dist/view/renderers/batch-manager.js +718 -0
- package/dist/view/renderers/draw-factors.d.ts +60 -0
- package/dist/view/renderers/draw-factors.js +35 -0
- package/dist/view/renderers/drawer.d.ts +1 -0
- package/dist/view/renderers/drawer.js +346 -0
- package/dist/view/renderers/image.d.ts +1 -0
- package/dist/view/renderers/image.js +255 -0
- package/dist/view/renderers/line/dash.d.ts +31 -0
- package/dist/view/renderers/line/dash.js +152 -0
- package/dist/view/renderers/line/line-geometry.d.ts +39 -0
- package/dist/view/renderers/line/line-geometry.js +460 -0
- package/dist/view/renderers/line/line-gl.d.ts +1 -0
- package/dist/view/renderers/line/line-gl.js +236 -0
- package/dist/view/renderers/line/line-shader.d.ts +1 -0
- package/dist/view/renderers/line/line-shader.js +364 -0
- package/dist/view/renderers/line/line-types.d.ts +43 -0
- package/dist/view/renderers/line/line-types.js +3 -0
- package/dist/view/renderers/line/line-uniforms.d.ts +1 -0
- package/dist/view/renderers/line/line-uniforms.js +390 -0
- package/dist/view/renderers/line/sdf-line.d.ts +92 -0
- package/dist/view/renderers/line/sdf-line.js +567 -0
- package/dist/view/renderers/point/billboard-depth.d.ts +10 -0
- package/dist/view/renderers/point/billboard-depth.js +56 -0
- package/dist/view/renderers/point/point-instance.d.ts +124 -0
- package/dist/view/renderers/point/point-instance.js +738 -0
- package/dist/view/renderers/point/point-sdf.d.ts +58 -0
- package/dist/view/renderers/point/point-sdf.js +170 -0
- package/dist/view/renderers/point/point-shape.d.ts +99 -0
- package/dist/view/renderers/point/point-shape.js +504 -0
- package/dist/view/renderers/point/point-style.d.ts +1 -0
- package/dist/view/renderers/point/point-style.js +46 -0
- package/dist/view/renderers/polygon/batch.d.ts +26 -0
- package/dist/view/renderers/polygon/batch.js +336 -0
- package/dist/view/renderers/polygon/earcut-input.d.ts +37 -0
- package/dist/view/renderers/polygon/earcut-input.js +55 -0
- package/dist/view/renderers/polygon/earcut-sliced.d.ts +69 -0
- package/dist/view/renderers/polygon/earcut-sliced.js +960 -0
- package/dist/view/renderers/polygon/fill.d.ts +74 -0
- package/dist/view/renderers/polygon/fill.js +251 -0
- package/dist/view/renderers/polygon/sdf-polygon.d.ts +62 -0
- package/dist/view/renderers/polygon/sdf-polygon.js +919 -0
- package/dist/view/renderers/polygon/terrain-cull.d.ts +3 -0
- package/dist/view/renderers/polygon/terrain-cull.js +14 -0
- package/dist/view/renderers/polygon/triangulator.d.ts +41 -0
- package/dist/view/renderers/polygon/triangulator.js +3 -0
- package/dist/view/renderers/retained.d.ts +43 -0
- package/dist/view/renderers/retained.js +3 -0
- package/dist/view/renderers/stroke.d.ts +121 -0
- package/dist/view/renderers/stroke.js +621 -0
- package/dist/view/shaders/frame.d.ts +8 -0
- package/dist/view/shaders/frame.js +37 -0
- package/dist/view/shaders/helpers.d.ts +238 -0
- package/dist/view/shaders/helpers.js +611 -0
- package/dist/view/shaders/initializer.d.ts +27 -0
- package/dist/view/shaders/initializer.js +125 -0
- package/dist/view/shaders/projection.d.ts +123 -0
- package/dist/view/shaders/projection.js +299 -0
- package/dist/view/shaders/quad-grid.d.ts +77 -0
- package/dist/view/shaders/quad-grid.js +128 -0
- package/dist/view/shaders/quad.d.ts +189 -0
- package/dist/view/shaders/quad.js +582 -0
- package/dist/view/shaders/retained-origin.d.ts +50 -0
- package/dist/view/shaders/retained-origin.js +67 -0
- package/dist/view/shaders/terrain-shade.d.ts +23 -0
- package/dist/view/shaders/terrain-shade.js +93 -0
- package/dist/view/style-rule.d.ts +166 -0
- package/dist/view/style-rule.js +300 -0
- package/dist/view/terrain/anchor.d.ts +135 -0
- package/dist/view/terrain/anchor.js +226 -0
- package/dist/view/terrain/context.d.ts +132 -0
- package/dist/view/terrain/context.js +437 -0
- package/dist/view/terrain/dem-atlas.d.ts +97 -0
- package/dist/view/terrain/dem-atlas.js +534 -0
- package/dist/view/terrain/detect.d.ts +126 -0
- package/dist/view/terrain/detect.js +198 -0
- package/dist/view/terrain/drape/bin-store.d.ts +179 -0
- package/dist/view/terrain/drape/bin-store.js +529 -0
- package/dist/view/terrain/drape/binning.d.ts +259 -0
- package/dist/view/terrain/drape/binning.js +604 -0
- package/dist/view/terrain/drape/edge-constrain.d.ts +37 -0
- package/dist/view/terrain/drape/edge-constrain.js +175 -0
- package/dist/view/terrain/drape/geometry.d.ts +95 -0
- package/dist/view/terrain/drape/geometry.js +260 -0
- package/dist/view/terrain/drape/mesh.d.ts +50 -0
- package/dist/view/terrain/drape/mesh.js +86 -0
- package/dist/view/terrain/drape/pass.d.ts +122 -0
- package/dist/view/terrain/drape/pass.js +379 -0
- package/dist/view/terrain/drape/quad-glyphs.d.ts +64 -0
- package/dist/view/terrain/drape/quad-glyphs.js +117 -0
- package/dist/view/terrain/drape/quad.d.ts +249 -0
- package/dist/view/terrain/drape/quad.js +835 -0
- package/dist/view/terrain/drape/renderer.d.ts +184 -0
- package/dist/view/terrain/drape/renderer.js +706 -0
- package/dist/view/terrain/drape/shared.d.ts +80 -0
- package/dist/view/terrain/drape/shared.js +173 -0
- package/dist/view/terrain/drape/stitch.d.ts +155 -0
- package/dist/view/terrain/drape/stitch.js +228 -0
- package/dist/view/terrain/ground.d.ts +72 -0
- package/dist/view/terrain/ground.js +151 -0
- package/dist/view/terrain/metrics.d.ts +180 -0
- package/dist/view/terrain/metrics.js +231 -0
- package/dist/view/terrain/occlusion.d.ts +11 -0
- package/dist/view/terrain/occlusion.js +129 -0
- package/dist/view/terrain/polygon.d.ts +86 -0
- package/dist/view/terrain/polygon.js +301 -0
- package/dist/view/terrain/shade.d.ts +48 -0
- package/dist/view/terrain/shade.js +45 -0
- package/dist/view/terrain/state.d.ts +99 -0
- package/dist/view/terrain/state.js +186 -0
- package/dist/view/terrain/tessellation.d.ts +265 -0
- package/dist/view/terrain/tessellation.js +924 -0
- package/dist/view/terrain/tiling.d.ts +56 -0
- package/dist/view/terrain/tiling.js +155 -0
- package/dist/view/terrain/upstream-terrain.d.ts +82 -0
- package/dist/view/terrain/upstream-terrain.js +116 -0
- package/dist/view/ui/auxiliary-handles.d.ts +151 -0
- package/dist/view/ui/auxiliary-handles.js +22 -0
- package/dist/view/ui/bounds.d.ts +53 -0
- package/dist/view/ui/bounds.js +149 -0
- package/dist/view/ui/box-selection.d.ts +1 -0
- package/dist/view/ui/box-selection.js +83 -0
- package/dist/view/ui/handle-test.d.ts +1 -0
- package/dist/view/ui/handle-test.js +437 -0
- package/dist/view/ui/handle-thinning.d.ts +122 -0
- package/dist/view/ui/handle-thinning.js +430 -0
- package/dist/view/ui/handles.d.ts +25 -0
- package/dist/view/ui/handles.js +673 -0
- package/dist/view/ui/helper.d.ts +19 -0
- package/dist/view/ui/helper.js +76 -0
- package/dist/view/ui/index.d.ts +15 -0
- package/dist/view/ui/index.js +15 -0
- package/dist/view/ui/selection-scope.d.ts +25 -0
- package/dist/view/ui/selection-scope.js +34 -0
- package/dist/view/ui/selection-ui/bounding-box.d.ts +44 -0
- package/dist/view/ui/selection-ui/bounding-box.js +240 -0
- package/dist/view/ui/selection-ui/extension-registry.d.ts +76 -0
- package/dist/view/ui/selection-ui/extension-registry.js +78 -0
- package/dist/view/ui/selection-ui/index.d.ts +12 -0
- package/dist/view/ui/selection-ui/index.js +12 -0
- package/dist/view/ui/selection-ui/renderer.d.ts +29 -0
- package/dist/view/ui/selection-ui/renderer.js +227 -0
- package/dist/view/ui/selection-ui/types.d.ts +55 -0
- package/dist/view/ui/selection-ui/types.js +3 -0
- package/dist/view/ui/selection-ui-drawer.d.ts +52 -0
- package/dist/view/ui/selection-ui-drawer.js +329 -0
- package/dist/view/ui/tentative.d.ts +1 -0
- package/dist/view/ui/tentative.js +320 -0
- package/dist/view/viewport.d.ts +119 -0
- package/dist/view/viewport.js +254 -0
- package/package.json +113 -0
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the plugin system.
|
|
5
|
+
* core provides only simple types, and is extensible so that extension
|
|
6
|
+
* implementations can use their own source values.
|
|
7
|
+
*/
|
|
8
|
+
import type { Feature as GeoJSONFeature } from 'geojson';
|
|
9
|
+
import type { MapLibreGLDraw } from '../api/api.js';
|
|
10
|
+
import type { DragNormalizedEvent, KeyNormalizedEvent, MouseNormalizedEvent } from '../dispatcher/types.js';
|
|
11
|
+
import type { ModeFactory } from '../modes/handler.js';
|
|
12
|
+
import type { ScreenPoint } from '../shared/math/index.js';
|
|
13
|
+
import type { EventEmitter, EventMap } from '../shared/utils/event-emitter.js';
|
|
14
|
+
import type { AutoNameGenerator } from '../shared/utils/name-generator.js';
|
|
15
|
+
import type { Store } from '../store/store.js';
|
|
16
|
+
import type { Feature, Group, Layer, Mode, Selection, SelectionType, UpdateSource } from '../store/types.js';
|
|
17
|
+
import type { BoundingBoxCoords } from '../view/ui/selection-ui/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* What a mutation hook learns about the change that fired it: its source and its batch
|
|
20
|
+
*/
|
|
21
|
+
export interface MutationContext {
|
|
22
|
+
/** Source of the mutation (the source of the Store notification) */
|
|
23
|
+
source: UpdateSource;
|
|
24
|
+
/**
|
|
25
|
+
* Batch ID shared by the hooks fired for one Store notification (one transaction), so
|
|
26
|
+
* that a compound mutation can be grouped
|
|
27
|
+
*/
|
|
28
|
+
batchId?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* What a plugin gets in `onInstall`: the draw instance, the Store, and methods to read and
|
|
32
|
+
* change the document
|
|
33
|
+
*
|
|
34
|
+
* It is the only way a plugin reaches core. The host API of the instance is `draw`; the
|
|
35
|
+
* Store itself, for a plugin that works on the document directly, is `getStore()`.
|
|
36
|
+
*
|
|
37
|
+
* Each mutation method is one Store transaction, and its optional `source` becomes the source
|
|
38
|
+
* of the notification (`'local'` when omitted); inside `batch(fn)` the writes form one
|
|
39
|
+
* transaction with the source of the batch. The mutation methods ignore an id that no longer
|
|
40
|
+
* names anything (a plugin often reacts after a change, when a peer may already have deleted
|
|
41
|
+
* what it points at). While the Store is read-only they change nothing, like every other
|
|
42
|
+
* write.
|
|
43
|
+
*
|
|
44
|
+
* The spatial index that hit testing and box selection read is derived from the Store, so
|
|
45
|
+
* there is nothing to call after a mutation.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const plugin: Plugin = {
|
|
50
|
+
* name: 'tagger',
|
|
51
|
+
* onInstall(ctx) {
|
|
52
|
+
* ctx.on('feature.create', ({ feature }) => {
|
|
53
|
+
* ctx.updateFeature(feature.id, { properties: { tag: 'new' } }, 'tagger');
|
|
54
|
+
* });
|
|
55
|
+
* },
|
|
56
|
+
* };
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export interface PluginContext {
|
|
60
|
+
/**
|
|
61
|
+
* Reference to the MapLibreGLDraw instance itself.
|
|
62
|
+
*
|
|
63
|
+
* Used when calling extension point APIs such as registerFeatureHandler /
|
|
64
|
+
* registerMode / addOverlayRenderer, or public APIs that are not exposed on
|
|
65
|
+
* PluginContext. draw.getPluginApi<T>(name) can also be used to look up
|
|
66
|
+
* another plugin.
|
|
67
|
+
*
|
|
68
|
+
* Design guideline: dependencies between plugins should be passed through the
|
|
69
|
+
* constructor (explicit wiring). Lookup via draw.getPluginApi is a fallback.
|
|
70
|
+
*/
|
|
71
|
+
draw: MapLibreGLDraw;
|
|
72
|
+
/**
|
|
73
|
+
* The Store of this draw instance, with its write methods
|
|
74
|
+
*
|
|
75
|
+
* For a plugin that works on the document directly. The writes go through the same read-only gate
|
|
76
|
+
* as every other write (they return false while read-only) and are notified to every
|
|
77
|
+
* subscriber. Anything else goes through the methods below or the public API of `draw`.
|
|
78
|
+
*/
|
|
79
|
+
getStore(): Store;
|
|
80
|
+
/**
|
|
81
|
+
* The automatic naming of this draw instance (the `autoName` option)
|
|
82
|
+
*
|
|
83
|
+
* A plugin that creates a feature, a layer or a group without a name the user typed names it
|
|
84
|
+
* here, so every generated name takes its words from the host's one naming configuration.
|
|
85
|
+
*/
|
|
86
|
+
readonly autoNameGenerator: AutoNameGenerator;
|
|
87
|
+
/** Returns the feature with this ID, or undefined */
|
|
88
|
+
getFeature(id: string): Feature | undefined;
|
|
89
|
+
/** Every feature, in no particular order */
|
|
90
|
+
getAllFeatures(): Feature[];
|
|
91
|
+
/** Returns the group with this ID, or undefined */
|
|
92
|
+
getGroup(id: string): Group | undefined;
|
|
93
|
+
/** Every group, in no particular order */
|
|
94
|
+
getAllGroups(): Group[];
|
|
95
|
+
/** Returns the layer with this ID, or undefined */
|
|
96
|
+
getLayer(id: string): Layer | undefined;
|
|
97
|
+
/** Every layer, in no particular order */
|
|
98
|
+
getAllLayers(): Layer[];
|
|
99
|
+
/** Returns the current selection */
|
|
100
|
+
getSelection(): Selection;
|
|
101
|
+
/** The IDs of the selected features (empty when groups or layers are selected) */
|
|
102
|
+
getSelectedIds(): string[];
|
|
103
|
+
/** Order of the items (features / groups) inside the active layer */
|
|
104
|
+
getLayerOrder(): readonly string[];
|
|
105
|
+
/**
|
|
106
|
+
* Stacking order (back to front)
|
|
107
|
+
*
|
|
108
|
+
* Returns the stacking order of the Store as is. This is a different thing
|
|
109
|
+
* from `getLayerOrder` (the order inside the active layer). The order may
|
|
110
|
+
* also contain IDs of datasets, so a caller that needs only
|
|
111
|
+
* layers should narrow it down to the ones `getLayer` can resolve.
|
|
112
|
+
*/
|
|
113
|
+
getLayerIds(): readonly string[];
|
|
114
|
+
/** The current mode */
|
|
115
|
+
getMode(): Mode;
|
|
116
|
+
/**
|
|
117
|
+
* Adds GeoJSON features to the active layer
|
|
118
|
+
*
|
|
119
|
+
* A feature keeps its `id` when it has one, and gets a new ID otherwise. The geometry
|
|
120
|
+
* becomes the type and the coordinates, and the properties are kept as they are.
|
|
121
|
+
*
|
|
122
|
+
* @returns The IDs of the added features, in the order given; an empty list when the
|
|
123
|
+
* Store is read-only and nothing was added
|
|
124
|
+
*/
|
|
125
|
+
addFeatures(features: GeoJSONFeature[], source?: UpdateSource): string[];
|
|
126
|
+
/**
|
|
127
|
+
* Updates a feature: the fields given replace the old ones, and `properties` is merged key
|
|
128
|
+
* by key into the old properties
|
|
129
|
+
*/
|
|
130
|
+
updateFeature(id: string, feature: Partial<Feature>, source?: UpdateSource): void;
|
|
131
|
+
/** Deletes features, taking them out of the selection and of their group and layer */
|
|
132
|
+
deleteFeatures(ids: string[], source?: UpdateSource): void;
|
|
133
|
+
/**
|
|
134
|
+
* Creates a group (`visible` and `locked` default to true and false, and `featureIds` to
|
|
135
|
+
* an empty list)
|
|
136
|
+
*/
|
|
137
|
+
createGroup(group: Group, source?: UpdateSource): void;
|
|
138
|
+
/** Updates a group */
|
|
139
|
+
updateGroup(id: string, group: Partial<Group>, source?: UpdateSource): void;
|
|
140
|
+
/** Deletes a group; its members stay, in the group's place in the layer */
|
|
141
|
+
deleteGroup(id: string, source?: UpdateSource): void;
|
|
142
|
+
/**
|
|
143
|
+
* Adds a feature to a group, at `index` of its members or at the end
|
|
144
|
+
*
|
|
145
|
+
* The feature leaves the group or the layer order it was in, and moves to the layer of the
|
|
146
|
+
* group.
|
|
147
|
+
*/
|
|
148
|
+
addFeatureToGroup(groupId: string, featureId: string, index?: number, source?: UpdateSource): void;
|
|
149
|
+
/**
|
|
150
|
+
* Takes a feature out of a group; it is placed in the layer right in front of the group
|
|
151
|
+
*/
|
|
152
|
+
removeFeatureFromGroup(groupId: string, featureId: string, source?: UpdateSource): void;
|
|
153
|
+
/** The ID of the group the feature belongs to, or undefined */
|
|
154
|
+
findGroupForFeature(featureId: string): string | undefined;
|
|
155
|
+
/**
|
|
156
|
+
* Creates a layer (`visible`, `locked` and `opacity` default to true, false and 1, and
|
|
157
|
+
* `order` to an empty list)
|
|
158
|
+
*/
|
|
159
|
+
createLayer(layer: Layer, source?: UpdateSource): void;
|
|
160
|
+
/** Updates a layer */
|
|
161
|
+
updateLayer(id: string, updates: Partial<Layer>, source?: UpdateSource): void;
|
|
162
|
+
/** Deletes a layer together with its features and groups */
|
|
163
|
+
deleteLayer(id: string, source?: UpdateSource): void;
|
|
164
|
+
/** Appends an item to the order of a layer, when the layer does not list it yet */
|
|
165
|
+
addToLayer(layerId: string, featureId: string, source?: UpdateSource): void;
|
|
166
|
+
/** Removes an item from the order of a layer */
|
|
167
|
+
removeFromLayer(layerId: string, featureId: string, source?: UpdateSource): void;
|
|
168
|
+
/** The ID of the layer whose order lists this feature or group, or undefined */
|
|
169
|
+
findLayerForFeature(featureId: string): string | undefined;
|
|
170
|
+
/**
|
|
171
|
+
* Moves a feature or a group to another layer, at `targetIndex` of its order or at the
|
|
172
|
+
* front
|
|
173
|
+
*
|
|
174
|
+
* A feature leaves its group. The members of a moved group move with it.
|
|
175
|
+
*/
|
|
176
|
+
moveItemToLayer(itemId: string, targetLayerId: string, targetIndex?: number, source?: UpdateSource): void;
|
|
177
|
+
/**
|
|
178
|
+
* Replaces the order of the items (features and groups) inside a layer, from the back
|
|
179
|
+
*
|
|
180
|
+
* Not the stacking order of the layers, which `draw.setLayerOrder` changes. A layer ID that
|
|
181
|
+
* names no layer does nothing.
|
|
182
|
+
*
|
|
183
|
+
* @param layerId the ID of the layer whose items are reordered
|
|
184
|
+
* @param order the IDs of the items of the layer, from the back
|
|
185
|
+
*/
|
|
186
|
+
setLayerItemOrder(layerId: string, order: string[], source?: UpdateSource): void;
|
|
187
|
+
/** Replaces the selection and tells the current mode about it */
|
|
188
|
+
setSelection(type: SelectionType | null, ids: string[], source?: UpdateSource): void;
|
|
189
|
+
/**
|
|
190
|
+
* Emits an event of the draw instance to every subscriber, the host included (for a plugin
|
|
191
|
+
* that performs an operation core would announce)
|
|
192
|
+
*/
|
|
193
|
+
emit<K extends keyof EventMap>(event: K, data: EventMap[K]): void;
|
|
194
|
+
/**
|
|
195
|
+
* Subscribes to an event of the draw instance ({@link EventMap} names them)
|
|
196
|
+
*
|
|
197
|
+
* @returns the function that unsubscribes the handler (the same as calling `off`)
|
|
198
|
+
*/
|
|
199
|
+
on<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): () => void;
|
|
200
|
+
/** Unsubscribes a handler */
|
|
201
|
+
off<K extends keyof EventMap>(event: K, handler: (data: EventMap[K]) => void): void;
|
|
202
|
+
/**
|
|
203
|
+
* Group several mutations into a single transaction
|
|
204
|
+
*/
|
|
205
|
+
batch<T>(fn: () => T): T;
|
|
206
|
+
/**
|
|
207
|
+
* Changes the mode
|
|
208
|
+
*
|
|
209
|
+
* @returns whether the mode is `mode` after the call; false when it was refused (a name
|
|
210
|
+
* with no registered mode, a mode other than select while the interaction lock is on, or
|
|
211
|
+
* a mode that writes features while no layer can be written), and nothing changed
|
|
212
|
+
*/
|
|
213
|
+
setMode(mode: Mode): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* Tells the current mode that the document changed under it (a change applied from outside),
|
|
216
|
+
* so that it can drop state that no longer holds
|
|
217
|
+
*/
|
|
218
|
+
notifyStateReset(): void;
|
|
219
|
+
/**
|
|
220
|
+
* Undo the last vertex placed while drawing
|
|
221
|
+
* @returns true when it succeeded
|
|
222
|
+
*/
|
|
223
|
+
undoVertex(): boolean;
|
|
224
|
+
/**
|
|
225
|
+
* Restore the undone vertex
|
|
226
|
+
* @returns true when it succeeded
|
|
227
|
+
*/
|
|
228
|
+
redoVertex(): boolean;
|
|
229
|
+
/**
|
|
230
|
+
* Tell core that the extent of every feature of this type changed for a reason the
|
|
231
|
+
* Store does not see
|
|
232
|
+
*
|
|
233
|
+
* The spatial index follows the Store by itself: every create, update and delete, from
|
|
234
|
+
* whatever path, re-derives the entry of that feature. A custom feature type whose
|
|
235
|
+
* bounding box calculator (registerFeatureHandler) depends on something outside the
|
|
236
|
+
* Store, such as a font that arrives after the feature was drawn, calls this when that
|
|
237
|
+
* thing changes. The features of the type are then re-measured with the same calculator.
|
|
238
|
+
*
|
|
239
|
+
* @param type the feature type
|
|
240
|
+
*/
|
|
241
|
+
invalidateFeatures(type: string): void;
|
|
242
|
+
/**
|
|
243
|
+
* Maps an anchor (longitude / latitude on the ground) to screen coordinates with the same
|
|
244
|
+
* elevation and matrix as the vertex shader
|
|
245
|
+
*
|
|
246
|
+
* @returns null when the terrain is disabled or no frame has been drawn yet (fall back to
|
|
247
|
+
* `map.project`)
|
|
248
|
+
*/
|
|
249
|
+
projectAnchor(lng: number, lat: number): ScreenPoint | null;
|
|
250
|
+
/**
|
|
251
|
+
* The ground elevation of an anchor in meters (0 when the terrain is disabled)
|
|
252
|
+
*
|
|
253
|
+
* Inside the rendered terrain tiles it is the same value as `map.queryTerrainElevation`, so
|
|
254
|
+
* a symbol placed with it sits on the ground the map draws.
|
|
255
|
+
*/
|
|
256
|
+
anchorElevationMeters(lng: number, lat: number): number;
|
|
257
|
+
/**
|
|
258
|
+
* The generation of the anchor elevations (it advances when the DEM coverage changes; a
|
|
259
|
+
* plugin that baked elevations rebuilds when it moves)
|
|
260
|
+
*/
|
|
261
|
+
getAnchorElevationGeneration(): number;
|
|
262
|
+
/**
|
|
263
|
+
* The selection bounding box of a feature, including the custom feature types registered in
|
|
264
|
+
* this draw instance (null when it cannot be computed)
|
|
265
|
+
*/
|
|
266
|
+
computeBoundingBox(feature: Feature): BoundingBoxCoords | null;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* What the `drag:start` hook receives
|
|
270
|
+
*/
|
|
271
|
+
export interface DragStartData {
|
|
272
|
+
/** The IDs of the features being dragged */
|
|
273
|
+
featureIds: string[];
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* What the `drag:end` hook receives
|
|
277
|
+
*/
|
|
278
|
+
export interface DragEndData {
|
|
279
|
+
/** The IDs of the features that were dragged */
|
|
280
|
+
featureIds: string[];
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* The hooks a plugin gives in {@link Plugin.hooks}, to react to changes after they happen
|
|
284
|
+
*
|
|
285
|
+
* The mutation hooks (feature / group / layer / selection) are fired from the change
|
|
286
|
+
* notification of the Store, after the change, for every write whatever made it (the public
|
|
287
|
+
* API, a drawing mode, a drag, the Delete key, import, a plugin, a change applied from outside
|
|
288
|
+
* to a replaced Store). The hooks of one notification (one transaction) share the source and the
|
|
289
|
+
* batchId of their MutationContext. The intermediate updates of an edit in progress are not
|
|
290
|
+
* reported; the committing update that follows them is. A write the Store refuses (read-only)
|
|
291
|
+
* fires nothing.
|
|
292
|
+
*
|
|
293
|
+
* The drag hooks are fired by the drag of the select mode, around a move, resize, rotation,
|
|
294
|
+
* vertex or radius drag (not around the drag of an auxiliary handle).
|
|
295
|
+
*
|
|
296
|
+
* There are no before hooks: a hook cannot veto or rewrite a change.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```ts
|
|
300
|
+
* const hooks: Partial<Hooks> = {
|
|
301
|
+
* 'feature:afterUpdate': (updated, original, ctx) => {
|
|
302
|
+
* if (ctx.source === 'remote') return;
|
|
303
|
+
* console.log(`${updated.length} features changed in batch ${ctx.batchId}`);
|
|
304
|
+
* },
|
|
305
|
+
* };
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
export interface Hooks {
|
|
309
|
+
/** Features were created */
|
|
310
|
+
'feature:afterCreate'?: (features: Feature[], ctx: MutationContext) => void;
|
|
311
|
+
/**
|
|
312
|
+
* Features were updated (`original[i]` is `updated[i]` before the change)
|
|
313
|
+
*/
|
|
314
|
+
'feature:afterUpdate'?: (updated: Feature[], original: Feature[], ctx: MutationContext) => void;
|
|
315
|
+
/** Features were deleted (as they were when they were deleted) */
|
|
316
|
+
'feature:afterDelete'?: (features: Feature[], ctx: MutationContext) => void;
|
|
317
|
+
/** A group was created (fired once per group) */
|
|
318
|
+
'group:afterCreate'?: (group: Group, ctx: MutationContext) => void;
|
|
319
|
+
/** A group was updated (a reorder with `reorderInGroup` does not fire it) */
|
|
320
|
+
'group:afterUpdate'?: (updated: Group, original: Group, ctx: MutationContext) => void;
|
|
321
|
+
/** A group was deleted, explicitly or because its last member left */
|
|
322
|
+
'group:afterDelete'?: (group: Group, ctx: MutationContext) => void;
|
|
323
|
+
/** A layer was created (fired once per layer) */
|
|
324
|
+
'layer:afterCreate'?: (layer: Layer, ctx: MutationContext) => void;
|
|
325
|
+
/** A layer was updated (a reorder with `reorderInLayer` does not fire it) */
|
|
326
|
+
'layer:afterUpdate'?: (updated: Layer, original: Layer, ctx: MutationContext) => void;
|
|
327
|
+
/** A layer was deleted */
|
|
328
|
+
'layer:afterDelete'?: (layer: Layer, ctx: MutationContext) => void;
|
|
329
|
+
/** The selection changed (the IDs now selected and those selected before) */
|
|
330
|
+
'selection:afterChange'?: (newIds: string[], previousIds: string[], ctx: MutationContext) => void;
|
|
331
|
+
/** A drag of the select mode started */
|
|
332
|
+
'drag:start'?: (data: DragStartData, ctx: MutationContext) => void;
|
|
333
|
+
/** A drag of the select mode ended, committed or cancelled */
|
|
334
|
+
'drag:end'?: (data: DragEndData, ctx: MutationContext) => void;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Mouse move event (hover)
|
|
338
|
+
*/
|
|
339
|
+
export interface HoverEvent {
|
|
340
|
+
/** Geographic coordinates */
|
|
341
|
+
lngLat: {
|
|
342
|
+
lng: number;
|
|
343
|
+
lat: number;
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Mouse leave event
|
|
348
|
+
*
|
|
349
|
+
* Indicates that the mouse has left the map (no additional data).
|
|
350
|
+
*/
|
|
351
|
+
export type MouseLeaveEvent = Record<string, never>;
|
|
352
|
+
/**
|
|
353
|
+
* A plugin: an object that extends a draw instance, registered with `draw.addPlugin`
|
|
354
|
+
*
|
|
355
|
+
* Only `name` is required. `onInstall` receives the {@link PluginContext}, through which the
|
|
356
|
+
* plugin reads and changes the document and reaches the extension points of the instance
|
|
357
|
+
* (`registerFeatureHandler`, `registerMode`, `addOverlayRenderer`). `hooks` reacts to changes
|
|
358
|
+
* after they happen, `modes` adds custom modes, and `api` is what other code gets from
|
|
359
|
+
* `draw.getPluginApi(name)`. The other members let a plugin take part in the input handling
|
|
360
|
+
* of the select mode.
|
|
361
|
+
*
|
|
362
|
+
* `addPlugin` returns the function that unregisters the plugin: its modes are removed (the
|
|
363
|
+
* select mode is entered first when one of them is the current mode) and `onUninstall` runs.
|
|
364
|
+
* `destroy()` of the draw instance unregisters every plugin. A plugin whose name is already
|
|
365
|
+
* registered is skipped with a warning.
|
|
366
|
+
*
|
|
367
|
+
* @example
|
|
368
|
+
* ```ts
|
|
369
|
+
* import type { Plugin, PluginContext } from '@sakuzu/maplibre-gl-draw';
|
|
370
|
+
*
|
|
371
|
+
* function createCounterPlugin(): Plugin {
|
|
372
|
+
* let count = 0;
|
|
373
|
+
* return {
|
|
374
|
+
* name: 'counter',
|
|
375
|
+
* hooks: {
|
|
376
|
+
* 'feature:afterCreate': (features) => {
|
|
377
|
+
* count += features.length;
|
|
378
|
+
* },
|
|
379
|
+
* },
|
|
380
|
+
* api: { getCount: () => count },
|
|
381
|
+
* onInstall(ctx: PluginContext) {
|
|
382
|
+
* count = ctx.getAllFeatures().length;
|
|
383
|
+
* },
|
|
384
|
+
* };
|
|
385
|
+
* }
|
|
386
|
+
*
|
|
387
|
+
* const remove = draw.addPlugin(createCounterPlugin());
|
|
388
|
+
* draw.getPluginApi<{ getCount(): number }>('counter')?.getCount();
|
|
389
|
+
* remove();
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
export interface Plugin {
|
|
393
|
+
/** The name of the plugin, unique within the draw instance */
|
|
394
|
+
readonly name: string;
|
|
395
|
+
/**
|
|
396
|
+
* Called when the plugin is registered, with the context it works through
|
|
397
|
+
*/
|
|
398
|
+
onInstall?(context: PluginContext): void;
|
|
399
|
+
/**
|
|
400
|
+
* Called when the plugin is unregistered, or when the draw instance is destroyed; release
|
|
401
|
+
* what `onInstall` acquired here
|
|
402
|
+
*/
|
|
403
|
+
onUninstall?(): void;
|
|
404
|
+
/**
|
|
405
|
+
* The hooks that react to changes after they happen
|
|
406
|
+
*/
|
|
407
|
+
hooks?: Partial<Hooks>;
|
|
408
|
+
/**
|
|
409
|
+
* Definitions of custom modes (registered with the plugin and removed when it is
|
|
410
|
+
* unregistered)
|
|
411
|
+
*/
|
|
412
|
+
modes?: Record<string, ModeFactory>;
|
|
413
|
+
/**
|
|
414
|
+
* What the plugin offers to other code, returned by `draw.getPluginApi(name)`
|
|
415
|
+
*/
|
|
416
|
+
api?: Record<string, unknown>;
|
|
417
|
+
/**
|
|
418
|
+
* Global keyboard handler
|
|
419
|
+
*
|
|
420
|
+
* Called before the mode handler.
|
|
421
|
+
* Returning true "consumes" the event and it is not passed to the mode handler.
|
|
422
|
+
* Returning false passes the event on to the mode handler.
|
|
423
|
+
*
|
|
424
|
+
* @param event Normalized keyboard event
|
|
425
|
+
* @returns true when the event was consumed
|
|
426
|
+
*/
|
|
427
|
+
onKeyDown?(event: KeyNormalizedEvent): boolean;
|
|
428
|
+
/**
|
|
429
|
+
* Global mouse move handler
|
|
430
|
+
*
|
|
431
|
+
* Called when the mouse moves over the map (not called while dragging; moves
|
|
432
|
+
* during a drag are received by onDragMove). It is also passed to the mode
|
|
433
|
+
* handler, so there is no notion of consuming the event.
|
|
434
|
+
*
|
|
435
|
+
* @param event Normalized mouse move event
|
|
436
|
+
*/
|
|
437
|
+
onMouseMove?(event: MouseNormalizedEvent): void;
|
|
438
|
+
/**
|
|
439
|
+
* Global drag move handler
|
|
440
|
+
*
|
|
441
|
+
* Called when the pointer moves during a drag (the counterpart of
|
|
442
|
+
* onMouseMove; while dragging, dragmove flows instead of mousemove, so a
|
|
443
|
+
* plugin that wants to see both implements both). It is also passed to the
|
|
444
|
+
* mode handler, so there is no notion of consuming the event.
|
|
445
|
+
*
|
|
446
|
+
* @param event Normalized drag event
|
|
447
|
+
*/
|
|
448
|
+
onDragMove?(event: DragNormalizedEvent): void;
|
|
449
|
+
/**
|
|
450
|
+
* Global mouse leave handler
|
|
451
|
+
*
|
|
452
|
+
* Called when the mouse leaves the map.
|
|
453
|
+
*/
|
|
454
|
+
onMouseLeave?(): void;
|
|
455
|
+
/**
|
|
456
|
+
* Filtering of selection candidates
|
|
457
|
+
*
|
|
458
|
+
* Called when features are selected, to decide the final selection targets.
|
|
459
|
+
* Receives an array of candidate IDs and returns the filtered array.
|
|
460
|
+
*
|
|
461
|
+
* @param candidateIds Array of candidate feature IDs
|
|
462
|
+
* @returns Filtered array of feature IDs
|
|
463
|
+
*/
|
|
464
|
+
filterSelection?(candidateIds: string[]): string[];
|
|
465
|
+
/**
|
|
466
|
+
* Called when an already selected feature is clicked
|
|
467
|
+
*
|
|
468
|
+
* Called in SelectMode when a feature that is already selected is clicked
|
|
469
|
+
* again.
|
|
470
|
+
* Returning true indicates that the plugin has handled the event.
|
|
471
|
+
*
|
|
472
|
+
* @param featureId ID of the clicked feature
|
|
473
|
+
* @returns true when the plugin handled it
|
|
474
|
+
*/
|
|
475
|
+
onFeatureClick?(featureId: string): boolean;
|
|
476
|
+
/**
|
|
477
|
+
* Called when a feature is double-clicked
|
|
478
|
+
*
|
|
479
|
+
* Called in SelectMode when a feature is double-clicked.
|
|
480
|
+
* Returning true indicates that the plugin has handled the event.
|
|
481
|
+
*
|
|
482
|
+
* @param featureId ID of the double-clicked feature
|
|
483
|
+
* @returns true when the plugin handled it
|
|
484
|
+
*/
|
|
485
|
+
onFeatureDoubleClick?(featureId: string): boolean;
|
|
486
|
+
/**
|
|
487
|
+
* Whether the plugin is in the middle of an interaction
|
|
488
|
+
*
|
|
489
|
+
* Returns true when the plugin is performing an exclusive operation such as
|
|
490
|
+
* text input or inline editing.
|
|
491
|
+
* The mode handler looks at this state and skips keyboard shortcuts and mouse
|
|
492
|
+
* operations.
|
|
493
|
+
*/
|
|
494
|
+
isInteracting?(): boolean;
|
|
495
|
+
/**
|
|
496
|
+
* Complete the interaction
|
|
497
|
+
*
|
|
498
|
+
* Called when the plugin's operation should be completed normally, such as on
|
|
499
|
+
* a mode switch or when a feature is deleted.
|
|
500
|
+
*/
|
|
501
|
+
finishInteraction?(): void;
|
|
502
|
+
/**
|
|
503
|
+
* Cancel the interaction
|
|
504
|
+
*/
|
|
505
|
+
cancelInteraction?(): void;
|
|
506
|
+
/**
|
|
507
|
+
* Get the DOM element used for the interaction
|
|
508
|
+
*
|
|
509
|
+
* Returns the DOM element that the plugin displays as an overlay on the map.
|
|
510
|
+
* The mode handler skips clicks inside this element.
|
|
511
|
+
*/
|
|
512
|
+
getInteractionContainer?(): HTMLElement | null;
|
|
513
|
+
/**
|
|
514
|
+
* Called after a feature is created
|
|
515
|
+
*
|
|
516
|
+
* Called right after a feature has been created in a drawing mode and the
|
|
517
|
+
* transition to SelectMode has happened.
|
|
518
|
+
* The plugin can automatically start an interaction (for example, editing
|
|
519
|
+
* its name).
|
|
520
|
+
*
|
|
521
|
+
* @param featureId ID of the created feature
|
|
522
|
+
* @param featureType Type of the feature
|
|
523
|
+
*/
|
|
524
|
+
onFeatureCreated?(featureId: string, featureType: string): void;
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Re-export of the EventEmitter types
|
|
528
|
+
*/
|
|
529
|
+
export type { EventEmitter, EventMap };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constant definitions
|
|
3
|
+
*
|
|
4
|
+
* Property prefixes and UI configuration constants.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Keys of the internal meta properties
|
|
8
|
+
*
|
|
9
|
+
* createdZoom/rotation/scale are stored in feature.properties and round-trip through GeoJSON
|
|
10
|
+
* with the maplibre-gl-draw: prefix (this library's own data, required to reproduce the
|
|
11
|
+
* rendering).
|
|
12
|
+
*/
|
|
13
|
+
export declare const INTERNAL_PROPERTIES: {
|
|
14
|
+
/** Zoom level at creation time */
|
|
15
|
+
readonly CREATED_ZOOM: "createdZoom";
|
|
16
|
+
/** Rotation angle (degrees) */
|
|
17
|
+
readonly ROTATION: "rotation";
|
|
18
|
+
/** Scale */
|
|
19
|
+
readonly SCALE: "scale";
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The handle of the selection UI being dragged
|
|
23
|
+
*
|
|
24
|
+
* `resize-*` are the resize handles by compass direction (the corners, and the edge midpoints
|
|
25
|
+
* that a custom feature type can add), `rotate` the rotate handle, `vertex` and `midpoint`
|
|
26
|
+
* the handles of a line or a polygon, and `radius` and `center` those of a Circle.
|
|
27
|
+
*/
|
|
28
|
+
export type HandleType = 'resize-nw' | 'resize-n' | 'resize-ne' | 'resize-e' | 'resize-se' | 'resize-s' | 'resize-sw' | 'resize-w' | 'rotate' | 'vertex' | 'midpoint' | 'radius' | 'center';
|
|
29
|
+
/**
|
|
30
|
+
* Handle positions
|
|
31
|
+
*/
|
|
32
|
+
export declare const HANDLE_POSITIONS: {
|
|
33
|
+
readonly RESIZE: readonly ["nw", "n", "ne", "e", "se", "s", "sw", "w"];
|
|
34
|
+
readonly ROTATE: "rotate";
|
|
35
|
+
readonly VERTEX: "vertex";
|
|
36
|
+
readonly MIDPOINT: "midpoint";
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Cursor styles
|
|
40
|
+
*/
|
|
41
|
+
export declare const CURSOR_STYLES: {
|
|
42
|
+
readonly DEFAULT: "default";
|
|
43
|
+
readonly POINTER: "pointer";
|
|
44
|
+
readonly MOVE: "move";
|
|
45
|
+
readonly GRAB: "grab";
|
|
46
|
+
readonly GRABBING: "grabbing";
|
|
47
|
+
readonly CROSSHAIR: "crosshair";
|
|
48
|
+
readonly TEXT: "text";
|
|
49
|
+
readonly RESIZE_NW: "nw-resize";
|
|
50
|
+
readonly RESIZE_N: "n-resize";
|
|
51
|
+
readonly RESIZE_NE: "ne-resize";
|
|
52
|
+
readonly RESIZE_E: "e-resize";
|
|
53
|
+
readonly RESIZE_SE: "se-resize";
|
|
54
|
+
readonly RESIZE_S: "s-resize";
|
|
55
|
+
readonly RESIZE_SW: "sw-resize";
|
|
56
|
+
readonly RESIZE_W: "w-resize";
|
|
57
|
+
readonly ROTATE: "grab";
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Mouse event states
|
|
61
|
+
*/
|
|
62
|
+
export declare const MOUSE_STATE: {
|
|
63
|
+
readonly IDLE: "idle";
|
|
64
|
+
readonly HOVER: "hover";
|
|
65
|
+
readonly DRAGGING: "dragging";
|
|
66
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2026 SAKAIDA Atsushi
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
/**
|
|
4
|
+
* Constant definitions
|
|
5
|
+
*
|
|
6
|
+
* Property prefixes and UI configuration constants.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Keys of the internal meta properties
|
|
10
|
+
*
|
|
11
|
+
* createdZoom/rotation/scale are stored in feature.properties and round-trip through GeoJSON
|
|
12
|
+
* with the maplibre-gl-draw: prefix (this library's own data, required to reproduce the
|
|
13
|
+
* rendering).
|
|
14
|
+
*/
|
|
15
|
+
export const INTERNAL_PROPERTIES = {
|
|
16
|
+
/** Zoom level at creation time */
|
|
17
|
+
CREATED_ZOOM: 'createdZoom',
|
|
18
|
+
/** Rotation angle (degrees) */
|
|
19
|
+
ROTATION: 'rotation',
|
|
20
|
+
/** Scale */
|
|
21
|
+
SCALE: 'scale',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Handle positions
|
|
25
|
+
*/
|
|
26
|
+
export const HANDLE_POSITIONS = {
|
|
27
|
+
RESIZE: ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'],
|
|
28
|
+
ROTATE: 'rotate',
|
|
29
|
+
VERTEX: 'vertex',
|
|
30
|
+
MIDPOINT: 'midpoint',
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Cursor styles
|
|
34
|
+
*/
|
|
35
|
+
export const CURSOR_STYLES = {
|
|
36
|
+
DEFAULT: 'default',
|
|
37
|
+
POINTER: 'pointer',
|
|
38
|
+
MOVE: 'move',
|
|
39
|
+
GRAB: 'grab',
|
|
40
|
+
GRABBING: 'grabbing',
|
|
41
|
+
CROSSHAIR: 'crosshair',
|
|
42
|
+
TEXT: 'text',
|
|
43
|
+
RESIZE_NW: 'nw-resize',
|
|
44
|
+
RESIZE_N: 'n-resize',
|
|
45
|
+
RESIZE_NE: 'ne-resize',
|
|
46
|
+
RESIZE_E: 'e-resize',
|
|
47
|
+
RESIZE_SE: 'se-resize',
|
|
48
|
+
RESIZE_S: 's-resize',
|
|
49
|
+
RESIZE_SW: 'sw-resize',
|
|
50
|
+
RESIZE_W: 'w-resize',
|
|
51
|
+
ROTATE: 'grab',
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Mouse event states
|
|
55
|
+
*/
|
|
56
|
+
export const MOUSE_STATE = {
|
|
57
|
+
IDLE: 'idle',
|
|
58
|
+
HOVER: 'hover',
|
|
59
|
+
DRAGGING: 'dragging',
|
|
60
|
+
};
|