File size: 1,661 Bytes
b8874fd aa3b624 3833190 40c6a95 63b089b 66a740c 6770eb3 836d49f aa3b624 8480986 aa3b624 66a740c 63b089b aa3b624 9bde4cc 4c98241 9bde4cc aa3b624 3833190 63b089b aa3b624 9bde4cc aa3b624 b8874fd aa3b624 63b089b 836d49f aa3b624 ff5f16d 40c6a95 aa3b624 40c6a95 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 71 72 |
import { destroyPopover, Popover } from "./popover";
import { destroyStage } from "./stage";
import { destroyEvents, initEvents } from "./events";
import { Config, configure, getConfig } from "./config";
import { destroyHighlight, highlight, refreshActiveHighlight } from "./highlight";
import { destroyEmitter, listen } from "./emitter";
import "./style.css";
import { getState, resetState, setState } from "./state";
export type DriveStep = {
element?: string | Element;
popover?: Popover;
};
export function driver(options: Config = {}) {
configure(options);
function handleClose() {
if (!getConfig("allowClose")) {
return;
}
destroy();
}
function init() {
if (getState("isInitialized")) {
return;
}
setState("isInitialized", true);
document.body.classList.add("driver-active", getConfig("animate") ? "driver-fade" : "driver-simple");
initEvents();
listen("overlayClick", handleClose);
listen("escape", handleClose);
}
function destroy() {
document.body.classList.remove("driver-active", "driver-fade", "driver-simple");
destroyEvents();
destroyPopover();
destroyHighlight();
destroyStage();
destroyEmitter();
resetState();
}
return {
isActive: () => getState("isInitialized") || false,
refresh: () => {
refreshActiveHighlight();
},
drive: (steps: DriveStep[]) => console.log(steps),
highlight: (step: DriveStep) => {
init();
highlight({
...step,
popover: step.popover ? {
showButtons: false,
...step.popover!,
} : undefined,
});
},
destroy,
};
}
|