File size: 1,623 Bytes
70d8f15
fe7906f
70d8f15
66a740c
 
a688e23
82a88c5
4c98241
e3d3deb
edd7dca
 
9bde4cc
fe7906f
70d8f15
93af367
 
 
 
 
9a49612
eb375ea
 
 
215369d
9a49612
 
 
 
 
66a740c
 
 
 
 
 
 
4c98241
e3d3deb
c38b220
edd7dca
 
9bde4cc
9a49612
a688e23
66a740c
 
 
 
 
 
 
 
 
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
import { DriveStep } from "./driver";
import { AllowedButtons } from "./popover";

export type Config = {
  animate?: boolean;
  backdropColor?: string;
  smoothScroll?: boolean;
  allowClose?: boolean;
  opacity?: number;
  stagePadding?: number;
  stageRadius?: number;
  popoverOffset?: number;
  showButtons?: AllowedButtons[];

  // Button texts
  nextBtnText?: string;
  prevBtnText?: string;
  closeBtnText?: string;

  // State based callbacks, called upon state changes
  onHighlightStarted?: (element: Element | undefined, step: DriveStep) => void;
  onHighlighted?: (element: Element | undefined, step: DriveStep) => void;
  onDeselected?: (element: Element | undefined, step: DriveStep) => void;
  onClose?: (element: Element | undefined, step: DriveStep) => void;

  // Event based callbacks, called upon events
  onNextClick?: (element: Element | undefined, step: DriveStep) => void;
  onPreviousClick?: (element: Element | undefined, step: DriveStep) => void;
  onCloseClick?: (element: Element | undefined, step: DriveStep) => void;
};

let currentConfig: Config = {};

export function configure(config: Config = {}) {
  currentConfig = {
    animate: true,
    allowClose: true,
    opacity: 0.7,
    smoothScroll: false,
    stagePadding: 10,
    stageRadius: 5,
    popoverOffset: 10,
    showButtons: ["next", "previous", "close"],
    backdropColor: "#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;
}