File size: 1,458 Bytes
b8874fd aa3b624 3833190 63b089b 66a740c 6770eb3 aa3b624 8480986 aa3b624 4c98241 66a740c 63b089b aa3b624 4c98241 66a740c 4c98241 66a740c aa3b624 3833190 4c98241 63b089b aa3b624 4c98241 66a740c 4c98241 66a740c aa3b624 b8874fd aa3b624 63b089b aa3b624 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
import { destroyPopover, Popover } from "./popover";
import { destroyStage } from "./stage";
import { destroyEvents, initEvents } from "./events";
import { Config, configure, getConfig } from "./config";
import { destroyHighlight, highlight } from "./highlight";
import { destroyEmitter, listen } from "./emitter";
import "./style.css";
export type DriveStep = {
element?: string | Element;
popover?: Popover;
};
let isInitialized = false;
export function driver(options: Config = {}) {
configure(options);
function handleClose() {
if (!getConfig("allowClose")) {
return;
}
destroy();
}
function init() {
// Avoid multiple initialization
if (isInitialized) {
return;
}
isInitialized = true;
document.body.classList.add(
"driver-active",
getConfig("animate") ? "driver-fade" : "driver-simple"
);
initEvents();
// Register hooks
listen("overlayClick", handleClose);
listen("escape", handleClose);
}
function destroy() {
isInitialized = false;
document.body.classList.remove(
"driver-active",
getConfig("animate") ? "driver-fade" : "driver-simple"
);
destroyEvents();
destroyPopover();
destroyHighlight();
destroyStage();
destroyEmitter();
}
return {
drive: (steps: DriveStep[]) => console.log(steps),
highlight: (step: DriveStep) => {
init();
highlight(step);
},
destroy,
};
}
|