chore: cleanup unused vars and remove setState usage

This commit is contained in:
braks
2022-08-30 22:16:10 +02:00
committed by Braks
parent 487c287090
commit a110cdcd03
4 changed files with 49 additions and 73 deletions
@@ -5,11 +5,15 @@ import { getConnectedEdges, getNodesInside } from '../../utils'
import SelectionRect from './SelectionRect.vue' import SelectionRect from './SelectionRect.vue'
import { getMousePosition } from './utils' import { getMousePosition } from './utils'
const { userSelectionActive, setState, getNodes, getEdges, viewport, addSelectedEdges, addSelectedNodes } = $(useVueFlow()) const { userSelectionActive, nodesSelectionActive, getNodes, getEdges, viewport, addSelectedEdges, addSelectedNodes } =
useVueFlow()
const el = templateRef('user-selection', null) const el = templateRef('user-selection', null)
let prevNodes = $ref(0) let prevNodes = $ref(0)
let prevEdges = $ref(0) let prevEdges = $ref(0)
const initialRect = () => ({ const initialRect = () => ({
width: 0, width: 0,
height: 0, height: 0,
@@ -27,9 +31,7 @@ const reset = () => {
prevNodes = 0 prevNodes = 0
prevEdges = 0 prevEdges = 0
setState({ userSelectionActive.value = false
userSelectionActive: false,
})
} }
const onMouseDown = (event: MouseEvent) => { const onMouseDown = (event: MouseEvent) => {
@@ -46,10 +48,8 @@ const onMouseDown = (event: MouseEvent) => {
draw: true, draw: true,
} }
setState({ userSelectionActive.value = true
userSelectionActive: true, nodesSelectionActive.value = true
nodesSelectionActive: false,
})
} }
const onMouseMove = (event: MouseEvent) => { const onMouseMove = (event: MouseEvent) => {
@@ -69,8 +69,8 @@ const onMouseMove = (event: MouseEvent) => {
height: Math.abs(mousePos.y - startY), height: Math.abs(mousePos.y - startY),
} }
const selectedNodes = getNodesInside(getNodes, rect, viewport) const selectedNodes = getNodesInside(getNodes.value, rect, viewport.value)
const selectedEdges = getConnectedEdges(selectedNodes, getEdges) const selectedEdges = getConnectedEdges(selectedNodes, getEdges.value)
rect = nextUserSelectRect rect = nextUserSelectRect
@@ -84,31 +84,23 @@ const onMouseMove = (event: MouseEvent) => {
const onMouseUp = () => { const onMouseUp = () => {
rect = initialRect() rect = initialRect()
setState({ nodesSelectionActive.value = prevNodes > 0
nodesSelectionActive: prevNodes > 0, userSelectionActive.value = false
userSelectionActive: false,
})
} }
const onMouseLeave = () => { const onMouseLeave = () => {
setState({ nodesSelectionActive.value = prevNodes > 0
nodesSelectionActive: prevNodes > 0,
})
reset() reset()
} }
onMounted(() => { useEventListener(el, 'mousedown', onMouseDown)
useEventListener(el, 'mousedown', onMouseDown) useEventListener(el, 'mousemove', onMouseMove)
useEventListener(el, 'mousemove', onMouseMove) useEventListener(el, 'click', onMouseUp)
useEventListener(el, 'click', onMouseUp) useEventListener(el, 'mouseup', onMouseUp)
useEventListener(el, 'mouseup', onMouseUp) useEventListener(el, 'mouseleave', onMouseLeave)
useEventListener(el, 'mouseleave', onMouseLeave)
})
onBeforeUnmount(() => { onBeforeUnmount(reset)
reset()
})
</script> </script>
<script lang="ts"> <script lang="ts">
@@ -5,28 +5,25 @@ import { NodesSelection, UserSelection } from '../../components'
const { const {
id, id,
edges,
deleteKeyCode, deleteKeyCode,
selectionKeyCode, selectionKeyCode,
multiSelectionKeyCode, multiSelectionKeyCode,
emits, emits,
nodesSelectionActive, nodesSelectionActive,
userSelectionActive, userSelectionActive,
multiSelectionActive,
elementsSelectable, elementsSelectable,
removeSelectedElements,
setState,
getSelectedEdges,
getSelectedNodes,
getNodes, getNodes,
getSelectedEdges,
removeSelectedElements,
removeNodes, removeNodes,
removeEdges, removeEdges,
} = $(useVueFlow()) } = useVueFlow()
const onClick = (event: MouseEvent) => { const onClick = (event: MouseEvent) => {
emits.paneClick(event) emits.paneClick(event)
setState({ nodesSelectionActive.value = false
nodesSelectionActive: false,
})
removeSelectedElements() removeSelectedElements()
} }
@@ -43,7 +40,7 @@ const onMouseMove = (event: MouseEvent) => emits.paneMouseMove(event)
useKeyPress(deleteKeyCode, (keyPressed) => { useKeyPress(deleteKeyCode, (keyPressed) => {
if (!keyPressed) return if (!keyPressed) return
const nodesToRemove = getNodes.reduce<GraphNode[]>((res, node) => { const nodesToRemove = getNodes.value.reduce<GraphNode[]>((res, node) => {
if (!node.selected && node.parentNode && res.find((n) => n.id === node.parentNode)) { if (!node.selected && node.parentNode && res.find((n) => n.id === node.parentNode)) {
res.push(node) res.push(node)
} else if (node.selected) { } else if (node.selected) {
@@ -53,37 +50,29 @@ useKeyPress(deleteKeyCode, (keyPressed) => {
return res return res
}, []) }, [])
const selectedEdges = edges.filter((e) => e.selected) if (nodesToRemove || getSelectedEdges.value) {
if (getSelectedEdges.value.length > 0) {
if (nodesToRemove || selectedEdges) { removeEdges(getSelectedEdges.value)
if (selectedEdges.length > 0) {
removeEdges(selectedEdges)
} }
if (nodesToRemove.length > 0) { if (nodesToRemove.length > 0) {
removeNodes(nodesToRemove) removeNodes(nodesToRemove)
} }
setState({ nodesSelectionActive.value = false
nodesSelectionActive: false,
})
removeSelectedElements() removeSelectedElements()
} }
}) })
useKeyPress(multiSelectionKeyCode, (keyPressed) => { useKeyPress(multiSelectionKeyCode, (keyPressed) => {
setState({ multiSelectionActive.value = keyPressed
multiSelectionActive: keyPressed,
})
}) })
const selectionKeyPressed = useKeyPress(selectionKeyCode, (keyPressed) => { const selectionKeyPressed = useKeyPress(selectionKeyCode, (keyPressed) => {
if (userSelectionActive && keyPressed) return if (userSelectionActive.value && keyPressed) return
setState({ userSelectionActive.value = keyPressed && elementsSelectable.value
userSelectionActive: keyPressed && elementsSelectable,
})
}) })
</script> </script>
@@ -4,8 +4,7 @@ import EdgeRenderer from '../EdgeRenderer/EdgeRenderer.vue'
import { useVueFlow, useWindow } from '../../composables' import { useVueFlow, useWindow } from '../../composables'
import type { Dimensions } from '../../types' import type { Dimensions } from '../../types'
const { id, nodes, edges, viewport, snapToGrid, snapGrid, dimensions, setState, fitViewOnInit, emits, fitView, ...rest } = const { id, viewport, dimensions, fitViewOnInit, emits, fitView, ...rest } = useVueFlow()
useVueFlow()
const untilDimensions = async (dim: Dimensions) => { const untilDimensions = async (dim: Dimensions) => {
// if ssr we can't wait for dimensions, they'll never really exist // if ssr we can't wait for dimensions, they'll never really exist
@@ -29,13 +28,8 @@ onMounted(async () => {
emits.paneReady({ emits.paneReady({
id, id,
nodes,
edges,
viewport, viewport,
snapToGrid,
snapGrid,
dimensions, dimensions,
setState,
fitViewOnInit, fitViewOnInit,
fitView, fitView,
emits, emits,
@@ -68,20 +68,20 @@ const stop = watch(
{ immediate: true }, { immediate: true },
) )
onBeforeUnmount(() => stop()) const window = useWindow()
if ('screen' in window) {
useEventListener(window, 'resize', () => {
if (!viewportEl.value) return
const { width, height } = getDimensions(viewportEl.value)
dimensions.width = width
dimensions.height = height
})
}
onBeforeUnmount(stop)
onMounted(() => { onMounted(() => {
const window = useWindow()
if ('screen' in window) {
useEventListener(window, 'onresize', () => {
if (!viewportEl.value) return
const { width, height } = getDimensions(viewportEl.value)
dimensions.width = width
dimensions.height = height
})
}
const d3Zoom = zoom<HTMLDivElement, any>().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent) const d3Zoom = zoom<HTMLDivElement, any>().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent)
const d3Selection = select(viewportEl.value).call(d3Zoom) const d3Selection = select(viewportEl.value).call(d3Zoom)
const d3ZoomHandler = d3Selection.on('wheel.zoom') const d3ZoomHandler = d3Selection.on('wheel.zoom')
@@ -132,10 +132,11 @@ onMounted(() => {
watchEffect(() => { watchEffect(() => {
if (panOnScroll && !zoomKeyPressed.value) { if (panOnScroll && !zoomKeyPressed.value) {
d3Selection d3Selection
.on('wheel', (event: any) => { .on('wheel', (event: WheelEvent) => {
if (isWrappedWithClass(event, noWheelClassName?.value)) { if (isWrappedWithClass(event, noWheelClassName?.value)) {
return false return false
} }
event.preventDefault() event.preventDefault()
event.stopImmediatePropagation() event.stopImmediatePropagation()
@@ -162,7 +163,7 @@ onMounted(() => {
.on('wheel.zoom', null) .on('wheel.zoom', null)
} else if (typeof d3ZoomHandler !== 'undefined') { } else if (typeof d3ZoomHandler !== 'undefined') {
d3Selection d3Selection
.on('wheel', (event: any) => { .on('wheel', (event: WheelEvent) => {
if (!preventScrolling || isWrappedWithClass(event, noWheelClassName?.value)) { if (!preventScrolling || isWrappedWithClass(event, noWheelClassName?.value)) {
return null return null
} }