@versoly/plugins 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs DELETED
@@ -1,1036 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- defineConfig: () => defineConfig,
24
- plugins: () => plugins
25
- });
26
- module.exports = __toCommonJS(src_exports);
27
-
28
- // src/config.ts
29
- var defineConfig = (config) => {
30
- return config;
31
- };
32
-
33
- // src/plugins/calendly.ts
34
- var calendly_default = defineConfig({
35
- name: "calendly",
36
- cdnUrls: [
37
- {
38
- url: "https://assets.calendly.com/assets/external/widget.js",
39
- delay: true
40
- },
41
- {
42
- url: "https://assets.calendly.com/assets/external/widget.css",
43
- delay: true
44
- }
45
- ],
46
- js: `
47
- document.querySelectorAll('[data-calendly-url]').forEach(elem => {
48
- const url = elem.dataset.calendlyUrl;
49
-
50
- if (!url) {
51
- return;
52
- }
53
-
54
- elem.addEventListener('click', e => {
55
- e.preventDefault();
56
- window.Calendly.initPopupWidget({ url, parentElement: elem });
57
- })
58
- });`,
59
- checks: [{ plugin: "calendly" }, { html: "calendly" }],
60
- options: {
61
- name: "Calendly Options",
62
- isShown: {
63
- props: {
64
- "data-calendly-url": true
65
- }
66
- },
67
- fields: [
68
- {
69
- name: "Calendly Url",
70
- propsName: "data-calendly-url",
71
- type: "TextOption"
72
- }
73
- ]
74
- }
75
- });
76
-
77
- // src/plugins/swiper.ts
78
- var js = `
79
- window.vSwipers = [];
80
- window.vGetElementsByToggle('swiper').forEach((elem) => {
81
- let props = window.vGetElementOptions(elem);
82
-
83
- if (props.pagination && props.pagination.renderBullet === 'number') {
84
- props.pagination.renderBullet = function(index, className) {
85
- const span = document.createElement('span');
86
- span.className = className;
87
- span.textContent = index + 1;
88
- return span.outerHTML;
89
- }
90
- }
91
-
92
- window.vSwipers.push(new Swiper(elem, props));
93
- });`;
94
- var swiper_default = defineConfig({
95
- name: "swiper",
96
- cdnUrls: [
97
- {
98
- url: `https://cdnjs.cloudflare.com/ajax/libs/Swiper/9.3.2/swiper-bundle.min.js`,
99
- inline: false,
100
- defer: true
101
- },
102
- {
103
- url: `https://cdnjs.cloudflare.com/ajax/libs/Swiper/9.3.2/swiper-bundle.min.css`
104
- }
105
- ],
106
- js,
107
- checks: [{ plugin: "swiper" }]
108
- });
109
-
110
- // src/plugins/prism.ts
111
- var prism_default = defineConfig({
112
- name: "prism",
113
- cdnUrls: [
114
- {
115
- url: "https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/plugins/line-numbers/prism-line-numbers.min.css"
116
- },
117
- {
118
- url: "https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/prism.min.js"
119
- },
120
- {
121
- url: "https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/plugins/autoloader/prism-autoloader.min.js"
122
- },
123
- {
124
- url: "https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/plugins/line-numbers/prism-line-numbers.min.js"
125
- }
126
- ],
127
- js: `
128
- document.querySelectorAll("pre > code[class^='language-']").forEach((elem) => {
129
- elem.parentNode.innerHTML = elem.parentNode.innerHTML.trim();
130
- });
131
-
132
- let themeLink = window.vPrismTheme !== undefined ? window.vPrismTheme : 'default';
133
-
134
- if (themeLink === 'default') {
135
- themeLink = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/themes/prism.min.css';
136
- } else if (themeLink && !themeLink.includes('https://')) {
137
- themeLink = 'https://cdnjs.cloudflare.com/ajax/libs/prism-themes/1.9.0/prism-' + themeLink + '.min.css';
138
- }
139
-
140
- if (themeLink && themeLink.includes('https://')) {
141
- const link = document.createElement('link');
142
- link.rel = 'stylesheet';
143
- link.href = themeLink;
144
- document.head.appendChild(link);
145
- }
146
-
147
- window.addEventListener('load', () => {
148
- window.Prism && window.Prism.highlightAll();
149
- });`,
150
- checks: [{ html: "prism" }]
151
- });
152
-
153
- // src/plugins/tilt.ts
154
- var js2 = `window.vTilts = [];
155
- window.vGetElementsByToggle('tilt').forEach((elem) => {
156
- VanillaTilt.init(elem, window.vGetElementOptions(elem));
157
- window.vTilts.push(elem);
158
- });`;
159
- var tilt_default = defineConfig({
160
- name: "tilt",
161
- options: {
162
- name: "Tilt",
163
- previewInEditor: true,
164
- isShown: {
165
- props: {
166
- "data-toggle": "tilt"
167
- }
168
- },
169
- fields: [
170
- {
171
- name: "Speed",
172
- type: "SliderPropOption",
173
- propsName: "data-options.speed",
174
- min: 0,
175
- max: 3e3,
176
- stepSize: 100,
177
- defaultValue: 300
178
- },
179
- {
180
- name: "Max Tilt",
181
- type: "SliderPropOption",
182
- propsName: "data-options.max",
183
- min: 0,
184
- max: 180,
185
- stepSize: 1,
186
- defaultValue: 35
187
- },
188
- {
189
- name: "Reverse",
190
- type: "BooleanPropOption",
191
- propsName: "data-options.reverse",
192
- defaultValue: false,
193
- enabledValue: true,
194
- inHeaderAction: true,
195
- headerGroup: "Core"
196
- },
197
- {
198
- name: "Transition",
199
- type: "BooleanPropOption",
200
- propsName: "data-options.transition",
201
- defaultValue: true,
202
- enabledValue: false,
203
- inHeaderAction: true,
204
- headerGroup: "Core"
205
- },
206
- {
207
- label: "Easing",
208
- name: "Easing",
209
- propsName: "data-options.easing",
210
- type: "TextOption",
211
- defaultValue: "cubic-bezier(.03,.98,.52,.99)",
212
- enabledValue: "cubic-bezier(.03,.98,.52,.99)",
213
- inHeaderAction: true,
214
- headerGroup: "Core"
215
- },
216
- {
217
- name: "Full Page Listening",
218
- type: "BooleanPropOption",
219
- propsName: "data-options.full-page-listening",
220
- defaultValue: false,
221
- enabledValue: true,
222
- inHeaderAction: true,
223
- headerGroup: "Core"
224
- },
225
- {
226
- name: "Start X",
227
- type: "SliderPropOption",
228
- propsName: "data-options.startX",
229
- min: 0,
230
- max: 180,
231
- stepSize: 1,
232
- defaultValue: 0,
233
- enabledValue: 15,
234
- inHeaderAction: true,
235
- headerGroup: "Core"
236
- },
237
- {
238
- name: "Start Y",
239
- type: "SliderPropOption",
240
- propsName: "data-options.startY",
241
- min: 0,
242
- max: 180,
243
- stepSize: 1,
244
- defaultValue: 0,
245
- enabledValue: 15,
246
- inHeaderAction: true,
247
- headerGroup: "Core"
248
- },
249
- {
250
- name: "Perspective",
251
- type: "SliderPropOption",
252
- propsName: "data-options.perspective",
253
- min: 0,
254
- max: 3e3,
255
- stepSize: 1,
256
- defaultValue: 1e3,
257
- enabledValue: 1e3,
258
- inHeaderAction: true,
259
- headerGroup: "Core"
260
- },
261
- {
262
- name: "Scale",
263
- type: "SliderPropOption",
264
- propsName: "data-options.scale",
265
- min: 0.5,
266
- max: 3,
267
- stepSize: 0.1,
268
- defaultValue: 1,
269
- enabledValue: 1.5,
270
- inHeaderAction: true,
271
- headerGroup: "Core"
272
- },
273
- {
274
- name: "Axis",
275
- type: "IconButtonOption",
276
- propsName: "data-options.axis",
277
- options: ["x", "y"],
278
- defaultValue: null,
279
- enabledValue: "x",
280
- inHeaderAction: true,
281
- headerGroup: "Core"
282
- },
283
- {
284
- name: "Glare",
285
- type: "BooleanPropOption",
286
- propsName: "data-options.glare",
287
- defaultValue: false,
288
- enabledValue: true,
289
- inHeaderAction: true,
290
- headerGroup: "Glare"
291
- },
292
- {
293
- name: "Max Glare",
294
- type: "SliderPropOption",
295
- propsName: "data-options.max-glare",
296
- min: 0.1,
297
- max: 1,
298
- stepSize: 0.1,
299
- defaultValue: 1,
300
- enabledValue: 0.5,
301
- inHeaderAction: true,
302
- headerGroup: "Glare"
303
- },
304
- {
305
- name: "Reset",
306
- type: "BooleanPropOption",
307
- propsName: "data-options.reset",
308
- defaultValue: true,
309
- enabledValue: true,
310
- inHeaderAction: true,
311
- headerGroup: "Reset"
312
- },
313
- {
314
- name: "Reset To Start",
315
- type: "BooleanPropOption",
316
- propsName: "data-options.reset-to-start",
317
- defaultValue: true,
318
- enabledValue: true,
319
- inHeaderAction: true,
320
- headerGroup: "Reset"
321
- }
322
- ]
323
- },
324
- cdnUrls: [
325
- {
326
- url: "https://cdnjs.cloudflare.com/ajax/libs/vanilla-tilt/1.8.0/vanilla-tilt.js",
327
- defer: true
328
- }
329
- ],
330
- js: js2,
331
- checks: [{ plugin: "tilt" }],
332
- components: [
333
- {
334
- name: "Tilt Image",
335
- category: "Plugins",
336
- html: `<img class="w-96" src="https://dummyimage.com/1000x600/edf2f7/0f1631&text=Placeholder" data-toggle="tilt" data-options="{'max':15,'reset':true}" />`
337
- },
338
- {
339
- name: "Tilt Div",
340
- category: "Plugins",
341
- html: `<div class="w-full h-full" data-toggle="tilt" data-options="{'max':15,'reset':true}"></div>`
342
- }
343
- ]
344
- });
345
-
346
- // src/plugins/typed.ts
347
- var typed_default = defineConfig({
348
- name: "typed",
349
- options: {
350
- name: "Typed Effect Options",
351
- previewInEditor: true,
352
- isShown: {
353
- props: {
354
- "data-toggle": "typed"
355
- }
356
- },
357
- fields: [
358
- {
359
- type: "TextOption",
360
- name: "Phrases",
361
- tooltipProps: { content: "Use commas to add new words/phrases" },
362
- placeholder: "second phrase., third phrase.",
363
- propsName: "data-options.strings",
364
- isArray: true
365
- },
366
- {
367
- name: "Loop",
368
- type: "BooleanPropOption",
369
- propsName: "data-options.loop",
370
- defaultValue: true,
371
- enabledValue: true,
372
- inHeaderAction: true,
373
- headerGroup: "Core"
374
- },
375
- {
376
- name: "Type Speed",
377
- type: "SliderPropOption",
378
- propsName: "data-options.typeSpeed",
379
- min: 10,
380
- max: 400,
381
- stepSize: 10,
382
- defaultValue: 100,
383
- enabledValue: 100,
384
- inHeaderAction: true,
385
- headerGroup: "Core"
386
- },
387
- {
388
- name: "Back Speed",
389
- type: "SliderPropOption",
390
- propsName: "data-options.backSpeed",
391
- min: 10,
392
- max: 400,
393
- stepSize: 10,
394
- defaultValue: 50,
395
- enabledValue: 50,
396
- inHeaderAction: true,
397
- headerGroup: "Core"
398
- },
399
- {
400
- name: "Start Delay",
401
- type: "SliderPropOption",
402
- propsName: "data-options.startDelay",
403
- min: 50,
404
- max: 3e3,
405
- stepSize: 50,
406
- defaultValue: 500,
407
- enabledValue: 500,
408
- inHeaderAction: true,
409
- headerGroup: "Core"
410
- },
411
- {
412
- name: "Back Delay",
413
- type: "SliderPropOption",
414
- propsName: "data-options.backDelay",
415
- min: 50,
416
- max: 3e3,
417
- stepSize: 50,
418
- defaultValue: 1e3,
419
- enabledValue: 1e3,
420
- inHeaderAction: true,
421
- headerGroup: "Core"
422
- }
423
- ]
424
- },
425
- cdnUrls: [
426
- {
427
- url: "https://cdnjs.cloudflare.com/ajax/libs/typed.js/2.0.11/typed.min.js",
428
- defer: true
429
- }
430
- ],
431
- js: `
432
- window.vGetElementsByToggle('typed').forEach((elem) => {
433
- let options = window.vGetElementOptions(elem);
434
-
435
- options.strings = [elem.innerHTML, ...options.strings];
436
- elem.innerHTML = '';
437
-
438
- new Typed(elem, {
439
- typeSpeed: 100,
440
- backSpeed: 50,
441
- startDelay: 500,
442
- backDelay: 1000,
443
- loop: true,
444
- ...options
445
- });
446
- });`,
447
- checks: [{ plugin: "typed" }],
448
- components: [
449
- // {
450
- // name: 'Tilt Div',
451
- // category: 'Plugins',
452
- // html: `<div class="w-full h-full" data-toggle="tilt" data-options="{'max':15,'reset':true}"></div>`,
453
- // },
454
- ],
455
- displayNames: [
456
- {
457
- displayName: "Typed Effect",
458
- property: "data-toggle",
459
- value: "typed"
460
- }
461
- ]
462
- });
463
-
464
- // src/plugins/countup.ts
465
- var countup_default = defineConfig({
466
- name: "countup",
467
- cdnUrls: [
468
- {
469
- url: "https://cdnjs.cloudflare.com/ajax/libs/scrollReveal.js/3.4.0/scrollreveal.min.js"
470
- },
471
- {
472
- url: "https://cdnjs.cloudflare.com/ajax/libs/countup.js/2.0.8/countUp.umd.min.js"
473
- }
474
- ],
475
- js: `window.scrollReveal = ScrollReveal();
476
-
477
- window.countUpStart = (elem) => {
478
- var startVal = elem.dataset.from ? +elem.dataset.from : 0
479
- ,endVal = elem.dataset.to ? +elem.dataset.to : 0
480
- ,duration = elem.dataset.duration ? +elem.dataset.duration : 2
481
- ,options = window.vGetElementOptions(elem);
482
- const up = new countUp.CountUp(elem, endVal, {...options, startVal, duration});
483
- up.start();
484
- }
485
-
486
- window.vGetElementsByToggle('countup').forEach(elem => {
487
- scrollReveal.reveal(elem, {beforeReveal: window.countUpStart, duration: 0});
488
- });`,
489
- checks: [{ plugin: "countup" }],
490
- options: {
491
- name: "Countup Options",
492
- isShown: {
493
- props: {
494
- "data-toggle": "countup"
495
- }
496
- },
497
- fields: [
498
- {
499
- name: "Count From",
500
- propsName: "data-from",
501
- type: "NumberOption"
502
- },
503
- {
504
- name: "Count To",
505
- propsName: "data-to",
506
- type: "NumberOption"
507
- },
508
- {
509
- name: "Duration",
510
- propsName: "data-duration",
511
- type: "NumberOption",
512
- placeholder: "2",
513
- stepSize: 0.1
514
- },
515
- {
516
- name: "Countup when Visible",
517
- propsName: "data-aos",
518
- options: [false, true],
519
- type: "BooleanPropOption",
520
- defaultValue: false
521
- }
522
- ]
523
- },
524
- components: [
525
- {
526
- name: "Countup",
527
- category: "Plugins",
528
- html: `<h2 data-toggle="countup" data-aos data-aos-id="countup:in" data-from="100" data-to="800">100</h2>`
529
- }
530
- ]
531
- });
532
-
533
- // src/plugins/countdown.ts
534
- var js3 = `window.vGetElementsByToggle('countdown').forEach(elem => {
535
- const deadline = new Date(elem.dataset.countdown).getTime();
536
-
537
- let elementsByType = {};
538
- elem.querySelectorAll('[data-countdown-type]').forEach(el => {
539
- elementsByType[el.dataset.countdownType] = el;
540
- });
541
-
542
- const countdownFunc = () => {
543
- let t = (deadline - new Date().getTime()) / 1000;
544
-
545
- if (t < 0) {
546
- clearInterval(x);
547
- t = 0;
548
- }
549
-
550
- let valuesByType = {
551
- seconds: t % 60,
552
- minutes: (t / 60) % 60,
553
- hours: (t / (60 * 60)) % 24,
554
- days: t / (60 * 60 * 24),
555
- };
556
-
557
- Object.keys(valuesByType).forEach(type => {
558
- if (elementsByType[type]) {
559
- let value = Math.floor(valuesByType[type]);
560
- if (value < 10) {
561
- value = '0' + value;
562
- }
563
-
564
- elementsByType[type].innerHTML = value;
565
- }
566
- });
567
- }
568
-
569
- var x = setInterval(countdownFunc, 1000);
570
- countdownFunc();
571
- });
572
- `;
573
- var currentDate = /* @__PURE__ */ new Date();
574
- var ISODateIn5Days = new Date(currentDate.getTime() + 5 * 24 * 60 * 60 * 1234).toISOString();
575
- var countdown_default = defineConfig({
576
- name: "countdown",
577
- js: js3,
578
- checks: [{ plugin: "countdown" }],
579
- options: {
580
- name: "Countdown",
581
- isShown: {
582
- props: {
583
- "data-toggle": "countdown",
584
- "data-countdown": true
585
- }
586
- },
587
- fields: [
588
- {
589
- name: "Countdown Timer",
590
- propsName: "data-countdown",
591
- type: "DateTimePickerOption"
592
- }
593
- ]
594
- },
595
- components: [
596
- {
597
- name: "Countdown",
598
- category: "Plugins",
599
- html: `<h2 class="font-semibold" data-toggle="countdown" data-countdown="${ISODateIn5Days}">
600
- <span data-countdown-type="days">4</span>
601
- <span class="opacity-20">:</span>
602
- <span data-countdown-type="hours">1</span>
603
- <span class="opacity-20">:</span>
604
- <span data-countdown-type="minutes">0</span>
605
- <span class="opacity-20">:</span>
606
- <span data-countdown-type="seconds">0</span>
607
- </h2>`
608
- }
609
- ]
610
- });
611
-
612
- // src/plugins/finisher-header.ts
613
- var finisher_header_default = defineConfig({
614
- name: "finisher-header",
615
- cdnUrls: [
616
- {
617
- url: "https://d1pnnwteuly8z3.cloudfront.net/js/finisher-header.es5.min.js",
618
- defer: true
619
- }
620
- ],
621
- js: `document.querySelectorAll('.finisher-header').forEach(elem => {
622
- let options = window.vGetElementOptions(elem);
623
- new FinisherHeader(options);
624
- });`,
625
- checks: [{ html: "finisher-header" }],
626
- components: [
627
- {
628
- name: "Finisher Header",
629
- category: "Plugins",
630
- html: `<div class="finisher-header" data-toggle="finisher-header" data-options="{'count':15,'size':{'min':2,'max':40,'pulse':0},'speed':{'x':{'min':0,'max':0.8},'y':{'min':0,'max':0.2}},'colors':{'background':'#fff','particles':['#ff926b','#87ddfe','#acaaff','#1bffc2','#f9a5fe']},'blending':'screen','opacity':{'center':1,'edge':1},'skew':-1,'shapes':['c','s','t']}"></div>`
631
- }
632
- ]
633
- });
634
-
635
- // src/plugins/taos.ts
636
- var js4 = `!function(){const e=(e,t)=>{let s=!1;return()=>{s||(e(),s=!0,setTimeout((()=>s=!1),t))}},t=e=>{e.className!==e.dataset.taosClass&&(e.className=e.dataset.taosClass)},s=e=>e.className=e.className.replaceAll("taos:",""),a=e=>(e.className.includes("taos-init")||(e.dataset.taosClass=e.className+" taos-init",t(e)),e.className+=" !duration-[0ms] !delay-[0ms]",s(e),{element:e,once:"1"===getComputedStyle(e)["animation-iteration-count"],offset:parseInt(e.dataset.taosOffset||0)});let n=[],i=window.innerWidth,o=window.scrollY;const l=e((()=>{n.forEach((e=>e.trigger=e.element.getBoundingClientRect().top-window.innerHeight+e.offset+o))}),250),r=()=>{n=[],document.querySelectorAll('[class*="taos"]').forEach((e=>n.push(a(e)))),l(),requestAnimationFrame(c)},c=()=>{o=window.scrollY,n.forEach((({element:e,trigger:a,once:n})=>{a<o?t(e):!n&&e.className.includes("taos:")&&s(e)})),l()};r(),addEventListener("scroll",e(c,32)),addEventListener("orientationchange",r),addEventListener("resize",((e,t)=>{let s=null;return()=>{clearTimeout(s),s=setTimeout(e,t)}})((()=>{i!==window.innerWidth&&(i=window.innerWidth,r())}),250)),new MutationObserver((e=>{e.forEach((({target:e})=>{e.className&&!e.className.includes("taos-init")&&e.className.includes("taos:")&&n.push(a(e))}))})).observe(document,{attributes:!0,childList:!0,subtree:!0})}();`;
637
- var taos_default = defineConfig({
638
- name: "taos",
639
- css: `
640
- html.js :where([class*="taos:"]:not(.taos-init)) {
641
- visibility: hidden;
642
- }`,
643
- js: js4,
644
- checks: [{ plugin: "taos" }, { html: "taos:" }],
645
- safelist: ["!duration-[0ms]", "!delay-[0ms]"]
646
- });
647
-
648
- // src/plugins/tailtip.ts
649
- var js5 = `window.vTailtips = [];
650
-
651
- window.vGetElementsByToggle('tooltip').forEach((elem) => {
652
- const tailtip = Tailtip(elem, window.vGetElementOptions(elem));
653
- window.vTailtips.push(tailtip);
654
- });`;
655
- var tailtip_default = defineConfig({
656
- name: "tailtip",
657
- src: "https://d1pnnwteuly8z3.cloudfront.net/libs/tailtip/1.0.3/tailtip.js",
658
- cdnUrls: [
659
- {
660
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/tailtip/1.0.3/tailtip.js",
661
- defer: true
662
- }
663
- ],
664
- js: js5,
665
- checks: [{ plugin: "tailtip" }],
666
- components: [
667
- {
668
- name: "Info Tooltip",
669
- category: "Plugins",
670
- html: `<span class="flex w-4 h-4 bg-dark text-white items-center justify-center rounded-full text-xs font-medium" data-toggle="tooltip">i</span>
671
- <div class="tooltip" role="tooltip">
672
- <div class="tooltip-inner">
673
- <span>This is a tooltip that is shown when hovered or clicked.</span>
674
- </div>
675
- <div class="tooltip-arrow"></div>
676
- </div>`
677
- }
678
- ],
679
- options: {
680
- name: "Tailtip Options",
681
- // isShown: (element) => element['data-toggle'] === 'tooltip',
682
- isShown: {
683
- props: {
684
- "data-toggle": "tooltip"
685
- }
686
- },
687
- previewInEditor: true,
688
- fields: [
689
- {
690
- name: "tailtip",
691
- type: "TailtipOption"
692
- },
693
- {
694
- name: "Placement",
695
- propsName: "data-options.placement",
696
- type: "DropdownPropOption",
697
- inline: true,
698
- noneDisplayValue: "Default",
699
- options: [false, "top", "bottom", "left", "right"]
700
- }
701
- ]
702
- }
703
- });
704
-
705
- // src/plugins/versoly-marquee.ts
706
- var src = "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-marquee/0.0.2/versoly-marquee.iife.js";
707
- var js6 = `window.vMarquees = [];
708
- window.vGetElementsByToggle('marquee').forEach((elem) => {
709
- const marquee = new Marquee(elem, window.vGetElementOptions(elem));
710
- window.vMarquees.push(marquee);
711
- });`;
712
- var versoly_marquee_default = defineConfig({
713
- name: "versoly-marquee",
714
- js: js6,
715
- options: {
716
- name: "Marquee",
717
- previewInEditor: true,
718
- isShown: {
719
- props: {
720
- "data-toggle": "marquee"
721
- }
722
- },
723
- fields: [
724
- {
725
- name: "Loop",
726
- type: "BooleanPropOption",
727
- propsName: "data-options.loop",
728
- defaultValue: true,
729
- enabledValue: true,
730
- inHeaderAction: true,
731
- headerGroup: "Core"
732
- },
733
- {
734
- name: "Duration",
735
- type: "SliderPropOption",
736
- propsName: "data-options.duration",
737
- min: 1,
738
- max: 20,
739
- stepSize: 1,
740
- defaultValue: 5
741
- },
742
- {
743
- name: "Direction",
744
- type: "IconButtonOption",
745
- propsName: "data-options.direction",
746
- options: ["ltr", "rtl", "ttb", "btt"],
747
- defaultValue: "ltr"
748
- },
749
- {
750
- name: "Pauseable",
751
- type: "BooleanPropOption",
752
- propsName: "data-options.pauseable",
753
- defaultValue: true
754
- },
755
- {
756
- name: "Iterations",
757
- type: "SliderPropOption",
758
- propsName: "data-options.iterations",
759
- min: 1,
760
- max: 5,
761
- stepSize: 1,
762
- defaultValue: 1,
763
- enabledValue: 1,
764
- inHeaderAction: true,
765
- headerGroup: "Core"
766
- }
767
- ]
768
- },
769
- checks: [{ plugin: "marquee" }],
770
- src,
771
- cdnUrls: [
772
- {
773
- url: src,
774
- defer: true
775
- }
776
- ],
777
- displayNames: [
778
- {
779
- displayName: "Marquee",
780
- property: "data-toggle",
781
- value: "marquee"
782
- }
783
- ]
784
- });
785
-
786
- // src/plugins/versoly-ui.ts
787
- var versoly_ui_default = defineConfig({
788
- name: "versoly-ui",
789
- cdnUrls: [
790
- {
791
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/floating-ui/1.0.1/floating-ui.min.js",
792
- defer: true
793
- },
794
- {
795
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-ui/2.1.1/versoly-ui.js",
796
- delay: true
797
- }
798
- ]
799
- });
800
-
801
- // src/plugins/versoly-analytics.ts
802
- var js7 = `!function(e){e.versoly.event=function(t){if(!("visibilityState"in document&&"prerender"===document.visibilityState||/bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex/i.test(navigator.userAgent)||e._phantom||e.__nightmare||e.navigator.webdriver||e.Cypress||""===e.location.host)){var n=new XMLHttpRequest;n.open("POST",e.versoly.url,!0),n.setRequestHeader("Content-Type","application/json; charset=UTF-8"),n.send(JSON.stringify({siteId:e.versoly.id,referrer:document.referrer,paramReferrer:"",hostname:e.location.hostname,pathname:e.location.pathname+e.location.search,width:e.innerWidth,height:e.innerHeight,tz:Intl.DateTimeFormat().resolvedOptions().timeZone,...t}))}}}(window),window.versoly.event({name: 'pageview'});`;
803
- var versoly_analytics_default = defineConfig({
804
- name: "versoly-analytics",
805
- js: js7,
806
- checks: [{ html: "/api/event" }]
807
- });
808
-
809
- // src/plugins/versoly-events.ts
810
- var versoly_events_default = defineConfig({
811
- name: "versoly-events",
812
- js: `const eventElements = document.querySelectorAll('[data-eventid]');
813
- for (const eventElement of eventElements) {
814
- if (eventElement.tagName !== 'FORM') {
815
- eventElement.addEventListener('click', function(e) {
816
- const eventName = eventElement.getAttribute('data-eventid');
817
-
818
- if (window.versoly) {
819
- window.versoly.event({name: eventName})
820
- }
821
- if (window.gtag) {
822
- window.gtag('event', eventName)
823
- }
824
- if (window.amplitude) {
825
- window.amplitude.getInstance().logEvent(event);
826
- }
827
- })
828
- }
829
- }`,
830
- checks: [{ html: "data-eventid" }]
831
- });
832
-
833
- // src/plugins/versoly-form.ts
834
- var versoly_form_default = defineConfig({
835
- name: "versoly-form",
836
- checks: [{ plugin: "formid" }],
837
- js: `window.vPageLoadedAt = Date.now();
838
- window.vForms = window.vForms || {};
839
-
840
- setTimeout(() => {
841
- let inputs = [...document.getElementsByTagName("input")]
842
- inputs.forEach(i => {
843
- if (i.name === 'email_second' || i.name === 'name_second') {
844
- i.setAttribute('aria-hidden', 'true')
845
- i.setAttribute('tabindex', '-1')
846
- i.setAttribute('autocomplete', 'false')
847
- }
848
- })
849
- }, 3000)
850
-
851
- const sendFormData = function (e, form) {
852
- e.preventDefault();
853
- const formId = form.dataset.formid;
854
- let scriptsByForm = window.vForms[formId] || {}
855
-
856
- if (window.vPageLoadedAt + 3000 > Date.now()) {
857
- return null
858
- }
859
-
860
- let data = {
861
- created: Date.now(),
862
- url: location.pathname + location.search
863
- }
864
-
865
- const filteredForms = document.querySelectorAll('[data-formId="' + formId + '"]')
866
- let formIndex = 0
867
- filteredForms.forEach((f, index) => {
868
- if (f === form) {
869
- formIndex = index
870
- }
871
- })
872
-
873
- const errorElement = document.querySelectorAll('[data-form-errorid="' + formId + '"]')[formIndex]
874
- let inputs = [
875
- ...form.getElementsByTagName("input"),
876
- ...form.getElementsByTagName("textarea"),
877
- ...form.getElementsByTagName("select")
878
- ]
879
-
880
- inputs.forEach(input => {
881
- if (input.type === 'radio') {
882
- if (input.checked) {
883
- data[input.name] = input.value
884
- }
885
- return
886
- }
887
- if (input.tagName === 'SELECT') {
888
- data[input.name] = input.options[input.selectedIndex].value
889
- return
890
- }
891
- if (input.type === 'checkbox') {
892
- data[input.name] = input.checked + ""
893
- return
894
- }
895
- data[input.name] = input.value
896
- })
897
-
898
- if (!!data['email_second'] || !!data['name_second']) {
899
- return null
900
- }
901
- delete data['email_second'];
902
- delete data['name_second'];
903
-
904
- if (scriptsByForm.pre) {
905
- eval(scriptsByForm.pre)
906
- }
907
-
908
- const submitButton = form.querySelector(('button[type="submit"]'))
909
- const buttonInnerHTML = submitButton.innerHTML
910
- submitButton.disabled = true
911
-
912
- let loadingButtonInnerHTML = '<i class="fa fa-spinner fa-spin"></i> Loading'
913
- if (submitButton.getAttribute('data-loading-html')) {
914
- loadingButtonInnerHTML = submitButton.getAttribute('data-loading-html')
915
- }
916
- submitButton.innerHTML = loadingButtonInnerHTML
917
-
918
- data = JSON.stringify(data)
919
- fetch('https://api.versoly.com/v1/form/submit', {
920
- method: 'POST',
921
- headers: {
922
- 'Content-Type': 'application/json'
923
- },
924
- body: JSON.stringify({formId: formId, data: data})
925
- })
926
- .then(function (response){
927
- if (!response.ok) {
928
- throw new Error('Bad response from server');
929
- }
930
-
931
- if (window.versoly && form.getAttribute('data-eventid')) {
932
- window.versoly.event({name: form.getAttribute('data-eventid')})
933
- }
934
-
935
- if (scriptsByForm.post) {
936
- eval(scriptsByForm.post)
937
- }
938
-
939
- if (form.dataset["successUrl"]) {
940
- window.location.replace(form.dataset["successUrl"])
941
- return
942
- }
943
-
944
- const successElement = document.querySelectorAll('[data-form-successid="' + formId + '"]')[formIndex]
945
-
946
- if (successElement) {
947
- successElement.classList.remove("d-js");
948
- errorElement.classList.add("d-js");
949
- form.classList.add("d-js");
950
-
951
- successElement.classList.remove("d-none");
952
- errorElement.classList.add("d-none");
953
- form.classList.add("d-none");
954
- }
955
-
956
- submitButton.disabled = false
957
- submitButton.innerHTML = buttonInnerHTML
958
- })
959
- .catch(function (error){
960
- console.log(error)
961
- if (errorElement) {
962
- errorElement.classList.remove("d-js");
963
- errorElement.classList.remove("d-none");
964
- }
965
- if (scriptsByForm.failed) {
966
- eval(scriptsByForm.failed)
967
- }
968
- submitButton.disabled = false
969
- submitButton.innerHTML = buttonInnerHTML
970
- })
971
- }
972
-
973
-
974
- window.addFormListener = () => {
975
- const forms = document.querySelectorAll('[data-formid]');
976
-
977
- for (const form of forms) {
978
- if (!form.getAttribute('data-has-form-eventlistener')) {
979
- form.addEventListener("submit", function (e) {
980
- sendFormData(e, form)
981
- });
982
- form.setAttribute('data-has-form-eventlistener', 'true')
983
- }
984
- }
985
- }
986
- window.addFormListener && window.addFormListener()
987
- `
988
- });
989
-
990
- // src/plugins/versoly-modal.ts
991
- var js8 = `window.vGetElementsByToggle('modal').forEach(elem => {
992
- let options = window.vGetElementOptions(elem);
993
-
994
- if (options.globalBlockId && window.vComponents[options.globalBlockId]) {
995
- elem.dataset.html = window.vComponents[options.globalBlockId];
996
-
997
- if (window.vComponents[options.globalBlockId].includes('data-formid')) {
998
- options.beforeShown = 'addFormListener'
999
- }
1000
- }
1001
-
1002
- elem.dataset.options = JSON.stringify(options);
1003
- });`;
1004
- var versoly_modal_default = defineConfig({
1005
- name: "versoly-modal",
1006
- js: js8,
1007
- checks: [{ plugin: "modal" }]
1008
- });
1009
-
1010
- // src/plugins/index.ts
1011
- var plugins = {
1012
- // external
1013
- calendly: calendly_default,
1014
- swiper: swiper_default,
1015
- prism: prism_default,
1016
- tilt: tilt_default,
1017
- typed: typed_default,
1018
- countup: countup_default,
1019
- countdown: countdown_default,
1020
- "finisher-header": finisher_header_default,
1021
- taos: taos_default,
1022
- tailtip: tailtip_default,
1023
- // versoly packages
1024
- "versoly-marquee": versoly_marquee_default,
1025
- "versoly-ui": versoly_ui_default,
1026
- // internal
1027
- "versoly-analytics": versoly_analytics_default,
1028
- "versoly-events": versoly_events_default,
1029
- "versoly-form": versoly_form_default,
1030
- "versoly-modal": versoly_modal_default
1031
- };
1032
- // Annotate the CommonJS export names for ESM import in node:
1033
- 0 && (module.exports = {
1034
- defineConfig,
1035
- plugins
1036
- });