From fdf9c438faaddf1bc3620a6a87925250fe4e03bd Mon Sep 17 00:00:00 2001 From: Dan Leech Date: Wed, 6 May 2026 15:03:03 +0100 Subject: [PATCH 1/2] Draw edit:started event emitted --- demo/js/draw.js | 6 +++++- plugins/beta/draw-ml/src/api/editFeature.js | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/demo/js/draw.js b/demo/js/draw.js index 68ccfb98..199f0366 100755 --- a/demo/js/draw.js +++ b/demo/js/draw.js @@ -34,7 +34,7 @@ const interactPlugin = createInteractPlugin({ layerId: 'stroke-inactive.cold', idProperty: 'id' }], - debug: true, + // debug: true, interactionModes: ['selectMarker', 'selectFeature'], // e.g. ['selectMarker'], ['selectFeature'], ['placeMarker'], or combinations multiSelect: true, contiguous: true, @@ -243,6 +243,10 @@ interactiveMap.on('draw:started', function (e) { interactPlugin.disable() }) +interactiveMap.on('edit:started', function (e) { + console.log('edit:started', e) +}) + interactiveMap.on('draw:created', function (e) { console.log('draw:created', e) interactiveMap.toggleButtonState('geometryActions', 'hidden', false) diff --git a/plugins/beta/draw-ml/src/api/editFeature.js b/plugins/beta/draw-ml/src/api/editFeature.js index 715ddb3a..1d4f9659 100644 --- a/plugins/beta/draw-ml/src/api/editFeature.js +++ b/plugins/beta/draw-ml/src/api/editFeature.js @@ -6,19 +6,24 @@ import { getSnapInstance } from '../utils/snapHelpers.js' * @param {string} featureId - ID of the feature to edit * @param {object} options - Options including snapLayers */ -export const editFeature = ({ appState, appConfig, mapState, pluginConfig, pluginState, mapProvider }, featureId, options = {}) => { +export const editFeature = ({ appState, appConfig, mapState, pluginConfig, pluginState, mapProvider, services }, featureId, options = {}) => { const { dispatch } = pluginState const { draw, map } = mapProvider + const { eventBus } = services if (!draw) { - return + return false } // Guard: feature must exist in draw before doing anything - if (!draw.get(featureId)) { - return + const existingFeature = draw.get(featureId) + if (!existingFeature) { + return false } + const editModeMap = { LineString: 'edit_line', Polygon: 'edit_polygon' } + eventBus.emit('edit:started', { mode: editModeMap[existingFeature.geometry.type] }) + // Determin snapLayers from pluginConfig or runtime config let snapLayers = null if (options.snapLayers === undefined) { From 8b9e9c967210b36fb55f701f2e74ba3205949595 Mon Sep 17 00:00:00 2001 From: Dan Leech Date: Wed, 6 May 2026 15:50:29 +0100 Subject: [PATCH 2/2] Event renamed --- demo/js/draw.js | 4 ++-- plugins/beta/draw-ml/src/api/editFeature.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/demo/js/draw.js b/demo/js/draw.js index 199f0366..55a24f9f 100755 --- a/demo/js/draw.js +++ b/demo/js/draw.js @@ -243,8 +243,8 @@ interactiveMap.on('draw:started', function (e) { interactPlugin.disable() }) -interactiveMap.on('edit:started', function (e) { - console.log('edit:started', e) +interactiveMap.on('draw:editstart', function (e) { + console.log('draw:editstart', e) }) interactiveMap.on('draw:created', function (e) { diff --git a/plugins/beta/draw-ml/src/api/editFeature.js b/plugins/beta/draw-ml/src/api/editFeature.js index 1d4f9659..da1dfadb 100644 --- a/plugins/beta/draw-ml/src/api/editFeature.js +++ b/plugins/beta/draw-ml/src/api/editFeature.js @@ -22,7 +22,7 @@ export const editFeature = ({ appState, appConfig, mapState, pluginConfig, plugi } const editModeMap = { LineString: 'edit_line', Polygon: 'edit_polygon' } - eventBus.emit('edit:started', { mode: editModeMap[existingFeature.geometry.type] }) + eventBus.emit('draw:editstart', { mode: editModeMap[existingFeature.geometry.type] }) // Determin snapLayers from pluginConfig or runtime config let snapLayers = null