@versoly/plugins 0.0.3 → 0.0.5

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,67 +461,384 @@ 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
- window.vForms = window.vForms || {};
659
-
660
- setTimeout(() => {
661
- let inputs = [...document.getElementsByTagName("input")]
662
- inputs.forEach(i => {
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 => {
663
842
  if (i.name === 'email_second' || i.name === 'name_second') {
664
843
  i.setAttribute('aria-hidden', 'true')
665
844
  i.setAttribute('tabindex', '-1')
@@ -807,253 +986,46 @@ window.addFormListener && window.addFormListener()
807
986
  `
808
987
  });
809
988
 
810
- // src/plugins/countup.ts
811
- var countup = defineConfig({
812
- name: "Countup",
813
- cdnUrls: [
814
- {
815
- url: "https://cdnjs.cloudflare.com/ajax/libs/scrollReveal.js/3.4.0/scrollreveal.min.js"
816
- },
817
- {
818
- url: "https://cdnjs.cloudflare.com/ajax/libs/countup.js/2.0.8/countUp.umd.min.js"
819
- }
820
- ],
821
- js: `window.scrollReveal = ScrollReveal();
822
-
823
- window.countStart = e => {
824
- var startVal = e.dataset.from ? +e.dataset.from : 0
825
- ,endVal = e.dataset.to ? +e.dataset.to : 0
826
- ,duration = e.dataset.duration ? +e.dataset.duration : 2
827
- ,options = e.dataset.options ? JSON.parse(e.dataset.options) : {}
828
- const up = new countUp.CountUp(e, endVal, {...options, startVal, duration});
829
- up.start()
830
- }
831
-
832
- window.vGetElementsByToggle('countup').forEach(e => {
833
- scrollReveal.reveal(e, {beforeReveal: window.countStart, duration: 0});
834
- });`,
835
- checks: [{ plugin: "countup" }],
836
- options: {
837
- name: "Countup Options",
838
- isShown: {
839
- props: {
840
- "data-toggle": "countup"
841
- }
842
- },
843
- fields: [
844
- {
845
- name: "Count From",
846
- propsName: "data-from",
847
- type: "NumberOption"
848
- },
849
- {
850
- name: "Count To",
851
- propsName: "data-to",
852
- type: "NumberOption"
853
- },
854
- {
855
- name: "Duration",
856
- propsName: "data-duration",
857
- type: "NumberOption",
858
- placeholder: "2",
859
- stepSize: 0.1
860
- },
861
- {
862
- name: "Countup when Visible",
863
- propsName: "data-aos",
864
- options: [false, true],
865
- type: "BooleanPropOption",
866
- defaultValue: false
867
- }
868
- ]
869
- },
870
- components: [
871
- {
872
- name: "Countup",
873
- category: "Plugins",
874
- html: `<h2 data-toggle="countup" data-aos data-aos-id="countup:in" data-from="100" data-to="800">100</h2>`
875
- }
876
- ]
877
- });
878
-
879
- // src/plugins/countdown.ts
880
- var js6 = `window.vGetElementsByToggle('countdown').forEach(e => {
881
- const deadline = new Date(e.dataset.countdown).getTime();
882
-
883
- const daysEl = e.querySelector('[data-countdown-type="days"]'),
884
- hoursEl = e.querySelector('[data-countdown-type="hours"]'),
885
- minutesEl = e.querySelector('[data-countdown-type="minutes"]'),
886
- secondsEl = e.querySelector('[data-countdown-type="seconds"]');
887
-
888
- const countdownFunc = () => {
889
- const now = new Date().getTime();
890
- let t = deadline - now;
891
-
892
- if (t < 0) {
893
- clearInterval(x);
894
- t = 0;
895
- }
896
-
897
- let seconds = ''+Math.floor((t / 1000) % 60),
898
- minutes = ''+Math.floor((t / 1000 / 60) % 60),
899
- hours = ''+Math.floor((t / (1000 * 60 * 60)) % 24),
900
- days = ''+Math.floor(t / (1000 * 60 * 60 * 24));
901
-
902
- if (seconds.length === 1) seconds = '0' + seconds;
903
- if (minutes.length === 1) minutes = '0' + minutes;
904
- if (hours.length === 1) hours = '0' + hours;
905
- if (days.length === 1) days = '0' + days;
906
-
907
- if (secondsEl) secondsEl.innerHTML = seconds;
908
- if (minutesEl) minutesEl.innerHTML = minutes;
909
- if (hoursEl) hoursEl.innerHTML = hours;
910
- if (daysEl) daysEl.innerHTML = days;
911
- }
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);
912
994
 
913
- var x = setInterval(countdownFunc, 1000);
914
- countdownFunc();
915
- })
916
- `;
917
- var currentDate = /* @__PURE__ */ new Date();
918
- var ISODateIn5Days = new Date(currentDate.getTime() + 5 * 24 * 60 * 60 * 1234).toISOString();
919
- var countdown = defineConfig({
920
- name: "Countdown Options",
921
- js: js6,
922
- checks: [{ plugin: "countdown" }],
923
- options: {
924
- name: "Countdown",
925
- isShown: {
926
- props: {
927
- "data-toggle": "countdown",
928
- "data-countdown": true
929
- }
930
- },
931
- fields: [
932
- {
933
- name: "Countdown Timer",
934
- propsName: "data-countdown",
935
- type: "DateTimePickerOption"
936
- }
937
- ]
938
- },
939
- components: [
940
- {
941
- name: "Countdown",
942
- category: "Plugins",
943
- html: `<h2 class="font-semibold" data-toggle="countdown" data-countdown="${ISODateIn5Days}">
944
- <span data-countdown-type="days">4</span>
945
- <span class="opacity-20">:</span>
946
- <span data-countdown-type="hours">1</span>
947
- <span class="opacity-20">:</span>
948
- <span data-countdown-type="minutes">0</span>
949
- <span class="opacity-20">:</span>
950
- <span data-countdown-type="seconds">0</span>
951
- </h2>`
952
- }
953
- ]
954
- });
995
+ if (options.globalBlockId && window.vComponents[options.globalBlockId]) {
996
+ elem.dataset.html = window.vComponents[options.globalBlockId];
955
997
 
956
- // src/plugins/calendly.ts
957
- var calendly = defineConfig({
958
- name: "Calendly",
959
- cdnUrls: [
960
- {
961
- url: "https://assets.calendly.com/assets/external/widget.js",
962
- delay: true
963
- },
964
- {
965
- url: "https://assets.calendly.com/assets/external/widget.css",
966
- delay: true
998
+ if (window.vComponents[options.globalBlockId].includes('data-formid')) {
999
+ options.beforeShown = 'addFormListener'
967
1000
  }
968
- ],
969
- js: `
970
- document.querySelectorAll('[data-calendly-url]').forEach(a => {
971
- const url = a.getAttribute('data-calendly-url')
972
-
973
- if (!url) {
974
- return;
975
1001
  }
976
1002
 
977
- a.addEventListener('click', e => {
978
- e.preventDefault();
979
- window.Calendly.initPopupWidget({ url, parentElement: a})
980
- })
981
- });`,
982
- checks: [{ plugin: "calendly" }, { html: "calendly" }],
983
- options: {
984
- name: "Calendly Options",
985
- isShown: {
986
- props: {
987
- "data-calendly-url": true
988
- }
989
- },
990
- fields: [
991
- {
992
- name: "Calendly Url",
993
- propsName: "data-calendly-url",
994
- type: "TextOption"
995
- }
996
- ]
997
- }
998
- });
999
-
1000
- // src/plugins/versolyUI.ts
1001
- var versolyUI = defineConfig({
1002
- name: "Versoly UI",
1003
- cdnUrls: [
1004
- {
1005
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/floating-ui/1.0.1/floating-ui.min.js",
1006
- defer: true
1007
- },
1008
- {
1009
- url: "https://d1pnnwteuly8z3.cloudfront.net/libs/versoly-ui/2.1.1/versoly-ui.js",
1010
- delay: true
1011
- }
1012
- ]
1013
- });
1014
-
1015
- // src/plugins/finisherHeader.ts
1016
- var finisherHeader = defineConfig({
1017
- name: "Finisher Header",
1018
- cdnUrls: [
1019
- {
1020
- url: "https://d1pnnwteuly8z3.cloudfront.net/js/finisher-header.es5.min.js",
1021
- defer: true
1022
- }
1023
- ],
1024
- js: `document.querySelectorAll('.finisher-header').forEach(elem => {
1025
- let options = window.vGetElementOptions(elem);
1026
- new FinisherHeader(options);
1003
+ elem.dataset.options = JSON.stringify(options);
1027
1004
  });`,
1028
- checks: [{ html: "finisher-header" }],
1029
- components: [
1030
- {
1031
- name: "Finisher Header",
1032
- category: "Plugins",
1033
- 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>`
1034
- }
1035
- ]
1005
+ checks: [{ plugin: "modal" }]
1036
1006
  });
1037
1007
 
1038
1008
  // src/plugins/index.ts
1039
1009
  var plugins = {
1040
- headroom,
1041
- marquee,
1042
- swiper,
1043
- prism,
1044
- tailtip,
1045
- taos,
1046
- tilt,
1047
- typed,
1048
- modal,
1049
- form,
1050
- finisherHeader,
1051
- countup,
1052
- countdown,
1053
- eventAnalytics,
1054
- versolyAnalytics,
1055
- versolyUI,
1056
- 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
1057
1029
  };
1058
1030
  // Annotate the CommonJS export names for ESM import in node:
1059
1031
  0 && (module.exports = {