kamrify commited on
Commit
ff5f16d
·
1 Parent(s): d6df79d

Add support for checking status

Browse files
Files changed (3) hide show
  1. index.html +358 -324
  2. src/driver.ts +1 -0
  3. src/popover.ts +1 -1
index.html CHANGED
@@ -1,57 +1,57 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Vite App</title>
7
 
8
- <style>
9
  * {
10
- margin: 0;
11
- padding: 0;
12
  }
13
 
14
  body {
15
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans",
16
  "Helvetica Neue", sans-serif;
17
- font-size: 14px;
18
- -webkit-font-smoothing: antialiased;
19
- -moz-osx-font-smoothing: grayscale;
20
  }
21
 
22
  .gif-popover {
23
- display: flex;
24
- flex-direction: column;
25
- text-align: center;
26
  }
27
 
28
  .gif-popover img {
29
- width: 100%;
30
- height: auto;
31
- margin-bottom: 10px;
32
  }
33
 
34
  .gif-popover p {
35
- font-weight: 500;
36
- margin-bottom: 0;
37
  }
38
 
39
  p {
40
- line-height: 1.5;
41
- margin-bottom: 15px;
42
  }
43
 
44
  .page-header {
45
- text-align: center;
46
- margin-bottom: 10px;
47
  }
48
 
49
  .container {
50
- display: flex;
51
- flex-direction: column;
52
- max-width: 500px;
53
- margin: 0 auto;
54
- text-align: left;
55
  }
56
 
57
  h1,
@@ -60,330 +60,364 @@
60
  h4,
61
  h5,
62
  h6 {
63
- margin: 30px 0 10px;
64
  }
65
 
66
  h1 {
67
- font-size: 48px;
68
- font-weight: 600;
69
- text-align: center;
70
  }
71
 
72
  h1 sup {
73
- font-size: 18px;
74
- font-weight: 400;
75
  }
76
 
77
  ul {
78
- list-style: none;
79
- padding: 0;
80
- margin: 20px 10px 0;
81
- line-height: 1.5;
82
  }
83
 
84
  ul li:before {
85
- content: "•";
86
- margin-right: 10px;
87
  }
88
 
89
  .buttons {
90
- display: flex;
91
- margin-top: 20px;
92
- gap: 10px;
93
- max-width: 500px;
94
- flex-wrap: wrap;
95
  }
96
 
97
  button {
98
- all: unset;
99
- border: 1px solid #ccc;
100
- padding: 5px 15px;
101
- border-radius: 5px;
102
- display: block;
103
- cursor: pointer;
104
  }
105
 
106
  pre {
107
- margin-bottom: 20px;
108
- border: 1px solid #ccc;
109
- background: whitesmoke;
110
- border-radius: 5px;
111
- padding: 10px;
112
- line-height: 1.75;
113
  }
114
 
115
  #scrollable-area {
116
- height: 300px;
117
- overflow: auto;
118
- border: 1px solid #ccc;
119
- padding: 10px;
120
- border-radius: 5px;
121
- margin: 50px 0;
122
  }
123
- </style>
124
- </head>
125
- <body>
126
- <div class="container">
127
- <div class="page-header">
128
- <h1>driver.js <sup>next</sup></h1>
129
- <p>Rewritten and enhanced version of driver.js</p>
130
- </div>
131
-
132
- <div class="buttons">
133
- <button id="highlight-btn">Animated Highlight</button>
134
- <button id="simple-highlight-btn">Simple Highlight</button>
135
- <button id="transition-highlight-btn">Transition Highlight</button>
136
- <button id="disallow-close">Disallow Close</button>
137
- <button id="dark-highlight-btn">Super Dark Highlight</button>
138
- <button id="dim-highlight-btn">Super Dim Highlight</button>
139
- <button id="scrollable-area-btn">Scrollable Area</button>
140
- <button id="inner-scroll-area-btn">Inner Scroll Area</button>
141
- <button id="without-element-btn">No Element</button>
142
- <button id="destroy-btn">Destroy</button>
143
- </div>
144
-
145
- <ul>
146
- <li>Written in TypeScript</li>
147
- <li>Lightweight — only 5kb gzipped</li>
148
- <li>No dependencies</li>
149
- <li>MIT Licensed</li>
150
- </ul>
151
-
152
- <h2>Yet another Tour Library?</h2>
153
- <p>
154
- No, it is not. Tours are just one of the many use-cases. Driver.js can be used wherever you need some sort of
155
- overlay for the page; some common usecases could be: e.g. dimming the background when user is interacting with
156
- some component, using it as a focus shifter to bring user's attention to some component on page, or using it to
157
- simulate those "Turn off the Lights" widgets that you might have seen on video players online, etc.
158
- </p>
159
- <p class="second-para">
160
- Driver.js is written in Vanilla JS, has zero dependencies and is highly customizable. It has several options
161
- allowing you to manipulate how it behaves and also provides you the hooks to manipulate the elements as they are
162
- highlighted, about to be highlighted, or deselected.
163
- </p>
164
-
165
- <h2 id="installation-head">Installation</h2>
166
- <p>You can install it using yarn or npm, whatever you prefer.</p>
167
-
168
- <pre>
 
 
169
  yarn add driver.js
170
  npm install driver.js</pre
171
- >
172
-
173
- <p>Or include it using CDN — put the version as [email protected] in the name</p>
174
-
175
- <pre>https://unpkg.com/driver.js/dist/driver.min.js</pre>
176
-
177
- <h2>Usage and Demo</h2>
178
-
179
- <p id="large-paragraph-text">
180
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
181
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
182
- tempore voluptates! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea
183
- eligendi id in inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi
184
- recusandae tempore voluptates!
185
- </p>
186
- <p>
187
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
188
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
189
- tempore voluptates!
190
- </p>
191
- <p>
192
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
193
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
194
- tempore voluptates!
195
- </p>
196
- <div id="scrollable-area">
197
- <p>
198
- First -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
199
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
200
- veniam! Doloribus eos id quaerat.
201
- </p>
202
- <p>
203
- Second -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
204
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
205
- veniam! Doloribus eos id quaerat.
206
- </p>
207
- <p id="third-scroll-paragraph">
208
- Third -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
209
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
210
- veniam! Doloribus eos id quaerat.
211
- </p>
212
- <p>
213
- Fourth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
214
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
215
- veniam! Doloribus eos id quaerat.
216
- </p>
217
- <p>
218
- Fifth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
219
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
220
- veniam! Doloribus eos id quaerat.
221
- </p>
222
- <p>
223
- Sixth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
224
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
225
- veniam! Doloribus eos id quaerat.
226
- </p>
227
- <p>
228
- Seventh -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
229
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
230
- veniam! Doloribus eos id quaerat.
231
- </p>
232
- <p>
233
- Eighth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
234
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
235
- veniam! Doloribus eos id quaerat.
236
- </p>
237
- <p>
238
- Ninth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
239
- tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
240
- veniam! Doloribus eos id quaerat.
241
- </p>
242
- </div>
243
- <p>
244
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
245
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
246
- tempore voluptates!
247
- </p>
248
- <p>
249
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
250
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
251
- tempore voluptates!
252
- </p>
253
- <p>
254
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
255
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
256
- tempore voluptates!
257
- </p>
258
- <p>
259
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
260
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
261
- tempore voluptates!
262
- </p>
263
- <p>
264
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
265
- inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
266
- tempore voluptates!
267
- </p>
268
- </div>
269
- <script type="module">
270
- import { driver } from "./src/driver.ts";
271
-
272
- document.getElementById("highlight-btn").addEventListener("click", () => {
273
- driver({ animate: true, showButtons: false }).highlight({
274
- element: "h2",
275
- popover: {
276
- title: "MIT License",
277
- description: "A lightweight, no-dependency JavaScript engine to drive user's focus.",
278
- side: "bottom",
279
- align: "start",
280
- },
281
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  });
283
-
284
- document.getElementById("simple-highlight-btn").addEventListener("click", () => {
285
- driver({ animate: false }).highlight({
286
- element: "#large-paragraph-text",
287
- popover: {
288
- title: "driver.js",
289
- description:
290
- "Highlight anything, anywhere on the page. Yes, literally anything including SVG portions, scrollable items etc.",
291
- align: "start",
292
- side: "top",
293
- },
294
- });
295
- });
296
-
297
- document.getElementById("dark-highlight-btn").addEventListener("click", () => {
298
- driver({
299
- animate: true,
300
- opacity: 0.9,
301
- }).highlight({ element: "ul" });
302
- });
303
-
304
- document.getElementById("dim-highlight-btn").addEventListener("click", () => {
305
- driver({
306
- animate: true,
307
- opacity: 0.2,
308
- }).highlight({ element: ".buttons" });
309
- });
310
-
311
- document.getElementById("transition-highlight-btn").addEventListener("click", () => {
312
- const driverObj = driver({ animate: true });
313
-
314
- driverObj.highlight({
315
- popover: {
316
- title: "driver.js",
317
- description: "Highlight anything, anywhere on the page",
318
- },
319
- });
320
-
321
- window.setTimeout(() => {
322
- driverObj.highlight({
323
- element: ".buttons button:first-child",
324
- popover: {
325
- title: "driver.js",
326
- description: "Highlight anything, anywhere on the page",
327
- },
328
- });
329
- }, 2000);
330
-
331
- window.setTimeout(() => {
332
- driverObj.highlight({
333
- popover: {
334
- title: "driver.js",
335
- description: "Highlight anything, anywhere on the page",
336
- },
337
- });
338
- }, 4000);
339
-
340
- window.setTimeout(() => {
341
- driverObj.highlight({
342
- element: "h2",
343
- popover: {
344
- description: "driver.js",
345
- },
346
- });
347
- }, 6000);
348
- });
349
-
350
- document.getElementById("scrollable-area-btn").addEventListener("click", () => {
351
- const driverObj = driver({ animate: true });
352
- driverObj.highlight({ element: "#scrollable-area" });
353
  });
354
-
355
- document.getElementById("without-element-btn").addEventListener("click", () => {
356
- const driverObj = driver({
357
- animate: true,
358
- });
359
- driverObj.highlight({
360
- popover: {
361
- showButtons: false,
362
- description:
363
- "<div class='gif-popover'><img style='max-width: 100%' src='https://i.imgur.com/EAQhHu5.gif' /><p>Go and build something cool!</p></div>",
364
- },
365
- });
366
- });
367
-
368
- document.getElementById("inner-scroll-area-btn").addEventListener("click", () => {
369
- const driverObj = driver({ animate: true });
370
- driverObj.highlight({ element: "#third-scroll-paragraph" });
371
- });
372
-
373
- document.getElementById("disallow-close").addEventListener("click", () => {
374
- const driverObj = driver({
375
- animate: true,
376
- allowClose: false,
377
- });
378
-
379
- driverObj.highlight({
380
- element: ".buttons",
381
- });
382
- });
383
-
384
- document.getElementById("destroy-btn").addEventListener("click", () => {
385
- driver().destroy();
386
  });
387
- </script>
388
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Vite App</title>
7
 
8
+ <style>
9
  * {
10
+ margin: 0;
11
+ padding: 0;
12
  }
13
 
14
  body {
15
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans",
16
  "Helvetica Neue", sans-serif;
17
+ font-size: 14px;
18
+ -webkit-font-smoothing: antialiased;
19
+ -moz-osx-font-smoothing: grayscale;
20
  }
21
 
22
  .gif-popover {
23
+ display: flex;
24
+ flex-direction: column;
25
+ text-align: center;
26
  }
27
 
28
  .gif-popover img {
29
+ width: 100%;
30
+ height: auto;
31
+ margin-bottom: 10px;
32
  }
33
 
34
  .gif-popover p {
35
+ font-weight: 500;
36
+ margin-bottom: 0;
37
  }
38
 
39
  p {
40
+ line-height: 1.5;
41
+ margin-bottom: 15px;
42
  }
43
 
44
  .page-header {
45
+ text-align: center;
46
+ margin-bottom: 10px;
47
  }
48
 
49
  .container {
50
+ display: flex;
51
+ flex-direction: column;
52
+ max-width: 500px;
53
+ margin: 0 auto;
54
+ text-align: left;
55
  }
56
 
57
  h1,
 
60
  h4,
61
  h5,
62
  h6 {
63
+ margin: 30px 0 10px;
64
  }
65
 
66
  h1 {
67
+ font-size: 48px;
68
+ font-weight: 600;
69
+ text-align: center;
70
  }
71
 
72
  h1 sup {
73
+ font-size: 18px;
74
+ font-weight: 400;
75
  }
76
 
77
  ul {
78
+ list-style: none;
79
+ padding: 0;
80
+ margin: 20px 10px 0;
81
+ line-height: 1.5;
82
  }
83
 
84
  ul li:before {
85
+ content: "•";
86
+ margin-right: 10px;
87
  }
88
 
89
  .buttons {
90
+ display: flex;
91
+ margin-top: 20px;
92
+ gap: 10px;
93
+ max-width: 500px;
94
+ flex-wrap: wrap;
95
  }
96
 
97
  button {
98
+ all: unset;
99
+ border: 1px solid #ccc;
100
+ padding: 5px 15px;
101
+ border-radius: 5px;
102
+ display: block;
103
+ cursor: pointer;
104
  }
105
 
106
  pre {
107
+ margin-bottom: 20px;
108
+ border: 1px solid #ccc;
109
+ background: whitesmoke;
110
+ border-radius: 5px;
111
+ padding: 10px;
112
+ line-height: 1.75;
113
  }
114
 
115
  #scrollable-area {
116
+ height: 300px;
117
+ overflow: auto;
118
+ border: 1px solid #ccc;
119
+ padding: 10px;
120
+ border-radius: 5px;
121
+ margin: 50px 0;
122
  }
123
+ </style>
124
+ </head>
125
+ <body>
126
+ <div class="container">
127
+ <div class="page-header">
128
+ <h1>driver.js <sup>next</sup></h1>
129
+ <p>Rewritten and enhanced version of driver.js</p>
130
+ </div>
131
+
132
+ <div class="buttons">
133
+ <button id="highlight-btn">Animated Highlight</button>
134
+ <button id="simple-highlight-btn">Simple Highlight</button>
135
+ <button id="transition-highlight-btn">Transition Highlight</button>
136
+ <button id="disallow-close">Disallow Close</button>
137
+ <button id="dark-highlight-btn">Super Dark Highlight</button>
138
+ <button id="dim-highlight-btn">Super Dim Highlight</button>
139
+ <button id="scrollable-area-btn">Scrollable Area</button>
140
+ <button id="inner-scroll-area-btn">Inner Scroll Area</button>
141
+ <button id="without-element-btn">No Element</button>
142
+ <button id="is-active-btn">Is Active?</button>
143
+ <button id="activate-check-btn">Activate and Check</button>
144
+ <button id="destroy-btn">Destroy</button>
145
+ </div>
146
+
147
+ <ul>
148
+ <li>Written in TypeScript</li>
149
+ <li>Lightweight — only 5kb gzipped</li>
150
+ <li>No dependencies</li>
151
+ <li>MIT Licensed</li>
152
+ </ul>
153
+
154
+ <h2>Yet another Tour Library?</h2>
155
+ <p>
156
+ No, it is not. Tours are just one of the many use-cases. Driver.js can be used wherever you need some sort of
157
+ overlay for the page; some common usecases could be: e.g. dimming the background when user is interacting with
158
+ some component, using it as a focus shifter to bring user's attention to some component on page, or using it to
159
+ simulate those "Turn off the Lights" widgets that you might have seen on video players online, etc.
160
+ </p>
161
+ <p class="second-para">
162
+ Driver.js is written in Vanilla JS, has zero dependencies and is highly customizable. It has several options
163
+ allowing you to manipulate how it behaves and also provides you the hooks to manipulate the elements as they are
164
+ highlighted, about to be highlighted, or deselected.
165
+ </p>
166
+
167
+ <h2 id="installation-head">Installation</h2>
168
+ <p>You can install it using yarn or npm, whatever you prefer.</p>
169
+
170
+ <pre>
171
  yarn add driver.js
172
  npm install driver.js</pre
173
+ >
174
+
175
+ <p>Or include it using CDN — put the version as [email protected] in the name</p>
176
+
177
+ <pre>https://unpkg.com/driver.js/dist/driver.min.js</pre>
178
+
179
+ <h2>Usage and Demo</h2>
180
+
181
+ <p id="large-paragraph-text">
182
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
183
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
184
+ tempore voluptates! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea
185
+ eligendi id in inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi
186
+ recusandae tempore voluptates!
187
+ </p>
188
+ <p>
189
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
190
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
191
+ tempore voluptates!
192
+ </p>
193
+ <p>
194
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
195
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
196
+ tempore voluptates!
197
+ </p>
198
+ <div id="scrollable-area">
199
+ <p>
200
+ First -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
201
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
202
+ veniam! Doloribus eos id quaerat.
203
+ </p>
204
+ <p>
205
+ Second -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
206
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
207
+ veniam! Doloribus eos id quaerat.
208
+ </p>
209
+ <p id="third-scroll-paragraph">
210
+ Third -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
211
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
212
+ veniam! Doloribus eos id quaerat.
213
+ </p>
214
+ <p>
215
+ Fourth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
216
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
217
+ veniam! Doloribus eos id quaerat.
218
+ </p>
219
+ <p>
220
+ Fifth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
221
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
222
+ veniam! Doloribus eos id quaerat.
223
+ </p>
224
+ <p>
225
+ Sixth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
226
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
227
+ veniam! Doloribus eos id quaerat.
228
+ </p>
229
+ <p>
230
+ Seventh -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
231
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
232
+ veniam! Doloribus eos id quaerat.
233
+ </p>
234
+ <p>
235
+ Eighth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
236
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
237
+ veniam! Doloribus eos id quaerat.
238
+ </p>
239
+ <p>
240
+ Ninth -> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur dicta ipsum labore quod
241
+ tempora ullam? Alias consequatur doloremque laborum maxime necessitatibus nostrum odio, officiis quibusdam
242
+ veniam! Doloribus eos id quaerat.
243
+ </p>
244
+ </div>
245
+ <p>
246
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
247
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
248
+ tempore voluptates!
249
+ </p>
250
+ <p>
251
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
252
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
253
+ tempore voluptates!
254
+ </p>
255
+ <p>
256
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
257
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
258
+ tempore voluptates!
259
+ </p>
260
+ <p>
261
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
262
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
263
+ tempore voluptates!
264
+ </p>
265
+ <p>
266
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi blanditiis consectetur ea eligendi id in
267
+ inventore ipsa iure laudantium libero, minus molestias necessitatibus nesciunt non omnis, quasi recusandae
268
+ tempore voluptates!
269
+ </p>
270
+ </div>
271
+ <script type="module">
272
+ import { driver } from "./src/driver.ts";
273
+
274
+ document.getElementById("is-active-btn").addEventListener("click", () => {
275
+ alert(driver().isActive());
276
+ });
277
+
278
+ document.getElementById("activate-check-btn").addEventListener("click", () => {
279
+ const driverObj = driver({
280
+ showButtons: false,
281
+ });
282
+
283
+ driverObj.highlight({
284
+ element: "#activate-check-btn",
285
+ popover: {
286
+ title: "Check if driver is active",
287
+ description: "This will alert the status after 2 seconds",
288
+ side: 'bottom',
289
+ align: 'start',
290
+ },
291
+ });
292
+
293
+ setTimeout(() => {
294
+ alert(`Status: ${driverObj.isActive()}. Destroying driver...`);
295
+ driverObj.destroy();
296
+ setTimeout(() => {
297
+ alert(`Status: ${driverObj.isActive()}`);
298
+ }, 0);
299
+ }, 2000);
300
+ });
301
+
302
+ document.getElementById("highlight-btn").addEventListener("click", () => {
303
+ driver({
304
+ animate: true,
305
+ showButtons: false,
306
+ popoverOffset: 10,
307
+ }).highlight({
308
+ element: "h2",
309
+ popover: {
310
+ title: "MIT License",
311
+ description: "A lightweight, no-dependency JavaScript engine to drive user's focus.",
312
+ side: "bottom",
313
+ align: "start",
314
+ },
315
+ });
316
+ });
317
+
318
+ document.getElementById("simple-highlight-btn").addEventListener("click", () => {
319
+ driver({ animate: false }).highlight({
320
+ element: "#large-paragraph-text",
321
+ popover: {
322
+ title: "driver.js",
323
+ description:
324
+ "Highlight anything, anywhere on the page. Yes, literally anything including SVG portions, scrollable items etc.",
325
+ align: "start",
326
+ side: "top",
327
+ },
328
+ });
329
+ });
330
+
331
+ document.getElementById("dark-highlight-btn").addEventListener("click", () => {
332
+ driver({
333
+ animate: true,
334
+ opacity: 0.9,
335
+ }).highlight({ element: "ul" });
336
+ });
337
+
338
+ document.getElementById("dim-highlight-btn").addEventListener("click", () => {
339
+ driver({
340
+ animate: true,
341
+ opacity: 0.2,
342
+ }).highlight({ element: ".buttons" });
343
+ });
344
+
345
+ document.getElementById("transition-highlight-btn").addEventListener("click", () => {
346
+ const driverObj = driver({ animate: true });
347
+
348
+ driverObj.highlight({
349
+ popover: {
350
+ title: "driver.js",
351
+ description: "Highlight anything, anywhere on the page",
352
+ },
353
+ });
354
+
355
+ window.setTimeout(() => {
356
+ driverObj.highlight({
357
+ element: ".buttons button:first-child",
358
+ popover: {
359
+ title: "driver.js",
360
+ description: "Highlight anything, anywhere on the page",
361
+ },
362
  });
363
+ }, 2000);
364
+
365
+ window.setTimeout(() => {
366
+ driverObj.highlight({
367
+ popover: {
368
+ title: "driver.js",
369
+ description: "Highlight anything, anywhere on the page",
370
+ },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  });
372
+ }, 4000);
373
+
374
+ window.setTimeout(() => {
375
+ driverObj.highlight({
376
+ element: "h2",
377
+ popover: {
378
+ description: "driver.js",
379
+ },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  });
381
+ }, 6000);
382
+ });
383
+
384
+ document.getElementById("scrollable-area-btn").addEventListener("click", () => {
385
+ const driverObj = driver({ animate: true });
386
+ driverObj.highlight({ element: "#scrollable-area" });
387
+ });
388
+
389
+ document.getElementById("without-element-btn").addEventListener("click", () => {
390
+ const driverObj = driver({
391
+ animate: true,
392
+ });
393
+ driverObj.highlight({
394
+ popover: {
395
+ showButtons: false,
396
+ description:
397
+ "<div class='gif-popover'><img style='max-width: 100%' src='https://i.imgur.com/EAQhHu5.gif' /><p>Go and build something cool!</p></div>",
398
+ },
399
+ });
400
+ });
401
+
402
+ document.getElementById("inner-scroll-area-btn").addEventListener("click", () => {
403
+ const driverObj = driver({ animate: true });
404
+ driverObj.highlight({ element: "#third-scroll-paragraph" });
405
+ });
406
+
407
+ document.getElementById("disallow-close").addEventListener("click", () => {
408
+ const driverObj = driver({
409
+ animate: true,
410
+ allowClose: false,
411
+ });
412
+
413
+ driverObj.highlight({
414
+ element: ".buttons",
415
+ });
416
+ });
417
+
418
+ document.getElementById("destroy-btn").addEventListener("click", () => {
419
+ driver().destroy();
420
+ });
421
+ </script>
422
+ </body>
423
  </html>
src/driver.ts CHANGED
@@ -51,6 +51,7 @@ export function driver(options: Config = {}) {
51
  }
52
 
53
  return {
 
54
  drive: (steps: DriveStep[]) => console.log(steps),
55
  highlight: (step: DriveStep) => {
56
  init();
 
51
  }
52
 
53
  return {
54
+ isActive: () => getState("isInitialized") || false,
55
  drive: (steps: DriveStep[]) => console.log(steps),
56
  highlight: (step: DriveStep) => {
57
  init();
src/popover.ts CHANGED
@@ -52,7 +52,7 @@ export function renderPopover(element: Element, step: DriveStep) {
52
  title,
53
  description,
54
  showButtons = undefined,
55
- doneBtnText = 'Done',
56
  closeBtnText= 'Close',
57
  nextBtnText= 'Next &rarr;',
58
  prevBtnText = '&larr; Previous',
 
52
  title,
53
  description,
54
  showButtons = undefined,
55
+ // doneBtnText = 'Done',
56
  closeBtnText= 'Close',
57
  nextBtnText= 'Next &rarr;',
58
  prevBtnText = '&larr; Previous',