@versoly/plugins 0.0.2 → 0.0.4

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.
@@ -30,119 +30,54 @@ var defineConfig = (config) => {
30
30
  return config;
31
31
  };
32
32
 
33
- // src/plugins/headroom.ts
34
- var headroom = defineConfig({
35
- name: "Headroom",
33
+ // src/plugins/calendly.ts
34
+ var calendly_default = defineConfig({
35
+ name: "calendly",
36
36
  cdnUrls: [
37
37
  {
38
- url: "https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min.js",
39
- inline: false,
40
- defer: true
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
41
44
  }
42
45
  ],
43
- js: `window.vGetElementsByToggle('headroom').forEach((elem, index) => {
44
- let options = window.vGetElementOptions(elem);
46
+ js: `
47
+ document.querySelectorAll('[data-calendly-url]').forEach(elem => {
48
+ const url = elem.dataset.calendlyUrl;
45
49
 
46
- var headroom = new Headroom(elem, {
47
- classes: {
48
- pinned: "d-block block",
49
- unpinned: 'd-none hidden'
50
- },
51
- ...options
52
- });
50
+ if (!url) {
51
+ return;
52
+ }
53
53
 
54
- headroom.init();
54
+ elem.addEventListener('click', e => {
55
+ e.preventDefault();
56
+ window.Calendly.initPopupWidget({ url, parentElement: elem });
57
+ })
55
58
  });`,
56
- checks: [{ plugin: "headroom" }],
57
- components: []
58
- });
59
-
60
- // src/plugins/marquee.ts
61
- var src = "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-marquee/0.0.2/versoly-marquee.iife.js";
62
- var marquee = defineConfig({
63
- name: "Marquee",
59
+ checks: [{ plugin: "calendly" }, { html: "calendly" }],
64
60
  options: {
65
- name: "Marquee",
66
- previewInEditor: true,
61
+ name: "Calendly Options",
67
62
  isShown: {
68
63
  props: {
69
- "data-toggle": "marquee"
64
+ "data-calendly-url": true
70
65
  }
71
66
  },
72
67
  fields: [
73
68
  {
74
- name: "Loop",
75
- type: "BooleanPropOption",
76
- propsName: "data-options.loop",
77
- defaultValue: true,
78
- enabledValue: true,
79
- inHeaderAction: true,
80
- headerGroup: "Core"
81
- },
82
- {
83
- name: "Duration",
84
- type: "SliderPropOption",
85
- propsName: "data-options.duration",
86
- min: 1,
87
- max: 20,
88
- stepSize: 1,
89
- defaultValue: 5
90
- },
91
- {
92
- name: "Direction",
93
- type: "IconButtonOption",
94
- propsName: "data-options.direction",
95
- options: ["ltr", "rtl", "ttb", "btt"],
96
- defaultValue: "ltr"
97
- },
98
- {
99
- name: "Pauseable",
100
- type: "BooleanPropOption",
101
- propsName: "data-options.pauseable",
102
- defaultValue: true
103
- },
104
- {
105
- name: "Iterations",
106
- type: "SliderPropOption",
107
- propsName: "data-options.iterations",
108
- min: 1,
109
- max: 5,
110
- stepSize: 1,
111
- defaultValue: 1,
112
- enabledValue: 1,
113
- inHeaderAction: true,
114
- headerGroup: "Core"
69
+ name: "Calendly Url",
70
+ propsName: "data-calendly-url",
71
+ type: "TextOption"
115
72
  }
116
73
  ]
117
- },
118
- checks: [{ plugin: "marquee" }],
119
- src,
120
- cdnUrls: [
121
- {
122
- url: src,
123
- defer: true
124
- }
125
- ],
126
- js: `window.vMarquees = [];
127
- window.vGetElementsByToggle('marquee').forEach((elem, index) => {
128
- const options = window.vGetElementOptions(elem);
129
- const marquee = new Marquee(elem, options);
130
- elem.setAttribute('data-marquee-index', index);
131
- window.vMarquees.push(elem);
132
- });`,
133
- displayNames: [
134
- {
135
- displayName: "Marquee",
136
- property: "data-toggle",
137
- value: "marquee"
138
- }
139
- ]
74
+ }
140
75
  });
141
76
 
142
77
  // src/plugins/swiper.ts
143
78
  var js = `
144
79
  window.vSwipers = [];
145
- window.vGetElementsByToggle('swiper').forEach((elem, index) => {
80
+ window.vGetElementsByToggle('swiper').forEach((elem) => {
146
81
  let props = window.vGetElementOptions(elem);
147
82
 
148
83
  if (props.pagination && props.pagination.renderBullet === 'number') {
@@ -154,11 +89,10 @@ window.vGetElementsByToggle('swiper').forEach((elem, index) => {
154
89
  }
155
90
  }
156
91
 
157
- elem.setAttribute('data-swiper-index', index);
158
92
  window.vSwipers.push(new Swiper(elem, props));
159
93
  });`;
160
- var swiper = defineConfig({
161
- name: "Swiper",
94
+ var swiper_default = defineConfig({
95
+ name: "swiper",
162
96
  cdnUrls: [
163
97
  {
164
98
  url: `https://cdnjs.cloudflare.com/ajax/libs/Swiper/9.3.2/swiper-bundle.min.js`,
@@ -174,8 +108,8 @@ var swiper = defineConfig({
174
108
  });
175
109
 
176
110
  // src/plugins/prism.ts
177
- var prism = defineConfig({
178
- name: "Prism",
111
+ var prism_default = defineConfig({
112
+ name: "prism",
179
113
  cdnUrls: [
180
114
  {
181
115
  url: "https://cdnjs.cloudflare.com/ajax/libs/prism/1.25.0/plugins/line-numbers/prism-line-numbers.min.css"
@@ -216,86 +150,14 @@ window.addEventListener('load', () => {
216
150
  checks: [{ html: "prism" }]
217
151
  });
218
152
 
219
- // src/plugins/tailtip.ts
220
- var js2 = `window.vTailtips = [];
221
-
222
- document.querySelectorAll('[data-toggle="tooltip"]').forEach((elem) => {
223
- const tailtip = Tailtip(elem, window.vGetElementOptions(elem));
224
- window.vTailtips.push(tailtip);
225
- });`;
226
- var tailtip = defineConfig({
227
- name: "Tailtip",
228
- src: "https://d1pnnwteuly8z3.cloudfront.net/libs/tailtip/1.0.3/tailtip.js",
229
- cdnUrls: [
230
- {
231
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/tailtip/1.0.3/tailtip.js",
232
- defer: true
233
- }
234
- ],
235
- js: js2,
236
- checks: [{ plugin: "tailtip" }],
237
- components: [
238
- {
239
- name: "Info Tooltip",
240
- category: "Plugins",
241
- 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>
242
- <div class="tooltip" role="tooltip">
243
- <div class="tooltip-inner">
244
- <span>This is a tooltip that is shown when hovered or clicked.</span>
245
- </div>
246
- <div class="tooltip-arrow"></div>
247
- </div>`
248
- }
249
- ],
250
- options: {
251
- name: "Tailtip Options",
252
- // isShown: (element) => element['data-toggle'] === 'tooltip',
253
- isShown: {
254
- props: {
255
- "data-toggle": "tooltip"
256
- }
257
- },
258
- previewInEditor: true,
259
- fields: [
260
- {
261
- name: "tailtip",
262
- type: "TailtipOption"
263
- },
264
- {
265
- name: "Placement",
266
- propsName: "data-options.placement",
267
- type: "DropdownPropOption",
268
- inline: true,
269
- noneDisplayValue: "Default",
270
- options: [false, "top", "bottom", "left", "right"]
271
- }
272
- ]
273
- }
274
- });
275
-
276
- // src/plugins/taos.ts
277
- var js3 = `!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})}();`;
278
- var taos = defineConfig({
279
- name: "TAOS",
280
- css: `
281
- html.js :where([class*="taos:"]:not(.taos-init)) {
282
- visibility: hidden;
283
- }`,
284
- js: js3,
285
- checks: [{ plugin: "taos" }, { html: "taos:" }],
286
- safelist: ["!duration-[0ms]", "!delay-[0ms]"]
287
- });
288
-
289
153
  // src/plugins/tilt.ts
290
- var js4 = `window.vTilts = [];
291
- window.vGetElementsByToggle('tilt').forEach((tiltEle, index) => {
292
- const options = window.vGetElementOptions(elem);
293
- VanillaTilt.init(tiltEle, options)
294
- tiltEle.setAttribute('data-tilt-index', index);
295
- window.vTilts.push(tiltEle);
154
+ var js2 = `window.vTilts = [];
155
+ window.vGetElementsByToggle('tilt').forEach((elem) => {
156
+ VanillaTilt.init(elem, window.vGetElementOptions(elem));
157
+ window.vTilts.push(elem);
296
158
  });`;
297
- var tilt = defineConfig({
298
- name: "Tilt",
159
+ var tilt_default = defineConfig({
160
+ name: "tilt",
299
161
  options: {
300
162
  name: "Tilt",
301
163
  previewInEditor: true,
@@ -465,7 +327,7 @@ var tilt = defineConfig({
465
327
  defer: true
466
328
  }
467
329
  ],
468
- js: js4,
330
+ js: js2,
469
331
  checks: [{ plugin: "tilt" }],
470
332
  components: [
471
333
  {
@@ -482,8 +344,8 @@ var tilt = defineConfig({
482
344
  });
483
345
 
484
346
  // src/plugins/typed.ts
485
- var typed = defineConfig({
486
- name: "Typed",
347
+ var typed_default = defineConfig({
348
+ name: "typed",
487
349
  options: {
488
350
  name: "Typed Effect Options",
489
351
  previewInEditor: true,
@@ -567,7 +429,7 @@ var typed = defineConfig({
567
429
  }
568
430
  ],
569
431
  js: `
570
- window.vGetElementsByToggle('typed').forEach((elem, index) => {
432
+ window.vGetElementsByToggle('typed').forEach((elem) => {
571
433
  let options = window.vGetElementOptions(elem);
572
434
 
573
435
  options.strings = [elem.innerHTML, ...options.strings];
@@ -599,68 +461,386 @@ window.vGetElementsByToggle('typed').forEach((elem, index) => {
599
461
  ]
600
462
  });
601
463
 
602
- // src/plugins/eventAnalytics.ts
603
- var eventAnalytics = defineConfig({
604
- name: "Event Analytics",
605
- js: `const eventElements = document.querySelectorAll('[data-eventid]');
606
- for (const eventElement of eventElements) {
607
- if (eventElement.tagName !== 'FORM') {
608
- eventElement.addEventListener('click', function(e) {
609
- const eventName = eventElement.getAttribute('data-eventid');
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();
610
476
 
611
- if (window.versoly) {
612
- window.versoly.event({name: eventName})
613
- }
614
- if (window.gtag) {
615
- window.gtag('event', eventName)
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"
616
495
  }
617
- if (window.amplitude) {
618
- window.amplitude.getInstance().logEvent(event);
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
619
521
  }
620
- })
621
- }
622
- }`,
623
- checks: [{ html: "data-eventid" }]
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
+ ]
624
531
  });
625
532
 
626
- // src/plugins/versolyAnalytics.ts
627
- var js5 = `!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'});`;
628
- var versolyAnalytics = defineConfig({
629
- name: "Versoly Analytics",
630
- js: js5,
631
- checks: [{ html: "/api/event" }]
632
- });
533
+ // src/plugins/countdown.ts
534
+ var js3 = `window.vGetElementsByToggle('countdown').forEach(elem => {
535
+ const deadline = new Date(elem.dataset.countdown).getTime();
633
536
 
634
- // src/plugins/modal.ts
635
- var modal = defineConfig({
636
- name: "Versoly UI Modal",
637
- js: `window.vGetElementsByToggle('modal').forEach(elem => {
638
- let options = window.vGetElementOptions(elem);
537
+ let elementsByType = {};
538
+ elem.querySelectorAll('[data-countdown-type]').forEach(el => {
539
+ elementsByType[el.dataset.countdownType] = el;
540
+ });
639
541
 
640
- if (options.globalBlockId && window.vComponents[options.globalBlockId]) {
641
- elem.dataset.html = window.vComponents[options.globalBlockId];
542
+ const countdownFunc = () => {
543
+ let t = (deadline - new Date().getTime()) / 1000;
642
544
 
643
- if (window.vComponents[options.globalBlockId].includes('data-formid')) {
644
- options.beforeShown = 'addFormListener'
545
+ if (t < 0) {
546
+ clearInterval(x);
547
+ t = 0;
645
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
+ });
646
567
  }
647
568
 
648
- elem.dataset.options = JSON.stringify(options);
649
- });`,
650
- checks: [{ plugin: "modal" }]
569
+ var x = setInterval(countdownFunc, 1000);
570
+ countdownFunc();
651
571
  });
652
-
653
- // src/plugins/form.ts
654
- var form = defineConfig({
655
- name: "versoly-form",
656
- checks: [{ plugin: "formid" }],
657
- js: `window.vPageLoadedAt = Date.now()
658
-
659
- setTimeout(() => {
660
- let inputs = [...document.getElementsByTagName("input")]
661
- inputs.forEach(i => {
662
- if (i.name === 'email_second' || i.name === 'name_second') {
663
- i.setAttribute('aria-hidden', 'true')
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 versoly_marquee_default = defineConfig({
708
+ name: "versoly-marquee",
709
+ options: {
710
+ name: "Marquee",
711
+ js: `window.vMarquees = [];
712
+ window.vGetElementsByToggle('marquee').forEach((elem) => {
713
+ const marquee = new Marquee(elem, window.vGetElementOptions(elem));
714
+ window.vMarquees.push(marquee);
715
+ });`,
716
+ previewInEditor: true,
717
+ isShown: {
718
+ props: {
719
+ "data-toggle": "marquee"
720
+ }
721
+ },
722
+ fields: [
723
+ {
724
+ name: "Loop",
725
+ type: "BooleanPropOption",
726
+ propsName: "data-options.loop",
727
+ defaultValue: true,
728
+ enabledValue: true,
729
+ inHeaderAction: true,
730
+ headerGroup: "Core"
731
+ },
732
+ {
733
+ name: "Duration",
734
+ type: "SliderPropOption",
735
+ propsName: "data-options.duration",
736
+ min: 1,
737
+ max: 20,
738
+ stepSize: 1,
739
+ defaultValue: 5
740
+ },
741
+ {
742
+ name: "Direction",
743
+ type: "IconButtonOption",
744
+ propsName: "data-options.direction",
745
+ options: ["ltr", "rtl", "ttb", "btt"],
746
+ defaultValue: "ltr"
747
+ },
748
+ {
749
+ name: "Pauseable",
750
+ type: "BooleanPropOption",
751
+ propsName: "data-options.pauseable",
752
+ defaultValue: true
753
+ },
754
+ {
755
+ name: "Iterations",
756
+ type: "SliderPropOption",
757
+ propsName: "data-options.iterations",
758
+ min: 1,
759
+ max: 5,
760
+ stepSize: 1,
761
+ defaultValue: 1,
762
+ enabledValue: 1,
763
+ inHeaderAction: true,
764
+ headerGroup: "Core"
765
+ }
766
+ ]
767
+ },
768
+ checks: [{ plugin: "marquee" }],
769
+ src,
770
+ cdnUrls: [
771
+ {
772
+ url: src,
773
+ defer: true
774
+ }
775
+ ],
776
+ displayNames: [
777
+ {
778
+ displayName: "Marquee",
779
+ property: "data-toggle",
780
+ value: "marquee"
781
+ }
782
+ ]
783
+ });
784
+
785
+ // src/plugins/versoly-ui.ts
786
+ var versoly_ui_default = defineConfig({
787
+ name: "versoly-ui",
788
+ cdnUrls: [
789
+ {
790
+ url: "https://d1pnnwteuly8z3.cloudfront.net/libs/floating-ui/1.0.1/floating-ui.min.js",
791
+ defer: true
792
+ },
793
+ {
794
+ url: "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-ui/2.1.1/versoly-ui.js",
795
+ delay: true
796
+ }
797
+ ]
798
+ });
799
+
800
+ // src/plugins/versoly-analytics.ts
801
+ var js6 = `!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'});`;
802
+ var versoly_analytics_default = defineConfig({
803
+ name: "Versoly Analytics",
804
+ js: js6,
805
+ checks: [{ html: "/api/event" }]
806
+ });
807
+
808
+ // src/plugins/versoly-events.ts
809
+ var versoly_events_default = defineConfig({
810
+ name: "versoly-events",
811
+ js: `const eventElements = document.querySelectorAll('[data-eventid]');
812
+ for (const eventElement of eventElements) {
813
+ if (eventElement.tagName !== 'FORM') {
814
+ eventElement.addEventListener('click', function(e) {
815
+ const eventName = eventElement.getAttribute('data-eventid');
816
+
817
+ if (window.versoly) {
818
+ window.versoly.event({name: eventName})
819
+ }
820
+ if (window.gtag) {
821
+ window.gtag('event', eventName)
822
+ }
823
+ if (window.amplitude) {
824
+ window.amplitude.getInstance().logEvent(event);
825
+ }
826
+ })
827
+ }
828
+ }`,
829
+ checks: [{ html: "data-eventid" }]
830
+ });
831
+
832
+ // src/plugins/versoly-form.ts
833
+ var versoly_form_default = defineConfig({
834
+ name: "versoly-form",
835
+ checks: [{ plugin: "formid" }],
836
+ js: `window.vPageLoadedAt = Date.now();
837
+ window.vForms = window.vForms || {};
838
+
839
+ setTimeout(() => {
840
+ let inputs = [...document.getElementsByTagName("input")]
841
+ inputs.forEach(i => {
842
+ if (i.name === 'email_second' || i.name === 'name_second') {
843
+ i.setAttribute('aria-hidden', 'true')
664
844
  i.setAttribute('tabindex', '-1')
665
845
  i.setAttribute('autocomplete', 'false')
666
846
  }
@@ -806,253 +986,46 @@ window.addFormListener && window.addFormListener()
806
986
  `
807
987
  });
808
988
 
809
- // src/plugins/countup.ts
810
- var countup = defineConfig({
811
- name: "Countup",
812
- cdnUrls: [
813
- {
814
- url: "https://cdnjs.cloudflare.com/ajax/libs/scrollReveal.js/3.4.0/scrollreveal.min.js"
815
- },
816
- {
817
- url: "https://cdnjs.cloudflare.com/ajax/libs/countup.js/2.0.8/countUp.umd.min.js"
818
- }
819
- ],
820
- js: `window.scrollReveal = ScrollReveal();
821
-
822
- window.countStart = e => {
823
- var startVal = e.dataset.from ? +e.dataset.from : 0
824
- ,endVal = e.dataset.to ? +e.dataset.to : 0
825
- ,duration = e.dataset.duration ? +e.dataset.duration : 2
826
- ,options = e.dataset.options ? JSON.parse(e.dataset.options) : {}
827
- const up = new countUp.CountUp(e, endVal, {...options, startVal, duration});
828
- up.start()
829
- }
830
-
831
- window.vGetElementsByToggle('countup').forEach(e => {
832
- scrollReveal.reveal(e, {beforeReveal: window.countStart, duration: 0});
833
- });`,
834
- checks: [{ plugin: "countup" }],
835
- options: {
836
- name: "Countup Options",
837
- isShown: {
838
- props: {
839
- "data-toggle": "countup"
840
- }
841
- },
842
- fields: [
843
- {
844
- name: "Count From",
845
- propsName: "data-from",
846
- type: "NumberOption"
847
- },
848
- {
849
- name: "Count To",
850
- propsName: "data-to",
851
- type: "NumberOption"
852
- },
853
- {
854
- name: "Duration",
855
- propsName: "data-duration",
856
- type: "NumberOption",
857
- placeholder: "2",
858
- stepSize: 0.1
859
- },
860
- {
861
- name: "Countup when Visible",
862
- propsName: "data-aos",
863
- options: [false, true],
864
- type: "BooleanPropOption",
865
- defaultValue: false
866
- }
867
- ]
868
- },
869
- components: [
870
- {
871
- name: "Countup",
872
- category: "Plugins",
873
- html: `<h2 data-toggle="countup" data-aos data-aos-id="countup:in" data-from="100" data-to="800">100</h2>`
874
- }
875
- ]
876
- });
877
-
878
- // src/plugins/countdown.ts
879
- var js6 = `window.vGetElementsByToggle('countdown').forEach(e => {
880
- const deadline = new Date(e.dataset.countdown).getTime();
881
-
882
- const daysEl = e.querySelector('[data-countdown-type="days"]'),
883
- hoursEl = e.querySelector('[data-countdown-type="hours"]'),
884
- minutesEl = e.querySelector('[data-countdown-type="minutes"]'),
885
- secondsEl = e.querySelector('[data-countdown-type="seconds"]');
886
-
887
- const countdownFunc = () => {
888
- const now = new Date().getTime();
889
- let t = deadline - now;
890
-
891
- if (t < 0) {
892
- clearInterval(x);
893
- t = 0;
894
- }
895
-
896
- let seconds = ''+Math.floor((t / 1000) % 60),
897
- minutes = ''+Math.floor((t / 1000 / 60) % 60),
898
- hours = ''+Math.floor((t / (1000 * 60 * 60)) % 24),
899
- days = ''+Math.floor(t / (1000 * 60 * 60 * 24));
900
-
901
- if (seconds.length === 1) seconds = '0' + seconds;
902
- if (minutes.length === 1) minutes = '0' + minutes;
903
- if (hours.length === 1) hours = '0' + hours;
904
- if (days.length === 1) days = '0' + days;
905
-
906
- if (secondsEl) secondsEl.innerHTML = seconds;
907
- if (minutesEl) minutesEl.innerHTML = minutes;
908
- if (hoursEl) hoursEl.innerHTML = hours;
909
- if (daysEl) daysEl.innerHTML = days;
910
- }
989
+ // src/plugins/versoly-modal.ts
990
+ var versoly_modal_default = defineConfig({
991
+ name: "versoly-modal",
992
+ js: `window.vGetElementsByToggle('modal').forEach(elem => {
993
+ let options = window.vGetElementOptions(elem);
911
994
 
912
- var x = setInterval(countdownFunc, 1000);
913
- countdownFunc();
914
- })
915
- `;
916
- var currentDate = /* @__PURE__ */ new Date();
917
- var ISODateIn5Days = new Date(currentDate.getTime() + 5 * 24 * 60 * 60 * 1234).toISOString();
918
- var countdown = defineConfig({
919
- name: "Countdown Options",
920
- js: js6,
921
- checks: [{ plugin: "countdown" }],
922
- options: {
923
- name: "Countdown",
924
- isShown: {
925
- props: {
926
- "data-toggle": "countdown",
927
- "data-countdown": true
928
- }
929
- },
930
- fields: [
931
- {
932
- name: "Countdown Timer",
933
- propsName: "data-countdown",
934
- type: "DateTimePickerOption"
935
- }
936
- ]
937
- },
938
- components: [
939
- {
940
- name: "Countdown",
941
- category: "Plugins",
942
- html: `<h2 class="font-semibold" data-toggle="countdown" data-countdown="${ISODateIn5Days}">
943
- <span data-countdown-type="days">4</span>
944
- <span class="opacity-20">:</span>
945
- <span data-countdown-type="hours">1</span>
946
- <span class="opacity-20">:</span>
947
- <span data-countdown-type="minutes">0</span>
948
- <span class="opacity-20">:</span>
949
- <span data-countdown-type="seconds">0</span>
950
- </h2>`
951
- }
952
- ]
953
- });
995
+ if (options.globalBlockId && window.vComponents[options.globalBlockId]) {
996
+ elem.dataset.html = window.vComponents[options.globalBlockId];
954
997
 
955
- // src/plugins/calendly.ts
956
- var calendly = defineConfig({
957
- name: "Calendly",
958
- cdnUrls: [
959
- {
960
- url: "https://assets.calendly.com/assets/external/widget.js",
961
- delay: true
962
- },
963
- {
964
- url: "https://assets.calendly.com/assets/external/widget.css",
965
- delay: true
998
+ if (window.vComponents[options.globalBlockId].includes('data-formid')) {
999
+ options.beforeShown = 'addFormListener'
966
1000
  }
967
- ],
968
- js: `
969
- document.querySelectorAll('[data-calendly-url]').forEach(a => {
970
- const url = a.getAttribute('data-calendly-url')
971
-
972
- if (!url) {
973
- return;
974
1001
  }
975
1002
 
976
- a.addEventListener('click', e => {
977
- e.preventDefault();
978
- window.Calendly.initPopupWidget({ url, parentElement: a})
979
- })
980
- });`,
981
- checks: [{ plugin: "calendly" }, { html: "calendly" }],
982
- options: {
983
- name: "Calendly Options",
984
- isShown: {
985
- props: {
986
- "data-calendly-url": true
987
- }
988
- },
989
- fields: [
990
- {
991
- name: "Calendly Url",
992
- propsName: "data-calendly-url",
993
- type: "TextOption"
994
- }
995
- ]
996
- }
997
- });
998
-
999
- // src/plugins/versolyUI.ts
1000
- var versolyUI = defineConfig({
1001
- name: "Versoly UI",
1002
- cdnUrls: [
1003
- {
1004
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/floating-ui/1.0.1/floating-ui.min.js",
1005
- defer: true
1006
- },
1007
- {
1008
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-ui/2.1.1/versoly-ui.js",
1009
- delay: true
1010
- }
1011
- ]
1012
- });
1013
-
1014
- // src/plugins/finisherHeader.ts
1015
- var finisherHeader = defineConfig({
1016
- name: "Finisher Header",
1017
- cdnUrls: [
1018
- {
1019
- url: "https://d1pnnwteuly8z3.cloudfront.net/js/finisher-header.es5.min.js",
1020
- defer: true
1021
- }
1022
- ],
1023
- js: `document.querySelectorAll('.finisher-header').forEach(elem => {
1024
- let options = window.vGetElementOptions(elem);
1025
- new FinisherHeader(options);
1003
+ elem.dataset.options = JSON.stringify(options);
1026
1004
  });`,
1027
- checks: [{ html: "finisher-header" }],
1028
- components: [
1029
- {
1030
- name: "Finisher Header",
1031
- category: "Plugins",
1032
- 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>`
1033
- }
1034
- ]
1005
+ checks: [{ plugin: "modal" }]
1035
1006
  });
1036
1007
 
1037
1008
  // src/plugins/index.ts
1038
1009
  var plugins = {
1039
- headroom,
1040
- marquee,
1041
- swiper,
1042
- prism,
1043
- tailtip,
1044
- taos,
1045
- tilt,
1046
- typed,
1047
- modal,
1048
- form,
1049
- finisherHeader,
1050
- countup,
1051
- countdown,
1052
- eventAnalytics,
1053
- versolyAnalytics,
1054
- versolyUI,
1055
- calendly
1010
+ // external
1011
+ calendly: calendly_default,
1012
+ swiper: swiper_default,
1013
+ prism: prism_default,
1014
+ tilt: tilt_default,
1015
+ typed: typed_default,
1016
+ countup: countup_default,
1017
+ countdown: countdown_default,
1018
+ "finisher-header": finisher_header_default,
1019
+ taos: taos_default,
1020
+ tailtip: tailtip_default,
1021
+ // versoly packages
1022
+ "versoly-marquee": versoly_marquee_default,
1023
+ "versoly-ui": versoly_ui_default,
1024
+ // internal
1025
+ "versoly-analytics": versoly_analytics_default,
1026
+ "versoly-events": versoly_events_default,
1027
+ "versoly-form": versoly_form_default,
1028
+ "versoly-modal": versoly_modal_default
1056
1029
  };
1057
1030
  // Annotate the CommonJS export names for ESM import in node:
1058
1031
  0 && (module.exports = {