Improve popup rendering
Browse files- src/highlight.ts +8 -12
src/highlight.ts
CHANGED
|
@@ -80,14 +80,7 @@ function transferHighlight(from: Element, to: Element, toStep: DriveStep) {
|
|
| 80 |
const isNextOrPrevDummyElement = to.id === "driver-dummy-element" || from.id === "driver-dummy-element";
|
| 81 |
|
| 82 |
const hasDelayedPopover = !isFirstHighlight && (hasNoPreviousPopover || isNextOrPrevDummyElement);
|
| 83 |
-
|
| 84 |
-
console.log("--------------------");
|
| 85 |
-
console.log("from", from);
|
| 86 |
-
console.log("to", to);
|
| 87 |
-
console.log("hasDelayedPopover", hasDelayedPopover);
|
| 88 |
-
console.log("isFirstHighlight", isFirstHighlight);
|
| 89 |
-
console.log("hasNoPreviousPopover", hasNoPreviousPopover);
|
| 90 |
-
console.log("isNextOrPrevDummyElement", isNextOrPrevDummyElement);
|
| 91 |
|
| 92 |
hidePopover();
|
| 93 |
|
|
@@ -102,16 +95,19 @@ function transferHighlight(from: Element, to: Element, toStep: DriveStep) {
|
|
| 102 |
}
|
| 103 |
|
| 104 |
const elapsed = Date.now() - start;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
|
| 106 |
if (getConfig("animate") && elapsed < duration) {
|
| 107 |
transitionStage(elapsed, duration, from, to);
|
| 108 |
} else {
|
| 109 |
trackActiveElement(to);
|
| 110 |
|
| 111 |
-
if (hasDelayedPopover && toStep.popover) {
|
| 112 |
-
renderPopover(to);
|
| 113 |
-
}
|
| 114 |
-
|
| 115 |
setState("transitionCallback", undefined);
|
| 116 |
}
|
| 117 |
|
|
|
|
| 80 |
const isNextOrPrevDummyElement = to.id === "driver-dummy-element" || from.id === "driver-dummy-element";
|
| 81 |
|
| 82 |
const hasDelayedPopover = !isFirstHighlight && (hasNoPreviousPopover || isNextOrPrevDummyElement);
|
| 83 |
+
let isPopoverRendered = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
|
| 85 |
hidePopover();
|
| 86 |
|
|
|
|
| 95 |
}
|
| 96 |
|
| 97 |
const elapsed = Date.now() - start;
|
| 98 |
+
const timeRemaining = duration - elapsed;
|
| 99 |
+
const isHalfwayThrough = timeRemaining <= duration / 2;
|
| 100 |
+
|
| 101 |
+
if (toStep.popover && isHalfwayThrough && !isPopoverRendered && hasDelayedPopover) {
|
| 102 |
+
renderPopover(to);
|
| 103 |
+
isPopoverRendered = true;
|
| 104 |
+
}
|
| 105 |
|
| 106 |
if (getConfig("animate") && elapsed < duration) {
|
| 107 |
transitionStage(elapsed, duration, from, to);
|
| 108 |
} else {
|
| 109 |
trackActiveElement(to);
|
| 110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
setState("transitionCallback", undefined);
|
| 112 |
}
|
| 113 |
|