refactor(store,selection)!: Remove selectedNodesBbox from store
# What's changed? * Remove selectedNodesBbox from store state * Will be handled internally by NodesSelection component
This commit is contained in:
@@ -4,7 +4,7 @@ import { getRectOfNodes } from '../../utils'
|
|||||||
|
|
||||||
const { emits, setState, viewport, getSelectedNodes, snapToGrid, snapGrid, updateNodePosition, noPanClassName } = $(useVueFlow())
|
const { emits, setState, viewport, getSelectedNodes, snapToGrid, snapGrid, updateNodePosition, noPanClassName } = $(useVueFlow())
|
||||||
|
|
||||||
const el = templateRef<HTMLDivElement>('el', null)
|
const el = ref()
|
||||||
|
|
||||||
useDrag({
|
useDrag({
|
||||||
el,
|
el,
|
||||||
@@ -12,8 +12,8 @@ useDrag({
|
|||||||
emits.selectionDragStart({ event: event.sourceEvent, nodes: getSelectedNodes })
|
emits.selectionDragStart({ event: event.sourceEvent, nodes: getSelectedNodes })
|
||||||
},
|
},
|
||||||
onDrag(event, { dx, dy }) {
|
onDrag(event, { dx, dy }) {
|
||||||
emits.selectionDrag({ event: event.sourceEvent, nodes: getSelectedNodes })
|
|
||||||
updateNodePosition({ diff: { x: dx, y: dy } })
|
updateNodePosition({ diff: { x: dx, y: dy } })
|
||||||
|
emits.selectionDrag({ event: event.sourceEvent, nodes: getSelectedNodes })
|
||||||
},
|
},
|
||||||
onStop(event) {
|
onStop(event) {
|
||||||
emits.selectionDragStop({ event: event.sourceEvent, nodes: getSelectedNodes })
|
emits.selectionDragStop({ event: event.sourceEvent, nodes: getSelectedNodes })
|
||||||
@@ -29,14 +29,6 @@ const innerStyle = computed(() => ({
|
|||||||
left: `${selectedNodesBBox.x}px`,
|
left: `${selectedNodesBBox.x}px`,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const transform = computed(() => `translate(${viewport.x}px,${viewport.y}px) scale(${viewport.zoom})`)
|
|
||||||
|
|
||||||
watch($$(selectedNodesBBox), (v) => {
|
|
||||||
setState({
|
|
||||||
selectedNodesBbox: v,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
const onContextMenu = (event: MouseEvent) => emits.selectionContextMenu({ event, nodes: getSelectedNodes })
|
const onContextMenu = (event: MouseEvent) => emits.selectionContextMenu({ event, nodes: getSelectedNodes })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -47,7 +39,11 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="vue-flow__nodesselection vue-flow__container" :class="noPanClassName" :style="{ transform }">
|
<div
|
||||||
|
class="vue-flow__nodesselection vue-flow__container"
|
||||||
|
:class="noPanClassName"
|
||||||
|
:style="{ transform: `translate(${viewport.x}px,${viewport.y}px) scale(${viewport.zoom})` }"
|
||||||
|
>
|
||||||
<div ref="el" class="vue-flow__nodesselection-rect" :style="innerStyle" @contextmenu="onContextMenu" />
|
<div ref="el" class="vue-flow__nodesselection-rect" :style="innerStyle" @contextmenu="onContextMenu" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ const defaultState = (): State => ({
|
|||||||
|
|
||||||
nodesSelectionActive: false,
|
nodesSelectionActive: false,
|
||||||
userSelectionActive: false,
|
userSelectionActive: false,
|
||||||
selectedNodesBbox: { x: 0, y: 0, width: 0, height: 0 },
|
|
||||||
|
|
||||||
defaultMarkerColor: '#b1b1b7',
|
defaultMarkerColor: '#b1b1b7',
|
||||||
connectionLineStyle: {},
|
connectionLineStyle: {},
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ export interface State extends Omit<FlowOptions, 'id' | 'modelValue'> {
|
|||||||
onlyRenderVisibleElements: boolean
|
onlyRenderVisibleElements: boolean
|
||||||
defaultPosition: [number, number]
|
defaultPosition: [number, number]
|
||||||
|
|
||||||
selectedNodesBbox: Rect
|
|
||||||
nodesSelectionActive: boolean
|
nodesSelectionActive: boolean
|
||||||
userSelectionActive: boolean
|
userSelectionActive: boolean
|
||||||
multiSelectionActive: boolean
|
multiSelectionActive: boolean
|
||||||
|
|||||||
Reference in New Issue
Block a user