kamrify commited on
Commit
3833190
·
1 Parent(s): 66a740c

Add overlay click to close

Browse files
Files changed (3) hide show
  1. src/driver.ts +7 -3
  2. src/hooks.ts +15 -0
  3. src/stage.ts +2 -2
src/driver.ts CHANGED
@@ -1,9 +1,10 @@
1
- import { initEvents, destroyEvents } from "./events";
2
- import { destroyHighlight, highlight } from "./highlight";
3
  import { destroyStage } from "./stage";
4
- import { configure, Config, getConfig } from "./config";
 
 
5
 
6
  import "./style.css";
 
7
 
8
  export type DriveStep = {
9
  element?: string | Element;
@@ -21,6 +22,8 @@ export function driver(options: Config = {}) {
21
  );
22
 
23
  initEvents();
 
 
24
  }
25
 
26
  function destroy() {
@@ -32,6 +35,7 @@ export function driver(options: Config = {}) {
32
  destroyEvents();
33
  destroyHighlight();
34
  destroyStage();
 
35
  }
36
 
37
  return {
 
 
 
1
  import { destroyStage } from "./stage";
2
+ import { destroyEvents, initEvents } from "./events";
3
+ import { Config, configure, getConfig } from "./config";
4
+ import { destroyHighlight, highlight } from "./highlight";
5
 
6
  import "./style.css";
7
+ import { destroyHooks, register } from "./hooks";
8
 
9
  export type DriveStep = {
10
  element?: string | Element;
 
22
  );
23
 
24
  initEvents();
25
+
26
+ register("overlayClick", destroy);
27
  }
28
 
29
  function destroy() {
 
35
  destroyEvents();
36
  destroyHighlight();
37
  destroyStage();
38
+ destroyHooks();
39
  }
40
 
41
  return {
src/hooks.ts ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ type allowedHooks = "overlayClick";
2
+
3
+ let registeredHooks: Partial<{ [key in allowedHooks]: () => void }> = {};
4
+
5
+ export function register(hook: allowedHooks, callback: () => void) {
6
+ registeredHooks[hook] = callback;
7
+ }
8
+
9
+ export function trigger(hook: allowedHooks) {
10
+ registeredHooks[hook]?.();
11
+ }
12
+
13
+ export function destroyHooks() {
14
+ registeredHooks = {};
15
+ }
src/stage.ts CHANGED
@@ -1,5 +1,6 @@
1
  import { easeInOutQuad } from "./math";
2
  import { onDriverClick } from "./events";
 
3
 
4
  export type StageDefinition = {
5
  x: number;
@@ -98,7 +99,6 @@ export function refreshStage() {
98
 
99
  function mountStage(stagePosition: StageDefinition) {
100
  stageSvg = createStageSvg(stagePosition);
101
-
102
  document.body.appendChild(stageSvg);
103
 
104
  onDriverClick(stageSvg, e => {
@@ -107,7 +107,7 @@ function mountStage(stagePosition: StageDefinition) {
107
  return;
108
  }
109
 
110
- console.log("Overlay clicked");
111
  });
112
  }
113
 
 
1
  import { easeInOutQuad } from "./math";
2
  import { onDriverClick } from "./events";
3
+ import { trigger } from "./hooks";
4
 
5
  export type StageDefinition = {
6
  x: number;
 
99
 
100
  function mountStage(stagePosition: StageDefinition) {
101
  stageSvg = createStageSvg(stagePosition);
 
102
  document.body.appendChild(stageSvg);
103
 
104
  onDriverClick(stageSvg, e => {
 
107
  return;
108
  }
109
 
110
+ trigger("overlayClick");
111
  });
112
  }
113