fix: store actions blocking main thread
* map function overwriting nodes causes main thread to be blocked * instead use splice
This commit is contained in:
@@ -151,7 +151,7 @@ const edgeTypes = createEdgeTypes({ ...defaultEdgeTypes, ...props.edgeTypes })
|
||||
:multi-selection-key-code="props.multiSelectionKeyCode"
|
||||
:selection-key-code="props.selectionKeyCode"
|
||||
>
|
||||
<NodeRenderer :node-types="nodeTypes">
|
||||
<NodeRenderer :node-types="nodeTypes" :select-nodes-on-drag="props.selectNodesOnDrag">
|
||||
<template v-for="nodeName of Object.keys(nodeTypes)" #[`node-${nodeName}`]="nodeProps">
|
||||
<slot :name="`node-${nodeName}`" v-bind="nodeProps"></slot>
|
||||
</template>
|
||||
|
||||
@@ -6,9 +6,12 @@ import { useStore } from '~/composables'
|
||||
|
||||
interface NodeRendererProps {
|
||||
nodeTypes: Record<string, NodeType>
|
||||
selectNodesOnDrag?: boolean
|
||||
}
|
||||
|
||||
const props = defineProps<NodeRendererProps>()
|
||||
const props = withDefaults(defineProps<NodeRendererProps>(), {
|
||||
selectNodesOnDrag: true,
|
||||
})
|
||||
|
||||
const store = useStore()
|
||||
|
||||
@@ -49,12 +52,9 @@ const type = (node: TNode) => {
|
||||
<Node
|
||||
:node="node"
|
||||
:type="type(node)"
|
||||
:scale="store.transform[2]"
|
||||
:snap-grid="store.snapToGrid ? store.snapGrid : undefined"
|
||||
:select-nodes-on-drag="props.selectNodesOnDrag"
|
||||
:selected="store.selectedElements?.some(({ id }) => id === node.id)"
|
||||
:selectable="node.selectable || store.elementsSelectable"
|
||||
:connectable="node.connectable || store.nodesConnectable"
|
||||
:draggable="node.draggable || store.nodesDraggable"
|
||||
>
|
||||
<template #default="nodeProps">
|
||||
<slot :name="`node-${node.type}`" v-bind="nodeProps"></slot>
|
||||
|
||||
Reference in New Issue
Block a user