Elementor Essential Addons - Version 2.9.9

Version Description

  • 07/03/2019 =

  • Added : Feature List element

  • Particles extension removed

  • Few minor bugfix and improvements

Download this release

Release Info

Developer re_enter_rupok
Plugin Icon 128x128 Elementor Essential Addons
Version 2.9.9
Comparing to
See all releases

Code changes from version 2.9.8 to 2.9.9

Files changed (113) hide show
  1. admin/assets/css/admin.css +0 -0
  2. admin/assets/images/ea-icon-color.png +0 -0
  3. admin/assets/images/ea-icon.png +0 -0
  4. admin/assets/images/eael-featured.png +0 -0
  5. admin/assets/images/gift-icon.png +0 -0
  6. admin/assets/images/icon-heart.svg +0 -0
  7. admin/assets/images/icon-modules.svg +0 -0
  8. admin/assets/images/icon-settings.svg +0 -0
  9. admin/assets/images/icon-upgrade.svg +0 -0
  10. admin/assets/images/lock-icon.png +0 -0
  11. admin/assets/js/admin.js +0 -0
  12. admin/assets/vendor/sweetalert2/css/sweetalert2.min.css +0 -0
  13. admin/assets/vendor/sweetalert2/js/core.js +0 -0
  14. admin/assets/vendor/sweetalert2/js/sweetalert2.min.js +0 -0
  15. admin/partials/elements.php +5 -0
  16. admin/partials/extensions.php +8 -8
  17. admin/settings.php +2 -1
  18. assets/css/essential-addons-editor.css +0 -0
  19. assets/css/essential-addons-elementor.css +0 -10
  20. assets/css/tooltipster.bundle.min.css +0 -0
  21. assets/img/accordion.png +0 -0
  22. assets/img/bg.jpg +0 -0
  23. assets/img/flexia-preview.jpg +0 -0
  24. assets/img/play-icon.png +0 -0
  25. assets/js/eael-scripts.js +14 -86
  26. assets/js/fancy-text.js +0 -0
  27. assets/js/isotope.pkgd.min.js +0 -0
  28. assets/js/jquery.magnific-popup.min.js +0 -0
  29. assets/js/jquery.resize.min.js +0 -0
  30. assets/js/load-more.js +0 -0
  31. assets/js/masonry.min.js +0 -0
  32. assets/js/mixitup.min.js +0 -0
  33. assets/js/particles.js +0 -5
  34. assets/js/tooltipster.bundle.min.js +0 -0
  35. assets/sass/_advance-accordion.scss +0 -0
  36. assets/sass/_advance-tabs.scss +0 -0
  37. assets/sass/_caldera-form.scss +0 -0
  38. assets/sass/_call-to-action.scss +0 -0
  39. assets/sass/_contact-form7.scss +0 -0
  40. assets/sass/_contact-forms.scss +0 -0
  41. assets/sass/_content-ticker.scss +0 -0
  42. assets/sass/_countdown.scss +0 -0
  43. assets/sass/_creative-button.scss +0 -0
  44. assets/sass/_data-table.scss +0 -0
  45. assets/sass/_dual-color-heading.scss +0 -0
  46. assets/sass/_fancy-text.scss +0 -0
  47. assets/sass/_filterable-gallery.scss +0 -0
  48. assets/sass/_flipbox.scss +0 -0
  49. assets/sass/_general-slider.scss +0 -0
  50. assets/sass/_general.scss +0 -0
  51. assets/sass/_gravity-form.scss +0 -0
  52. assets/sass/_img-accordion.scss +0 -0
  53. assets/sass/_infobox.scss +0 -0
  54. assets/sass/_magnific-popup.scss +0 -0
  55. assets/sass/_ninja-form.scss +0 -0
  56. assets/sass/_particles.scss +0 -9
  57. assets/sass/_post-grid-column.scss +0 -0
  58. assets/sass/_post-grid.scss +0 -0
  59. assets/sass/_post-timeline.scss +0 -0
  60. assets/sass/_pricing-table.scss +0 -0
  61. assets/sass/_progress-bar.scss +0 -0
  62. assets/sass/_swiper.scss +0 -0
  63. assets/sass/_team-members.scss +0 -0
  64. assets/sass/_testimonial-slider.scss +0 -0
  65. assets/sass/_tooltip.scss +0 -0
  66. assets/sass/_weform.scss +0 -0
  67. assets/sass/_woo-products.scss +0 -0
  68. assets/sass/_wp-form.scss +0 -0
  69. assets/sass/essential-addons-elementor.scss +0 -1
  70. assets/social-feeds/codebird.js +0 -0
  71. assets/social-feeds/doT.min.js +0 -0
  72. assets/social-feeds/jquery.socialfeed.js +0 -0
  73. assets/social-feeds/moment.js +0 -0
  74. elements/{advance-accordion/advance-accordion.php → adv-accordion/adv-accordion.php} +0 -0
  75. elements/{advance-tabs/advance-tabs.php → adv-tabs/adv-tabs.php} +0 -0
  76. elements/{caldera-forms/caldera-forms.php → caldera-form/caldera-form.php} +0 -0
  77. elements/call-to-action/call-to-action.php +0 -0
  78. elements/contact-form-7/contact-form-7.php +0 -0
  79. elements/content-ticker/content-ticker.php +0 -0
  80. elements/{countdown/countdown.php → count-down/count-down.php} +0 -0
  81. elements/{creative-button/creative-button.php → creative-btn/creative-btn.php} +0 -0
  82. elements/data-table/data-table.php +0 -0
  83. elements/{dual-color-header/dual-color-header.php → dual-header/dual-header.php} +0 -0
  84. elements/fancy-text/fancy-text.php +0 -0
  85. elements/{filterable-gallery/filterable-gallery.php → filter-gallery/filter-gallery.php} +0 -0
  86. elements/{flipbox/flipbox.php → flip-box/flip-box.php} +0 -0
  87. elements/gravity-form/gravity-form.php +0 -0
  88. elements/image-accordion/image-accordion.php +0 -0
  89. elements/{infobox/infobox.php → info-box/info-box.php} +0 -0
  90. elements/ninja-form/ninja-form.php +0 -0
  91. elements/post-timeline/post-timeline.php +0 -0
  92. elements/{pricing-table/pricing-table.php → price-table/price-table.php} +0 -0
  93. elements/product-grid/product-grid.php +0 -0
  94. elements/progress-bar/progress-bar.php +0 -0
  95. elements/team-members/team-members.php +0 -0
  96. elements/testimonials/testimonials.php +0 -0
  97. elements/tooltip/tooltip.php +0 -0
  98. elements/twitter-feed/twitter-feed.php +0 -0
  99. elements/weforms/weforms.php +0 -0
  100. elements/wpforms/wpforms.php +0 -0
  101. essential_adons_elementor.php +213 -360
  102. extensions/eael-particle-section/eael-particle-section.php +0 -129
  103. extensions/eael-particle-section/particle-themes.php +0 -554
  104. includes/class-eae-elements.php +142 -0
  105. includes/class-eae-scripts.php +182 -0
  106. includes/class-plugin-usage-tracker.php +0 -0
  107. includes/class-wpdev-core-install.php +0 -0
  108. includes/elementor-helper.php +3 -0
  109. includes/extensions.php +0 -46
  110. includes/queries.php +0 -0
  111. includes/templates/content.php +0 -0
  112. languages/essential-addons-for-elementor-lite.pot +0 -0
  113. readme.txt +10 -11
admin/assets/css/admin.css CHANGED
File without changes
admin/assets/images/ea-icon-color.png CHANGED
File without changes
admin/assets/images/ea-icon.png CHANGED
File without changes
admin/assets/images/eael-featured.png CHANGED
File without changes
admin/assets/images/gift-icon.png CHANGED
File without changes
admin/assets/images/icon-heart.svg CHANGED
File without changes
admin/assets/images/icon-modules.svg CHANGED
File without changes
admin/assets/images/icon-settings.svg CHANGED
File without changes
admin/assets/images/icon-upgrade.svg CHANGED
File without changes
admin/assets/images/lock-icon.png CHANGED
File without changes
admin/assets/js/admin.js CHANGED
File without changes
admin/assets/vendor/sweetalert2/css/sweetalert2.min.css CHANGED
File without changes
admin/assets/vendor/sweetalert2/js/core.js CHANGED
File without changes
admin/assets/vendor/sweetalert2/js/sweetalert2.min.js CHANGED
File without changes
admin/partials/elements.php CHANGED
@@ -144,6 +144,11 @@
144
  <label for="progress-bar"></label>
145
  <p class="eael-el-title"><?php _e( 'Progress Bar', 'essential-addons-elementor' ) ?></p>
146
  </div>
 
 
 
 
 
147
  </div><!--./checkbox-container-->
148
  </div>
149
  <div class="col-full">
144
  <label for="progress-bar"></label>
145
  <p class="eael-el-title"><?php _e( 'Progress Bar', 'essential-addons-elementor' ) ?></p>
146
  </div>
147
+ <div class="eael-checkbox">
148
+ <input type="checkbox" id="feature-list" name="progress-bar" <?php checked( 1, $this->eael_get_settings['feature-list'], true ); ?> >
149
+ <label for="feature-list"></label>
150
+ <p class="eael-el-title"><?php _e( 'Feature List', 'essential-addons-elementor' ) ?></p>
151
+ </div>
152
  </div><!--./checkbox-container-->
153
  </div>
154
  <div class="col-full">
admin/partials/extensions.php CHANGED
@@ -2,16 +2,10 @@
2
  <div class="row">
3
  <div class="col-full">
4
  <!-- Content Element Starts -->
5
- <h3>Available Extensions</h3>
6
  <div class="eael-checkbox-container">
7
 
8
- <div class="eael-checkbox">
9
- <input type="checkbox" id="section-particles" name="section-particles" <?php checked( 1, $this->eael_get_settings['section-particles'], true ); ?> >
10
- <label for="section-particles"></label>
11
- <p class="eael-el-title"><?php _e( 'Section Particles Effect', 'essential-addons-elementor' ) ?></p>
12
- </div>
13
-
14
- </div>
15
  <h3>Premium Extensions</h3>
16
  <div class="eael-checkbox-container">
17
 
@@ -21,6 +15,12 @@
21
  <p class="eael-el-title"><?php _e( 'Section Parallax Scrolling', 'essential-addons-elementor' ) ?></p>
22
  </div>
23
 
 
 
 
 
 
 
24
  </div>
25
  <!-- Content Element Ends -->
26
 
2
  <div class="row">
3
  <div class="col-full">
4
  <!-- Content Element Starts -->
5
+ <!-- <h3>Available Extensions</h3>
6
  <div class="eael-checkbox-container">
7
 
8
+ </div> -->
 
 
 
 
 
 
9
  <h3>Premium Extensions</h3>
10
  <div class="eael-checkbox-container">
11
 
15
  <p class="eael-el-title"><?php _e( 'Section Parallax Scrolling', 'essential-addons-elementor' ) ?></p>
16
  </div>
17
 
18
+ <div class="eael-checkbox">
19
+ <input type="checkbox" id="section-particles" name="section-particles" disabled>
20
+ <label for="section-particles" class="<?php if( (bool) $this->is_pro === false ) : echo 'eael-get-pro'; endif; ?>"></label>
21
+ <p class="eael-el-title"><?php _e( 'Section Particles', 'essential-addons-elementor' ) ?></p>
22
+ </div>
23
+
24
  </div>
25
  <!-- Content Element Ends -->
26
 
admin/settings.php CHANGED
@@ -14,7 +14,8 @@ class Eael_Admin_Settings {
14
  * @var array
15
  * @since 2.3.0
16
  */
17
- public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonials', 'weforms', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'twitter-feed', 'data-table', 'filter-gallery', 'image-accordion','content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'section-particles', 'feature-list'];
 
18
 
19
  /**
20
  * Will Contain All Components Default Values
14
  * @var array
15
  * @since 2.3.0
16
  */
17
+
18
+ public $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonials', 'weforms', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'twitter-feed', 'data-table', 'filter-gallery', 'image-accordion','content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'feature-list'];
19
 
20
  /**
21
  * Will Contain All Components Default Values
assets/css/essential-addons-editor.css CHANGED
File without changes
assets/css/essential-addons-elementor.css CHANGED
@@ -7533,16 +7533,6 @@ a.eael-gallery-load-more, a.eael-gallery-load-more:hover {
7533
  transform: none;
7534
  }
7535
  }
7536
- .elementor-section.eael-particles-section .elementor-container,
7537
- .elementor-section .elementor-container {
7538
- z-index: 99;
7539
- }
7540
-
7541
- .elementor-section.eael-particles-section > canvas {
7542
- position: absolute;
7543
- top: 0;
7544
- }
7545
-
7546
  /*----------------------------*/
7547
  /* 35. Feature List
7548
  /*----------------------------*/
7533
  transform: none;
7534
  }
7535
  }
 
 
 
 
 
 
 
 
 
 
7536
  /*----------------------------*/
7537
  /* 35. Feature List
7538
  /*----------------------------*/
assets/css/tooltipster.bundle.min.css CHANGED
File without changes
assets/img/accordion.png CHANGED
File without changes
assets/img/bg.jpg CHANGED
File without changes
assets/img/flexia-preview.jpg CHANGED
File without changes
assets/img/play-icon.png CHANGED
File without changes
assets/js/eael-scripts.js CHANGED
@@ -28,10 +28,20 @@
28
  filter: $('.eael-filter-gallery-control .control.active', $scope).data('filter')
29
  });
30
 
31
- // layout gal - not necessary, just in case
32
- $isotope_gallery.imagesLoaded().progress(function() {
33
- $isotope_gallery.isotope('layout');
34
- });
 
 
 
 
 
 
 
 
 
 
35
 
36
  // filter
37
  $scope.on('click', '.control', function() {
@@ -565,87 +575,6 @@
565
  var ProgressBar = function ($scope, $) {
566
  $('.eael-progressbar', $scope).eaelProgressBar()
567
  };
568
-
569
- /*=================================*/
570
- /* 36. Section Particles
571
- /*=================================*/
572
- var EaelParticlesHandler = function ($scope, $) {
573
- var sectionId = $scope.data('id'),
574
- editMode = elementorFrontend.isEditMode(),
575
- theme = $scope.data('theme'),
576
- settings;
577
-
578
- $scope.addClass('eael-particles-section');
579
-
580
- if (editMode) {
581
- var editorElements = null,
582
- particleArgs = {},
583
- settings = {};
584
-
585
- if (!window.elementor.hasOwnProperty('elements')) {
586
- return false;
587
- }
588
-
589
- editorElements = window.elementor.elements;
590
-
591
- if (!editorElements.models) {
592
- return false;
593
- }
594
-
595
- $.each(editorElements.models, function (i, el) {
596
- if (sectionId == el.id) {
597
- particleArgs = el.attributes.settings.attributes;
598
-
599
- } else if (el.id == $scope.closest('.elementor-top-section').data('id')) {
600
- $.each(el.attributes.elements.models, function (i, col) {
601
- $.each(col.attributes.elements.models, function (i, subSec) {
602
- particleArgs = subSec.attributes.settings.attributes;
603
- });
604
- });
605
- }
606
- });
607
-
608
- settings.switch = particleArgs['eael_particle_switch'];
609
- settings.themeSource = particleArgs['eael_particle_theme_from'];
610
-
611
- if (settings.themeSource == 'presets') {
612
- settings.selected_theme = (ParticleThemesData[particleArgs['eael_particle_preset_themes']]);
613
- }
614
-
615
- if ((settings.themeSource == 'custom') && ('' !== particleArgs['eael_particles_custom_style'])) {
616
- settings.selected_theme = particleArgs['eael_particles_custom_style'];
617
- }
618
-
619
- if (0 !== settings.length) {
620
- settings = settings;
621
- }
622
- } else {
623
- if (typeof theme != 'undefined' && theme !== '') {
624
- particlesJS('eael-section-particles-' + sectionId, theme);
625
- }
626
- }
627
-
628
- if (!editMode || !settings) {
629
- return false;
630
- }
631
-
632
- if (settings.switch == 'yes') {
633
-
634
- if (settings.themeSource === 'presets' || settings.themeSource === 'custom' && '' !== settings.selected_theme) {
635
- $scope.attr('id', 'eael-section-particles-' + sectionId);
636
- if (typeof particlesJS !== 'undefined' && $.isFunction(particlesJS)) {
637
- particlesJS("eael-section-particles-" + sectionId, JSON.parse(settings.selected_theme));
638
- $scope.children('canvas.particles-js-canvas-el').css({
639
- position: 'absolute',
640
- top: 0
641
- });
642
- }
643
- }
644
- } else {
645
- $scope.removeClass('eael-particles-section');
646
- }
647
-
648
- };
649
 
650
  $(window).on('elementor/frontend/init', function () {
651
  if(elementorFrontend.isEditMode()) {
@@ -664,7 +593,6 @@
664
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-image-accordion.default', ImageAccordion);
665
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-countdown.default', CountDown);
666
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-progress-bar.default', ProgressBar);
667
- elementorFrontend.hooks.addAction( 'frontend/element_ready/section', EaelParticlesHandler );
668
  });
669
 
670
  }(jQuery));
28
  filter: $('.eael-filter-gallery-control .control.active', $scope).data('filter')
29
  });
30
 
31
+ // layout gal, while images are loadin
32
+ $isotope_gallery.imagesLoaded().progress(function() {
33
+ $isotope_gallery.isotope('layout');
34
+ });
35
+
36
+ // layout gal, on click tabs
37
+ $isotope_gallery.on('arrangeComplete', function() {
38
+ $isotope_gallery.isotope('layout');
39
+ });
40
+
41
+ // layout gal, after window loaded
42
+ $(window).on('load', function() {
43
+ $isotope_gallery.isotope('layout');
44
+ });
45
 
46
  // filter
47
  $scope.on('click', '.control', function() {
575
  var ProgressBar = function ($scope, $) {
576
  $('.eael-progressbar', $scope).eaelProgressBar()
577
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
 
579
  $(window).on('elementor/frontend/init', function () {
580
  if(elementorFrontend.isEditMode()) {
593
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-image-accordion.default', ImageAccordion);
594
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-countdown.default', CountDown);
595
  elementorFrontend.hooks.addAction('frontend/element_ready/eael-progress-bar.default', ProgressBar);
 
596
  });
597
 
598
  }(jQuery));
assets/js/fancy-text.js CHANGED
File without changes
assets/js/isotope.pkgd.min.js CHANGED
File without changes
assets/js/jquery.magnific-popup.min.js CHANGED
File without changes
assets/js/jquery.resize.min.js CHANGED
File without changes
assets/js/load-more.js CHANGED
File without changes
assets/js/masonry.min.js CHANGED
File without changes
assets/js/mixitup.min.js CHANGED
File without changes
assets/js/particles.js DELETED
@@ -1,5 +0,0 @@
1
- /*
2
- /* Author : Vincent Garreau - vincentgarreau.com
3
- /* MIT license: http://opensource.org/licenses/MIT
4
- */
5
- function hexToRgb(e){var a=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;e=e.replace(a,function(e,a,t,i){return a+a+t+t+i+i});var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function clamp(e,a,t){return Math.min(Math.max(e,a),t)}function isInArray(e,a){return a.indexOf(e)>-1}var pJS=function(e,a){var t=document.querySelector("#"+e+" > .particles-js-canvas-el");this.pJS={canvas:{el:t,w:t.offsetWidth,h:t.offsetHeight},particles:{number:{value:400,density:{enable:!0,value_area:800}},color:{value:"#fff"},shape:{type:"circle",stroke:{width:0,color:"#ff0000"},polygon:{nb_sides:5},image:{src:"",width:100,height:100}},opacity:{value:1,random:!1,anim:{enable:!1,speed:2,opacity_min:0,sync:!1}},size:{value:20,random:!1,anim:{enable:!1,speed:20,size_min:0,sync:!1}},line_linked:{enable:!0,distance:100,color:"#fff",opacity:1,width:1},move:{enable:!0,speed:2,direction:"none",random:!1,straight:!1,out_mode:"out",bounce:!1,attract:{enable:!1,rotateX:3e3,rotateY:3e3}},array:[]},interactivity:{detect_on:"canvas",events:{onhover:{enable:!0,mode:"grab"},onclick:{enable:!0,mode:"push"},resize:!0},modes:{grab:{distance:100,line_linked:{opacity:1}},bubble:{distance:200,size:80,duration:.4},repulse:{distance:200,duration:.4},push:{particles_nb:4},remove:{particles_nb:2}},mouse:{}},retina_detect:!1,fn:{interact:{},modes:{},vendors:{}},tmp:{}};var i=this.pJS;a&&Object.deepExtend(i,a),i.tmp.obj={size_value:i.particles.size.value,size_anim_speed:i.particles.size.anim.speed,move_speed:i.particles.move.speed,line_linked_distance:i.particles.line_linked.distance,line_linked_width:i.particles.line_linked.width,mode_grab_distance:i.interactivity.modes.grab.distance,mode_bubble_distance:i.interactivity.modes.bubble.distance,mode_bubble_size:i.interactivity.modes.bubble.size,mode_repulse_distance:i.interactivity.modes.repulse.distance},i.fn.retinaInit=function(){i.retina_detect&&window.devicePixelRatio>1?(i.canvas.pxratio=window.devicePixelRatio,i.tmp.retina=!0):(i.canvas.pxratio=1,i.tmp.retina=!1),i.canvas.w=i.canvas.el.offsetWidth*i.canvas.pxratio,i.canvas.h=i.canvas.el.offsetHeight*i.canvas.pxratio,i.particles.size.value=i.tmp.obj.size_value*i.canvas.pxratio,i.particles.size.anim.speed=i.tmp.obj.size_anim_speed*i.canvas.pxratio,i.particles.move.speed=i.tmp.obj.move_speed*i.canvas.pxratio,i.particles.line_linked.distance=i.tmp.obj.line_linked_distance*i.canvas.pxratio,i.interactivity.modes.grab.distance=i.tmp.obj.mode_grab_distance*i.canvas.pxratio,i.interactivity.modes.bubble.distance=i.tmp.obj.mode_bubble_distance*i.canvas.pxratio,i.particles.line_linked.width=i.tmp.obj.line_linked_width*i.canvas.pxratio,i.interactivity.modes.bubble.size=i.tmp.obj.mode_bubble_size*i.canvas.pxratio,i.interactivity.modes.repulse.distance=i.tmp.obj.mode_repulse_distance*i.canvas.pxratio},i.fn.canvasInit=function(){i.canvas.ctx=i.canvas.el.getContext("2d")},i.fn.canvasSize=function(){i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i&&i.interactivity.events.resize&&window.addEventListener("resize",function(){i.canvas.w=i.canvas.el.offsetWidth,i.canvas.h=i.canvas.el.offsetHeight,i.tmp.retina&&(i.canvas.w*=i.canvas.pxratio,i.canvas.h*=i.canvas.pxratio),i.canvas.el.width=i.canvas.w,i.canvas.el.height=i.canvas.h,i.particles.move.enable||(i.fn.particlesEmpty(),i.fn.particlesCreate(),i.fn.particlesDraw(),i.fn.vendors.densityAutoParticles()),i.fn.vendors.densityAutoParticles()})},i.fn.canvasPaint=function(){i.canvas.ctx.fillRect(0,0,i.canvas.w,i.canvas.h)},i.fn.canvasClear=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h)},i.fn.particle=function(e,a,t){if(this.radius=(i.particles.size.random?Math.random():1)*i.particles.size.value,i.particles.size.anim.enable&&(this.size_status=!1,this.vs=i.particles.size.anim.speed/100,i.particles.size.anim.sync||(this.vs=this.vs*Math.random())),this.x=t?t.x:Math.random()*i.canvas.w,this.y=t?t.y:Math.random()*i.canvas.h,this.x>i.canvas.w-2*this.radius?this.x=this.x-this.radius:this.x<2*this.radius&&(this.x=this.x+this.radius),this.y>i.canvas.h-2*this.radius?this.y=this.y-this.radius:this.y<2*this.radius&&(this.y=this.y+this.radius),i.particles.move.bounce&&i.fn.vendors.checkOverlap(this,t),this.color={},"object"==typeof e.value)if(e.value instanceof Array){var s=e.value[Math.floor(Math.random()*i.particles.color.value.length)];this.color.rgb=hexToRgb(s)}else void 0!=e.value.r&&void 0!=e.value.g&&void 0!=e.value.b&&(this.color.rgb={r:e.value.r,g:e.value.g,b:e.value.b}),void 0!=e.value.h&&void 0!=e.value.s&&void 0!=e.value.l&&(this.color.hsl={h:e.value.h,s:e.value.s,l:e.value.l});else"random"==e.value?this.color.rgb={r:Math.floor(256*Math.random())+0,g:Math.floor(256*Math.random())+0,b:Math.floor(256*Math.random())+0}:"string"==typeof e.value&&(this.color=e,this.color.rgb=hexToRgb(this.color.value));this.opacity=(i.particles.opacity.random?Math.random():1)*i.particles.opacity.value,i.particles.opacity.anim.enable&&(this.opacity_status=!1,this.vo=i.particles.opacity.anim.speed/100,i.particles.opacity.anim.sync||(this.vo=this.vo*Math.random()));var n={};switch(i.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0}}i.particles.move.straight?(this.vx=n.x,this.vy=n.y,i.particles.move.random&&(this.vx=this.vx*Math.random(),this.vy=this.vy*Math.random())):(this.vx=n.x+Math.random()-.5,this.vy=n.y+Math.random()-.5),this.vx_i=this.vx,this.vy_i=this.vy;var r=i.particles.shape.type;if("object"==typeof r){if(r instanceof Array){var c=r[Math.floor(Math.random()*r.length)];this.shape=c}}else this.shape=r;if("image"==this.shape){var o=i.particles.shape;this.img={src:o.image.src,ratio:o.image.width/o.image.height},this.img.ratio||(this.img.ratio=1),"svg"==i.tmp.img_type&&void 0!=i.tmp.source_svg&&(i.fn.vendors.createSvgImg(this),i.tmp.pushing&&(this.img.loaded=!1))}},i.fn.particle.prototype.draw=function(){function e(){i.canvas.ctx.drawImage(r,a.x-t,a.y-t,2*t,2*t/a.img.ratio)}var a=this;if(void 0!=a.radius_bubble)var t=a.radius_bubble;else var t=a.radius;if(void 0!=a.opacity_bubble)var s=a.opacity_bubble;else var s=a.opacity;if(a.color.rgb)var n="rgba("+a.color.rgb.r+","+a.color.rgb.g+","+a.color.rgb.b+","+s+")";else var n="hsla("+a.color.hsl.h+","+a.color.hsl.s+"%,"+a.color.hsl.l+"%,"+s+")";switch(i.canvas.ctx.fillStyle=n,i.canvas.ctx.beginPath(),a.shape){case"circle":i.canvas.ctx.arc(a.x,a.y,t,0,2*Math.PI,!1);break;case"edge":i.canvas.ctx.rect(a.x-t,a.y-t,2*t,2*t);break;case"triangle":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t,a.y+t/1.66,2*t,3,2);break;case"polygon":i.fn.vendors.drawShape(i.canvas.ctx,a.x-t/(i.particles.shape.polygon.nb_sides/3.5),a.y-t/.76,2.66*t/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,1);break;case"star":i.fn.vendors.drawShape(i.canvas.ctx,a.x-2*t/(i.particles.shape.polygon.nb_sides/4),a.y-t/1.52,2*t*2.66/(i.particles.shape.polygon.nb_sides/3),i.particles.shape.polygon.nb_sides,2);break;case"image":if("svg"==i.tmp.img_type)var r=a.img.obj;else var r=i.tmp.img_obj;r&&e()}i.canvas.ctx.closePath(),i.particles.shape.stroke.width>0&&(i.canvas.ctx.strokeStyle=i.particles.shape.stroke.color,i.canvas.ctx.lineWidth=i.particles.shape.stroke.width,i.canvas.ctx.stroke()),i.canvas.ctx.fill()},i.fn.particlesCreate=function(){for(var e=0;e<i.particles.number.value;e++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value))},i.fn.particlesUpdate=function(){for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];if(i.particles.move.enable){var t=i.particles.move.speed/2;a.x+=a.vx*t,a.y+=a.vy*t}if(i.particles.opacity.anim.enable&&(1==a.opacity_status?(a.opacity>=i.particles.opacity.value&&(a.opacity_status=!1),a.opacity+=a.vo):(a.opacity<=i.particles.opacity.anim.opacity_min&&(a.opacity_status=!0),a.opacity-=a.vo),a.opacity<0&&(a.opacity=0)),i.particles.size.anim.enable&&(1==a.size_status?(a.radius>=i.particles.size.value&&(a.size_status=!1),a.radius+=a.vs):(a.radius<=i.particles.size.anim.size_min&&(a.size_status=!0),a.radius-=a.vs),a.radius<0&&(a.radius=0)),"bounce"==i.particles.move.out_mode)var s={x_left:a.radius,x_right:i.canvas.w,y_top:a.radius,y_bottom:i.canvas.h};else var s={x_left:-a.radius,x_right:i.canvas.w+a.radius,y_top:-a.radius,y_bottom:i.canvas.h+a.radius};switch(a.x-a.radius>i.canvas.w?(a.x=s.x_left,a.y=Math.random()*i.canvas.h):a.x+a.radius<0&&(a.x=s.x_right,a.y=Math.random()*i.canvas.h),a.y-a.radius>i.canvas.h?(a.y=s.y_top,a.x=Math.random()*i.canvas.w):a.y+a.radius<0&&(a.y=s.y_bottom,a.x=Math.random()*i.canvas.w),i.particles.move.out_mode){case"bounce":a.x+a.radius>i.canvas.w?a.vx=-a.vx:a.x-a.radius<0&&(a.vx=-a.vx),a.y+a.radius>i.canvas.h?a.vy=-a.vy:a.y-a.radius<0&&(a.vy=-a.vy)}if(isInArray("grab",i.interactivity.events.onhover.mode)&&i.fn.modes.grabParticle(a),(isInArray("bubble",i.interactivity.events.onhover.mode)||isInArray("bubble",i.interactivity.events.onclick.mode))&&i.fn.modes.bubbleParticle(a),(isInArray("repulse",i.interactivity.events.onhover.mode)||isInArray("repulse",i.interactivity.events.onclick.mode))&&i.fn.modes.repulseParticle(a),i.particles.line_linked.enable||i.particles.move.attract.enable)for(var n=e+1;n<i.particles.array.length;n++){var r=i.particles.array[n];i.particles.line_linked.enable&&i.fn.interact.linkParticles(a,r),i.particles.move.attract.enable&&i.fn.interact.attractParticles(a,r),i.particles.move.bounce&&i.fn.interact.bounceParticles(a,r)}}},i.fn.particlesDraw=function(){i.canvas.ctx.clearRect(0,0,i.canvas.w,i.canvas.h),i.fn.particlesUpdate();for(var e=0;e<i.particles.array.length;e++){var a=i.particles.array[e];a.draw()}},i.fn.particlesEmpty=function(){i.particles.array=[]},i.fn.particlesRefresh=function(){cancelRequestAnimFrame(i.fn.checkAnimFrame),cancelRequestAnimFrame(i.fn.drawAnimFrame),i.tmp.source_svg=void 0,i.tmp.img_obj=void 0,i.tmp.count_svg=0,i.fn.particlesEmpty(),i.fn.canvasClear(),i.fn.vendors.start()},i.fn.interact.linkParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=i.particles.line_linked.opacity-n/(1/i.particles.line_linked.opacity)/i.particles.line_linked.distance;if(r>0){var c=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+c.r+","+c.g+","+c.b+","+r+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(a.x,a.y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}},i.fn.interact.attractParticles=function(e,a){var t=e.x-a.x,s=e.y-a.y,n=Math.sqrt(t*t+s*s);if(n<=i.particles.line_linked.distance){var r=t/(1e3*i.particles.move.attract.rotateX),c=s/(1e3*i.particles.move.attract.rotateY);e.vx-=r,e.vy-=c,a.vx+=r,a.vy+=c}},i.fn.interact.bounceParticles=function(e,a){var t=e.x-a.x,i=e.y-a.y,s=Math.sqrt(t*t+i*i),n=e.radius+a.radius;n>=s&&(e.vx=-e.vx,e.vy=-e.vy,a.vx=-a.vx,a.vy=-a.vy)},i.fn.modes.pushParticles=function(e,a){i.tmp.pushing=!0;for(var t=0;e>t;t++)i.particles.array.push(new i.fn.particle(i.particles.color,i.particles.opacity.value,{x:a?a.pos_x:Math.random()*i.canvas.w,y:a?a.pos_y:Math.random()*i.canvas.h})),t==e-1&&(i.particles.move.enable||i.fn.particlesDraw(),i.tmp.pushing=!1)},i.fn.modes.removeParticles=function(e){i.particles.array.splice(0,e),i.particles.move.enable||i.fn.particlesDraw()},i.fn.modes.bubbleParticle=function(e){function a(){e.opacity_bubble=e.opacity,e.radius_bubble=e.radius}function t(a,t,s,n,c){if(a!=t)if(i.tmp.bubble_duration_end){if(void 0!=s){var o=n-p*(n-a)/i.interactivity.modes.bubble.duration,l=a-o;d=a+l,"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else if(r<=i.interactivity.modes.bubble.distance){if(void 0!=s)var v=s;else var v=n;if(v!=a){var d=n-p*(n-a)/i.interactivity.modes.bubble.duration;"size"==c&&(e.radius_bubble=d),"opacity"==c&&(e.opacity_bubble=d)}}else"size"==c&&(e.radius_bubble=void 0),"opacity"==c&&(e.opacity_bubble=void 0)}if(i.interactivity.events.onhover.enable&&isInArray("bubble",i.interactivity.events.onhover.mode)){var s=e.x-i.interactivity.mouse.pos_x,n=e.y-i.interactivity.mouse.pos_y,r=Math.sqrt(s*s+n*n),c=1-r/i.interactivity.modes.bubble.distance;if(r<=i.interactivity.modes.bubble.distance){if(c>=0&&"mousemove"==i.interactivity.status){if(i.interactivity.modes.bubble.size!=i.particles.size.value)if(i.interactivity.modes.bubble.size>i.particles.size.value){var o=e.radius+i.interactivity.modes.bubble.size*c;o>=0&&(e.radius_bubble=o)}else{var l=e.radius-i.interactivity.modes.bubble.size,o=e.radius-l*c;o>0?e.radius_bubble=o:e.radius_bubble=0}if(i.interactivity.modes.bubble.opacity!=i.particles.opacity.value)if(i.interactivity.modes.bubble.opacity>i.particles.opacity.value){var v=i.interactivity.modes.bubble.opacity*c;v>e.opacity&&v<=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}else{var v=e.opacity-(i.particles.opacity.value-i.interactivity.modes.bubble.opacity)*c;v<e.opacity&&v>=i.interactivity.modes.bubble.opacity&&(e.opacity_bubble=v)}}}else a();"mouseleave"==i.interactivity.status&&a()}else if(i.interactivity.events.onclick.enable&&isInArray("bubble",i.interactivity.events.onclick.mode)){if(i.tmp.bubble_clicking){var s=e.x-i.interactivity.mouse.click_pos_x,n=e.y-i.interactivity.mouse.click_pos_y,r=Math.sqrt(s*s+n*n),p=((new Date).getTime()-i.interactivity.mouse.click_time)/1e3;p>i.interactivity.modes.bubble.duration&&(i.tmp.bubble_duration_end=!0),p>2*i.interactivity.modes.bubble.duration&&(i.tmp.bubble_clicking=!1,i.tmp.bubble_duration_end=!1)}i.tmp.bubble_clicking&&(t(i.interactivity.modes.bubble.size,i.particles.size.value,e.radius_bubble,e.radius,"size"),t(i.interactivity.modes.bubble.opacity,i.particles.opacity.value,e.opacity_bubble,e.opacity,"opacity"))}},i.fn.modes.repulseParticle=function(e){function a(){var a=Math.atan2(d,p);if(e.vx=u*Math.cos(a),e.vy=u*Math.sin(a),"bounce"==i.particles.move.out_mode){var t={x:e.x+e.vx,y:e.y+e.vy};t.x+e.radius>i.canvas.w?e.vx=-e.vx:t.x-e.radius<0&&(e.vx=-e.vx),t.y+e.radius>i.canvas.h?e.vy=-e.vy:t.y-e.radius<0&&(e.vy=-e.vy)}}if(i.interactivity.events.onhover.enable&&isInArray("repulse",i.interactivity.events.onhover.mode)&&"mousemove"==i.interactivity.status){var t=e.x-i.interactivity.mouse.pos_x,s=e.y-i.interactivity.mouse.pos_y,n=Math.sqrt(t*t+s*s),r={x:t/n,y:s/n},c=i.interactivity.modes.repulse.distance,o=100,l=clamp(1/c*(-1*Math.pow(n/c,2)+1)*c*o,0,50),v={x:e.x+r.x*l,y:e.y+r.y*l};"bounce"==i.particles.move.out_mode?(v.x-e.radius>0&&v.x+e.radius<i.canvas.w&&(e.x=v.x),v.y-e.radius>0&&v.y+e.radius<i.canvas.h&&(e.y=v.y)):(e.x=v.x,e.y=v.y)}else if(i.interactivity.events.onclick.enable&&isInArray("repulse",i.interactivity.events.onclick.mode))if(i.tmp.repulse_finish||(i.tmp.repulse_count++,i.tmp.repulse_count==i.particles.array.length&&(i.tmp.repulse_finish=!0)),i.tmp.repulse_clicking){var c=Math.pow(i.interactivity.modes.repulse.distance/6,3),p=i.interactivity.mouse.click_pos_x-e.x,d=i.interactivity.mouse.click_pos_y-e.y,m=p*p+d*d,u=-c/m*1;c>=m&&a()}else 0==i.tmp.repulse_clicking&&(e.vx=e.vx_i,e.vy=e.vy_i)},i.fn.modes.grabParticle=function(e){if(i.interactivity.events.onhover.enable&&"mousemove"==i.interactivity.status){var a=e.x-i.interactivity.mouse.pos_x,t=e.y-i.interactivity.mouse.pos_y,s=Math.sqrt(a*a+t*t);if(s<=i.interactivity.modes.grab.distance){var n=i.interactivity.modes.grab.line_linked.opacity-s/(1/i.interactivity.modes.grab.line_linked.opacity)/i.interactivity.modes.grab.distance;if(n>0){var r=i.particles.line_linked.color_rgb_line;i.canvas.ctx.strokeStyle="rgba("+r.r+","+r.g+","+r.b+","+n+")",i.canvas.ctx.lineWidth=i.particles.line_linked.width,i.canvas.ctx.beginPath(),i.canvas.ctx.moveTo(e.x,e.y),i.canvas.ctx.lineTo(i.interactivity.mouse.pos_x,i.interactivity.mouse.pos_y),i.canvas.ctx.stroke(),i.canvas.ctx.closePath()}}}},i.fn.vendors.eventsListeners=function(){"window"==i.interactivity.detect_on?i.interactivity.el=window:i.interactivity.el=i.canvas.el,(i.interactivity.events.onhover.enable||i.interactivity.events.onclick.enable)&&(i.interactivity.el.addEventListener("mousemove",function(e){if(i.interactivity.el==window)var a=e.clientX,t=e.clientY;else var a=e.offsetX||e.clientX,t=e.offsetY||e.clientY;i.interactivity.mouse.pos_x=a,i.interactivity.mouse.pos_y=t,i.tmp.retina&&(i.interactivity.mouse.pos_x*=i.canvas.pxratio,i.interactivity.mouse.pos_y*=i.canvas.pxratio),i.interactivity.status="mousemove"}),i.interactivity.el.addEventListener("mouseleave",function(e){i.interactivity.mouse.pos_x=null,i.interactivity.mouse.pos_y=null,i.interactivity.status="mouseleave"})),i.interactivity.events.onclick.enable&&i.interactivity.el.addEventListener("click",function(){if(i.interactivity.mouse.click_pos_x=i.interactivity.mouse.pos_x,i.interactivity.mouse.click_pos_y=i.interactivity.mouse.pos_y,i.interactivity.mouse.click_time=(new Date).getTime(),i.interactivity.events.onclick.enable)switch(i.interactivity.events.onclick.mode){case"push":i.particles.move.enable?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):1==i.interactivity.modes.push.particles_nb?i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb,i.interactivity.mouse):i.interactivity.modes.push.particles_nb>1&&i.fn.modes.pushParticles(i.interactivity.modes.push.particles_nb);break;case"remove":i.fn.modes.removeParticles(i.interactivity.modes.remove.particles_nb);break;case"bubble":i.tmp.bubble_clicking=!0;break;case"repulse":i.tmp.repulse_clicking=!0,i.tmp.repulse_count=0,i.tmp.repulse_finish=!1,setTimeout(function(){i.tmp.repulse_clicking=!1},1e3*i.interactivity.modes.repulse.duration)}})},i.fn.vendors.densityAutoParticles=function(){if(i.particles.number.density.enable){var e=i.canvas.el.width*i.canvas.el.height/1e3;i.tmp.retina&&(e/=2*i.canvas.pxratio);var a=e*i.particles.number.value/i.particles.number.density.value_area,t=i.particles.array.length-a;0>t?i.fn.modes.pushParticles(Math.abs(t)):i.fn.modes.removeParticles(t)}},i.fn.vendors.checkOverlap=function(e,a){for(var t=0;t<i.particles.array.length;t++){var s=i.particles.array[t],n=e.x-s.x,r=e.y-s.y,c=Math.sqrt(n*n+r*r);c<=e.radius+s.radius&&(e.x=a?a.x:Math.random()*i.canvas.w,e.y=a?a.y:Math.random()*i.canvas.h,i.fn.vendors.checkOverlap(e))}},i.fn.vendors.createSvgImg=function(e){var a=i.tmp.source_svg,t=/#([0-9A-F]{3,6})/gi,s=a.replace(t,function(a,t,i,s){if(e.color.rgb)var n="rgba("+e.color.rgb.r+","+e.color.rgb.g+","+e.color.rgb.b+","+e.opacity+")";else var n="hsla("+e.color.hsl.h+","+e.color.hsl.s+"%,"+e.color.hsl.l+"%,"+e.opacity+")";return n}),n=new Blob([s],{type:"image/svg+xml;charset=utf-8"}),r=window.URL||window.webkitURL||window,c=r.createObjectURL(n),o=new Image;o.addEventListener("load",function(){e.img.obj=o,e.img.loaded=!0,r.revokeObjectURL(c),i.tmp.count_svg++}),o.src=c},i.fn.vendors.destroypJS=function(){cancelAnimationFrame(i.fn.drawAnimFrame),t.remove(),pJSDom=null},i.fn.vendors.drawShape=function(e,a,t,i,s,n){var r=s*n,c=s/n,o=180*(c-2)/c,l=Math.PI-Math.PI*o/180;e.save(),e.beginPath(),e.translate(a,t),e.moveTo(0,0);for(var v=0;r>v;v++)e.lineTo(i,0),e.translate(i,0),e.rotate(l);e.fill(),e.restore()},i.fn.vendors.exportImg=function(){window.open(i.canvas.el.toDataURL("image/png"),"_blank")},i.fn.vendors.loadImg=function(e){if(i.tmp.img_error=void 0,""!=i.particles.shape.image.src)if("svg"==e){var a=new XMLHttpRequest;a.open("GET",i.particles.shape.image.src),a.onreadystatechange=function(e){4==a.readyState&&(200==a.status?(i.tmp.source_svg=e.currentTarget.response,i.fn.vendors.checkBeforeDraw()):(console.log("Error pJS - Image not found"),i.tmp.img_error=!0))},a.send()}else{var t=new Image;t.addEventListener("load",function(){i.tmp.img_obj=t,i.fn.vendors.checkBeforeDraw()}),t.src=i.particles.shape.image.src}else console.log("Error pJS - No image.src"),i.tmp.img_error=!0},i.fn.vendors.draw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type?i.tmp.count_svg>=i.particles.number.value?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):void 0!=i.tmp.img_obj?(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame)):i.tmp.img_error||(i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw)):(i.fn.particlesDraw(),i.particles.move.enable?i.fn.drawAnimFrame=requestAnimFrame(i.fn.vendors.draw):cancelRequestAnimFrame(i.fn.drawAnimFrame))},i.fn.vendors.checkBeforeDraw=function(){"image"==i.particles.shape.type?"svg"==i.tmp.img_type&&void 0==i.tmp.source_svg?i.tmp.checkAnimFrame=requestAnimFrame(check):(cancelRequestAnimFrame(i.tmp.checkAnimFrame),i.tmp.img_error||(i.fn.vendors.init(),i.fn.vendors.draw())):(i.fn.vendors.init(),i.fn.vendors.draw())},i.fn.vendors.init=function(){i.fn.retinaInit(),i.fn.canvasInit(),i.fn.canvasSize(),i.fn.canvasPaint(),i.fn.particlesCreate(),i.fn.vendors.densityAutoParticles(),i.particles.line_linked.color_rgb_line=hexToRgb(i.particles.line_linked.color)},i.fn.vendors.start=function(){isInArray("image",i.particles.shape.type)?(i.tmp.img_type=i.particles.shape.image.src.substr(i.particles.shape.image.src.length-3),i.fn.vendors.loadImg(i.tmp.img_type)):i.fn.vendors.checkBeforeDraw()},i.fn.vendors.eventsListeners(),i.fn.vendors.start()};Object.deepExtend=function(e,a){for(var t in a)a[t]&&a[t].constructor&&a[t].constructor===Object?(e[t]=e[t]||{},arguments.callee(e[t],a[t])):e[t]=a[t];return e},window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,1e3/60)}}(),window.cancelRequestAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||clearTimeout}(),window.pJSDom=[],window.particlesJS=function(e,a){"string"!=typeof e&&(a=e,e="particles-js"),e||(e="particles-js");var t=document.getElementById(e),i="particles-js-canvas-el",s=t.getElementsByClassName(i);if(s.length)for(;s.length>0;)t.removeChild(s[0]);var n=document.createElement("canvas");n.className=i,n.style.width="100%",n.style.height="100%";var r=document.getElementById(e).appendChild(n);null!=r&&pJSDom.push(new pJS(e,a))},window.particlesJS.load=function(e,a,t){var i=new XMLHttpRequest;i.open("GET",a),i.onreadystatechange=function(a){if(4==i.readyState)if(200==i.status){var s=JSON.parse(a.currentTarget.response);window.particlesJS(e,s),t&&t()}else console.log("Error pJS - XMLHttpRequest status: "+i.status),console.log("Error pJS - File config not found")},i.send()};
 
 
 
 
 
assets/js/tooltipster.bundle.min.js CHANGED
File without changes
assets/sass/_advance-accordion.scss CHANGED
File without changes
assets/sass/_advance-tabs.scss CHANGED
File without changes
assets/sass/_caldera-form.scss CHANGED
File without changes
assets/sass/_call-to-action.scss CHANGED
File without changes
assets/sass/_contact-form7.scss CHANGED
File without changes
assets/sass/_contact-forms.scss CHANGED
File without changes
assets/sass/_content-ticker.scss CHANGED
File without changes
assets/sass/_countdown.scss CHANGED
File without changes
assets/sass/_creative-button.scss CHANGED
File without changes
assets/sass/_data-table.scss CHANGED
File without changes
assets/sass/_dual-color-heading.scss CHANGED
File without changes
assets/sass/_fancy-text.scss CHANGED
File without changes
assets/sass/_filterable-gallery.scss CHANGED
File without changes
assets/sass/_flipbox.scss CHANGED
File without changes
assets/sass/_general-slider.scss CHANGED
File without changes
assets/sass/_general.scss CHANGED
File without changes
assets/sass/_gravity-form.scss CHANGED
File without changes
assets/sass/_img-accordion.scss CHANGED
File without changes
assets/sass/_infobox.scss CHANGED
File without changes
assets/sass/_magnific-popup.scss CHANGED
File without changes
assets/sass/_ninja-form.scss CHANGED
File without changes
assets/sass/_particles.scss DELETED
@@ -1,9 +0,0 @@
1
- .elementor-section.eael-particles-section .elementor-container,
2
- .elementor-section .elementor-container {
3
- z-index: 99;
4
- }
5
-
6
- .elementor-section.eael-particles-section > canvas{
7
- position: absolute;
8
- top:0;
9
- }
 
 
 
 
 
 
 
 
 
assets/sass/_post-grid-column.scss CHANGED
File without changes
assets/sass/_post-grid.scss CHANGED
File without changes
assets/sass/_post-timeline.scss CHANGED
File without changes
assets/sass/_pricing-table.scss CHANGED
File without changes
assets/sass/_progress-bar.scss CHANGED
File without changes
assets/sass/_swiper.scss CHANGED
File without changes
assets/sass/_team-members.scss CHANGED
File without changes
assets/sass/_testimonial-slider.scss CHANGED
File without changes
assets/sass/_tooltip.scss CHANGED
File without changes
assets/sass/_weform.scss CHANGED
File without changes
assets/sass/_woo-products.scss CHANGED
File without changes
assets/sass/_wp-form.scss CHANGED
File without changes
assets/sass/essential-addons-elementor.scss CHANGED
@@ -80,5 +80,4 @@
80
  @import "tooltip";
81
  @import "progress-bar";
82
  @import "img-accordion";
83
- @import "particles";
84
  @import "feature-list";
80
  @import "tooltip";
81
  @import "progress-bar";
82
  @import "img-accordion";
 
83
  @import "feature-list";
assets/social-feeds/codebird.js CHANGED
File without changes
assets/social-feeds/doT.min.js CHANGED
File without changes
assets/social-feeds/jquery.socialfeed.js CHANGED
File without changes
assets/social-feeds/moment.js CHANGED
File without changes
elements/{advance-accordion/advance-accordion.php → adv-accordion/adv-accordion.php} RENAMED
File without changes
elements/{advance-tabs/advance-tabs.php → adv-tabs/adv-tabs.php} RENAMED
File without changes
elements/{caldera-forms/caldera-forms.php → caldera-form/caldera-form.php} RENAMED
File without changes
elements/call-to-action/call-to-action.php CHANGED
File without changes
elements/contact-form-7/contact-form-7.php CHANGED
File without changes
elements/content-ticker/content-ticker.php CHANGED
File without changes
elements/{countdown/countdown.php → count-down/count-down.php} RENAMED
File without changes
elements/{creative-button/creative-button.php → creative-btn/creative-btn.php} RENAMED
File without changes
elements/data-table/data-table.php CHANGED
File without changes
elements/{dual-color-header/dual-color-header.php → dual-header/dual-header.php} RENAMED
File without changes
elements/fancy-text/fancy-text.php CHANGED
File without changes
elements/{filterable-gallery/filterable-gallery.php → filter-gallery/filter-gallery.php} RENAMED
File without changes
elements/{flipbox/flipbox.php → flip-box/flip-box.php} RENAMED
File without changes
elements/gravity-form/gravity-form.php CHANGED
File without changes
elements/image-accordion/image-accordion.php CHANGED
File without changes
elements/{infobox/infobox.php → info-box/info-box.php} RENAMED
File without changes
elements/ninja-form/ninja-form.php CHANGED
File without changes
elements/post-timeline/post-timeline.php CHANGED
File without changes
elements/{pricing-table/pricing-table.php → price-table/price-table.php} RENAMED
File without changes
elements/product-grid/product-grid.php CHANGED
File without changes
elements/progress-bar/progress-bar.php CHANGED
File without changes
elements/team-members/team-members.php CHANGED
File without changes
elements/testimonials/testimonials.php CHANGED
File without changes
elements/tooltip/tooltip.php CHANGED
File without changes
elements/twitter-feed/twitter-feed.php CHANGED
File without changes
elements/weforms/weforms.php CHANGED
File without changes
elements/wpforms/wpforms.php CHANGED
File without changes
essential_adons_elementor.php CHANGED
@@ -4,7 +4,7 @@
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
- * Version: 2.9.8
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
@@ -13,325 +13,206 @@
13
 
14
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
15
 
16
- define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
17
- define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
18
- define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
19
- define( 'ESSENTIAL_ADDONS_VERSION', '2.9.8' );
20
- define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.9.8' );
21
- define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
 
 
 
 
23
 
24
- require_once ESSENTIAL_ADDONS_EL_PATH.'includes/elementor-helper.php';
25
- require_once ESSENTIAL_ADDONS_EL_PATH.'includes/queries.php';
26
- require_once ESSENTIAL_ADDONS_EL_PATH.'includes/class-plugin-usage-tracker.php';
27
- require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
28
- require_once ESSENTIAL_ADDONS_EL_PATH.'includes/extensions.php';
29
 
30
- /**
31
- * This function will return true for all activated modules
32
- *
33
- * @since v2.4.1
34
- */
35
- function eael_activated_modules() {
36
 
37
- $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonials', 'weforms', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'ninja-form', 'gravity-form', 'caldera-form', 'wpforms', 'twitter-feed', 'data-table', 'filter-gallery', 'image-accordion','content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'section-particles', 'feature-list' ];
38
-
39
- $eael_default_settings = array_fill_keys( $eael_default_keys, true );
40
- $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
41
- $eael_new_settings = array_diff_key( $eael_default_settings, $eael_get_settings );
42
 
43
- if( ! empty( $eael_new_settings ) ) {
44
- $eael_updated_settings = array_merge( $eael_get_settings, $eael_new_settings );
45
- update_option( 'eael_save_settings', $eael_updated_settings );
46
- }
47
-
48
- return $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
49
-
50
- }
51
-
52
- /**
53
- * Load acivate or deactivate Modules
54
- *
55
- * @since v1.0.0
56
- */
57
- function add_eael_extensions() {
58
- $is_component_active = eael_activated_modules();
59
 
60
- if( $is_component_active['section-particles'] ) {
61
- require_once ESSENTIAL_ADDONS_EL_PATH .'extensions/eael-particle-section/eael-particle-section.php';
62
- }
63
- }
64
- add_eael_extensions();
65
 
66
- /**
67
- * Acivate or Deactivate Modules
68
- *
69
- * @since v1.0.0
70
- */
71
- function add_eael_elements() {
72
 
73
- $is_component_active = eael_activated_modules();
74
 
75
- // load elements
76
- if( $is_component_active['post-grid'] ) {
77
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/post-grid/post-grid.php';
78
- }
79
- if( $is_component_active['post-timeline'] ) {
80
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/post-timeline/post-timeline.php';
81
- }
82
- if( $is_component_active['fancy-text'] ) {
83
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/fancy-text/fancy-text.php';
84
- }
85
- if( $is_component_active['creative-btn'] ) {
86
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/creative-button/creative-button.php';
87
- }
88
- if( $is_component_active['count-down'] ) {
89
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/countdown/countdown.php';
90
- }
91
- if( $is_component_active['team-members'] ) {
92
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/team-members/team-members.php';
93
- }
94
- if( $is_component_active['testimonials'] ) {
95
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/testimonials/testimonials.php';
96
- }
97
 
98
- if ( function_exists( 'WC' ) && $is_component_active['product-grid'] ) {
99
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/product-grid/product-grid.php';
100
- }
 
 
 
 
 
 
 
 
 
 
101
 
102
- if ( function_exists( 'wpcf7' ) && $is_component_active['contact-form-7'] ) {
103
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/contact-form-7/contact-form-7.php';
104
- }
 
 
105
 
106
- if ( function_exists( 'WeForms' ) && $is_component_active['weforms'] ) {
107
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/weforms/weforms.php';
108
- }
109
 
110
- if( $is_component_active['info-box'] ) {
111
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/infobox/infobox.php';
112
- }
 
 
 
 
 
113
 
114
- if( $is_component_active['flip-box'] ) {
115
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/flipbox/flipbox.php';
116
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
 
118
- if( $is_component_active['call-to-action'] ) {
119
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/call-to-action/call-to-action.php';
120
- }
121
 
122
- if( $is_component_active['dual-header'] ) {
123
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/dual-color-header/dual-color-header.php';
124
- }
125
- if( $is_component_active['price-table'] ) {
126
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/pricing-table/pricing-table.php';
127
- }
128
- if( function_exists( 'Ninja_Forms' ) && $is_component_active['ninja-form'] ) {
129
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/ninja-form/ninja-form.php';
130
- }
131
- if( class_exists( 'GFForms' ) && $is_component_active['gravity-form'] ) {
132
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/gravity-form/gravity-form.php';
133
- }
134
- if( class_exists( 'Caldera_Forms' ) && $is_component_active['caldera-form'] ) {
135
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/caldera-forms/caldera-forms.php';
136
- }
137
- if( class_exists( '\WPForms\WPForms' ) && $is_component_active['wpforms'] ) {
138
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/wpforms/wpforms.php';
139
- }
140
- if( $is_component_active['twitter-feed'] ) {
141
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/twitter-feed/twitter-feed.php';
142
- }
143
 
144
- if( $is_component_active['data-table'] ) {
145
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/data-table/data-table.php';
146
- }
147
- if( $is_component_active['filter-gallery'] ) {
148
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/filterable-gallery/filterable-gallery.php';
149
- }
150
- if( $is_component_active['image-accordion'] ) {
151
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/image-accordion/image-accordion.php';
152
- }
153
- if( $is_component_active['content-ticker'] ) {
154
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/content-ticker/content-ticker.php';
155
- }
156
- if( $is_component_active['tooltip'] ) {
157
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/tooltip/tooltip.php';
158
- }
159
- if( $is_component_active['adv-accordion'] ) {
160
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/advance-accordion/advance-accordion.php';
161
- }
162
- if( $is_component_active['adv-tabs'] ) {
163
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/advance-tabs/advance-tabs.php';
164
- }
165
- if( $is_component_active['progress-bar'] ) {
166
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/progress-bar/progress-bar.php';
167
- }
168
- if( $is_component_active['feature-list'] ) {
169
- require_once ESSENTIAL_ADDONS_EL_PATH.'elements/feature-list/feature-list.php';
170
- }
171
- }
172
- add_action('elementor/widgets/widgets_registered','add_eael_elements');
173
 
174
- /**
175
- * Registering a Group Control for All Posts Element
176
- */
177
- function eae_posts_register_control( $controls_manager ){
178
- include_once ESSENTIAL_ADDONS_EL_PATH . 'includes/eae-posts-group-control.php';
179
- $controls_manager->add_group_control( 'eaeposts', new Elementor\EAE_Posts_Group_Control() );
180
- }
181
 
182
- add_action( 'elementor/controls/controls_registered', 'eae_posts_register_control' );
 
 
 
 
 
 
 
 
183
 
184
- /**
185
- * Load module's scripts and styles if any module is active.
186
- *
187
- * @since v1.0.0
188
- */
189
- function essential_addons_el_enqueue(){
190
- $is_component_active = eael_activated_modules();
191
- wp_enqueue_style('essential_addons_elementor-css',ESSENTIAL_ADDONS_EL_URL.'assets/css/essential-addons-elementor.css');
192
- wp_enqueue_script('eael-scripts',ESSENTIAL_ADDONS_EL_URL.'assets/js/eael-scripts.js', array('jquery'),'1.0', true);
193
- if ( class_exists( 'GFCommon' ) ) {
194
- foreach( eael_select_gravity_form() as $form_id => $form_name ){
195
- if ( $form_id != '0' ) {
196
- gravity_form_enqueue_scripts( $form_id );
197
  }
198
- };
199
- }
200
- if ( function_exists( 'wpforms' ) ) {
201
- wpforms()->frontend->assets_css();
202
- }
203
- if( $is_component_active['fancy-text'] ) {
204
- wp_enqueue_script('essential_addons_elementor-fancy-text-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/fancy-text.js', array('jquery'),'1.0', true);
205
- }
206
- if( $is_component_active['count-down'] ) {
207
- wp_enqueue_script('essential_addons_elementor-countdown-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/countdown.min.js', array('jquery'),'1.0', true);
208
- }
209
- if( $is_component_active['post-grid'] || $is_component_active['twitter-feed'] ) {
210
- wp_enqueue_script('essential_addons_elementor-masonry-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/masonry.min.js', array('jquery'),'1.0', true);
211
- }
212
- if( $is_component_active['post-grid'] || $is_component_active['post-timeline'] ) {
213
- wp_enqueue_script('essential_addons_elementor-load-more-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/load-more.js', array('jquery'),'1.0', true);
214
- $eael_js_settings = array(
215
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
216
- );
217
- wp_localize_script( 'essential_addons_elementor-load-more-js', 'eaelPostGrid', $eael_js_settings );
218
- }
219
- if( $is_component_active['twitter-feed']) {
220
- wp_enqueue_script('essential_addons_elementor-codebird-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/codebird.js', array('jquery'),'1.0', true);
221
- }
222
- if( $is_component_active['twitter-feed'] ) {
223
- wp_enqueue_script('essential_addons_elementor-doT-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/doT.min.js', array('jquery'),'1.0', true);
224
- wp_enqueue_script('essential_addons_elementor-moment-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/moment.js', array('jquery'),'1.0', true);
225
- wp_enqueue_script('essential_addons_elementor-socialfeed-js',ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/jquery.socialfeed.js', array('jquery'),'1.0', true);
226
- }
227
-
228
- if( $is_component_active['filter-gallery'] ) {
229
- wp_enqueue_script('essential_addons_mixitup-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/mixitup.min.js', array('jquery'),'1.0', true);
230
- wp_enqueue_script('essential_addons_magnific-popup-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/jquery.magnific-popup.min.js', array('jquery'),'1.0', true);
231
-
232
- wp_register_script('essential_addons_isotope-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/isotope.pkgd.min.js', array('jquery'),'1.0', true);
233
-
234
- wp_register_script('jquery-resize', ESSENTIAL_ADDONS_EL_URL.'assets/js/jquery.resize.min.js', array('jquery'), '1.0', true);
235
- }
236
-
237
- if( $is_component_active['price-table'] ) {
238
- wp_enqueue_style('essential_addons_elementor-tooltipster',ESSENTIAL_ADDONS_EL_URL.'assets/css/tooltipster.bundle.min.css');
239
- wp_enqueue_script('essential_addons_elementor-tooltipster-js',ESSENTIAL_ADDONS_EL_URL.'assets/js/tooltipster.bundle.min.js', array('jquery'),'1.0', true);
240
- }
241
-
242
- if( $is_component_active['progress-bar'] ) {
243
- wp_enqueue_script('essential_addons_elementor-progress-bar',ESSENTIAL_ADDONS_EL_URL.'assets/js/progress-bar.js', array('jquery'),'1.0', true);
244
- }
245
- if( $is_component_active['section-particles'] ) {
246
- wp_enqueue_script(
247
- 'particles-js', ESSENTIAL_ADDONS_EL_URL.'assets/js/particles.js',
248
- ['jquery'], '1.0', true
249
- );
250
-
251
- $preset_themes = require ESSENTIAL_ADDONS_EL_PATH.'extensions/eael-particle-section/particle-themes.php';
252
- wp_localize_script( 'particles-js', 'ParticleThemesData', $preset_themes );
253
- }
254
-
255
- }
256
- add_action( 'wp_enqueue_scripts', 'essential_addons_el_enqueue' );
257
-
258
- /**
259
- * Editor Css
260
- */
261
- add_action( 'elementor/editor/before_enqueue_scripts', function() {
262
- wp_register_style( 'essential_addons_elementor_editor-css', ESSENTIAL_ADDONS_EL_URL.'assets/css/essential-addons-editor.css');
263
- wp_enqueue_style( 'essential_addons_elementor_editor-css' );
264
- } );
265
-
266
- /**
267
- * Creates an Action Menu
268
- */
269
- function eael_add_settings_link( $links ) {
270
- $settings_link = sprintf( '<a href="admin.php?page=eael-settings">' . __( 'Settings' ) . '</a>' );
271
- $go_pro_link = sprintf( '<a href="https://wpdeveloper.net/in/upgrade-essential-addons-elementor" target="_blank" style="color: #39b54a; font-weight: bold;">' . __( 'Go Pro' ) . '</a>' );
272
- array_push( $links, $settings_link, $go_pro_link );
273
- return $links;
274
- }
275
- $plugin = plugin_basename( __FILE__ );
276
- add_filter( "plugin_action_links_$plugin", 'eael_add_settings_link' );
277
-
278
- /**
279
- * Activation redirects
280
- *
281
- * @since v1.0.0
282
- */
283
- function eael_activate() {
284
- add_option('eael_do_activation_redirect', true);
285
- }
286
- register_activation_hook(__FILE__, 'eael_activate');
287
 
288
- /**
289
- * Redirect to options page
290
- *
291
- * @since v1.0.0
292
- */
293
- function eael_redirect() {
294
- if (get_option('eael_do_activation_redirect', false)) {
295
- delete_option('eael_do_activation_redirect');
296
- if(!isset($_GET['activate-multi']))
297
- {
298
- wp_redirect("admin.php?page=eael-settings");
299
- }
300
- }
301
- }
302
- add_action('admin_init', 'eael_redirect');
 
 
 
 
 
303
 
304
- /**
305
- * Optional usage tracker
306
- *
307
- * @since v1.0.0
308
- */
309
- if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
310
- require_once dirname( __FILE__ ) . '/includes/class-plugin-usage-tracker.php';
311
- }
312
- if( ! function_exists( 'essential_addons_elementor_lite_start_plugin_tracking' ) ) {
313
- function essential_addons_elementor_lite_start_plugin_tracking() {
314
- $wpins = new Eael_Plugin_Usage_Tracker(
315
  __FILE__,
316
  'http://app.wpdeveloper.net',
317
  array(),
318
  true,
319
  true,
320
  1
321
- );
322
- }
323
- essential_addons_elementor_lite_start_plugin_tracking();
324
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
 
326
- function eael_init() {
327
- if ( class_exists( 'Caldera_Forms' ) ) {
328
- add_filter( 'caldera_forms_force_enqueue_styles_early', '__return_true' );
329
- }
330
- /**
331
- * Check if Elementor is Installed or not
332
- */
333
- if( ! function_exists( 'eael_is_elementor_active' ) ) :
334
- function eael_is_elementor_active() {
335
  $file_path = 'elementor/elementor.php';
336
  if ( ! function_exists( 'get_plugins' ) ) {
337
  include ABSPATH . '/wp-admin/includes/plugin.php';
@@ -339,82 +220,54 @@ function eael_init() {
339
  $installed_plugins = get_plugins();
340
  return isset( $installed_plugins[$file_path] );
341
  }
342
- endif;
343
-
344
- /**
345
- * This notice will appear if Elementor is not installed or activated or both
346
- */
347
- function eael_is_failed_to_load() {
348
- $elementor = 'elementor/elementor.php';
349
- if( eael_is_elementor_active() ) {
350
- if( ! current_user_can( 'activate_plugins' ) ) {
351
- return;
352
- }
353
- $activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $elementor . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $elementor );
354
- $message = __( '<strong>Essential Addons for Elementor</strong> requires <strong>Elementor</strong> plugin to be active. Please activate Elementor to continue.', 'essential-addons-elementor' );
355
- $button_text = __( 'Activate Elementor', 'essential-addons-elementor' );
356
- } else {
357
- if( ! current_user_can( 'activate_plugins' ) ) {
358
- return;
 
 
 
 
359
  }
360
- $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );
361
- $message = sprintf( __( '<strong>Essential Addons for Elementor</strong> requires <strong>Elementor</strong> plugin to be installed and activated. Please install Elementor to continue.', 'essential-addons-elementor' ), '<strong>', '</strong>' );
362
- $button_text = __( 'Install Elementor', 'essential-addons-elementor' );
 
 
 
 
363
  }
364
- $button = '<p><a href="' . $activation_url . '" class="button-primary">' . $button_text . '</a></p>';
365
- printf( '<div class="error"><p>%1$s</p>%2$s</div>', __( $message ), $button );
366
  }
367
 
368
- if( ! did_action( 'elementor/loaded' ) ) {
369
- add_action( 'admin_notices', 'eael_is_failed_to_load' );
370
  }
 
 
371
  }
372
- add_action( 'plugins_loaded', 'eael_init' );
373
- require_once dirname( __FILE__ ) . '/includes/class-wpdev-notices.php';
374
 
375
  /**
376
- * EAE Pro Activation
 
 
377
  */
378
- if( ! function_exists( 'eae_pro_filter_action_links' ) ) :
379
- add_filter('plugin_action_links_essential-addons-elementor/essential_adons_elementor.php', 'eae_pro_filter_action_links');
380
- function eae_pro_filter_action_links( $links ) {
381
- if( ! function_exists( 'get_plugins' ) ) {
382
- include ABSPATH . '/wp-admin/includes/plugin.php';
383
- }
384
- $activate_plugins = get_option( 'active_plugins' );
385
- if( in_array( plugin_basename( __FILE__ ), $activate_plugins ) ) {
386
- $pro_plugin_base_name = 'essential-addons-elementor/essential_adons_elementor.php';
387
- if( isset( $links['activate'] ) ) {
388
- $activate_link = $links['activate'];
389
- // Insert an onClick action to allow form before deactivating
390
- $activation_link = str_replace( '<a ', '<a id="eae-pro-activation" onclick="javascript:event.preventDefault();"', $activate_link );
391
- $links['activate'] = $activation_link;
392
- }
393
- return $links;
394
- }
395
- }
396
- endif;
397
-
398
- if( ! function_exists( 'plugins_footer_for_pro' ) ) :
399
- add_action( 'admin_footer-plugins.php', 'plugins_footer_for_pro' );
400
- function plugins_footer_for_pro(){
401
- ?>
402
- <script>
403
- jQuery(document).ready(function( $ ){
404
- $('#eae-pro-activation').on('click', function( e ){
405
- e.preventDefault();
406
- swal({
407
- title: '<h2>Please <span style="color: red">Deactivate</span> <br><br> Free Version</h2>',
408
- type: 'error',
409
- html:
410
- 'You don\'t need the <span style="color: #1abc9c;font-weight: 700;">Free Version</span> to use the <span style="color: #00629a;font-weight: 700;">Premium</span> one.',
411
- showCloseButton: true,
412
- showCancelButton: false,
413
- focusConfirm: false,
414
- }).catch(swal.noop);
415
- });
416
- });
417
- </script>
418
- <?php
419
- }
420
- endif;
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
+ * Version: 2.9.9
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
13
 
14
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
15
 
16
+ if( ! class_exists( 'Essential_Addons_EL') ) {
17
+ class Essential_Addons_EL {
18
+
19
+ /**
20
+ * Instance of this class
21
+ *
22
+ * @access protected
23
+ */
24
+ protected static $_instance = null;
25
+
26
+ /**
27
+ * Get instance of this class
28
+ *
29
+ * @return Essential_Addons_EL
30
+ */
31
+ public static function get_instance() {
32
+ if ( is_null( self::$_instance ) ) {
33
+ self::$_instance = new self();
34
+ }
35
+
36
+ return self::$_instance;
37
+ }
38
 
39
+ /**
40
+ * Constract of this class
41
+ */
42
+ public function __construct() {
43
 
44
+ $this->define_constants();
45
+ $this->inclulde_files();
 
 
 
46
 
47
+ add_action( 'elementor/controls/controls_registered', array($this, 'eae_posts_register_control') );
 
 
 
 
 
48
 
49
+ $plugin = plugin_basename( __FILE__ );
50
+ add_filter( "plugin_action_links_$plugin", array($this, 'eael_add_settings_link') );
51
+ add_action('admin_init', array($this, 'eael_redirect'));
52
+ add_action( 'admin_footer-plugins.php', array($this, 'plugins_footer_for_pro') );
 
53
 
54
+ if( ! class_exists( 'Eael_Plugin_Usage_Tracker') ) {
55
+ require_once dirname( __FILE__ ) . '/includes/class-plugin-usage-tracker.php';
56
+ }
57
+ $this->essential_addons_elementor_lite_start_plugin_tracking();
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
+ add_filter('plugin_action_links_essential-addons-elementor/essential_adons_elementor.php', array($this, 'eae_pro_filter_action_links'));
60
+ if( ! did_action( 'elementor/loaded' ) ) {
61
+ add_action( 'admin_notices', array($this, 'eael_is_failed_to_load') );
62
+ }
 
63
 
64
+ if ( class_exists( 'Caldera_Forms' ) ) {
65
+ add_filter( 'caldera_forms_force_enqueue_styles_early', '__return_true' );
66
+ }
 
 
 
67
 
68
+ add_action( 'elementor/editor/before_enqueue_scripts', array($this, 'eae_before_enqueue_scripts'));
69
 
70
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
+ /**
73
+ * Defining constances
74
+ *
75
+ * @access public
76
+ */
77
+ public function define_constants() {
78
+ define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
79
+ define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
80
+ define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
81
+ define( 'ESSENTIAL_ADDONS_VERSION', '2.9.9' );
82
+ define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.9.9' );
83
+ define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
84
+ }
85
 
86
+ public function include_path( $file ) {
87
+ $file = ltrim( $file, '/' );
88
+
89
+ return ESSENTIAL_ADDONS_EL_PATH.'includes/' . $file;
90
+ }
91
 
92
+ public function inclulde_files() {
 
 
93
 
94
+ require_once $this->include_path('elementor-helper.php');
95
+ require_once $this->include_path('class-eae-scripts.php');
96
+ require_once $this->include_path('queries.php');
97
+ require_once $this->include_path('class-eae-elements.php');
98
+ require_once $this->include_path('class-plugin-usage-tracker.php');
99
+ require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
100
+ require_once dirname( __FILE__ ) . '/includes/class-wpdev-notices.php';
101
+ }
102
 
103
+ /**
104
+ * This function will return true for all activated modules
105
+ *
106
+ * @since v2.4.1
107
+ */
108
+ public static function eael_activated_modules() {
109
+
110
+ $eael_default_keys = [ 'contact-form-7', 'count-down', 'creative-btn', 'fancy-text', 'img-comparison', 'instagram-gallery', 'interactive-promo', 'lightbox', 'post-block', 'post-grid', 'post-timeline', 'product-grid', 'team-members', 'testimonial-slider', 'testimonials', 'testimonials', 'weforms', 'static-product', 'call-to-action', 'flip-box', 'info-box', 'dual-header', 'price-table', 'flip-carousel', 'interactive-cards', 'ninja-form', 'gravity-form', 'caldera-form', 'twitter-feed', 'data-table', 'filter-gallery', 'image-accordion','content-ticker', 'tooltip', 'adv-accordion', 'adv-tabs', 'progress-bar', 'feature-list' ];
111
+
112
+ $eael_default_settings = array_fill_keys( $eael_default_keys, true );
113
+ $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
114
+ $eael_new_settings = array_diff_key( $eael_default_settings, $eael_get_settings );
115
+
116
+ if( ! empty( $eael_new_settings ) ) {
117
+ $eael_updated_settings = array_merge( $eael_get_settings, $eael_new_settings );
118
+ update_option( 'eael_save_settings', $eael_updated_settings );
119
+ }
120
 
121
+ return $eael_get_settings = get_option( 'eael_save_settings', $eael_default_settings );
 
 
122
 
123
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
 
127
+ /**
128
+ * Registering a Group Control for All Posts Element
129
+ */
130
+ public function eae_posts_register_control( $controls_manager ){
131
+ include_once ESSENTIAL_ADDONS_EL_PATH . 'includes/eae-posts-group-control.php';
132
+ $controls_manager->add_group_control( 'eaeposts', new Elementor\EAE_Posts_Group_Control() );
133
+ }
134
 
135
+ /**
136
+ * Creates an Action Menu
137
+ */
138
+ public function eael_add_settings_link( $links ) {
139
+ $settings_link = sprintf( '<a href="admin.php?page=eael-settings">' . __( 'Settings' ) . '</a>' );
140
+ $go_pro_link = sprintf( '<a href="https://wpdeveloper.net/in/upgrade-essential-addons-elementor" target="_blank" style="color: #39b54a; font-weight: bold;">' . __( 'Go Pro' ) . '</a>' );
141
+ array_push( $links, $settings_link, $go_pro_link );
142
+ return $links;
143
+ }
144
 
145
+ /**
146
+ * Redirect to options page
147
+ *
148
+ * @since v1.0.0
149
+ */
150
+ public function eael_redirect() {
151
+ if (get_option('eael_do_activation_redirect', false)) {
152
+ delete_option('eael_do_activation_redirect');
153
+ if(!isset($_GET['activate-multi']))
154
+ {
155
+ wp_redirect("admin.php?page=eael-settings");
 
 
156
  }
157
+ }
158
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
+ public function plugins_footer_for_pro(){
161
+ ?>
162
+ <script>
163
+ jQuery(document).ready(function( $ ){
164
+ $('#eae-pro-activation').on('click', function( e ){
165
+ e.preventDefault();
166
+ swal({
167
+ title: '<h2>Please <span style="color: red">Deactivate</span> <br><br> Free Version</h2>',
168
+ type: 'error',
169
+ html:
170
+ 'You don\'t need the <span style="color: #1abc9c;font-weight: 700;">Free Version</span> to use the <span style="color: #00629a;font-weight: 700;">Premium</span> one.',
171
+ showCloseButton: true,
172
+ showCancelButton: false,
173
+ focusConfirm: false,
174
+ }).catch(swal.noop);
175
+ });
176
+ });
177
+ </script>
178
+ <?php
179
+ }
180
 
181
+ /**
182
+ * Optional usage tracker
183
+ *
184
+ * @since v1.0.0
185
+ */
186
+ public function essential_addons_elementor_lite_start_plugin_tracking() {
187
+ $wpins = new Eael_Plugin_Usage_Tracker(
 
 
 
 
188
  __FILE__,
189
  'http://app.wpdeveloper.net',
190
  array(),
191
  true,
192
  true,
193
  1
194
+ );
195
+ }
196
+
197
+ public function eae_pro_filter_action_links( $links ) {
198
+ if( ! function_exists( 'get_plugins' ) ) {
199
+ include ABSPATH . '/wp-admin/includes/plugin.php';
200
+ }
201
+ $activate_plugins = get_option( 'active_plugins' );
202
+ if( in_array( plugin_basename( __FILE__ ), $activate_plugins ) ) {
203
+ $pro_plugin_base_name = 'essential-addons-elementor/essential_adons_elementor.php';
204
+ if( isset( $links['activate'] ) ) {
205
+ $activate_link = $links['activate'];
206
+ // Insert an onClick action to allow form before deactivating
207
+ $activation_link = str_replace( '<a ', '<a id="eae-pro-activation" onclick="javascript:event.preventDefault();"', $activate_link );
208
+ $links['activate'] = $activation_link;
209
+ }
210
+ return $links;
211
+ }
212
+ }
213
+
214
 
215
+ public function eael_is_elementor_active() {
 
 
 
 
 
 
 
 
216
  $file_path = 'elementor/elementor.php';
217
  if ( ! function_exists( 'get_plugins' ) ) {
218
  include ABSPATH . '/wp-admin/includes/plugin.php';
220
  $installed_plugins = get_plugins();
221
  return isset( $installed_plugins[$file_path] );
222
  }
223
+
224
+
225
+ /**
226
+ * This notice will appear if Elementor is not installed or activated or both
227
+ */
228
+ public function eael_is_failed_to_load() {
229
+ $elementor = 'elementor/elementor.php';
230
+ if( $this->eael_is_elementor_active() ) {
231
+ if( ! current_user_can( 'activate_plugins' ) ) {
232
+ return;
233
+ }
234
+ $activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $elementor . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $elementor );
235
+ $message = __( '<strong>Essential Addons for Elementor</strong> requires <strong>Elementor</strong> plugin to be active. Please activate Elementor to continue.', 'essential-addons-elementor' );
236
+ $button_text = __( 'Activate Elementor', 'essential-addons-elementor' );
237
+ } else {
238
+ if( ! current_user_can( 'activate_plugins' ) ) {
239
+ return;
240
+ }
241
+ $activation_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );
242
+ $message = sprintf( __( '<strong>Essential Addons for Elementor</strong> requires <strong>Elementor</strong> plugin to be installed and activated. Please install Elementor to continue.', 'essential-addons-elementor' ), '<strong>', '</strong>' );
243
+ $button_text = __( 'Install Elementor', 'essential-addons-elementor' );
244
  }
245
+ $button = '<p><a href="' . $activation_url . '" class="button-primary">' . $button_text . '</a></p>';
246
+ printf( '<div class="error"><p>%1$s</p>%2$s</div>', __( $message ), $button );
247
+ }
248
+
249
+ public function eae_before_enqueue_scripts() {
250
+ wp_register_style( 'essential_addons_elementor_editor-css', ESSENTIAL_ADDONS_EL_URL.'assets/css/essential-addons-editor.css');
251
+ wp_enqueue_style( 'essential_addons_elementor_editor-css' );
252
  }
253
+
254
+
255
  }
256
 
257
+ function run_essential_addons() {
258
+ return Essential_Addons_EL::get_instance();
259
  }
260
+ add_action( 'plugins_loaded', 'run_essential_addons', 25 );
261
+
262
  }
263
+
 
264
 
265
  /**
266
+ * Activation redirects
267
+ *
268
+ * @since v1.0.0
269
  */
270
+ function eael_activate() {
271
+ add_option('eael_do_activation_redirect', true);
272
+ }
273
+ register_activation_hook(__FILE__, 'eael_activate');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
extensions/eael-particle-section/eael-particle-section.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
-
3
- if( !defined( 'ABSPATH' ) ) exit;
4
-
5
- use Elementor\Elementor_Base;
6
- use Elementor\Controls_Manager;
7
- use Elementor\Element_Base;
8
- use Elementor\Widget_Base;
9
-
10
- add_action( 'elementor/frontend/section/before_render', 'before_render' );
11
- add_action('elementor/element/section/section_layout/after_section_end', 'register_controls',10 );
12
-
13
- function register_controls( $element ) {
14
-
15
- $element->start_controls_section(
16
- 'eael_particles_section',
17
- [
18
- 'label' => 'EA Particles',
19
- 'tab' => Controls_Manager::TAB_LAYOUT
20
- ]
21
- );
22
-
23
- $element->add_control(
24
- 'eael_particle_switch',
25
- [
26
- 'label' => __( 'Enable Particles', 'essential-addons-elementor' ),
27
- 'type' => Controls_Manager::SWITCHER,
28
- ]
29
- );
30
-
31
- $element->add_control(
32
- 'eael_particle_theme_from',
33
- [
34
- 'label' => __( 'Theme Source', 'essential-addons-elementor' ),
35
- 'type' => Controls_Manager::CHOOSE,
36
- 'options' => [
37
- 'presets' => [
38
- 'title' => __( 'Defaults', 'essential-addons-elementor' ),
39
- 'icon' => 'fa fa-list',
40
- ],
41
- 'custom' => [
42
- 'title' => __( 'Custom', 'essential-addons-elementor' ),
43
- 'icon' => 'fa fa-edit',
44
- ],
45
- ],
46
- 'condition' => [
47
- 'eael_particle_switch' => 'yes'
48
- ],
49
- 'default' => 'presets'
50
- ]
51
- );
52
-
53
- $element->add_control(
54
- 'eael_particle_preset_themes',
55
- [
56
- 'label' => esc_html__( 'Preset Themes', 'essential-addons-elementor' ),
57
- 'type' => Controls_Manager::SELECT,
58
- 'label_block' => true,
59
- 'options' => [
60
- 11 => __( 'Default', 'essential-addons-elementor' ),
61
- 'nasa' => __( 'Nasa', 'essential-addons-elementor' ),
62
- 'bubble' => __( 'Bubble', 'essential-addons-elementor' ),
63
- 'snow' => __( 'Snow', 'essential-addons-elementor' ),
64
- 'nyan_cat' => __( 'Nyan Cat', 'essential-addons-elementor' )
65
- ],
66
- 'default' => 11,
67
- 'condition' => [
68
- 'eael_particle_theme_from' => 'presets',
69
- 'eael_particle_switch' => 'yes'
70
- ]
71
- ]
72
- );
73
-
74
- $element->add_control(
75
- 'eael_particles_custom_style',
76
- [
77
- 'label' => __( 'Custom Style', 'essential-addons-elementor' ),
78
- 'type' => Controls_Manager::TEXTAREA,
79
- 'description' => __( 'You can generate custom particles JSON code from <a href="http://vincentgarreau.com/particles.js/#default" target="_blank">Here!</a>. Simply just past the JSON code above. For more queries <a href="https://essential-addons.com/elementor/docs/" target="_blank">Click Here!</a>', 'essential-addons-elementor' ),
80
- 'condition' => [
81
- 'eael_particle_theme_from' => 'custom',
82
- 'eael_particle_switch' => 'yes'
83
- ]
84
- ]
85
- );
86
-
87
- $element->add_control(
88
- 'eael_particle_section_notice',
89
- [
90
- 'raw' => __( 'You need to configure a <strong style="color:green">Background Type</strong> to see this in full effect. You can do this by switching to the <strong style="color:green">Style</strong> Tab.', 'essential-addons-elementor' ),
91
- 'type' => Controls_Manager::RAW_HTML,
92
- 'condition' => [
93
- 'eael_particle_theme_from' => 'custom',
94
- 'eael_particle_switch' => 'yes'
95
- ]
96
- ]
97
- );
98
-
99
- $element->end_controls_section();
100
-
101
- }
102
-
103
- function before_render( $element ) {
104
- $settings = $element->get_settings_for_display();
105
-
106
- if( $settings['eael_particle_switch'] == 'yes' ){
107
-
108
- $element->add_render_attribute(
109
- '_wrapper','id',
110
- 'eael-section-particles-' . $element->get_id()
111
- );
112
-
113
-
114
- $preset_themes = include('particle-themes.php');
115
- if( isset($settings['eael_particle_theme_from']) && $settings['eael_particle_theme_from'] == 'presets') {
116
- $theme = $preset_themes[ $settings['eael_particle_preset_themes'] ];
117
- $element->add_render_attribute('_wrapper', 'data-theme', $theme);
118
- }
119
-
120
- if(
121
- isset($settings['eael_particle_theme_from'])
122
- && $settings['eael_particle_theme_from'] == 'custom'
123
- ) {
124
- $element->add_render_attribute('_wrapper', 'data-theme', $settings['eael_particles_custom_style']);
125
- }
126
-
127
- }
128
-
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
extensions/eael-particle-section/particle-themes.php DELETED
@@ -1,554 +0,0 @@
1
- <?php
2
-
3
- return [
4
- '11' => '{
5
- "particles": {
6
- "number": {
7
- "value": 160,
8
- "density": {
9
- "enable": true,
10
- "value_area": 800
11
- }
12
- },
13
- "color": {
14
- "value": "#ffffff"
15
- },
16
- "shape": {
17
- "type": "circle",
18
- "stroke": {
19
- "width": 0,
20
- "color": "#000000"
21
- },
22
- "polygon": {
23
- "nb_sides": 5
24
- },
25
- "image": {
26
- "src": "img/github.svg",
27
- "width": 100,
28
- "height": 100
29
- }
30
- },
31
- "opacity": {
32
- "value": 0.5,
33
- "random": false,
34
- "anim": {
35
- "enable": false,
36
- "speed": 1,
37
- "opacity_min": 0.1,
38
- "sync": false
39
- }
40
- },
41
- "size": {
42
- "value": 3,
43
- "random": true,
44
- "anim": {
45
- "enable": false,
46
- "speed": 40,
47
- "size_min": 0.1,
48
- "sync": false
49
- }
50
- },
51
- "line_linked": {
52
- "enable": true,
53
- "distance": 150,
54
- "color": "#ffffff",
55
- "opacity": 0.4,
56
- "width": 1
57
- },
58
- "move": {
59
- "enable": true,
60
- "speed": 6,
61
- "direction": "none",
62
- "random": false,
63
- "straight": false,
64
- "out_mode": "out",
65
- "bounce": false,
66
- "attract": {
67
- "enable": false,
68
- "rotateX": 600,
69
- "rotateY": 1200
70
- }
71
- }
72
- },
73
- "interactivity": {
74
- "detect_on": "canvas",
75
- "events": {
76
- "onhover": {
77
- "enable": true,
78
- "mode": "repulse"
79
- },
80
- "onclick": {
81
- "enable": true,
82
- "mode": "push"
83
- },
84
- "resize": true
85
- },
86
- "modes": {
87
- "grab": {
88
- "distance": 400,
89
- "line_linked": {
90
- "opacity": 1
91
- }
92
- },
93
- "bubble": {
94
- "distance": 400,
95
- "size": 40,
96
- "duration": 2,
97
- "opacity": 8,
98
- "speed": 3
99
- },
100
- "repulse": {
101
- "distance": 200,
102
- "duration": 0.4
103
- },
104
- "push": {
105
- "particles_nb": 4
106
- },
107
- "remove": {
108
- "particles_nb": 2
109
- }
110
- }
111
- },
112
- "retina_detect": true
113
- }',
114
- 'nasa' => '{
115
- "particles": {
116
- "number": {
117
- "value": 250,
118
- "density": {
119
- "enable": true,
120
- "value_area": 800
121
- }
122
- },
123
- "color": {
124
- "value": "#ffffff"
125
- },
126
- "shape": {
127
- "type": "circle",
128
- "stroke": {
129
- "width": 0,
130
- "color": "#000000"
131
- },
132
- "polygon": {
133
- "nb_sides": 5
134
- },
135
- "image": {
136
- "src": "img/github.svg",
137
- "width": 100,
138
- "height": 100
139
- }
140
- },
141
- "opacity": {
142
- "value": 1,
143
- "random": true,
144
- "anim": {
145
- "enable": true,
146
- "speed": 1,
147
- "opacity_min": 0,
148
- "sync": false
149
- }
150
- },
151
- "size": {
152
- "value": 3,
153
- "random": true,
154
- "anim": {
155
- "enable": false,
156
- "speed": 4,
157
- "size_min": 0.3,
158
- "sync": false
159
- }
160
- },
161
- "line_linked": {
162
- "enable": false,
163
- "distance": 150,
164
- "color": "#ffffff",
165
- "opacity": 0.4,
166
- "width": 1
167
- },
168
- "move": {
169
- "enable": true,
170
- "speed": 1,
171
- "direction": "none",
172
- "random": true,
173
- "straight": false,
174
- "out_mode": "out",
175
- "bounce": false,
176
- "attract": {
177
- "enable": false,
178
- "rotateX": 600,
179
- "rotateY": 600
180
- }
181
- }
182
- },
183
- "interactivity": {
184
- "detect_on": "canvas",
185
- "events": {
186
- "onhover": {
187
- "enable": true,
188
- "mode": "bubble"
189
- },
190
- "onclick": {
191
- "enable": true,
192
- "mode": "repulse"
193
- },
194
- "resize": true
195
- },
196
- "modes": {
197
- "grab": {
198
- "distance": 400,
199
- "line_linked": {
200
- "opacity": 1
201
- }
202
- },
203
- "bubble": {
204
- "distance": 250,
205
- "size": 0,
206
- "duration": 2,
207
- "opacity": 0,
208
- "speed": 3
209
- },
210
- "repulse": {
211
- "distance": 400,
212
- "duration": 0.4
213
- },
214
- "push": {
215
- "particles_nb": 4
216
- },
217
- "remove": {
218
- "particles_nb": 2
219
- }
220
- }
221
- },
222
- "retina_detect": true
223
- }',
224
- 'bubble' => '{
225
- "particles": {
226
- "number": {
227
- "value": 15,
228
- "density": {
229
- "enable": true,
230
- "value_area": 800
231
- }
232
- },
233
- "color": {
234
- "value": "#1b1e34"
235
- },
236
- "shape": {
237
- "type": "polygon",
238
- "stroke": {
239
- "width": 0,
240
- "color": "#000"
241
- },
242
- "polygon": {
243
- "nb_sides": 6
244
- },
245
- "image": {
246
- "src": "img/github.svg",
247
- "width": 100,
248
- "height": 100
249
- }
250
- },
251
- "opacity": {
252
- "value": 0.3,
253
- "random": true,
254
- "anim": {
255
- "enable": false,
256
- "speed": 1,
257
- "opacity_min": 0.1,
258
- "sync": false
259
- }
260
- },
261
- "size": {
262
- "value": 50,
263
- "random": false,
264
- "anim": {
265
- "enable": true,
266
- "speed": 10,
267
- "size_min": 40,
268
- "sync": false
269
- }
270
- },
271
- "line_linked": {
272
- "enable": false,
273
- "distance": 200,
274
- "color": "#ffffff",
275
- "opacity": 1,
276
- "width": 2
277
- },
278
- "move": {
279
- "enable": true,
280
- "speed": 8,
281
- "direction": "none",
282
- "random": false,
283
- "straight": false,
284
- "out_mode": "out",
285
- "bounce": false,
286
- "attract": {
287
- "enable": false,
288
- "rotateX": 600,
289
- "rotateY": 1200
290
- }
291
- }
292
- },
293
- "interactivity": {
294
- "detect_on": "canvas",
295
- "events": {
296
- "onhover": {
297
- "enable": false,
298
- "mode": "grab"
299
- },
300
- "onclick": {
301
- "enable": false,
302
- "mode": "push"
303
- },
304
- "resize": true
305
- },
306
- "modes": {
307
- "grab": {
308
- "distance": 400,
309
- "line_linked": {
310
- "opacity": 1
311
- }
312
- },
313
- "bubble": {
314
- "distance": 400,
315
- "size": 40,
316
- "duration": 2,
317
- "opacity": 8,
318
- "speed": 3
319
- },
320
- "repulse": {
321
- "distance": 200,
322
- "duration": 0.4
323
- },
324
- "push": {
325
- "particles_nb": 4
326
- },
327
- "remove": {
328
- "particles_nb": 2
329
- }
330
- }
331
- },
332
- "retina_detect": true
333
- }',
334
- 'snow' => '{
335
- "particles": {
336
- "number": {
337
- "value": 450,
338
- "density": {
339
- "enable": true,
340
- "value_area": 800
341
- }
342
- },
343
- "color": {
344
- "value": "#fff"
345
- },
346
- "shape": {
347
- "type": "circle",
348
- "stroke": {
349
- "width": 0,
350
- "color": "#000000"
351
- },
352
- "polygon": {
353
- "nb_sides": 5
354
- },
355
- "image": {
356
- "src": "img/github.svg",
357
- "width": 100,
358
- "height": 100
359
- }
360
- },
361
- "opacity": {
362
- "value": 0.5,
363
- "random": true,
364
- "anim": {
365
- "enable": false,
366
- "speed": 1,
367
- "opacity_min": 0.1,
368
- "sync": false
369
- }
370
- },
371
- "size": {
372
- "value": 5,
373
- "random": true,
374
- "anim": {
375
- "enable": false,
376
- "speed": 40,
377
- "size_min": 0.1,
378
- "sync": false
379
- }
380
- },
381
- "line_linked": {
382
- "enable": false,
383
- "distance": 500,
384
- "color": "#ffffff",
385
- "opacity": 0.4,
386
- "width": 2
387
- },
388
- "move": {
389
- "enable": true,
390
- "speed": 6,
391
- "direction": "bottom",
392
- "random": false,
393
- "straight": false,
394
- "out_mode": "out",
395
- "bounce": false,
396
- "attract": {
397
- "enable": false,
398
- "rotateX": 600,
399
- "rotateY": 1200
400
- }
401
- }
402
- },
403
- "interactivity": {
404
- "detect_on": "canvas",
405
- "events": {
406
- "onhover": {
407
- "enable": true,
408
- "mode": "bubble"
409
- },
410
- "onclick": {
411
- "enable": true,
412
- "mode": "repulse"
413
- },
414
- "resize": true
415
- },
416
- "modes": {
417
- "grab": {
418
- "distance": 400,
419
- "line_linked": {
420
- "opacity": 0.5
421
- }
422
- },
423
- "bubble": {
424
- "distance": 400,
425
- "size": 4,
426
- "duration": 0.3,
427
- "opacity": 1,
428
- "speed": 3
429
- },
430
- "repulse": {
431
- "distance": 200,
432
- "duration": 0.4
433
- },
434
- "push": {
435
- "particles_nb": 4
436
- },
437
- "remove": {
438
- "particles_nb": 2
439
- }
440
- }
441
- },
442
- "retina_detect": true
443
- }',
444
- 'nyan_cat' => '{
445
- "particles": {
446
- "number": {
447
- "value": 150,
448
- "density": {
449
- "enable": false,
450
- "value_area": 800
451
- }
452
- },
453
- "color": {
454
- "value": "#ffffff"
455
- },
456
- "shape": {
457
- "type": "star",
458
- "stroke": {
459
- "width": 0,
460
- "color": "#000000"
461
- },
462
- "polygon": {
463
- "nb_sides": 5
464
- },
465
- "image": {
466
- "src": "http://wiki.lexisnexis.com/academic/images/f/fb/Itunes_podcast_icon_300.jpg",
467
- "width": 100,
468
- "height": 100
469
- }
470
- },
471
- "opacity": {
472
- "value": 0.5,
473
- "random": false,
474
- "anim": {
475
- "enable": false,
476
- "speed": 1,
477
- "opacity_min": 0.1,
478
- "sync": false
479
- }
480
- },
481
- "size": {
482
- "value": 4,
483
- "random": true,
484
- "anim": {
485
- "enable": false,
486
- "speed": 40,
487
- "size_min": 0.1,
488
- "sync": false
489
- }
490
- },
491
- "line_linked": {
492
- "enable": false,
493
- "distance": 150,
494
- "color": "#ffffff",
495
- "opacity": 0.4,
496
- "width": 1
497
- },
498
- "move": {
499
- "enable": true,
500
- "speed": 14,
501
- "direction": "left",
502
- "random": false,
503
- "straight": true,
504
- "out_mode": "out",
505
- "bounce": false,
506
- "attract": {
507
- "enable": false,
508
- "rotateX": 600,
509
- "rotateY": 1200
510
- }
511
- }
512
- },
513
- "interactivity": {
514
- "detect_on": "canvas",
515
- "events": {
516
- "onhover": {
517
- "enable": false,
518
- "mode": "grab"
519
- },
520
- "onclick": {
521
- "enable": true,
522
- "mode": "repulse"
523
- },
524
- "resize": true
525
- },
526
- "modes": {
527
- "grab": {
528
- "distance": 200,
529
- "line_linked": {
530
- "opacity": 1
531
- }
532
- },
533
- "bubble": {
534
- "distance": 400,
535
- "size": 40,
536
- "duration": 2,
537
- "opacity": 8,
538
- "speed": 3
539
- },
540
- "repulse": {
541
- "distance": 200,
542
- "duration": 0.4
543
- },
544
- "push": {
545
- "particles_nb": 4
546
- },
547
- "remove": {
548
- "particles_nb": 2
549
- }
550
- }
551
- },
552
- "retina_detect": true
553
- }'
554
- ];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-eae-elements.php ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
+
4
+
5
+ if( ! class_exists('Essential_Addons_Elements') ) {
6
+ class Essential_Addons_Elements {
7
+
8
+ /**
9
+ * Instance of this class
10
+ *
11
+ * @access protected
12
+ */
13
+ protected static $_instance = null;
14
+
15
+ /**
16
+ * Get instance of this class
17
+ *
18
+ * @return Essential_Addons_Elements
19
+ */
20
+ public static function get_instance() {
21
+ if ( is_null( self::$_instance ) ) {
22
+ self::$_instance = new self();
23
+ }
24
+
25
+ return self::$_instance;
26
+ }
27
+
28
+ public function __construct() {
29
+ add_action('elementor/widgets/widgets_registered', array($this, 'add_eael_elements'));
30
+ }
31
+
32
+ public function elements_path( $file ) {
33
+ $file = ltrim( $file, '/' );
34
+ $file = ESSENTIAL_ADDONS_EL_PATH.'elements/'.$file.'/'.$file.'.php';
35
+ if(file_exists($file)) {
36
+ return $file;
37
+ }
38
+ return false;
39
+ }
40
+
41
+ /**
42
+ * Acivate or Deactivate Modules
43
+ *
44
+ * @since v1.0.0
45
+ */
46
+ function add_eael_elements() {
47
+
48
+ $elements = [
49
+ [ 'name' => 'post-grid' ],
50
+ [ 'name' => 'post-timeline' ],
51
+ [ 'name' => 'fancy-text' ],
52
+ [ 'name' => 'creative-btn' ],
53
+ [ 'name' => 'count-down' ],
54
+ [ 'name' => 'team-members' ],
55
+ [ 'name' => 'testimonials' ],
56
+ [ 'name' => 'info-box' ],
57
+ [ 'name' => 'flip-box' ],
58
+ [ 'name' => 'call-to-action' ],
59
+ [ 'name' => 'dual-header' ],
60
+ [ 'name' => 'price-table' ],
61
+ [ 'name' => 'twitter-feed' ],
62
+ [ 'name' => 'data-table' ],
63
+ [ 'name' => 'filter-gallery' ],
64
+ [ 'name' => 'image-accordion' ],
65
+ [ 'name' => 'content-ticker' ],
66
+ [ 'name' => 'tooltip' ],
67
+ [ 'name' => 'adv-accordion' ],
68
+ [ 'name' => 'adv-tabs' ],
69
+ [ 'name' => 'progress-bar' ],
70
+ [ 'name' => 'feature-list' ],
71
+ [
72
+ 'name' => 'product-grid',
73
+ 'condition' => [
74
+ 'function_exists',
75
+ 'WC'
76
+ ]
77
+ ],
78
+ [
79
+ 'name' => 'contact-form-7',
80
+ 'condition' => [
81
+ 'function_exists',
82
+ 'wpcf7'
83
+ ]
84
+ ],
85
+ [
86
+ 'name' => 'weforms',
87
+ 'condition' => [
88
+ 'function_exists',
89
+ 'WeForms'
90
+ ]
91
+ ],
92
+ [
93
+ 'name' => 'ninja-form',
94
+ 'condition' => [
95
+ 'function_exists',
96
+ 'Ninja_Forms'
97
+ ]
98
+ ],
99
+ [
100
+ 'name' => 'gravity-form',
101
+ 'condition' => [
102
+ 'class_exists',
103
+ 'GFForms'
104
+ ]
105
+ ],
106
+ [
107
+ 'name' => 'caldera-form',
108
+ 'condition' => [
109
+ 'class_exists',
110
+ 'Caldera_Forms'
111
+ ]
112
+ ],
113
+ [
114
+ 'name' => 'wpforms',
115
+ 'condition' => [
116
+ 'class_exists',
117
+ '\WPForms\WPForms'
118
+ ]
119
+ ]
120
+ ];
121
+
122
+ $is_component_active = Essential_Addons_EL::eael_activated_modules();
123
+ $ea_elements = apply_filters( 'add_eae_element', $elements );
124
+
125
+ foreach($ea_elements as $element) {
126
+ if( isset($element['condition']) ) {
127
+ if( ($element['condition'][0]($element['condition'][1])) && $is_component_active[$element['name']] ) {
128
+ require_once $this->elements_path($element['name']);
129
+ }
130
+ }else {
131
+ if($is_component_active[$element['name']]) {
132
+ require_once $this->elements_path($element['name']);
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+
139
+ }
140
+ }
141
+
142
+ Essential_Addons_Elements::get_instance();
includes/class-eae-scripts.php ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
+
5
+ if( ! class_exists( 'Essential_Addons_Scripts' ) ) {
6
+ class Essential_Addons_Scripts {
7
+
8
+ /**
9
+ * Instance of this class
10
+ *
11
+ * @access protected
12
+ */
13
+ protected static $_instance = null;
14
+
15
+ /**
16
+ * Get instance of this class
17
+ *
18
+ * @return Essential_Addons_EL
19
+ */
20
+ public static function get_instance() {
21
+ if ( is_null( self::$_instance ) ) {
22
+ self::$_instance = new self();
23
+ }
24
+
25
+ return self::$_instance;
26
+ }
27
+
28
+ public function __construct() {
29
+ add_action( 'wp_enqueue_scripts', array($this, 'essential_addons_el_enqueue') );
30
+ }
31
+
32
+ /**
33
+ * Load module's scripts and styles if any module is active.
34
+ *
35
+ * @since v1.0.0
36
+ */
37
+ public function essential_addons_el_enqueue(){
38
+ $is_component_active = Essential_Addons_EL::eael_activated_modules();
39
+
40
+ wp_enqueue_style(
41
+ 'essential_addons_elementor-css',
42
+ ESSENTIAL_ADDONS_EL_URL.'assets/css/essential-addons-elementor.css'
43
+ );
44
+
45
+ wp_enqueue_script(
46
+ 'eael-scripts',
47
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/eael-scripts.js',
48
+ array('jquery'),'1.0', true
49
+ );
50
+
51
+ if ( class_exists( 'GFCommon' ) ) {
52
+ foreach( eael_select_gravity_form() as $form_id => $form_name ){
53
+ if ( $form_id != '0' ) {
54
+ gravity_form_enqueue_scripts( $form_id );
55
+ }
56
+ };
57
+ }
58
+
59
+ if ( function_exists( 'wpforms' ) ) {
60
+ wpforms()->frontend->assets_css();
61
+ }
62
+
63
+ if( $is_component_active['fancy-text'] ) {
64
+ wp_enqueue_script(
65
+ 'essential_addons_elementor-fancy-text-js',
66
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/fancy-text.js',
67
+ array('jquery'),'1.0', true
68
+ );
69
+ }
70
+
71
+ if( $is_component_active['count-down'] ) {
72
+ wp_enqueue_script(
73
+ 'essential_addons_elementor-countdown-js',
74
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/countdown.min.js',
75
+ array('jquery'),'1.0', true
76
+ );
77
+ }
78
+
79
+ if( $is_component_active['post-grid'] || $is_component_active['twitter-feed'] ) {
80
+ wp_enqueue_script(
81
+ 'essential_addons_elementor-masonry-js',
82
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/masonry.min.js',
83
+ array('jquery'),'1.0', true
84
+ );
85
+ }
86
+
87
+ if( $is_component_active['post-grid'] || $is_component_active['post-timeline'] ) {
88
+ wp_enqueue_script(
89
+ 'essential_addons_elementor-load-more-js',
90
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/load-more.js',
91
+ array('jquery'),'1.0', true
92
+ );
93
+
94
+ $eael_js_settings = array(
95
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
96
+ );
97
+
98
+ wp_localize_script(
99
+ 'essential_addons_elementor-load-more-js',
100
+ 'eaelPostGrid', $eael_js_settings
101
+ );
102
+ }
103
+
104
+ if( $is_component_active['twitter-feed']) {
105
+ wp_enqueue_script(
106
+ 'essential_addons_elementor-codebird-js',
107
+ ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/codebird.js',
108
+ array('jquery'),'1.0', true
109
+ );
110
+ }
111
+
112
+ if( $is_component_active['twitter-feed'] ) {
113
+ wp_enqueue_script(
114
+ 'essential_addons_elementor-doT-js',
115
+ ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/doT.min.js',
116
+ array('jquery'),'1.0', true
117
+ );
118
+
119
+ wp_enqueue_script(
120
+ 'essential_addons_elementor-moment-js',
121
+ ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/moment.js',
122
+ array('jquery'),'1.0', true
123
+ );
124
+
125
+ wp_enqueue_script(
126
+ 'essential_addons_elementor-socialfeed-js',
127
+ ESSENTIAL_ADDONS_EL_URL.'assets/social-feeds/jquery.socialfeed.js',
128
+ array('jquery'),'1.0', true
129
+ );
130
+ }
131
+
132
+ if( $is_component_active['filter-gallery'] ) {
133
+ wp_enqueue_script(
134
+ 'essential_addons_mixitup-js',
135
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/mixitup.min.js',
136
+ array('jquery'),'1.0', true
137
+ );
138
+ wp_enqueue_script(
139
+ 'essential_addons_magnific-popup-js',
140
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/jquery.magnific-popup.min.js',
141
+ array('jquery'),'1.0', true
142
+ );
143
+
144
+ wp_register_script(
145
+ 'essential_addons_isotope-js',
146
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/isotope.pkgd.min.js',
147
+ array('jquery'),'1.0', true
148
+ );
149
+
150
+ wp_register_script(
151
+ 'jquery-resize',
152
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/jquery.resize.min.js',
153
+ array('jquery'), '1.0', true
154
+ );
155
+ }
156
+
157
+ if( $is_component_active['price-table'] ) {
158
+ wp_enqueue_style(
159
+ 'essential_addons_elementor-tooltipster',
160
+ ESSENTIAL_ADDONS_EL_URL.'assets/css/tooltipster.bundle.min.css'
161
+ );
162
+ wp_enqueue_script(
163
+ 'essential_addons_elementor-tooltipster-js',
164
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/tooltipster.bundle.min.js',
165
+ array('jquery'),'1.0', true
166
+ );
167
+ }
168
+
169
+ if( $is_component_active['progress-bar'] ) {
170
+ wp_enqueue_script(
171
+ 'essential_addons_elementor-progress-bar',
172
+ ESSENTIAL_ADDONS_EL_URL.'assets/js/progress-bar.js',
173
+ array('jquery'),'1.0', true
174
+ );
175
+ }
176
+
177
+ }
178
+ }
179
+
180
+ }
181
+
182
+ Essential_Addons_Scripts::get_instance();
includes/class-plugin-usage-tracker.php CHANGED
File without changes
includes/class-wpdev-core-install.php CHANGED
File without changes
includes/elementor-helper.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php
 
2
  namespace Elementor;
3
  use Elementor\Group_Control_Base;
4
 
 
 
5
  function eael_elementor_init(){
6
  Plugin::instance()->elements_manager->add_category(
7
  'essential-addons-elementor',
1
  <?php
2
+
3
  namespace Elementor;
4
  use Elementor\Group_Control_Base;
5
 
6
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
7
+
8
  function eael_elementor_init(){
9
  Plugin::instance()->elements_manager->add_category(
10
  'essential-addons-elementor',
includes/extensions.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
-
5
- abstract class Module_Base {
6
-
7
- /**
8
- * @var \RefelectionClass
9
- */
10
- private $reflection;
11
-
12
- /**
13
- * @var Module_Base
14
- */
15
- protected static $_instance = [];
16
-
17
- /**
18
- * Class active status
19
- */
20
- public static function is_active() {
21
- return true;
22
- }
23
-
24
- /**
25
- * Retrive class name
26
- */
27
- public static function class_name() {
28
- return get_called_class();
29
- }
30
-
31
- /**
32
- * @return static
33
- */
34
- public static function instance() {
35
- if( empty(static::$_instance[ static::class_name() ]) ) {
36
- static::$_instance[ static::class_name() ] = new static();
37
- }
38
-
39
- return static::$_instance[ static::class_name() ];
40
- }
41
-
42
- public function __construct() {
43
- $this->reflection = new \ReflectionClass( $this );
44
- }
45
-
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/queries.php CHANGED
File without changes
includes/templates/content.php CHANGED
File without changes
languages/essential-addons-for-elementor-lite.pot CHANGED
File without changes
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: elementor, elements, addons, elementor addon, elementor widget, page build
4
  Requires at least: 4.0
5
  Tested up to: 5.1
6
  Requires PHP: 5.4
7
- Stable tag: 2.9.8
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
@@ -36,7 +36,7 @@ We have extra-ordinary support team ready to help you. Ask your questions in the
36
  ### [Elementor](https://wordpress.org/plugins/elementor/) page builder is required for this plugin.
37
 
38
 
39
- ### 28+ FREE WIDGETS AND COUNTING
40
 
41
  We have designed 29 of the most useful widgets to enhance your Elementor Page Building experience and allow you to climb the top of your design capabilities.
42
 
@@ -68,10 +68,7 @@ We have designed 29 of the most useful widgets to enhance your Elementor Page Bu
68
  26. [Advanced Tabs](https://essential-addons.com/elementor/advanced-tabs/) - Include tab to put information in different styles. Supports nested tabs.
69
  27. [Advanced Accordion](https://essential-addons.com/elementor/advanced-accordion/) - Add beautiful accordions in your pages, posts, and anywhere. Supports nested accordions.
70
  28. [Progress Bar](https://essential-addons.com/elementor/progress-bar/) - Display progress bars with 4+ different styles
71
-
72
- Extensions:
73
-
74
- 1. [Particle Effect](https://essential-addons.com/elementor/particle-effect/) - Add creative particle effects to your section, your visitors will love it.
75
 
76
 
77
  ### More elements (29+) on [Premium Version](https://essential-addons.com/elementor/buy.php)
@@ -106,10 +103,6 @@ Extensions:
106
  28. [Advanced Menu](https://essential-addons.com/elementor/advanced-menu/) - Use advanced navigation menu anywhere. Choose design from different skins and customize.
107
  29. [Image Scroller](https://essential-addons.com/elementor/image-scroller/) - Show your panaromic or long height images within image scroller widget.
108
 
109
- Extensions:
110
-
111
- 1. [Parallax Scrolling](https://essential-addons.com/elementor/parallax-scrolling/) - Add creative parallax scrolling effects to your section, your visitors will love it.
112
-
113
 
114
  More coming soon (weekly update) ...
115
 
@@ -167,6 +160,12 @@ Your existing elements/content will work with premium version. So you won't lose
167
 
168
  == Changelog ==
169
 
 
 
 
 
 
 
170
  = 2.9.8 - 28/02/2019 =
171
 
172
  - Facebook Feed removed as it doesn't work with new API
@@ -177,7 +176,7 @@ Your existing elements/content will work with premium version. So you won't lose
177
 
178
  - Particles extension revamped
179
 
180
- = 2.9.6 - 17/02/2019=
181
 
182
  - Admin side performance improved
183
  - Few minor bugfix and improvements
4
  Requires at least: 4.0
5
  Tested up to: 5.1
6
  Requires PHP: 5.4
7
+ Stable tag: 2.9.9
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
36
  ### [Elementor](https://wordpress.org/plugins/elementor/) page builder is required for this plugin.
37
 
38
 
39
+ ### 29+ FREE WIDGETS AND COUNTING
40
 
41
  We have designed 29 of the most useful widgets to enhance your Elementor Page Building experience and allow you to climb the top of your design capabilities.
42
 
68
  26. [Advanced Tabs](https://essential-addons.com/elementor/advanced-tabs/) - Include tab to put information in different styles. Supports nested tabs.
69
  27. [Advanced Accordion](https://essential-addons.com/elementor/advanced-accordion/) - Add beautiful accordions in your pages, posts, and anywhere. Supports nested accordions.
70
  28. [Progress Bar](https://essential-addons.com/elementor/progress-bar/) - Display progress bars with 4+ different styles
71
+ 29. [Feature List](https://essential-addons.com/elementor/feature-list/) - Display feature lists with icon and images beautifully
 
 
 
72
 
73
 
74
  ### More elements (29+) on [Premium Version](https://essential-addons.com/elementor/buy.php)
103
  28. [Advanced Menu](https://essential-addons.com/elementor/advanced-menu/) - Use advanced navigation menu anywhere. Choose design from different skins and customize.
104
  29. [Image Scroller](https://essential-addons.com/elementor/image-scroller/) - Show your panaromic or long height images within image scroller widget.
105
 
 
 
 
 
106
 
107
  More coming soon (weekly update) ...
108
 
160
 
161
  == Changelog ==
162
 
163
+ = 2.9.9 - 07/03/2019 =
164
+
165
+ - Added : Feature List element
166
+ - Particles extension removed
167
+ - Few minor bugfix and improvements
168
+
169
  = 2.9.8 - 28/02/2019 =
170
 
171
  - Facebook Feed removed as it doesn't work with new API
176
 
177
  - Particles extension revamped
178
 
179
+ = 2.9.6 - 17/02/2019 =
180
 
181
  - Admin side performance improved
182
  - Few minor bugfix and improvements