refactor(system,panzoom): return promise from transitioned panzoom actions

This commit is contained in:
braks
2023-11-09 22:41:59 +01:00
parent 428fced240
commit 1a57423204
2 changed files with 26 additions and 3 deletions
+24 -3
View File
@@ -73,8 +73,15 @@ export function XYPanZoom({
function setTransform(transform: ZoomTransform, options?: PanZoomTransformOptions) {
if (d3Selection) {
d3ZoomInstance?.transform(getD3Transition(d3Selection, options?.duration), transform);
return new Promise<boolean>((resolve) => {
d3ZoomInstance?.transform(
getD3Transition(d3Selection, options?.duration, () => resolve(true)),
transform
);
});
}
return Promise.resolve(false);
}
// public functions
@@ -217,14 +224,28 @@ export function XYPanZoom({
function scaleTo(zoom: number, options?: PanZoomTransformOptions) {
if (d3Selection) {
d3ZoomInstance?.scaleTo(getD3Transition(d3Selection, options?.duration), zoom);
return new Promise<boolean>((resolve) => {
d3ZoomInstance?.scaleTo(
getD3Transition(d3Selection, options?.duration, () => resolve(true)),
zoom
);
});
}
return Promise.resolve(false);
}
function scaleBy(factor: number, options?: PanZoomTransformOptions) {
if (d3Selection) {
d3ZoomInstance?.scaleBy(getD3Transition(d3Selection, options?.duration), factor);
return new Promise<boolean>((resolve) => {
d3ZoomInstance?.scaleBy(
getD3Transition(d3Selection, options?.duration, () => resolve(true)),
factor
);
});
}
return Promise.resolve(false);
}
function setScaleExtent(scaleExtent: [number, number]) {