feat(core): add onError hook
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { isNumber } from '@vueuse/shared'
|
||||
import type { Actions, CoordinateExtent, ExtendedParentExtent, GraphNode, NodeDragItem, XYPosition } from '~/types'
|
||||
import type { Actions, CoordinateExtent, ExtendedParentExtent, GraphNode, NodeDragItem, State, XYPosition } from '~/types'
|
||||
|
||||
export function hasSelector(target: Element, selector: string, node: Element): boolean {
|
||||
let current = target
|
||||
@@ -97,7 +97,12 @@ function getParentExtent(
|
||||
return false
|
||||
}
|
||||
|
||||
export function getExtent<T extends NodeDragItem | GraphNode>(item: T, extent?: CoordinateExtent, parent?: GraphNode) {
|
||||
export function getExtent<T extends NodeDragItem | GraphNode>(
|
||||
item: T,
|
||||
onError: State['hooks']['error']['trigger'],
|
||||
extent?: CoordinateExtent,
|
||||
parent?: GraphNode,
|
||||
) {
|
||||
let currentExtent = item.extent || extent
|
||||
|
||||
if (item.extent === 'parent' || (!Array.isArray(item.extent) && item.extent?.range === 'parent')) {
|
||||
@@ -108,7 +113,7 @@ export function getExtent<T extends NodeDragItem | GraphNode>(item: T, extent?:
|
||||
currentExtent = parentExtent
|
||||
}
|
||||
} else {
|
||||
warn('Only child nodes can use a parent extent.')
|
||||
onError(new VueFlowError(ErrorCode.NODE_EXTENT_INVALID, item.id))
|
||||
|
||||
currentExtent = extent
|
||||
}
|
||||
@@ -127,10 +132,11 @@ export function getExtent<T extends NodeDragItem | GraphNode>(item: T, extent?:
|
||||
export function calcNextPosition(
|
||||
node: GraphNode | NodeDragItem,
|
||||
nextPosition: XYPosition,
|
||||
onError: State['hooks']['error']['trigger'],
|
||||
nodeExtent?: CoordinateExtent,
|
||||
parentNode?: GraphNode,
|
||||
) {
|
||||
const extent = getExtent(node, nodeExtent, parentNode)
|
||||
const extent = getExtent(node, onError, nodeExtent, parentNode)
|
||||
|
||||
const clampedPos = clampPosition(nextPosition, extent)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user