feat(core): add fromObject action to load graph
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -756,6 +756,45 @@ export function useActions(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fitView: Actions['fitView'] = async (params = { padding: 0.1 }) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.fitView(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
const zoomIn: Actions['zoomIn'] = async (options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.zoomIn(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const zoomOut: Actions['zoomOut'] = async (options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.zoomOut(options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const zoomTo: Actions['zoomTo'] = async (zoomLevel, options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.zoomTo(zoomLevel, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const setTransform: Actions['setTransform'] = async (transform, options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.setTransform(transform, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const getTransform: Actions['getTransform'] = () => viewportHelper.getTransform()
|
||||||
|
|
||||||
|
const setCenter: Actions['setCenter'] = async (x, y, options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.setCenter(x, y, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const fitBounds: Actions['fitBounds'] = async (bounds, options) => {
|
||||||
|
await until(() => viewportHelper.initialized).toBe(true)
|
||||||
|
viewportHelper.fitBounds(bounds, options)
|
||||||
|
}
|
||||||
|
|
||||||
|
const project: Actions['project'] = (position) => viewportHelper.project(position)
|
||||||
|
|
||||||
const toObject: Actions['toObject'] = () => {
|
const toObject: Actions['toObject'] = () => {
|
||||||
// we have to stringify/parse so objects containing refs (like nodes and edges) can potentially be saved in a storage
|
// we have to stringify/parse so objects containing refs (like nodes and edges) can potentially be saved in a storage
|
||||||
return JSON.parse(
|
return JSON.parse(
|
||||||
@@ -788,6 +827,22 @@ export function useActions(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fromObject: Actions['fromObject'] = (obj) => {
|
||||||
|
const { nodes, edges, position, zoom } = obj
|
||||||
|
|
||||||
|
if (nodes) {
|
||||||
|
setNodes(nodes)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (edges) {
|
||||||
|
setEdges(edges)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (position) {
|
||||||
|
setTransform({ x: position[0], y: position[1], zoom: zoom || 1 })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
updateNodePositions,
|
updateNodePositions,
|
||||||
updateNodeDimensions,
|
updateNodeDimensions,
|
||||||
@@ -821,37 +876,17 @@ export function useActions(
|
|||||||
getIntersectingNodes,
|
getIntersectingNodes,
|
||||||
isNodeIntersecting,
|
isNodeIntersecting,
|
||||||
panBy,
|
panBy,
|
||||||
fitView: async (params = { padding: 0.1 }) => {
|
fitView,
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
zoomIn,
|
||||||
viewportHelper.fitView(params)
|
zoomOut,
|
||||||
},
|
zoomTo,
|
||||||
zoomIn: async (options) => {
|
setTransform,
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
getTransform,
|
||||||
viewportHelper.zoomIn(options)
|
setCenter,
|
||||||
},
|
fitBounds,
|
||||||
zoomOut: async (options) => {
|
project,
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
|
||||||
viewportHelper.zoomOut(options)
|
|
||||||
},
|
|
||||||
zoomTo: async (zoomLevel, options) => {
|
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
|
||||||
viewportHelper.zoomTo(zoomLevel, options)
|
|
||||||
},
|
|
||||||
setTransform: async (transform, options) => {
|
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
|
||||||
viewportHelper.setTransform(transform, options)
|
|
||||||
},
|
|
||||||
getTransform: () => viewportHelper.getTransform(),
|
|
||||||
setCenter: async (x, y, options) => {
|
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
|
||||||
viewportHelper.setCenter(x, y, options)
|
|
||||||
},
|
|
||||||
fitBounds: async (bounds, options) => {
|
|
||||||
await until(() => viewportHelper.initialized).toBe(true)
|
|
||||||
viewportHelper.fitBounds(bounds, options)
|
|
||||||
},
|
|
||||||
project: (position) => viewportHelper.project(position),
|
|
||||||
toObject,
|
toObject,
|
||||||
|
fromObject,
|
||||||
updateNodeInternals,
|
updateNodeInternals,
|
||||||
$reset: () => {
|
$reset: () => {
|
||||||
const resetState = useState()
|
const resetState = useState()
|
||||||
|
|||||||
@@ -249,6 +249,8 @@ export interface Actions extends ViewportFunctions {
|
|||||||
setState: SetState
|
setState: SetState
|
||||||
/** return an object of graph values (elements, viewport transform) for storage and re-loading a graph */
|
/** return an object of graph values (elements, viewport transform) for storage and re-loading a graph */
|
||||||
toObject: () => FlowExportObject
|
toObject: () => FlowExportObject
|
||||||
|
/** load graph from export obj */
|
||||||
|
fromObject: (obj: FlowExportObject) => void
|
||||||
/** force update node internal data, if handle bounds are incorrect, you might want to use this */
|
/** force update node internal data, if handle bounds are incorrect, you might want to use this */
|
||||||
updateNodeInternals: UpdateNodeInternals
|
updateNodeInternals: UpdateNodeInternals
|
||||||
/** start a connection */
|
/** start a connection */
|
||||||
|
|||||||
Reference in New Issue
Block a user