|
import { Driver, DriveStep } from "./driver"; |
|
import { AllowedButtons, PopoverDOM } from "./popover"; |
|
import { State } from "./state"; |
|
|
|
export type DriverHook = ( |
|
element: Element | undefined, |
|
step: DriveStep, |
|
opts: { config: Config; state: State; driver: Driver } |
|
) => void; |
|
|
|
export type Config = { |
|
steps?: DriveStep[]; |
|
|
|
animate?: boolean; |
|
overlayColor?: string; |
|
overlayOpacity?: number; |
|
smoothScroll?: boolean; |
|
allowClose?: boolean; |
|
overlayClickBehavior?: "close" | "nextStep"; |
|
stagePadding?: number; |
|
stageRadius?: number; |
|
|
|
disableActiveInteraction?: boolean; |
|
|
|
allowKeyboardControl?: boolean; |
|
|
|
|
|
popoverClass?: string; |
|
popoverOffset?: number; |
|
showButtons?: AllowedButtons[]; |
|
disableButtons?: AllowedButtons[]; |
|
showProgress?: boolean; |
|
|
|
|
|
progressText?: string; |
|
nextBtnText?: string; |
|
prevBtnText?: string; |
|
doneBtnText?: string; |
|
|
|
|
|
onPopoverRender?: (popover: PopoverDOM, opts: { config: Config; state: State, driver: Driver }) => void; |
|
|
|
|
|
onHighlightStarted?: DriverHook; |
|
onHighlighted?: DriverHook; |
|
onDeselected?: DriverHook; |
|
onDestroyStarted?: DriverHook; |
|
onDestroyed?: DriverHook; |
|
|
|
|
|
onNextClick?: DriverHook; |
|
onPrevClick?: DriverHook; |
|
onCloseClick?: DriverHook; |
|
}; |
|
|
|
let currentConfig: Config = {}; |
|
let currentDriver: Driver; |
|
|
|
export function configure(config: Config = {}) { |
|
currentConfig = { |
|
animate: true, |
|
allowClose: true, |
|
overlayClickBehavior: "close", |
|
overlayOpacity: 0.7, |
|
smoothScroll: false, |
|
disableActiveInteraction: false, |
|
showProgress: false, |
|
stagePadding: 10, |
|
stageRadius: 5, |
|
popoverOffset: 10, |
|
showButtons: ["next", "previous", "close"], |
|
disableButtons: [], |
|
overlayColor: "#000", |
|
...config, |
|
}; |
|
} |
|
|
|
export function getConfig(): Config; |
|
export function getConfig<K extends keyof Config>(key: K): Config[K]; |
|
export function getConfig<K extends keyof Config>(key?: K) { |
|
return key ? currentConfig[key] : currentConfig; |
|
} |
|
|
|
export function setCurrentDriver(driver: Driver) { |
|
currentDriver = driver; |
|
} |
|
|
|
export function getCurrentDriver() { |
|
return currentDriver; |
|
} |
|
|