refactor(core): return promise from fromObject

This commit is contained in:
braks
2023-12-12 20:29:54 +01:00
committed by Braks
parent eb4cff30c9
commit c995b801ce
2 changed files with 29 additions and 21 deletions
+28 -20
View File
@@ -830,31 +830,39 @@ export function useActions(
} }
const fromObject: Actions['fromObject'] = (obj) => { const fromObject: Actions['fromObject'] = (obj) => {
const { nodes, edges, position, zoom, viewport } = obj return new Promise((resolve) => {
const { nodes, edges, position, zoom, viewport } = obj
if (nodes) { if (nodes) {
setNodes(nodes) setNodes(nodes)
} }
if (edges) { if (edges) {
setEdges(edges) setEdges(edges)
} }
if ((viewport?.x && viewport?.y) || position) { if ((viewport?.x && viewport?.y) || position) {
const x = viewport?.x || position[0] const x = viewport?.x || position[0]
const y = viewport?.y || position[1] const y = viewport?.y || position[1]
const nextZoom = viewport?.zoom || zoom || state.viewport.zoom const nextZoom = viewport?.zoom || zoom || state.viewport.zoom
until(() => viewportHelper.value.initialized) return until(() => viewportHelper.value.initialized)
.toBe(true) .toBe(true)
.then(() => { .then(() => {
viewportHelper.value.setViewport({ viewportHelper.value
x, .setViewport({
y, x,
zoom: nextZoom, y,
zoom: nextZoom,
})
.then(() => {
resolve(true)
})
}) })
}) } else {
} resolve(true)
}
})
} }
const $reset: Actions['$reset'] = () => { const $reset: Actions['$reset'] = () => {
+1 -1
View File
@@ -252,7 +252,7 @@ export interface Actions extends ViewportFunctions {
/** 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 */ /** load graph from export obj */
fromObject: (obj: FlowExportObject) => void fromObject: (obj: FlowExportObject) => Promise<boolean>
/** 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 */