Premium Addons for Elementor - Version 4.0.3

Version Description

  • Fixed: Issues after v4.0.0
Download this release

Release Info

Developer leap13
Plugin Icon 128x128 Premium Addons for Elementor
Version 4.0.3
Comparing to
See all releases

Code changes from version 4.0.1 to 4.0.3

Files changed (50) hide show
  1. admin/assets/fonts/pa-dashboard.eot +0 -0
  2. admin/assets/fonts/pa-dashboard.svg +90 -0
  3. admin/assets/fonts/pa-dashboard.ttf +0 -0
  4. admin/assets/fonts/pa-dashboard.woff +0 -0
  5. admin/assets/fonts/pa-icon.eot +0 -0
  6. admin/assets/fonts/pa-icon.svg +0 -11
  7. admin/assets/fonts/pa-icon.ttf +0 -0
  8. admin/assets/fonts/pa-icon.woff +0 -0
  9. admin/images/lock.svg +1 -0
  10. admin/images/pa-logo-symbol.png +0 -0
  11. admin/images/papro-banner.png +0 -0
  12. admin/images/papro-notice-logo.png +0 -0
  13. admin/images/popup-pattern.jpg +0 -0
  14. admin/images/premium-addons-black-friday.png +0 -0
  15. admin/images/premium-blocks-logo.png +0 -0
  16. admin/includes/admin-helper.php +748 -0
  17. admin/includes/dep/info.php +0 -129
  18. admin/includes/{dep/admin-helper.php → duplicator.php} +37 -117
  19. admin/includes/elements.php +878 -0
  20. admin/includes/papro-actions.php +0 -69
  21. admin/includes/plugin-info.php +0 -90
  22. admin/includes/reports.php +0 -63
  23. admin/includes/templates/features.php +70 -0
  24. admin/includes/templates/general.php +31 -0
  25. admin/includes/templates/info.php +199 -0
  26. admin/includes/templates/integrations.php +100 -0
  27. admin/includes/templates/modules-settings.php +131 -0
  28. admin/includes/templates/version-control.php +61 -0
  29. admin/includes/templates/white-label.php +182 -0
  30. admin/includes/version-control.php +0 -142
  31. admin/settings/maps.php +0 -182
  32. admin/settings/modules-setting.php +0 -820
  33. assets/editor/js/premium-cross-cp.js +93 -0
  34. assets/editor/js/xdlocalstorage.js +94 -0
  35. assets/frontend/js/premium-woocommerce.js +438 -0
  36. assets/frontend/min-js/premium-woocommerce.min.js +1 -0
  37. base/module-base.php +113 -0
  38. includes/{class-addons-category.php → addons-category.php} +12 -19
  39. includes/addons-cross-cp.php +148 -0
  40. includes/{class-addons-integration.php → addons-integration.php} +118 -79
  41. includes/{class-beta-testers.php → beta-testers.php} +10 -17
  42. includes/class-pa-core.php +225 -0
  43. includes/compatibility/{class-premium-addons-wpml.php → premium-addons-wpml.php} +2 -19
  44. includes/{class-helper-functions.php → helper-functions.php} +96 -72
  45. includes/modules-manager.php +93 -0
  46. includes/plugin.php +0 -56
  47. premium-addons-for-elementor.php +2 -2
  48. readme.txt +5 -1
  49. widgets/dep/urlopen.php +255 -0
  50. widgets/premium-icon-list.php +2211 -0
admin/assets/fonts/pa-dashboard.eot ADDED
Binary file
admin/assets/fonts/pa-dashboard.svg ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="pa-dashboard" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe900;" glyph-name="general-tab" horiz-adv-x="1055" d="M975.547 684.151l-337.256 239.869c-30.838 21.74-69.19 34.746-110.58 34.746s-79.742-13.006-111.192-35.155l0.613 0.409-337.495-239.869c-48.303-35.139-79.404-91.391-79.636-154.918v-402.777c0.809-104.859 85.597-189.647 190.379-190.455h134.883c67.96 0 123.053 55.093 123.053 123.053v0 214.443h158.793v-214.443c0-67.96 55.093-123.053 123.053-123.053v0h134.806c104.859 0.809 189.647 85.597 190.455 190.379v402.817c0 0.004 0 0.008 0 0.012 0 63.667-31.28 120.029-79.309 154.555l-0.567 0.388zM595.115 384.315h-134.806c0 0 0 0 0 0-67.876 0-122.916-54.956-123.052-122.8v-214.456h-146.8c0 0 0 0 0 0-43.898 0-79.5 35.518-79.636 79.384v402.753c0.012 26.6 13.062 50.149 33.107 64.603l0.235 0.161 337.495 239.869c12.826 9.108 28.804 14.56 46.055 14.56s33.229-5.452 46.303-14.728l-0.249 0.167 337.495-239.869c20.28-14.616 33.33-38.165 33.342-64.763v-402.742c-0.136-43.879-35.738-79.397-79.636-79.397 0 0 0 0 0 0h-146.8v214.443c-0.137 67.857-55.177 122.813-123.052 122.813 0 0 0 0 0 0v0z" />
11
+ <glyph unicode="&#xe901;" glyph-name="integrations" horiz-adv-x="829" d="M416.050-63.77v0c-40.321 0.003-75.437 22.283-93.712 55.202l-0.279 0.548c-33.239 62.133-65.92 114.4-101.637 164.348l3.038-4.471c-17.508 23.037-38.933 48.608-61.739 74.64-75.331 86.159-161.26 184.297-161.26 318.834 0 229.015 185.653 414.668 414.668 414.668v0c1.308 0.015 2.853 0.024 4.401 0.024 226.598 0 410.291-183.694 410.291-410.291 0-1.547-0.009-3.093-0.026-4.636l0.002 0.236c0-138.223-84.085-235.209-158.495-322.52-21.655-25.11-41.928-48.608-58.975-71.876-32.614-45.263-66.374-97.927-97.386-152.361l-4.668-8.899c-18.936-32.191-53.406-53.455-92.842-53.455-0.485 0-0.969 0.003-1.453 0.010l0.073-0.001zM414.668 856.333c-171.708-0.131-310.87-139.293-311.001-310.988v-0.013c0-95.834 69.111-174.621 135.228-250.644 24.189-27.875 47.226-53.907 67.268-81.551 35.59-49.137 70.727-105.336 102.067-163.874l3.903-7.983c40.664 66.893 79.040 122.957 120.030 176.927l-3.692-5.070c19.351 26.493 41.928 52.755 63.813 78.326 65.656 76.022 133.385 154.809 133.385 253.869 0.011 0.964 0.017 2.102 0.017 3.242 0 169.98-137.796 307.776-307.776 307.776-1.14 0-2.279-0.006-3.416-0.019l0.173 0.001zM414.668 390.522c-85.881 0-155.501 69.62-155.501 155.501s69.62 155.501 155.501 155.501c85.881 0 155.501-69.62 155.501-155.501v0c-0.131-85.828-69.673-155.37-155.488-155.501h-0.013zM414.668 597.856c-28.627 0-51.834-23.207-51.834-51.834s23.207-51.834 51.834-51.834c28.627 0 51.834 23.207 51.834 51.834v0c0 28.627-23.207 51.834-51.834 51.834v0z" />
12
+ <glyph unicode="&#xe902;" glyph-name="system-info" d="M968.034 904.489c-34.44 34.345-81.968 55.58-134.455 55.58s-100.015-21.236-134.46-55.585l0.004 0.004-599.703-599.021c-9.133-9.341-16.281-20.665-20.734-33.261l-0.196-0.637-74.167-222.955c-2.852-8.142-4.499-17.529-4.499-27.301 0-46.992 38.095-85.087 85.087-85.087 0.062 0 0.124 0 0.186 0h-0.010c0.229-0.002 0.499-0.004 0.769-0.004 9.414 0 18.458 1.584 26.881 4.5l-0.577-0.174 223.182 74.849c13.107 4.117 24.286 11.183 33.191 20.45l0.025 0.026 501.649 500.511s1.593 1.82 2.73 2.275l94.87 94.87c35.082 34.525 56.819 82.52 56.819 135.591 0 52.959-21.645 100.863-56.572 135.347l-0.020 0.020zM294.391 118.232l-168.809-56.876 56.421 170.629 460.698 459.788 112.387-113.752zM890 713.385l-56.421-55.966-112.387 112.387 55.966 56.649c14.556 14.556 34.665 23.559 56.876 23.559 44.423 0 80.435-36.012 80.435-80.435 0-22.212-9.003-42.32-23.559-56.876v0z" />
13
+ <glyph unicode="&#xe903;" glyph-name="version-control" horiz-adv-x="1005" d="M502.618 258.122c-104.867 0-189.878 85.011-189.878 189.878s85.011 189.878 189.878 189.878c104.867 0 189.878-85.011 189.878-189.878v0c-0.127-104.816-85.062-189.751-189.866-189.878h-0.012zM502.618 526.185c-43.797 0-79.302-35.505-79.302-79.302s35.505-79.302 79.302-79.302c43.797 0 79.302 35.505 79.302 79.302v0c-0.127 43.746-35.556 79.175-79.29 79.302h-0.012zM587.951-64h-170.89c-0.002 0-0.003 0-0.005 0-67.092 0-121.555 54.072-122.186 121.015v0.060c0.008 0.153 0.013 0.331 0.013 0.511 0 3.661-1.957 6.865-4.882 8.623l-0.045 0.025-11.393 6.702c-1.46 0.77-3.19 1.222-5.026 1.222s-3.567-0.452-5.086-1.251l0.060 0.029c-17.556-10.279-38.658-16.349-61.178-16.349-11.13 0-21.913 1.483-32.163 4.261l0.859-0.198c-31.923 8.658-58.032 29.161-73.853 56.384l-0.311 0.58-85.333 148.328c-10.277 17.496-16.347 38.537-16.347 60.995 0 44.924 24.287 84.175 60.448 105.339l0.576 0.312c3.946 2.044 6.615 6.062 6.701 10.711v9.171c0.001 0.066 0.002 0.144 0.002 0.222 0 4.223-2.211 7.929-5.538 10.025l-0.049 0.029c-36.9 21.437-61.316 60.777-61.316 105.819 0 22.662 6.181 43.881 16.948 62.063l-0.31-0.565 85.333 147.881c21.593 36.709 60.9 60.958 105.87 60.958 22.451 0 43.491-6.044 61.581-16.594l-0.582 0.313c1.488-0.953 3.302-1.519 5.25-1.519s3.762 0.566 5.289 1.543l-0.039-0.024 10.052 5.585c3.228 1.832 5.371 5.247 5.371 9.161 0 0.156-0.003 0.312-0.010 0.466l0.001-0.022c0.127 67.434 54.758 122.065 122.18 122.192h170.902c67.434-0.127 122.065-54.758 122.192-122.18v-0.012c-0.007-0.145-0.011-0.314-0.011-0.485 0-3.733 1.948-7.011 4.883-8.872l0.043-0.025 9.159-5.138c1.932-1.426 4.36-2.282 6.988-2.282 1.672 0 3.263 0.346 4.705 0.972l-0.077-0.030c17.482 10.227 38.492 16.265 60.913 16.265 44.927 0 84.192-24.247 105.421-60.369l0.312-0.574 85.557-147.658c10.246-17.534 16.296-38.603 16.296-61.085 0-45.013-24.251-84.363-60.401-105.695l-0.572-0.312c-4.097-1.855-6.939-5.822-7.147-10.473l-0.001-0.026v-9.159c0-0.036-0.001-0.079-0.001-0.122 0-4.24 2.316-7.939 5.753-9.901l0.056-0.029h1.34c36.655-21.605 60.861-60.883 60.861-105.814 0-22.383-6.008-43.364-16.498-61.417l0.314 0.585-85.557-147.881c-21.541-36.695-60.805-60.942-105.733-60.942-22.421 0-43.431 6.039-61.493 16.578l0.58-0.313c-1.58 0.882-3.466 1.401-5.473 1.401s-3.893-0.519-5.531-1.43l0.058 0.030-10.276-6.031c-3.224-1.833-5.364-5.246-5.364-9.157 0-0.079 0.001-0.158 0.003-0.236v0.012c-0.127-67.434-54.758-122.065-122.18-122.192h-0.012zM275.211 185.522c0.087 0 0.191 0 0.294 0 22.734 0 43.993-6.312 62.121-17.279l-0.537 0.302 8.265-4.914c36.321-21.243 60.332-60.056 60.332-104.477 0-0.73-0.006-1.459-0.019-2.187l0.002 0.109c0-6.292 5.101-11.393 11.393-11.393v0h170.89c6.292 0 11.393 5.101 11.393 11.393v0c-0.001 0.148-0.001 0.323-0.001 0.497 0 45.174 24.786 84.559 61.499 105.298l0.603 0.313 7.148 4.244c17.627 10.474 38.862 16.665 61.543 16.665s43.916-6.191 62.107-16.975l-0.564 0.31c1.689-1.013 3.726-1.612 5.904-1.612 4.206 0 7.889 2.235 9.928 5.582l0.029 0.051 86.003 149.668c1.003 1.663 1.597 3.67 1.597 5.817 0 4.163-2.232 7.804-5.565 9.792l-0.052 0.029c-37.522 21.643-62.49 61.35-62.994 106.93l-0.001 0.071v8.712c0 0.114-0.001 0.25-0.001 0.386 0 44.871 24.275 84.072 60.408 105.188l0.577 0.311c3.88 2.341 6.434 6.533 6.434 11.323 0 1.882-0.395 3.673-1.106 5.293l0.033-0.085-85.333 147.658c-2.070 3.385-5.747 5.61-9.943 5.61-1.827 0-3.555-0.422-5.093-1.173l0.069 0.030c-17.48-10.37-38.533-16.499-61.017-16.499-22.64 0-43.828 6.214-61.952 17.029l0.554-0.306-7.818 4.468c-37.331 21.218-62.101 60.718-62.101 106.004 0 0.037 0 0.074 0 0.11v-0.006c0.001 0.066 0.002 0.145 0.002 0.223 0 6.292-5.101 11.393-11.393 11.393-0.001 0-0.002 0-0.002 0h-171.783c-6.292 0-11.393-5.101-11.393-11.393v0c0-0.039 0-0.086 0-0.133 0-45.105-24.574-84.47-61.063-105.439l-0.591-0.313-5.585-3.127c-18.295-11.547-40.556-18.399-64.417-18.399-22.33 0-43.258 6.001-61.26 16.477l0.582-0.313c-1.663 1.003-3.67 1.597-5.817 1.597-4.163 0-7.804-2.232-9.792-5.565l-0.029-0.052-86.003-148.105c-0.954-1.649-1.516-3.628-1.516-5.738 0-4.166 2.193-7.82 5.488-9.87l0.049-0.029c37.778-21.271 62.899-61.080 62.995-106.765v-8.726c0 0 0-0.001 0-0.001 0-44.927-24.158-84.212-60.193-105.572l-0.568-0.311c-4.037-1.944-6.773-6.003-6.773-10.701 0-2.054 0.523-3.985 1.443-5.668l-0.031 0.062 85.333-147.881c2.43-3.214 6.246-5.269 10.542-5.269 1.839 0 3.591 0.377 5.181 1.057l-0.086-0.033c17.421 10.252 38.377 16.307 60.747 16.307 0.005 0 0.010 0 0.015 0h-0.001z" />
14
+ <glyph unicode="&#xe904;" glyph-name="white-label" horiz-adv-x="901" d="M120.783-64c-18.709 0.031-36.417 4.286-52.231 11.863l0.731-0.315c-41.244 19.404-69.284 60.613-69.284 108.372 0 0.223 0.001 0.445 0.002 0.668v-0.034 717.077c0.131 102.877 83.494 186.24 186.358 186.371h527.947c102.877-0.131 186.24-83.494 186.371-186.358v-717.089c0.001-0.188 0.002-0.411 0.002-0.633 0-47.759-28.040-88.968-68.556-108.063l-0.728-0.309c-15.089-7.219-32.789-11.468-51.473-11.547h-0.027c-0.037 0-0.080 0-0.124 0-29.357 0-56.225 10.657-76.947 28.314l0.167-0.138-202.999 169.050c-13.286 11.346-30.663 18.249-49.653 18.249s-36.367-6.903-49.759-18.337l-203.123-169.193c-20.622-17.28-47.405-27.817-76.645-27.944h-0.028zM450.338 259.32c0.029 0 0.064 0 0.098 0 45.519 0 87.226-16.318 119.591-43.424l-0.291 0.238 222.167-184.754v742.25c-0.131 42.756-34.822 77.366-77.596 77.366 0 0 0 0 0 0h-527.935c0 0 0 0 0 0-42.774 0-77.465-34.61-77.596-77.353v-741.801l222.167 184.754c32.083 26.986 73.799 43.449 119.355 43.648h0.043z" />
15
+ <glyph unicode="&#xe905;" glyph-name="widgets-and-addons" d="M282.396 511.943h-116.736c-91.492 0-165.66 74.169-165.66 165.66v0 116.736c0 91.492 74.169 165.66 165.66 165.66v0h116.736c91.492 0 165.66-74.169 165.66-165.66v0-116.736c0-91.492-74.169-165.66-165.66-165.66v0zM165.66 832.114c-20.862 0-37.774-16.912-37.774-37.774v0-116.736c0 0 0 0 0-0.001 0-20.736 16.81-37.547 37.547-37.547 0.080 0 0.16 0 0.24 0.001h116.724c20.736 0 37.547 16.81 37.547 37.547v116.736c0 0.068 0.001 0.148 0.001 0.228 0 20.736-16.81 37.547-37.547 37.547 0 0-0.001 0-0.001 0v0zM858.34 511.943h-116.736c-91.492 0-165.66 74.169-165.66 165.66v0 116.736c0 91.492 74.169 165.66 165.66 165.66v0h116.736c91.492 0 165.66-74.169 165.66-165.66v0-116.736c0-91.492-74.169-165.66-165.66-165.66v0zM741.604 832.114c0 0 0 0-0.001 0-20.736 0-37.547-16.81-37.547-37.547 0-0.080 0-0.16 0.001-0.24v0.012-116.736c0-20.736 16.81-37.547 37.547-37.547v0h116.736c0.068 0 0.148-0.001 0.228-0.001 20.736 0 37.547 16.81 37.547 37.547 0 0 0 0.001 0 0.001v0 116.736c0 20.862-16.912 37.774-37.774 37.774v0zM282.396-64h-116.736c-91.492 0-165.66 74.169-165.66 165.66v0 116.736c0 91.492 74.169 165.66 165.66 165.66v0h116.736c91.492 0 165.66-74.169 165.66-165.66v0-116.736c0-91.492-74.169-165.66-165.66-165.66v0zM165.66 255.943c-0.068 0-0.148 0.001-0.228 0.001-20.736 0-37.547-16.81-37.547-37.547 0 0 0-0.001 0-0.001v0-116.736c0-20.862 16.912-37.774 37.774-37.774v0h116.736c0 0 0 0 0.001 0 20.736 0 37.547 16.81 37.547 37.547 0 0.080 0 0.16-0.001 0.24v-0.012 116.736c0 20.736-16.81 37.547-37.547 37.547v0zM858.34-64h-116.736c-91.492 0-165.66 74.169-165.66 165.66v0 116.736c0 91.492 74.169 165.66 165.66 165.66v0h116.736c91.492 0 165.66-74.169 165.66-165.66v0-116.736c0-91.492-74.169-165.66-165.66-165.66v0zM741.604 255.943c-20.736 0-37.547-16.81-37.547-37.547v0-116.736c0-0.068-0.001-0.148-0.001-0.228 0-20.736 16.81-37.547 37.547-37.547 0 0 0.001 0 0.001 0h116.736c20.862 0 37.774 16.912 37.774 37.774v0 116.736c0 0 0 0 0 0.001 0 20.736-16.81 37.547-37.547 37.547-0.080 0-0.16 0-0.24-0.001h0.012z" />
16
+ <glyph unicode="&#xe906;" glyph-name="all-widgets" d="M139.947 345.6h129.707c77.29 0 139.947-62.656 139.947-139.947v-129.707c0-77.29-62.656-139.947-139.947-139.947h-129.707c-77.29 0-139.947 62.656-139.947 139.947v129.707c0 77.29 62.656 139.947 139.947 139.947zM752.754 345.6h132.892c76.411 0 138.354-61.943 138.354-138.354v-132.892c0-76.411-61.943-138.354-138.354-138.354h-132.892c-76.411 0-138.354 61.943-138.354 138.354v132.892c0 76.411 61.943 138.354 138.354 138.354zM754.574 960h129.252c77.416 0 140.174-62.758 140.174-140.174v-129.252c0-77.416-62.758-140.174-140.174-140.174h-129.252c-77.416 0-140.174 62.758-140.174 140.174v129.252c0 77.416 62.758 140.174 140.174 140.174zM139.719 960h130.162c77.165 0 139.719-62.554 139.719-139.719v-130.162c0-77.165-62.554-139.719-139.719-139.719h-130.162c-77.165 0-139.719 62.554-139.719 139.719v130.162c0 77.165 62.554 139.719 139.719 139.719z" />
17
+ <glyph unicode="&#xe907;" glyph-name="blurbs-and-cta-widgets" d="M409.6 140.8h409.6c113.108 0 204.8 91.692 204.8 204.8v0 409.6c0 113.108-91.692 204.8-204.8 204.8v0h-409.6c-113.108 0-204.8-91.692-204.8-204.8v0-407.78c0.129-114.061 92.559-206.491 206.608-206.62h0.012zM256 38.4c-84.831 0-153.6 68.769-153.6 153.6v0 381.156c0 28.277-22.923 51.2-51.2 51.2s-51.2-22.923-51.2-51.2v0-381.156c0-141.385 114.615-256 256-256v0h381.156c28.277 0 51.2 22.923 51.2 51.2s-22.923 51.2-51.2 51.2v0z" />
18
+ <glyph unicode="&#xe908;" glyph-name="message" horiz-adv-x="1138" d="M849.794 960c0.15 0 0.328 0 0.506 0 158.592 0 287.19-128.421 287.478-286.946v-449.829c-0.288-158.692-128.999-287.226-287.731-287.226-0.089 0-0.178 0-0.267 0h-562.048c0 0 0 0 0 0-158.732 0-287.443 128.534-287.731 287.198v449.577c0.144 158.573 128.653 287.082 287.212 287.226h562.581zM940.31 587.062l4.551 4.551c6.487 7.616 10.432 17.57 10.432 28.444s-3.946 20.828-10.484 28.506l0.052-0.062c-7.873 8.067-18.53 13.386-30.415 14.4l-0.179 0.012c-0.733 0.044-1.591 0.069-2.454 0.069-11.353 0-21.69-4.35-29.435-11.475l0.031 0.028-256.632-203.536c-15.32-12.745-35.201-20.48-56.889-20.48s-41.568 7.735-57.034 20.597l0.145-0.117-256.126 204.8c-7.107 5.263-16.047 8.425-25.725 8.425-24.018 0-43.488-19.47-43.488-43.488 0-9.742 3.203-18.736 8.614-25.985l-0.082 0.115 7.080-7.332 258.908-202.272c30.223-24.098 68.972-38.667 111.123-38.667s80.9 14.569 111.485 38.945l-0.362-0.279z" />
19
+ <glyph unicode="&#xe909;" glyph-name="content-widgets" d="M769.138 960h-513.138c-0.068 0-0.148 0-0.228 0-141.179 0-255.643-114.383-255.772-255.532v-512.468c0-141.385 114.615-256 256-256v0h512c0.068 0 0.148 0 0.228 0 141.179 0 255.643 114.383 255.772 255.532v512.468c0.001 0.203 0.001 0.443 0.001 0.683 0 140.848-114.051 255.058-254.838 255.317h-0.025zM245.76 722.432h250.311c19.929-1.583 35.501-18.144 35.501-38.343s-15.572-36.761-35.366-38.335l-0.134-0.009h-250.311c-19.929 1.583-35.501 18.144-35.501 38.343s15.572 36.761 35.366 38.335l0.134 0.009zM245.76 486.457h348.615c21.239 0 38.457-17.218 38.457-38.457s-17.218-38.457-38.457-38.457h-347.705c-21.239 0-38.457 17.218-38.457 38.457s17.218 38.457 38.457 38.457v0zM776.647 173.113h-529.977c-19.929 1.583-35.501 18.144-35.501 38.343s15.572 36.761 35.366 38.335l0.134 0.009h529.977c0.885 0.072 1.916 0.114 2.956 0.114 21.239 0 38.457-17.218 38.457-38.457s-17.218-38.457-38.457-38.457c-1.040 0-2.071 0.041-3.091 0.122l0.134-0.009z" />
20
+ <glyph unicode="&#xe90a;" glyph-name="image-widgets" d="M887.467-41.244v2.276c-32.732-15.692-71.14-24.909-111.688-25.031h-519.779c-141.385 0-256 114.615-256 256v0 88.292c1.221 0.551 2.271 1.238 3.199 2.059l-0.013-0.011c104.903 87.381 217.543 131.527 333.596 131.527v0c239.844 0 465.806-186.368 550.684-452.38zM773.689 960h-517.689c-141.385 0-256-114.615-256-256v0-337.92c91.377 70.78 207.13 114.129 332.93 116.048l0.439 0.005c9.33 0 19.115 0 28.217 0 104.071-6.788 199.035-40.671 279.433-94.588l-2.043 1.29c142.842-95.27 250.349-233.701 304.723-396.455l1.567-5.408c48.603 47.588 78.735 113.877 78.735 187.203 0 0.266 0 0.533-0.001 0.799v-0.041 523.378c0.009 0.817 0.015 1.781 0.015 2.747 0 141.984-114.268 257.279-255.858 258.94l-0.157 0.001zM732.729 604.103c-0.068 0-0.148 0-0.228 0-42.478 0-76.914 34.435-76.914 76.914s34.435 76.914 76.914 76.914c42.478 0 76.914-34.435 76.914-76.913v0c0 0 0 0 0 0 0-42.398-34.306-76.784-76.674-76.913h-0.013z" />
21
+ <glyph unicode="&#xe90b;" glyph-name="off-grid-widgets" horiz-adv-x="1041" d="M883.433 676.771c77.252-4.721 140.095-60.978 154.818-134.608l0.179-1.072c1.494-8.285 2.348-17.821 2.348-27.557 0-88.015-69.798-159.728-157.063-162.806l-0.281-0.008zM813.615 900.422v-765.207c0-32.904-26.674-59.578-59.578-59.578v0h-19.316c-0.217-0.001-0.475-0.002-0.732-0.002-39.55 0-74.887 18.036-98.236 46.331l-0.173 0.216c-34.096 42.335-85.759 69.33-143.744 69.818l-0.082 0.001h-73.775v-184.087c-0.524-39.829-32.934-71.914-72.838-71.914-0.166 0-0.331 0.001-0.497 0.002h-40.237c-40.102 0-72.611 32.509-72.611 72.611v0 199.68c-135.169 41.188-231.816 164.77-231.816 310.924 0 179.173 145.249 324.422 324.422 324.422 0.171 0 0.341 0 0.512 0h166.141c57.892 0.184 109.539 26.762 143.563 68.324l0.262 0.33c23.522 28.512 58.86 46.548 98.41 46.548 0.257 0 0.514-0.001 0.771-0.002h19.976c0.046 0 0.1 0 0.155 0 6.027 0 11.815-1.023 17.2-2.904l-0.366 0.111c4.129-1.275 7.674-2.776 11.030-4.582l-0.325 0.16c18.694-9.9 31.337-29.012 31.882-51.126l0.001-0.074z" />
22
+ <glyph unicode="&#xe90c;" glyph-name="section-addons" horiz-adv-x="1040" d="M958.122 631.996v58.712c0.012 0.794 0.019 1.732 0.019 2.671 0 50.807-20.49 96.829-53.658 130.253l0.011-0.011c-33.999 34.358-81.032 55.76-133.066 56.169h-44.458c-0.917-0.074-1.986-0.116-3.064-0.116-22.468 0-40.683 18.214-40.683 40.683s18.214 40.683 40.683 40.683c1.078 0 2.147-0.042 3.204-0.124l-0.14 0.009h44.381c148.272-1.689 267.927-121.83 268.828-270.13v-57.874c-1.653-21.358-19.39-38.063-41.029-38.063s-39.377 16.705-41.021 37.922l-0.009 0.141zM40.451 591.545c-22.236 0.258-40.194 18.215-40.451 40.427v58.737c1.436 148.794 122.197 268.906 271.104 269.291h44.187c22.432-0.124 40.629-18.078 41.144-40.403l0.001-0.048c-0.513-22.421-18.685-40.431-41.121-40.682h-44.174c-0.173 0.001-0.377 0.001-0.581 0.001-52.382 0-99.813-21.197-134.184-55.481l0.004 0.004c-33.564-33.481-54.329-79.778-54.329-130.925 0-0.617 0.003-1.234 0.009-1.849l-0.001 0.094v-57.788c-0.513-22.293-18.581-40.2-40.89-40.451h-0.024zM82.059 264.004v-58.712c-0.012-0.794-0.019-1.732-0.019-2.671 0-50.807 20.49-96.829 53.658-130.253l-0.011 0.011c34.025-34.317 81.042-55.706 133.055-56.169l0.088-0.001h44.381c0.917 0.074 1.986 0.116 3.064 0.116 22.468 0 40.683-18.214 40.683-40.683s-18.214-40.683-40.683-40.683c-1.078 0-2.147 0.042-3.204 0.124l0.14-0.009h-44.381c-148.272 1.689-267.927 121.83-268.828 270.13v57.874c1.653 21.358 19.39 38.063 41.029 38.063s39.377-16.705 41.021-37.922l0.009-0.141zM999.729 303.53c21.921-0.243 39.689-17.687 40.45-39.457l0.002-0.070v-58.712c-1.435-148.713-122.065-268.775-270.86-269.291h-44.431c-0.917-0.074-1.986-0.116-3.064-0.116-22.468 0-40.683 18.214-40.683 40.683s18.214 40.683 40.683 40.683c1.078 0 2.147-0.042 3.204-0.124l-0.14 0.009h44.381c0.132 0 0.289-0.001 0.446-0.001 52.352 0 99.752 21.198 134.087 55.479l-0.002-0.002c33.564 33.481 54.329 79.778 54.329 130.925 0 0.617-0.003 1.234-0.009 1.849l0.001-0.094v57.788c0.388 22.345 18.53 40.325 40.902 40.451h0.012zM693.454 159.061h-346.727c-63.831 0-115.576 51.745-115.576 115.576v0 346.727c0 63.831 51.745 115.576 115.576 115.576v0h346.727c63.831 0 115.576-51.745 115.576-115.576v0-346.727c0-63.831-51.745-115.576-115.576-115.576v0z" />
23
+ <glyph unicode="&#xe90d;" glyph-name="social-feed-widgets" horiz-adv-x="939" d="M201.751 562.774v-551.902c-21.080-23.819-51.721-38.764-85.853-38.781h-0.003c-0.001 0-0.002 0-0.003 0-63.692 0-115.383 51.378-115.891 114.95v393.239c-0.012 0.646-0.020 1.407-0.020 2.171 0 54.302 36.022 100.19 85.474 115.073l0.851 0.22c8.944 2.498 19.216 3.934 29.822 3.934 33.959 0 64.48-14.72 85.531-38.127l0.093-0.105zM936.35 449.793l-75.769-376.827c-11.775-77.927-78.28-136.972-158.576-136.972-6.684 0-13.272 0.409-19.741 1.204l0.776-0.078-334.011 37.66c-28.037 3.383-52.344 17.15-69.362 37.278l-0.13 0.158c-3.592 3.918-7.048 8.157-10.252 12.589l-0.284 0.412v548.764l315.405 351.944c18.456 20.934 45.334 34.071 75.281 34.071 18.145 0 35.164-4.823 49.844-13.257l-0.488 0.258c31.606-17.508 52.648-50.663 52.648-88.733 0-16.699-4.049-32.453-11.218-46.333l0.265 0.565-89.667-181.352c-2.259-4.153-3.587-9.095-3.587-14.348 0-16.759 13.522-30.359 30.251-30.486h0.012l145.709-5.604c58.524-2.688 104.955-50.788 104.955-109.734 0-7.494-0.75-14.813-2.18-21.885l0.119 0.704z" />
24
+ <glyph unicode="&#xe90e;" glyph-name="table-and-chars-widgets" d="M750.933 960c174.080 0 273.067-98.759 273.067-273.067v0-477.867c0-174.080-98.759-273.067-273.067-273.067h-477.867c-174.308 0-273.067 98.759-273.067 273.067v0 477.867c0 174.308 98.759 273.067 273.067 273.067h477.867zM547.954 769.536c-7.012 4.634-15.616 7.393-24.865 7.393-25.135 0-45.511-20.376-45.511-45.511 0-1.803 0.105-3.581 0.309-5.33l-0.020 0.213v-558.876c2.39-23.1 21.751-40.961 45.283-40.961 0.080 0 0.16 0 0.24 0.001h-0.012c0.068 0 0.148-0.001 0.228-0.001 23.532 0 42.893 17.861 45.267 40.765l0.016 0.195v558.876c0.169 1.472 0.265 3.178 0.265 4.906 0 16.023-8.28 30.112-20.795 38.221l-0.178 0.108zM297.188 595.911c-6.846 4.341-15.182 6.918-24.121 6.918s-17.275-2.577-24.307-7.028l0.187 0.11c-13.056-8.153-21.614-22.443-21.614-38.732 0-1.586 0.081-3.153 0.239-4.697l-0.016 0.194v-379.335c0-25.135 20.376-45.511 45.511-45.511s45.511 20.376 45.511 45.511v0 0 379.108c0.156 1.415 0.245 3.056 0.245 4.718 0 16.298-8.567 30.595-21.444 38.634l-0.192 0.112zM775.054 403.399c-6.897 4.429-15.315 7.061-24.348 7.061s-17.451-2.632-24.53-7.17l0.182 0.109c-12.851-7.762-21.31-21.655-21.31-37.523 0-2.014 0.136-3.997 0.4-5.938l-0.025 0.226v-179.996c2.39-23.1 21.751-40.961 45.283-40.961 0.080 0 0.16 0 0.24 0.001h-0.012c0.068 0 0.148-0.001 0.228-0.001 23.532 0 42.893 17.861 45.267 40.765l0.016 0.195v179.769c0.142 1.35 0.223 2.918 0.223 4.504 0 16.289-8.558 30.579-21.422 38.62l-0.191 0.112z" />
25
+ <glyph unicode="&#xe90f;" glyph-name="testimonials-and-reviews-widgets" d="M512 960c0.379 0.001 0.827 0.002 1.276 0.002 282.77 0 512-229.23 512-512s-229.23-512-512-512c-87.909 0-170.643 22.155-242.924 61.186l2.715-1.341h-1.593c-15.246 6.144-27.534 17.067-41.87 24.121-8.435 3.656-18.258 5.783-28.578 5.783-7.749 0-15.219-1.199-22.233-3.422l0.521 0.142c-29.627-10.816-68.275-22.231-107.704-31.635l-7.894-1.589c-20.48 0-26.624 11.833-26.624 31.858 10.827 47.474 23.027 87.476 37.679 126.274l-2.18-6.58c2.107 6.024 3.323 12.969 3.323 20.197 0 11.030-2.833 21.398-7.811 30.417l0.164-0.325-10.24 19.797c-36.341 67.827-57.787 148.346-58.026 233.851v3.262c0 282.77 229.23 512 512 512v0zM747.975 513.081c-36.195 0-65.536-29.341-65.536-65.536s29.341-65.536 65.536-65.536c36.195 0 65.536 29.341 65.536 65.536v0c-0.129 36.143-29.393 65.407-65.524 65.536h-0.012zM512 513.081c-36.195 0-65.536-29.341-65.536-65.536s29.341-65.536 65.536-65.536c36.195 0 65.536 29.341 65.536 65.536v0c0 0.068 0 0.148 0 0.228 0 36.069-29.24 65.308-65.308 65.308-0.080 0-0.16 0-0.24 0h0.012zM276.025 513.081c-36.195 0-65.536-29.341-65.536-65.536s29.341-65.536 65.536-65.536v0c36.195 0 65.536 29.341 65.536 65.536s-29.341 65.536-65.536 65.536v0z" />
26
+ <glyph unicode="&#xe910;" glyph-name="license" horiz-adv-x="1126" d="M1105.819 838.282l-101.011 101.011c-13.132 12.989-31.197 21.014-51.137 21.014s-38.005-8.024-51.143-21.020l0.006 0.006-389.65-388.64c-50.306 32.934-111.928 52.528-178.127 52.528-0.411 0-0.821-0.001-1.232-0.002h0.064c-0.075 0-0.164 0-0.253 0-184.236 0-333.589-149.353-333.589-333.589s149.353-333.589 333.589-333.589c184.236 0 333.589 149.353 333.589 333.589v0c0.001 0.246 0.001 0.536 0.001 0.827 0 66.395-19.59 128.215-53.305 179.995l0.778-1.275 194.951 194.951 43.94-44.95c12.797-13.214 30.688-21.427 50.499-21.465h1.775c39.744 0.006 71.96 32.226 71.96 71.97 0 20.060-8.207 38.203-21.446 51.255l-0.009 0.008-44.697 45.202 42.93 41.667 50.506-50.506c12.076-9.487 27.497-15.215 44.256-15.215 39.748 0 71.97 32.222 71.97 71.97 0 16.759-5.728 32.179-15.333 44.411l0.118-0.156zM334.599 80.698c-104.6 0-189.396 84.796-189.396 189.396s84.795 189.396 189.396 189.396c104.6 0 189.396-84.795 189.396-189.396 0-0.089 0-0.178 0-0.266v0.014c0-0.075 0-0.165 0-0.254 0-104.74-84.908-189.648-189.648-189.648-0.266 0-0.533 0.001-0.799 0.002h0.041z" />
27
+ <glyph unicode="&#xe911;" glyph-name="features" horiz-adv-x="1064" d="M939.316 664.578h-213.171c-0.028 0-0.060-0.001-0.093-0.001-3.25 0-6.004 2.124-6.95 5.059l-0.014 0.052-66.433 204.167c-12.581 37.642-41.549 66.769-78.209 79.313l-0.878 0.261c-11.92 4.287-25.674 6.766-40.008 6.766-20.217 0-39.282-4.931-56.059-13.655l0.675 0.319c-29.697-15.083-52.142-40.853-62.53-72.124l-0.253-0.88-68.137-204.654c-0.958-2.991-3.714-5.118-6.967-5.118-0.117 0-0.234 0.003-0.35 0.008l0.016-0.001h-215.605c-0.235 0.002-0.514 0.003-0.793 0.003-68.677 0-124.35-55.673-124.35-124.35 0-41.587 20.415-78.406 51.77-100.982l0.369-0.253 173.506-126.297c2.116-1.518 3.479-3.971 3.479-6.742 0-0.805-0.115-1.584-0.33-2.32l0.015 0.058-64-203.437c-3.758-11.367-5.926-24.452-5.926-38.043 0-69.080 56-125.080 125.080-125.080 27.656 0 53.216 8.976 73.925 24.173l-0.349-0.244 170.342 126.053c1.262 0.865 2.822 1.381 4.502 1.381s3.24-0.516 4.529-1.398l-0.028 0.018 173.506-126.297c20.191-14.941 45.507-24.024 72.93-24.334l0.073-0.001c27.502 0.257 52.832 9.351 73.34 24.573l-0.336-0.238c31.469 22.6 51.725 59.091 51.725 100.313 0 14.089-2.366 27.625-6.723 40.233l0.26-0.865-64.487 203.924c-0.205 0.676-0.324 1.453-0.324 2.257 0 2.524 1.164 4.776 2.985 6.248l0.015 0.012 173.506 126.297c31.625 22.887 51.961 59.685 51.961 101.232 0 68.811-55.782 124.593-124.593 124.593-0.131 0-0.261 0-0.392-0.001h0.020zM273.521 62.54l66.433 205.141c4.011 11.65 6.327 25.075 6.327 39.041 0 41.343-20.295 77.946-51.466 100.389l-0.367 0.251-173.992 125.81c-1.743 1.439-2.845 3.6-2.845 6.018 0 0.894 0.151 1.754 0.428 2.554l-0.017-0.055c1.020 2.723 3.6 4.626 6.625 4.626 0.066 0 0.132-0.001 0.198-0.003h219.001c54.246 1.214 99.873 36.781 116.066 85.748l0.253 0.884 67.163 204.167c0.77 2.39 2.673 4.212 5.059 4.855l0.051 0.012c0.624 0.18 1.34 0.283 2.080 0.283 3.445 0 6.368-2.237 7.394-5.338l0.016-0.055 66.19-204.411c16.788-49.711 62.53-85.066 116.679-86.142l0.127-0.002h216.335c3.147-0.013 5.789-2.157 6.56-5.063l0.011-0.048c0.242-0.696 0.382-1.497 0.382-2.332 0-2.441-1.198-4.602-3.038-5.927l-0.022-0.015-174.722-126.297c-31.537-22.694-51.832-59.297-51.832-100.64 0-13.966 2.316-27.39 6.584-39.911l-0.258 0.87 66.677-205.141c0.223-0.607 0.352-1.308 0.352-2.039 0-2.235-1.205-4.188-3-5.246l-0.028-0.015c-1.287-0.916-2.891-1.465-4.624-1.465s-3.336 0.548-4.648 1.481l0.025-0.017-173.749 126.297c-20.134 15.072-45.49 24.186-72.969 24.334h-0.035c-27.272-0.124-52.548-8.567-73.448-22.92l0.444 0.288-173.506-128.487c-1.311-0.97-2.96-1.552-4.745-1.552s-3.434 0.582-4.767 1.567l0.022-0.015c-2.291 1.13-3.839 3.449-3.839 6.13 0 0.858 0.158 1.678 0.448 2.434l-0.016-0.047z" />
28
+ <glyph unicode="&#xe912;" glyph-name="lock" horiz-adv-x="667" d="M481.773 619.979c34.602-14.925 64.441-33.175 91.268-54.985l-0.704 0.554v157.271c-0.132 130.857-106.11 236.917-236.924 237.181h-3.731c-130.839-0.264-236.818-106.324-236.949-237.168v-157.284c26.124 21.257 55.962 39.506 88.093 53.474l2.471 0.957c8.802 3.706 18.067 7.18 27.1 10.191v92.649c0 0 0 0 0 0 0 65.926 53.378 119.385 119.273 119.517h3.719c65.954-0.132 119.385-53.562 119.517-119.504v-92.662c8.802-3.011 18.067-6.485 26.868-10.191zM0 269.304c0.237-183.9 149.371-332.888 333.304-332.888 184.079 0 333.304 149.225 333.304 333.304 0 140.401-86.812 260.527-209.686 309.628l-2.247 0.793c-35.851 14.347-77.407 22.669-120.907 22.669-184.242 0-333.618-149.284-333.767-333.491v-0.014zM247.604 336.706c0.653 46.962 38.876 84.781 85.932 84.781 47.463 0 85.939-38.476 85.939-85.939 0-0.407-0.003-0.814-0.008-1.22l0.001 0.061c0-0.084 0.001-0.182 0.001-0.281 0-5.063-0.506-10.008-1.47-14.787l0.080 0.476c-4.352-24.623-18.676-45.255-38.565-57.93l-0.347-0.207c-6.868-4.103-11.396-11.498-11.396-19.951 0-1.712 0.186-3.38 0.538-4.986l-0.028 0.153 25.478-120.907c0.177-0.766 0.278-1.645 0.278-2.548 0-6.524-5.289-11.813-11.813-11.813-0.016 0-0.033 0-0.049 0h-97.741c-0.014 0-0.030 0-0.046 0-6.524 0-11.813 5.289-11.813 11.813 0 0.903 0.101 1.782 0.293 2.627l-0.015-0.079 25.942 120.907c0.388 1.587 0.61 3.409 0.61 5.282 0 8.304-4.37 15.587-10.935 19.676l-0.098 0.057c-20.602 12.808-35.16 33.681-39.305 58.099l-0.070 0.501c-0.861 4.86-1.365 10.469-1.39 16.191v0.022z" />
29
+ <glyph unicode="&#xe913;" glyph-name="alert-box" horiz-adv-x="992" d="M987.392 79.104c-8.324-17.678-25.991-29.696-46.465-29.696-0.045 0-0.089 0-0.134 0h-329.209c-4.149-60.371-54.139-107.772-115.2-107.772s-111.051 47.401-115.18 107.413l-0.020 0.359h-329.728c-0.038 0-0.082 0-0.127 0-20.474 0-38.142 12.018-46.333 29.384l-0.132 0.312c-2.971 6.289-4.705 13.661-4.705 21.439 0 12.65 4.587 24.228 12.189 33.162l-0.060-0.073c67.072 78.336 99.84 186.368 99.84 318.464v108.288c0.234 53.87 10.74 105.22 29.659 152.283l-0.987-2.779c7.952 18.591 26.087 31.381 47.208 31.381 28.277 0 51.2-22.923 51.2-51.2 0-6.109-1.070-11.969-3.033-17.401l0.113 0.357c-13.548-33.354-21.516-72.032-21.76-112.542v-108.386c0.155-5.219 0.243-11.359 0.243-17.519 0-103.194-24.78-200.6-68.714-286.592l1.655 3.568h696.832c-42.279 82.425-67.059 179.831-67.059 283.025 0 6.16 0.088 12.3 0.264 18.418l-0.020-0.899v108.288c0 163.84-128 297.216-281.6 297.216-80.494-0.042-152.754-35.258-202.25-91.11l-0.246-0.282c-9.47-10.568-23.162-17.187-38.4-17.187-28.438 0-51.491 23.053-51.491 51.491 0 13.2 4.967 25.24 13.134 34.353l-0.043-0.049c68.984 76.751 168.489 124.89 279.243 125.184h0.053c211.2 0 384-179.2 384-399.616v-108.288c0-132.864 33.536-240.128 100.608-318.464 7.244-8.766 11.637-20.12 11.637-32.5 0-8.006-1.838-15.584-5.114-22.333l0.133 0.304z" />
30
+ <glyph unicode="&#xe914;" glyph-name="animated-gradients" horiz-adv-x="826" d="M825.6 360.96c0.102-3.432 0.161-7.47 0.161-11.52 0-228.123-184.758-413.094-412.8-413.44h-0.033c-228.075 0.346-412.833 185.317-412.833 413.44 0 4.051 0.058 8.089 0.174 12.112l-0.013-0.592c1.13 27.404 23.621 49.193 51.2 49.193 28.3 0 51.241-22.941 51.241-51.241 0-0.72-0.015-1.437-0.044-2.15l0.003 0.102c-0.060-2.287-0.095-4.98-0.095-7.68 0-171.495 138.905-310.546 310.344-310.784h0.023c171.462 0.238 310.367 139.289 310.367 310.784 0 2.701-0.034 5.393-0.103 8.077l0.008-0.397c-10.24 244.736-231.68 430.848-310.272 489.216-61.44-45.312-208.384-167.68-275.712-334.080-5.12-12.544-9.728-25.6-13.824-38.4-6.736-20.947-26.050-35.84-48.842-35.84-0.019 0-0.038 0-0.057 0h0.003c-5.484 0.014-10.767 0.855-15.737 2.405l0.377-0.101c-20.981 6.716-35.905 26.046-35.905 48.862 0 5.497 0.866 10.793 2.47 15.756l-0.101-0.362c4.864 15.36 10.496 30.976 16.64 46.080 94.464 233.984 314.88 384 340.992 400.128l2.304 1.536 3.84 2.304 3.84 1.792 5.632 1.792c1.978 0.854 4.296 1.564 6.704 2.016l0.208 0.032h7.168c1.422 0.181 3.067 0.284 4.736 0.284s3.314-0.103 4.929-0.303l-0.193 0.020c0.654 0.112 1.408 0.176 2.176 0.176s1.522-0.064 2.255-0.187l-0.079 0.011c1.729-0.308 3.275-0.842 4.699-1.579l-0.091 0.043c2.054-0.622 3.836-1.405 5.499-2.37l-0.123 0.066 5.888-3.584c34.816-24.832 368.896-251.392 382.976-591.616z" />
31
+ <glyph unicode="&#xe915;" glyph-name="background-transition" d="M512 199.424c-137.285 0-248.576 111.291-248.576 248.576s111.291 248.576 248.576 248.576c137.285 0 248.576-111.291 248.576-248.576v0c-0.291-137.168-111.409-248.285-248.548-248.576h-0.028zM512 594.176c-80.731 0-146.176-65.445-146.176-146.176s65.445-146.176 146.176-146.176c80.731 0 146.176 65.445 146.176 146.176v0c0 80.731-65.445 146.176-146.176 146.176v0zM512 755.2c-28.277 0-51.2 22.923-51.2 51.2v0 102.4c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-102.4c0-28.277-22.923-51.2-51.2-51.2v0zM512-64c-28.277 0-51.2 22.923-51.2 51.2v0 102.4c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-102.4c0-28.277-22.923-51.2-51.2-51.2v0zM153.6 396.8h-102.4c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h102.4c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM972.8 396.8h-102.4c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h102.4c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM764.928 649.728c-0.012 0-0.027 0-0.041 0-28.277 0-51.2 22.923-51.2 51.2 0 14.212 5.791 27.072 15.142 36.349l72.707 72.707c9.271 9.271 22.078 15.004 36.224 15.004 28.293 0 51.228-22.936 51.228-51.228 0-14.146-5.734-26.953-15.004-36.224v0l-72.704-72.704c-9.276-9.33-22.119-15.104-36.311-15.104-0.014 0-0.029 0-0.043 0h0.002zM186.112 70.912c-0.012 0-0.027 0-0.041 0-28.277 0-51.2 22.923-51.2 51.2 0 14.212 5.791 27.072 15.142 36.349l72.707 72.707c9.271 9.271 22.078 15.004 36.224 15.004 28.293 0 51.228-22.936 51.228-51.228 0-14.146-5.734-26.953-15.004-36.224v0l-72.704-72.704c-9.276-9.33-22.119-15.104-36.311-15.104-0.014 0-0.029 0-0.043 0h0.002zM259.072 649.728c-0.012 0-0.026 0-0.041 0-14.192 0-27.035 5.774-36.309 15.102l-72.706 72.706c-9.271 9.271-15.004 22.078-15.004 36.224 0 28.293 22.936 51.228 51.228 51.228 14.146 0 26.953-5.734 36.224-15.004v0l72.704-72.704c9.354-9.28 15.145-22.14 15.145-36.352 0-28.277-22.923-51.2-51.2-51.2-0.014 0-0.029 0-0.043 0h0.002zM837.888 70.912c-0.012 0-0.026 0-0.041 0-14.192 0-27.035 5.774-36.309 15.102l-72.706 72.706c-9.271 9.271-15.004 22.078-15.004 36.224 0 28.293 22.936 51.228 51.228 51.228 14.146 0 26.953-5.734 36.224-15.004l72.704-72.704c9.354-9.28 15.145-22.14 15.145-36.352 0-28.277-22.923-51.2-51.2-51.2-0.014 0-0.029 0-0.043 0h0.002z" />
32
+ <glyph unicode="&#xe916;" glyph-name="behance-feed" d="M921.6 686.592h-265.984v66.56h265.984zM515.072 413.184c16.129-26.372 25.68-58.288 25.68-92.435 0-1.884-0.029-3.761-0.087-5.63l0.007 0.274c0.033-1.338 0.052-2.915 0.052-4.495 0-37.644-10.691-72.792-29.203-102.571l0.479 0.827c-26.295-43.778-69.259-75.257-119.9-85.809l-1.188-0.207c-26.73-5.71-57.441-8.98-88.916-8.98-1.501 0-2.999 0.007-4.496 0.022l0.229-0.002h-297.728v666.112h318.464q120.576-1.792 171.008-70.912c18.955-27.17 30.286-60.884 30.286-97.244 0-1.813-0.028-3.619-0.084-5.419l0.006 0.263c0.104-2.101 0.164-4.562 0.164-7.037 0-34.446-11.512-66.204-30.898-91.636l0.27 0.369c-14.164-15.607-31.163-28.349-50.225-37.468l-0.975-0.42c32.103-10.808 58.534-31.359 76.464-58.092l0.336-0.532zM153.6 517.888h138.24c1.644-0.074 3.572-0.116 5.51-0.116 23.558 0 45.664 6.215 64.769 17.095l-0.646-0.339c16.549 11.512 27.245 30.436 27.245 51.858 0 2.384-0.132 4.736-0.39 7.051l0.026-0.285c0.24 2.010 0.377 4.337 0.377 6.697 0 24.378-14.625 45.341-35.58 54.593l-0.382 0.15c-21.301 6.7-45.795 10.56-71.191 10.56-1.972 0-3.939-0.023-5.9-0.070l0.291 0.005h-122.368zM402.944 324.864c0.136 1.654 0.213 3.581 0.213 5.525 0 29.396-17.696 54.66-43.016 65.719l-0.462 0.18c-17.993 7.338-38.87 11.597-60.741 11.597-1.776 0-3.546-0.028-5.309-0.084l0.258 0.006h-140.288v-179.2h139.264c0.381-0.003 0.831-0.005 1.282-0.005 23.308 0 45.404 5.192 65.194 14.482l-0.94-0.396c26.295 14.463 43.817 41.982 43.817 73.594 0 3.385-0.201 6.723-0.591 10.003l0.038-0.397zM1020.928 433.408c2.383-20.017 3.743-43.2 3.743-66.701 0-9.945-0.243-19.833-0.725-29.658l0.054 1.384h-344.32c-0.111-1.89-0.175-4.1-0.175-6.325 0-38.958 19.468-73.369 49.207-94.036l0.376-0.247c18.274-11.292 40.428-17.983 64.145-17.983 1.389 0 2.773 0.023 4.152 0.069l-0.201-0.005c1.226-0.053 2.664-0.082 4.109-0.082 24.532 0 47.050 8.627 64.684 23.013l-0.185-0.146c10.601 8.834 19.216 19.658 25.342 31.941l0.258 0.571h126.208c-5.523-34.381-21.612-64.291-44.775-87.016l-0.025-0.024c-41.573-43.242-99.909-70.105-164.519-70.105-5.165 0-10.29 0.172-15.37 0.51l0.689-0.037c-0.994-0.014-2.168-0.022-3.344-0.022-62.153 0-119.132 22.149-163.476 58.985l0.42-0.339c-48.128 39.424-72.192 102.4-72.192 191.232q0 124.416 65.024 190.464c41.049 41.065 97.766 66.465 160.415 66.465 3.005 0 5.996-0.058 8.973-0.174l-0.428 0.013c1.251 0.021 2.726 0.033 4.205 0.033 38.754 0 75.591-8.209 108.867-22.983l-1.712 0.679c33.859-15.807 61.507-40.085 80.953-70.161l0.455-0.751c19.108-27.935 32.438-61.308 37.491-97.336l0.141-1.224zM896 421.888c-0.339 29.803-13.048 56.572-33.222 75.466l-0.058 0.054c-18.512 15.954-42.793 25.67-69.344 25.67-1.362 0-2.717-0.026-4.066-0.076l0.195 0.006c-1.181 0.051-2.567 0.080-3.959 0.080-26.804 0-51.089-10.784-68.754-28.249l0.009 0.009c-18.191-19.387-30.505-44.484-33.983-72.326l-0.065-0.634z" />
33
+ <glyph unicode="&#xe917;" glyph-name="charts" d="M417.536-64c-228.348 5.805-411.243 192.296-411.243 421.504s182.895 415.698 410.706 421.493l0.538 0.011c28.277 0 51.2-22.923 51.2-51.2v0-318.464h314.88c28.277 0 51.2-22.923 51.2-51.2v0c0.004-0.687 0.006-1.499 0.006-2.312 0-230.973-186.516-418.384-417.148-419.832l-0.138-0.001zM366.336 671.488c-150.508-27.256-263.166-157.285-263.166-313.626 0-174.442 140.255-316.126 314.148-318.435l0.218-0.002c156.431 0.852 285.928 115.088 310.535 264.661l0.249 1.835h-310.784c-28.277 0-51.2 22.923-51.2 51.2v0zM972.8 486.912h-366.080c-28.277 0-51.2 22.923-51.2 51.2v0 370.688c0 28.277 22.923 51.2 51.2 51.2v0c230.769-1.45 417.284-188.86 417.284-419.832 0-0.633-0.001-1.265-0.004-1.897v0.097c0-0.076 0.001-0.166 0.001-0.256 0-28.277-22.923-51.2-51.2-51.2 0 0 0 0-0.001 0v0zM657.92 589.312h259.584c-21.95 134.407-125.709 239.377-257.664 262.884l-1.92 0.284z" />
34
+ <glyph unicode="&#xe918;" glyph-name="content-switcher" d="M712.192 742.4h-400.384c-1.401 0.023-3.054 0.036-4.71 0.036-166.884 0-302.687-133.071-307.090-298.893l-0.009-0.408c4.411-166.229 140.214-299.3 307.098-299.3 1.656 0 3.309 0.013 4.958 0.039l-0.249-0.003h400.384c1.401-0.023 3.054-0.036 4.71-0.036 166.884 0 302.687 133.071 307.090 298.893l0.009 0.408c-4.411 166.229-140.214 299.3-307.098 299.3-1.656 0-3.309-0.013-4.958-0.039l0.249 0.003zM712.192 242.176h-400.384c-1.382-0.034-3.010-0.053-4.643-0.053-111.776 0-202.638 89.546-204.762 200.814l-0.003 0.199c2.127 111.467 92.989 201.013 204.765 201.013 1.633 0 3.261-0.019 4.884-0.057l-0.241 0.004h400.384c1.382 0.034 3.010 0.053 4.643 0.053 111.776 0 202.638-89.546 204.762-200.814l0.003-0.199c-2.127-111.467-92.989-201.013-204.765-201.013-1.633 0-3.261 0.019-4.884 0.057l0.241-0.004zM843.52 443.136c0-70.268-59.371-127.232-132.608-127.232s-132.608 56.964-132.608 127.232c0 70.268 59.371 127.232 132.608 127.232s132.608-56.964 132.608-127.232z" />
35
+ <glyph unicode="&#xe919;" glyph-name="divider" d="M701.184 501.76h269.056c29.691 0 53.76-24.069 53.76-53.76s-24.069-53.76-53.76-53.76h-269.056c-29.691 0-53.76 24.069-53.76 53.76s24.069 53.76 53.76 53.76zM53.76 501.76h269.056c29.691 0 53.76-24.069 53.76-53.76s-24.069-53.76-53.76-53.76h-269.056c-29.691 0-53.76 24.069-53.76 53.76s24.069 53.76 53.76 53.76zM565.76 547.84v-199.68c0-29.691-24.069-53.76-53.76-53.76s-53.76 24.069-53.76 53.76v199.68c0 29.691 24.069 53.76 53.76 53.76s53.76-24.069 53.76-53.76z" />
36
+ <glyph unicode="&#xe91a;" glyph-name="facebook-feed-1" d="M1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-282.77 229.23-512 512-512v0h8.96v398.592h-110.080v128h110.080v94.72c0 109.312 66.816 168.96 164.352 168.96 0.851 0.003 1.859 0.005 2.868 0.005 33.709 0 66.983-1.861 99.725-5.487l-4.033 0.363v-114.432h-67.072c-52.992 0-63.488-25.6-63.488-62.208v-81.408h128l-16.384-128h-111.616v-379.392c215.808 63.424 370.688 259.681 370.688 492.113 0 0.062 0 0.123 0 0.185v-0.009z" />
37
+ <glyph unicode="&#xe91b;" glyph-name="facebook-feed-2" horiz-adv-x="553" d="M532.736 960h-132.864c-148.736 0-245.504-99.072-245.504-251.904v-116.224h-133.632c-11.483-0.144-20.736-9.487-20.736-20.99 0-0.001 0-0.001 0-0.002v0-168.448c0-11.452 9.284-20.736 20.736-20.736h133.632v-424.704c0-0.007 0-0.016 0-0.025 0-11.233 8.824-20.406 19.918-20.965l0.050-0.002h174.336c11.483 0.144 20.736 9.487 20.736 20.99 0 0.001 0 0.001 0 0.002v0 424.704h156.16c0 0 0.001 0 0.002 0 11.504 0 20.846 9.253 20.99 20.722v168.462c-0.056 5.788-2.39 11.020-6.147 14.851l0.003-0.003c-3.815 3.776-9.055 6.117-14.843 6.144h-156.165v98.304c0 47.36 11.52 71.424 72.96 71.424h90.368c11.483 0.144 20.736 9.487 20.736 20.99 0 0.001 0 0.001 0 0.002v0 156.16c0.004 0.152 0.006 0.332 0.006 0.512 0 11.452-9.284 20.736-20.736 20.736-0.002 0-0.004 0-0.007 0v0z" />
38
+ <glyph unicode="&#xe91c;" glyph-name="facebook-messenger-chat" horiz-adv-x="1016" d="M508.16 960c-281.6 0-508.16-212.224-508.16-474.112 1.31-150.237 74.076-283.21 185.921-366.748l1.215-0.868v-182.272l170.496 97.024c43.79-12.85 94.098-20.242 146.132-20.242 1.546 0 3.090 0.007 4.633 0.020l-0.237-0.002c281.6 0 508.16 212.224 508.16 474.112s-226.56 473.088-508.16 473.088zM559.36 325.632l-130.304 136.96-249.088-136.96 273.92 290.048 131.072-134.4 246.528 134.4z" />
39
+ <glyph unicode="&#xe91d;" glyph-name="facebook-reviews" d="M313.344-44.544c0.012 0 0.026 0 0.041 0 14.065 0 26.805 5.671 36.058 14.851l-0.003-0.003c-9.193-9.374-21.948-15.226-36.071-15.36h-7.193zM362.24-8.448c-1.808-6.862-5.091-12.801-9.506-17.702l0.034 0.038c4.071 5.003 7.302 10.881 9.366 17.283l0.106 0.381zM985.344 564.992c-29.427 34.25-72.791 55.808-121.19 55.808-0.054 0-0.109 0-0.163 0h-203.256v152.064c-0.289 89.278-72.729 161.539-162.047 161.539-0.36 0-0.72-0.001-1.080-0.004h0.055c-0.171 0.001-0.374 0.002-0.576 0.002-54.741 0-100.149-39.957-108.651-92.296l-0.085-0.634c-17.401-103.302-47.984-195.899-90.434-281.571l2.626 5.859-18.944-38.4h-160.512c-66.875 0-121.088-54.213-121.088-121.088v0-329.728c0-66.875 54.213-121.088 121.088-121.088v0h192.256c0.012 0 0.026 0 0.041 0 14.065 0 26.805 5.671 36.058 14.851l-0.003-0.003 3.328 3.584c4.071 5.003 7.302 10.881 9.366 17.283l0.106 0.381c1.462 4.385 2.306 9.433 2.306 14.678 0 0.15-0.001 0.299-0.002 0.448v-0.023 456.96l27.904 57.856c43.986 87.809 77.774 189.682 96.1 296.831l0.924 6.529c0.723 4.138 4.289 7.244 8.581 7.244 0.405 0 0.803-0.028 1.193-0.081l-0.045 0.005c32.66 0 59.136-26.476 59.136-59.136v0-203.264c0-28.277 22.923-51.2 51.2-51.2v0h254.464c0.015 0 0.033 0 0.052 0 17.429 0 33.057-7.707 43.665-19.898l0.060-0.070c8.98-9.973 14.473-23.241 14.473-37.791 0-3.016-0.236-5.977-0.69-8.865l0.041 0.32-53.76-342.528c-4.741-29.188-29.764-51.2-59.928-51.2-0.081 0-0.163 0-0.244 0h-351.731c-28.277 0-51.2-22.923-51.2-51.2s22.923-51.2 51.2-51.2v0h351.744c0.229-0.001 0.499-0.002 0.77-0.002 81.147 0 148.384 59.551 160.395 137.334l0.115 0.908 53.248 342.528c1.139 7.176 1.789 15.451 1.789 23.878 0 39.967-14.631 76.516-38.828 104.585l0.175-0.208zM102.4 76.544v329.728c0 10.321 8.367 18.688 18.688 18.688v0h141.056v-367.104h-141.056c-10.321 0-18.688 8.367-18.688 18.688v0z" />
40
+ <glyph unicode="&#xe91e;" glyph-name="google-reviews" horiz-adv-x="1003" d="M512 521.327h483.441c4.978-25.633 7.876-55.155 7.976-85.336v-0.083c0.041-2.472 0.064-5.389 0.064-8.312 0-90.976-22.485-176.7-62.201-251.919l1.417 2.944c-40.134-75.121-99.112-135.586-170.742-176.397l-2.155-1.13c-71.446-40.366-156.884-64.151-247.877-64.151-3.308 0-6.609 0.031-9.903 0.094l0.494-0.007c-0.609-0.003-1.329-0.004-2.050-0.004-71.309 0-139.146 14.862-200.585 41.656l3.238-1.258c-63.637 26.44-118.043 62.856-163.975 107.885l0.084-0.082c-45.204 45.719-81.931 99.933-107.558 160.015l-1.274 3.361c-25.542 58.847-40.401 127.387-40.401 199.397s14.859 140.551 41.677 202.722l-1.276-3.325c26.9 63.443 63.628 117.657 108.879 163.425l-0.047-0.048c45.668 45.291 99.897 82.033 160.034 107.571l3.343 1.261c58.2 25.537 126.038 40.398 197.347 40.398 0.721 0 1.441-0.002 2.161-0.005h-0.111c2.575 0.049 5.611 0.077 8.654 0.077 129.937 0 247.94-51.099 335.008-134.299l-0.185 0.175-139.449-134.046c-50.634 49.245-119.851 79.612-196.16 79.612-2.767 0-5.524-0.040-8.272-0.119l0.404 0.009c-0.679 0.005-1.482 0.009-2.286 0.009-57.888 0-111.998-16.174-158.058-44.249l1.341 0.759c-95.41-57.522-158.235-160.595-158.235-278.341 0-0.558 0.001-1.115 0.004-1.672v0.086c-0.002-0.471-0.004-1.029-0.004-1.586 0-117.747 62.825-220.82 156.782-277.527l1.453-0.814c44.719-27.316 98.83-43.49 156.717-43.49 0.804 0 1.606 0.003 2.409 0.009l-0.123-0.001c2.12-0.047 4.618-0.074 7.122-0.074 35.546 0 69.834 5.387 102.091 15.39l-2.439-0.651c30.543 9.619 57.11 23.286 80.777 40.67l-0.761-0.533c20.712 15.883 38.662 33.833 54.041 53.862l0.504 0.683c13.43 17.224 25.003 36.895 33.846 57.994l0.631 1.696c6.285 14.746 11.462 32.014 14.698 49.956l0.225 1.501h-290.734z" />
41
+ <glyph unicode="&#xe91f;" glyph-name="horizontal-scroll" d="M1024 448c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2zM627.2 448c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2zM230.4 448c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2z" />
42
+ <glyph unicode="&#xe920;" glyph-name="hover-box" horiz-adv-x="817" d="M813.824 717.312l-3.072-6.4c-0.853-2.067-1.974-3.845-3.346-5.396l0.018 0.020c-1.478-2.095-2.991-3.933-4.627-5.652l0.019 0.020-165.632-172.544c-8.842-9.276-21.277-15.058-35.063-15.104h-0.009c-13.619 0.132-25.865 5.901-34.538 15.081l-0.022 0.023c-8.923 9.426-14.41 22.184-14.41 36.224s5.487 26.798 14.433 36.248l-0.023-0.024 81.92 85.248h-460.8c-50.328-1.28-90.637-42.383-90.637-92.9 0-0.55 0.005-1.099 0.014-1.647l-0.001 0.082v-207.872c0-0.012 0-0.027 0-0.041 0-27.557-21.77-50.029-49.050-51.156l-0.102-0.003c-27.382 1.13-49.152 23.602-49.152 51.159 0 0.014 0 0.029 0 0.043v-0.002 207.872c-0.022 1.081-0.034 2.355-0.034 3.632 0 105.227 84.090 190.814 188.738 193.228l0.225 0.004h460.8l-81.92 85.248c-9.201 9.255-14.889 22.011-14.889 36.096s5.687 26.842 14.891 36.098l-0.002-0.002c8.715 9.323 21.087 15.133 34.816 15.133s26.101-5.81 34.791-15.106l0.025-0.027 162.048-169.216c1.34-0.998 2.515-2.092 3.56-3.3l0.024-0.028 5.376-6.656 2.048-3.328c0.871-1.608 1.816-3.63 2.658-5.705l0.158-0.439c2.466-6.070 3.897-13.112 3.897-20.488 0-6.602-1.146-12.935-3.251-18.813l0.122 0.39zM813.824 717.312c2.128 5.673 3.36 12.228 3.36 19.072s-1.232 13.399-3.486 19.458l0.126-0.386c2.272-5.41 3.592-11.699 3.592-18.296 0-0.318-0.003-0.635-0.009-0.952l0.001 0.047c0-0.037 0-0.081 0-0.125 0-6.776-1.316-13.244-3.707-19.163l0.123 0.344zM818.176 513.28v-207.872c0.022-1.081 0.034-2.355 0.034-3.632 0-105.227-84.090-190.814-188.738-193.228l-0.225-0.004h-460.8l81.92-85.248c9.201-9.255 14.889-22.011 14.889-36.096s-5.687-26.842-14.891-36.098l0.002 0.002c-8.715-9.323-21.087-15.133-34.816-15.133s-26.101 5.81-34.791 15.106l-0.025 0.027-166.4 172.544-5.376 6.656-2.048 3.328c-1.078 1.936-2.195 4.296-3.172 6.727l-0.156 0.441c-2.128 5.673-3.36 12.228-3.36 19.072s1.232 13.399 3.486 19.458l-0.126-0.386 3.072 6.4c0.853 2.067 1.974 3.845 3.346 5.396l-0.018-0.020c1.478 2.095 2.991 3.933 4.627 5.652l-0.019-0.020 3.584 3.328 162.048 169.216c8.748 9.255 21.109 15.015 34.816 15.015s26.068-5.76 34.795-14.992l0.021-0.023c8.923-9.426 14.41-22.184 14.41-36.224s-5.487-26.798-14.433-36.248l0.023 0.024-81.92-85.248h460.8c50.328 1.28 90.637 42.383 90.637 92.9 0 0.55-0.005 1.099-0.014 1.647l0.001-0.082v207.616c0 27.146 22.006 49.152 49.152 49.152s49.152-22.006 49.152-49.152v0zM3.584 140.8c-2.681 5.539-4.353 12.017-4.605 18.857l-0.003 0.087c-0.004 0.229-0.006 0.5-0.006 0.771 0 6.532 1.223 12.778 3.453 18.522l-0.119-0.349c-1.717-5.129-2.707-11.035-2.707-17.172 0-7.462 1.465-14.583 4.122-21.089l-0.135 0.373z" />
43
+ <glyph unicode="&#xe921;" glyph-name="icon-box" d="M1017.344 600.064l-171.008 286.72c-8.275 13.36-22.81 22.155-39.407 22.272h-588.817c-0.209 0.003-0.456 0.005-0.704 0.005-16.738 0-31.415-8.826-39.629-22.078l-0.115-0.199-41.984-70.912c-4.095-6.702-6.519-14.811-6.519-23.486 0-16.618 8.895-31.158 22.184-39.118l0.207-0.115c6.609-4.020 14.6-6.4 23.147-6.4 0.052 0 0.105 0 0.157 0h-0.008c0.004 0 0.009 0 0.014 0 16.506 0 30.973 8.727 39.040 21.818l0.114 0.198 28.928 48.64h269.056c0.19-0.003 0.414-0.005 0.638-0.005 4.161 0 8.168 0.657 11.923 1.874l-0.274-0.077v-1.792l61.44-195.072h-56.064c-1.024 0.082-2.218 0.128-3.423 0.128-25.308 0-45.824-20.516-45.824-45.824s20.516-45.824 45.824-45.824c1.205 0 2.398 0.046 3.579 0.138l-0.157-0.010h60.416c-29.44-115.2-74.24-291.584-100.608-395.008l-387.072 445.696 49.152 81.92c4.031 6.698 6.416 14.782 6.416 23.424 0 25.387-20.581 45.968-45.968 45.968-16.746 0-31.4-8.954-39.436-22.336l-0.116-0.208-65.792-110.336c-4.2-6.767-6.689-14.976-6.689-23.767 0-11.391 4.18-21.806 11.090-29.795l-0.049 0.058 464.128-533.76c2.54-3.3 5.404-6.164 8.595-8.623l0.109-0.081h1.28c0.32-0.613 0.862-1.072 1.518-1.275l0.018-0.005 2.56-1.536c0.264-0.115 0.572-0.181 0.896-0.181s0.632 0.067 0.911 0.187l-0.015-0.006c1.204-0.999 2.675-1.718 4.29-2.038l0.062-0.010c0.346-0.066 0.745-0.105 1.152-0.105s0.806 0.038 1.192 0.111l-0.040-0.006h8.704c0.846-0.115 1.823-0.181 2.816-0.181s1.97 0.066 2.928 0.193l-0.112-0.012h7.936c2.184 0.261 4.173 0.802 6.032 1.59l-0.144-0.054h7.168l2.56 1.536c0.627 0.293 1.145 0.729 1.528 1.268l0.008 0.012c3.857 2.668 7.152 5.801 9.909 9.37l0.075 0.102 465.92 533.504c6.861 7.931 11.041 18.346 11.041 29.737 0 8.791-2.489 17-6.801 23.962l0.112-0.195zM604.16 216.064c18.432 73.216 44.288 174.592 80.128 315.392h193.536zM680.96 622.848l-60.416 194.56h160.512l116.48-195.072zM524.8 817.408h-12.8c0.19-0.003 0.414-0.005 0.638-0.005 4.161 0 8.168 0.657 11.923 1.874l-0.274-0.077zM414.208 530.944h-25.6c-1.024-0.082-2.218-0.128-3.423-0.128-25.308 0-45.824 20.516-45.824 45.824s20.516 45.824 45.824 45.824c1.205 0 2.398-0.046 3.579-0.138l-0.157 0.010h25.6c1.024 0.082 2.218 0.128 3.423 0.128 25.308 0 45.824-20.516 45.824-45.824s-20.516-45.824-45.824-45.824c-1.205 0-2.398 0.046-3.579 0.138l0.157-0.010z" />
44
+ <glyph unicode="&#xe922;" glyph-name="image-accordion" d="M972.8 883.2h-921.6c-28.277 0-51.2-22.923-51.2-51.2v0-776.192c0-28.277 22.923-51.2 51.2-51.2v0h921.6c28.277 0 51.2 22.923 51.2 51.2v0 776.192c0 28.277-22.923 51.2-51.2 51.2v0zM102.4 780.8h204.8v-673.792h-204.8zM409.6 780.8h204.8v-673.792h-204.8zM921.6 107.008h-204.8v673.792h204.8z" />
45
+ <glyph unicode="&#xe923;" glyph-name="image-comparison" d="M972.8 883.2h-921.6c-28.277 0-51.2-22.923-51.2-51.2v0-776.192c0-28.277 22.923-51.2 51.2-51.2v0h921.6c28.277 0 51.2 22.923 51.2 51.2v0 776.192c0 28.277-22.923 51.2-51.2 51.2v0zM102.4 780.8h358.4v-234.496c-37.365-19.557-62.424-58.052-62.424-102.4s25.060-82.843 61.791-102.098l0.633-0.302v-233.728h-358.4zM921.6 107.008h-358.4v234.496c37.365 19.557 62.424 58.052 62.424 102.4s-25.060 82.843-61.791 102.098l-0.633 0.302v234.496h358.4z" />
46
+ <glyph unicode="&#xe924;" glyph-name="image-hotspots" d="M1013.248 300.8l-371.456 611.072c-13.171 21.338-36.424 35.345-62.949 35.345-31.533 0-58.442-19.796-68.979-47.638l-0.168-0.507-81.408-220.16c-2.232-5.535-3.527-11.953-3.527-18.674 0-28.277 22.923-51.2 51.2-51.2 22.218 0 41.13 14.152 48.215 33.933l0.112 0.357 60.928 164.608 310.784-510.72-281.6 32.512-142.080 230.4c-6.846 11.049-17.646 19.094-30.382 22.202l-0.338 0.070h-6.4c-2.001 0.367-4.304 0.577-6.656 0.577s-4.655-0.21-6.891-0.612l0.235 0.035c-7.397-0.938-14.069-3.387-19.92-7.033l0.208 0.121-332.8-202.752c-41.525-25.053-68.866-69.925-68.866-121.183 0-26.712 7.425-51.689 20.323-72.981l-0.354 0.629 59.904-98.816c25.23-40.968 69.837-67.869 120.728-67.869 27.103 0 52.424 7.63 73.932 20.86l-0.613-0.351 200.96 121.856 40.96-67.584c2.932-4.782 4.669-10.572 4.669-16.768 0-17.919-14.526-32.445-32.445-32.445-11.723 0-21.994 6.218-27.695 15.535l-0.081 0.142-12.544 20.736c-7.063 7.884-17.275 12.822-28.641 12.822-21.208 0-38.4-17.192-38.4-38.4 0-5.174 1.023-10.109 2.878-14.613l-0.093 0.255 12.544-20.48c19.597-30.953 53.657-51.205 92.447-51.205 0.349 0 0.698 0.002 1.046 0.005h-0.053c60.099 0.173 108.751 48.933 108.751 109.056 0 20.914-5.887 40.452-16.094 57.049l0.271-0.473-40.96 67.584 55.808 33.792 345.088-39.68c2.017-0.196 4.359-0.308 6.728-0.308 40.719 0 73.728 33.009 73.728 73.728 0 13.698-3.736 26.524-10.244 37.513l0.187-0.342zM221.184 121.6c-5.76-3.595-12.754-5.726-20.247-5.726-13.905 0-26.095 7.342-32.906 18.36l-0.096 0.166-59.904 97.792c-3.493 5.721-5.562 12.643-5.562 20.047 0 13.984 7.377 26.245 18.451 33.105l0.167 0.096 291.584 176.896 102.4-163.84z" />
47
+ <glyph unicode="&#xe925;" glyph-name="image-layers" d="M897.28 960h-512c-70.692 0-128-57.308-128-128v0-124.16h-129.28c-70.14-0.724-126.72-57.751-126.72-127.994 0-0.002 0-0.005 0-0.007v0-515.84c0-70.692 57.308-128 128-128v0h510.72c70.14 0.724 126.72 57.751 126.72 127.994 0 0.002 0 0.005 0 0.007v0 124.16h131.84c70.692 0 128 57.308 128 128v0 515.84c0 0.002 0 0.004 0 0.006 0 70.692-57.308 128-128 128-0.45 0-0.899-0.002-1.348-0.007l0.068 0.001zM664.064 64c0-14.138-11.462-25.6-25.6-25.6v0h-510.464c-14.138 0-25.6 11.462-25.6 25.6v0 516.096c0 14.138 11.462 25.6 25.6 25.6v0h512c14.138 0 25.6-11.462 25.6-25.6v0zM921.6 315.904c0-14.138-11.462-25.6-25.6-25.6v0h-130.56v289.792c0 0.002 0 0.004 0 0.006 0 70.242-56.58 127.27-126.651 127.993l-0.069 0.001h-278.784v123.904c0 14.138 11.462 25.6 25.6 25.6v0h512c14.138 0 25.6-11.462 25.6-25.6v0z" />
48
+ <glyph unicode="&#xe926;" glyph-name="instagram-feed" d="M1021.185 659.019c-0.751 44.832-9.132 87.479-23.895 127.015l0.861-2.63c-13.62 35.496-33.821 65.731-59.321 90.547l-0.056 0.054c-24.912 25.418-55.137 45.527-88.888 58.541l-1.713 0.581c-37.011 14.227-79.807 22.877-124.502 23.796l-0.394 0.006c-54.77 3.071-72.174 3.071-211.403 3.071s-156.121 0-210.891-2.815c-44.715-0.687-87.285-8.98-126.762-23.634l2.633 0.856c-35.667-13.843-66.001-34.392-90.768-60.307l-0.089-0.094c-25.341-24.913-45.37-55.142-58.289-88.889l-0.576-1.712c-14.394-36.776-23.062-79.333-23.798-123.819l-0.004-0.31c-3.327-54.77-3.327-72.174-3.327-211.147s0-156.633 3.071-211.147c0.852-44.813 9.509-87.354 24.663-126.668l-0.86 2.539c13.561-35.564 33.676-65.878 59.083-90.82l0.038-0.037c24.854-25.809 55.081-46.253 88.901-59.556l1.7-0.589c36.769-14.089 79.281-22.725 123.667-23.793l0.462-0.009c54.77-1.792 72.174-1.792 211.147-1.792s156.377 0 211.147 2.815c44.715 0.687 87.285 8.98 126.762 23.634l-2.633-0.856c69.708 27.177 123.825 81.295 150.389 149.222l0.613 1.781c14.268 36.775 22.923 79.313 23.796 123.758l0.006 0.371c1.792 54.514 1.792 71.918 1.792 211.147s0 156.377-2.559 210.891zM929.048 241.076c-0.489-34.304-6.923-66.959-18.313-97.185l0.653 1.976c-17.676-44.72-52.476-79.436-96.104-96.601l-1.152-0.399c-28.172-10.979-60.775-17.438-94.86-17.659h-0.093c-54.002-2.559-70.382-3.071-206.796-3.071s-153.562 0-207.052 3.071c-34.177 0.222-66.781 6.681-96.819 18.294l1.867-0.635c-23.095 8.559-42.768 21.564-58.829 38.097l-0.036 0.038c-16.478 16.157-29.466 35.81-37.769 57.763l-0.366 1.102c-10.747 28.17-17.182 60.739-17.657 94.748l-0.002 0.205c-2.303 53.747-2.815 70.126-2.815 207.308s0 153.562 2.815 206.796c0.444 34.209 6.883 66.781 18.308 96.9l-0.648-1.947c8.59 23.126 21.686 42.807 38.339 58.816l0.051 0.049c16.098 16.57 35.77 29.575 57.781 37.78l1.084 0.354c28.172 10.979 60.775 17.438 94.86 17.659h0.093c54.002 2.559 70.382 3.071 206.796 3.071s153.562 0 206.796-3.071c34.263-0.2 66.957-6.662 97.079-18.295l-1.871 0.636c23.005-8.567 42.593-21.571 58.567-38.091l0.042-0.044c16.646-16.096 29.731-35.765 38.031-57.779l0.359-1.086c10.747-28.17 17.182-60.739 17.657-94.748l0.002-0.205c2.303-54.002 2.815-70.126 2.815-206.796s-0.512-153.562-2.815-207.052zM511.872 710.974c-145.197-0.146-262.846-117.885-262.846-263.102 0-145.307 117.795-263.102 263.102-263.102s263.102 117.795 263.102 263.102c0 0.090 0 0.18 0 0.27v-0.014c0 0 0 0 0 0 0 145.166-117.68 262.846-262.846 262.846-0.18 0-0.36 0-0.54-0.001h0.028zM511.872 277.419c-94.28 0-170.709 76.429-170.709 170.709s76.429 170.709 170.709 170.709c94.28 0 170.709-76.429 170.709-170.709v0c0-94.28-76.429-170.709-170.709-170.709v0zM846.892 721.468c0-33.924-27.501-61.425-61.425-61.425s-61.425 27.501-61.425 61.425c0 33.924 27.501 61.425 61.425 61.425v0c0.076 0 0.166 0.001 0.256 0.001 33.783 0 61.169-27.386 61.169-61.169 0-0.090 0-0.18-0.001-0.27v0.014z" />
49
+ <glyph unicode="&#xe927;" glyph-name="ken-burns" d="M896-64h-768c-70.692 0-128 57.308-128 128v0 768c0 70.692 57.308 128 128 128v0h278.528c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0h-278.528c-14.138 0-25.6-11.462-25.6-25.6v0-768c0-14.138 11.462-25.6 25.6-25.6v0h768c14.138 0 25.6 11.462 25.6 25.6v0 228.352c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-228.352c0-70.692-57.308-128-128-128v0zM1024 908.8v-369.664c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 246.272l-373.504-373.504c-8.895-7.652-20.555-12.311-33.303-12.311-28.277 0-51.2 22.923-51.2 51.2 0 12.749 4.659 24.409 12.368 33.371l-0.057-0.067 373.504 373.504h-212.48c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h335.872c1.46 0.187 3.15 0.294 4.864 0.294s3.404-0.107 5.062-0.314l-0.198 0.020c3.44-0.752 6.434-1.721 9.294-2.943l-0.334 0.127 8.192-4.352s0 0 0 0c2.731-2.113 5.151-4.208 7.451-6.426l-0.027 0.026c2.192-2.273 4.287-4.693 6.249-7.222l0.151-0.202s0 0 0 0c1.384-2.23 2.835-4.916 4.138-7.685l0.214-0.507s0 0 0 0c2.406-3.393 4.477-7.281 6.028-11.423l0.116-0.353c0.207-1.538 0.325-3.315 0.325-5.12s-0.118-3.582-0.347-5.325l0.022 0.205z" />
50
+ <glyph unicode="&#xe928;" glyph-name="lottie-section-background" d="M972.8-64h-921.6c-28.277 0-51.2 22.923-51.2 51.2v0 921.6c0 28.277 22.923 51.2 51.2 51.2v0h921.6c28.277 0 51.2-22.923 51.2-51.2v0-921.6c0-28.277-22.923-51.2-51.2-51.2v0zM102.4 857.6v-819.2h819.2v819.2zM782.080 648.96c-1.865-26.75-24.022-47.744-51.083-47.744-2.207 0-4.381 0.14-6.514 0.41l0.253-0.026h-1.536c-20.277-0.815-38.332-9.698-51.158-23.506l-0.042-0.046c-39.624-37.719-72.674-81.886-97.557-130.899l-1.259-2.733c-5.632-10.24-11.264-20.224-16.64-30.464-14.848-25.6-29.696-53.504-45.568-79.872-30.788-53.58-70.537-98.474-117.675-134.109l-1.109-0.803c-25.659-18.893-57.89-30.236-92.771-30.236-1.045 0-2.088 0.010-3.129 0.030l0.156-0.002c-17.084 0.379-32.471 7.342-43.786 18.442l0.010-0.010c-7.369 8.172-11.878 19.049-11.878 30.978 0 1.080 0.037 2.152 0.11 3.213l-0.008-0.143c1.795 26.812 23.983 47.88 51.092 47.88 2.567 0 5.089-0.189 7.555-0.554l-0.279 0.034h1.536c20.277 0.815 38.332 9.698 51.158 23.506l0.042 0.046c39.624 37.719 72.674 81.886 97.557 130.899l1.259 2.733c5.632 10.24 11.264 20.224 16.64 30.464 14.848 25.6 29.696 53.504 45.568 79.872 30.788 53.58 70.537 98.474 117.675 134.109l1.109 0.803c25.659 18.893 57.89 30.236 92.771 30.236 1.045 0 2.088-0.010 3.129-0.030l-0.156 0.002c17.084-0.379 32.471-7.342 43.786-18.442l-0.010 0.010c6.802-8.012 10.938-18.473 10.938-29.9 0-1.46-0.068-2.905-0.2-4.331l0.014 0.183z" />
51
+ <glyph unicode="&#xe929;" glyph-name="magic-section" d="M1008.896 872.704l-249.856-250.112h176.64c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0h-300.288c-1.46-0.187-3.15-0.294-4.864-0.294s-3.404 0.107-5.062 0.314l0.198-0.020c-2.679 0.362-5.098 0.99-7.393 1.867l0.225-0.075-6.656 2.816h-1.792c-2.050 0.972-3.815 2.082-5.431 3.371l0.055-0.043-5.632 4.864c-1.715 1.716-3.31 3.554-4.769 5.499l-0.095 0.133c-1.246 1.561-2.356 3.326-3.257 5.211l-0.071 0.165c-0.040 0.269-0.063 0.58-0.063 0.896s0.023 0.627 0.067 0.931l-0.004-0.035c-0.96 1.827-1.911 4.026-2.707 6.297l-0.109 0.359c-0.602 1.671-1.219 3.813-1.716 6l-0.076 0.4c-0.181 1.498-0.284 3.233-0.284 4.992s0.103 3.494 0.304 5.199l-0.020-0.207v302.848c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-176.64l248.064 249.856c9.255 9.201 22.011 14.889 36.096 14.889s26.842-5.687 36.098-14.891l-0.002 0.002c9.201-9.255 14.889-22.011 14.889-36.096s-5.687-26.842-14.891-36.098l0.002 0.002zM439.808 324.608v-300.288c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 176.64l-250.112-249.856c-9.255-9.201-22.011-14.889-36.096-14.889s-26.842 5.687-36.098 14.891l0.002-0.002c-9.201 9.255-14.889 22.011-14.889 36.096s5.687 26.842 14.891 36.098l-0.002-0.002 249.856 250.112h-176.64c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h300.288c1.498 0.181 3.233 0.284 4.992 0.284s3.494-0.103 5.199-0.304l-0.207 0.020 6.4-1.792 6.656-2.816h1.792c2.050-0.972 3.815-2.082 5.431-3.371l-0.055 0.043 5.632-4.864c1.715-1.716 3.31-3.554 4.769-5.499l0.095-0.133c1.246-1.561 2.356-3.326 3.257-5.211l0.071-0.165c0.040-0.269 0.063-0.58 0.063-0.896s-0.023-0.627-0.067-0.931l0.004 0.035c0.96-1.827 1.911-4.026 2.707-6.297l0.109-0.359c0.602-1.671 1.219-3.813 1.716-6l0.076-0.4c1.383-3.697 2.3-7.973 2.555-12.427l0.005-0.117zM439.808 871.68v-300.288c0.181-1.498 0.284-3.233 0.284-4.992s-0.103-3.494-0.304-5.199l0.020 0.207c-0.573-2.587-1.19-4.729-1.919-6.818l0.127 0.418c-0.905-2.63-1.856-4.829-2.95-6.941l0.134 0.285c0.040-0.269 0.063-0.58 0.063-0.896s-0.023-0.627-0.067-0.931l0.004 0.035c-0.972-2.050-2.082-3.815-3.371-5.431l0.043 0.055c-1.554-2.078-3.149-3.916-4.864-5.632v0l-5.632-4.864c-1.561-1.246-3.326-2.356-5.211-3.257l-0.165-0.071h-1.792l-6.656-2.816c-2.070-0.802-4.489-1.43-6.998-1.773l-0.17-0.019c-1.46-0.187-3.15-0.294-4.864-0.294s-3.404 0.107-5.062 0.314l0.198-0.020h-302.336c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h176.64l-249.856 247.552c-9.201 9.255-14.889 22.011-14.889 36.096s5.687 26.842 14.891 36.098l-0.002-0.002c9.255 9.201 22.011 14.889 36.096 14.889s26.842-5.687 36.098-14.891l-0.002 0.002 250.112-249.856v176.64c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0zM1008.896-48.896c-9.255-9.201-22.011-14.889-36.096-14.889s-26.842 5.687-36.098 14.891l0.002-0.002-250.112 249.856v-176.64c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 300.288c-0.181 1.498-0.284 3.233-0.284 4.992s0.103 3.494 0.304 5.199l-0.020-0.207c0.573 2.587 1.19 4.729 1.919 6.818l-0.127-0.418c0.874 2.817 1.83 5.191 2.95 7.469l-0.134-0.301c-0.040 0.269-0.063 0.58-0.063 0.896s0.023 0.627 0.067 0.931l-0.004-0.035c0.972 2.050 2.082 3.815 3.371 5.431l-0.043-0.055c1.554 2.078 3.149 3.916 4.864 5.632v0l5.632 4.864c1.561 1.246 3.326 2.356 5.211 3.257l0.165 0.071h1.792l6.656 2.816 6.4 1.792c1.498 0.181 3.233 0.284 4.992 0.284s3.494-0.103 5.199-0.304l-0.207 0.020h302.848c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0h-176.64l249.856-250.112c8.608-9.139 13.899-21.488 13.899-35.072s-5.29-25.933-13.923-35.098l0.024 0.026z" />
52
+ <glyph unicode="&#xe92a;" glyph-name="multi-scroll" d="M432.64 610.304c-9.267-9.277-22.075-15.016-36.224-15.016s-26.957 5.739-36.224 15.016v0l-85.248 85.248v-625.408c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 625.408l-85.248-85.248c-9.041-8.188-21.091-13.199-34.312-13.199-28.277 0-51.2 22.923-51.2 51.2 0 13.285 5.059 25.388 13.357 34.487l-0.036-0.040 169.216 168.96c0.988 0.925 2.076 1.769 3.238 2.507l0.090 0.053c2.027 1.945 4.197 3.791 6.475 5.502l0.181 0.13 3.328 2.048c2.081 1.748 4.436 3.284 6.965 4.519l0.203 0.089c5.657 2.248 12.212 3.551 19.072 3.551s13.415-1.303 19.431-3.676l-0.359 0.125 6.4-3.328c2.067-0.853 3.845-1.974 5.396-3.346l-0.020 0.018 5.632-4.864 3.328-3.584 169.216-168.96c9.125-9.241 14.761-21.946 14.761-35.967 0-14.149-5.739-26.957-15.017-36.224v0zM223.744 870.4c0.037 0 0.081 0 0.125 0 6.776 0 13.244-1.316 19.163-3.707l-0.344 0.123c-5.528 2.137-11.924 3.375-18.61 3.375-6.937 0-13.563-1.333-19.636-3.757l0.357 0.126c5.59 2.428 12.101 3.84 18.942 3.84 0.001 0 0.001 0 0.002 0v0zM1008.896 206.592l-172.544-171.52c-1.996-2.046-4.172-3.897-6.51-5.535l-0.146-0.097-3.328-2.048c-1.759-1.132-3.783-2.165-5.91-2.992l-0.234-0.080c-2.526-1.095-5.52-2.064-8.62-2.753l-0.34-0.063c-2.924-0.649-6.283-1.021-9.728-1.021s-6.804 0.372-10.038 1.078l0.31-0.057c-3.574 0.708-6.664 1.592-9.645 2.699l0.429-0.139-6.4 3.328c-2.067 0.853-3.845 1.974-5.396 3.346l0.020-0.018-6.912 4.352-172.544 171.52c-9.271 9.271-15.004 22.078-15.004 36.224 0 28.293 22.936 51.228 51.228 51.228 14.146 0 26.953-5.734 36.224-15.004l85.248-85.248v625.408c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-625.408l85.248 85.248c9.4 10.31 22.887 16.753 37.88 16.753 28.277 0 51.2-22.923 51.2-51.2 0-15.056-6.499-28.594-16.844-37.963l-0.044-0.039z" />
53
+ <glyph unicode="&#xe92b;" glyph-name="parallax" horiz-adv-x="847" d="M841.472 629.504c-8.619 16.836-25.849 28.16-45.723 28.16-0.035 0-0.071 0-0.106 0h-179.194l82.432 234.24c1.656 4.818 2.612 10.37 2.612 16.145 0 11.464-3.768 22.048-10.133 30.582l0.096-0.135c-9.398 13.083-24.57 21.504-41.708 21.504-0.007 0-0.014 0-0.021 0h-387.839c-0.034 0-0.074 0-0.113 0-7.29 0-14.205-1.604-20.411-4.477l0.301 0.125c-1.269-0.32-2.381-0.85-3.356-1.556l0.028 0.020c-3.416-1.68-6.361-3.642-9.013-5.933l0.053 0.045c-1.34-0.998-2.515-2.092-3.56-3.3l-0.024-0.028c-5.82-5.654-10.239-12.719-12.707-20.644l-0.093-0.348-209.408-534.272c-2.173-5.467-3.433-11.803-3.433-18.432 0-28.224 22.837-51.114 51.041-51.2h307.208l-69.12-320.512c-0.057-0.231-0.090-0.496-0.090-0.768s0.033-0.537 0.095-0.791l-0.005 0.023c-0.18-1.613-0.283-3.482-0.283-5.376s0.103-3.763 0.303-5.604l-0.020 0.228c-0.126-1.304-0.198-2.82-0.198-4.352s0.072-3.048 0.213-4.543l-0.015 0.191c0.462-3.187 1.177-6.036 2.146-8.765l-0.098 0.317c3.683-9.814 9.867-17.977 17.787-23.967l0.133-0.097c2.301-1.734 4.901-3.352 7.642-4.73l0.294-0.134 6.656-2.56 6.4-1.792c1.38-0.121 2.986-0.19 4.608-0.19s3.228 0.069 4.815 0.204l-0.207-0.014c2.126-0.433 4.596-0.71 7.12-0.767l0.048-0.001h8.192l5.376 2.304c1.574 0.55 2.934 1.333 4.117 2.321l-0.021-0.017c5.626 3.529 10.376 7.872 14.242 12.928l0.094 0.128 2.304 3.328 455.936 619.008c6.289 8.407 10.070 19.008 10.070 30.493 0 8.391-2.019 16.311-5.597 23.3l0.134-0.289zM438.272 208.128l32.256 152.064c0.728 3.236 1.144 6.951 1.144 10.765 0 28.277-22.923 51.2-51.2 51.2-0.402 0-0.804-0.005-1.204-0.014l0.059 0.001h-293.12l170.496 435.456h280.32l-81.152-230.4-1.28-3.328c-0.77-1.911-1.394-4.15-1.768-6.473l-0.024-0.183v-5.12c-0.064-0.767-0.101-1.659-0.101-2.56s0.037-1.793 0.109-2.676l-0.008 0.116s0-2.56 0-3.584c-0.119-0.961-0.188-2.072-0.188-3.2s0.068-2.239 0.201-3.331l-0.013 0.131c0.549-3.46 1.441-6.56 2.661-9.489l-0.101 0.273v-1.536c0.555-1.388 1.156-2.567 1.849-3.683l-0.057 0.099c0.646-1.671 1.51-3.111 2.578-4.374l-0.018 0.022 2.304-3.072c2.179-2.902 4.622-5.426 7.343-7.617l0.081-0.063c3.711-2.876 7.916-5.441 12.396-7.512l0.404-0.168 4.608-1.792c1.937-0.729 4.191-1.27 6.531-1.525l0.125-0.011c1.266-0.121 2.737-0.19 4.224-0.19s2.958 0.069 4.41 0.204l-0.186-0.014h150.784zM288.768-21.504c-0.119 0.808-0.187 1.74-0.187 2.688s0.068 1.88 0.199 2.792l-0.012-0.104v3.328c-0.126-1.304-0.198-2.82-0.198-4.352s0.072-3.048 0.213-4.543l-0.015 0.191zM528.128 557.568h-4.608z" />
54
+ <glyph unicode="&#xe92c;" glyph-name="particles" horiz-adv-x="1010" d="M878.080 237.056v4.096l-94.208 435.2c0.069 0.423 0.108 0.911 0.108 1.408s-0.039 0.985-0.115 1.46l0.007-0.052c36.629 29.186 59.899 73.792 59.899 123.833 0 87.234-70.718 157.952-157.952 157.952s-157.952-70.718-157.952-157.952c0-0.425 0.002-0.849 0.005-1.274v0.065c0-0.101 0-0.221 0-0.34 0-15.864 2.433-31.161 6.948-45.535l-0.291 1.075-281.088-249.088c-23.858 14.002-52.545 22.272-83.163 22.272-0.013 0-0.026 0-0.039 0h0.002c-94.021 0-170.24-76.219-170.24-170.24s76.219-170.24 170.24-170.24v0c0.207-0.001 0.453-0.001 0.699-0.001 37.1 0 71.373 12.104 99.085 32.579l-0.455-0.321 440.32-162.56c13.692-70.478 74.921-122.958 148.406-122.958 83.417 0 151.040 67.623 151.040 151.040 0 76.713-57.19 140.068-131.26 149.756l-0.762 0.081zM684.288 857.6c0.076 0 0.166 0.001 0.256 0.001 31.529 0 57.088-25.559 57.088-57.088s-25.559-57.088-57.088-57.088c-31.529 0-57.088 25.559-57.088 57.087v0c0 0.076-0.001 0.166-0.001 0.256 0 31.387 25.445 56.832 56.832 56.832 0 0 0 0 0.001 0v0zM100.864 359.936c0.18 38.179 31.171 69.060 69.375 69.060 18.952 0 36.129-7.599 48.65-19.917l-0.009 0.009 3.84-4.096c10.32-12.049 16.61-27.815 16.64-45.050v-0.006c-0.064-16.947-6.041-32.486-15.974-44.673l0.102 0.129-3.84-4.352c-12.538-12.459-29.818-20.16-48.896-20.16-38.293 0-69.34 31.024-69.376 69.309v0.003zM727.296 160.768l-395.52 145.92c5.501 15.884 8.686 34.191 8.704 53.24v0.008c-0.092 27.138-6.51 52.755-17.854 75.484l0.446-0.988 267.776 239.616c25.385-18.72 57.285-29.961 91.809-29.961 0.573 0 1.146 0.003 1.718 0.009l-0.087-0.001h3.328l92.16-424.704c-0.070-0.614-0.11-1.327-0.11-2.048s0.040-1.434 0.117-2.134l-0.008 0.086c-21.923-13.591-39.658-31.982-52.092-53.789l-0.388-0.739zM859.136 37.12c-28.27 0.009-51.184 22.929-51.184 51.2 0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2c0-0.45-0.006-0.899-0.017-1.346l0.001 0.066c-0.715-27.721-23.357-49.92-51.184-49.92-0.006 0-0.011 0-0.017 0h0.001z" />
55
+ <glyph unicode="&#xe92d;" glyph-name="preview-window" d="M718.336-64h-564.736c-84.831 0-153.6 68.769-153.6 153.6v0 564.736c0 84.831 68.769 153.6 153.6 153.6v0h355.84c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0h-355.84c-28.277 0-51.2-22.923-51.2-51.2v0-564.736c0-28.277 22.923-51.2 51.2-51.2v0h564.736c28.277 0 51.2 22.923 51.2 51.2v0 354.304c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-354.304c0-84.831-68.769-153.6-153.6-153.6v0zM820.736 553.472c-0.229-0.001-0.499-0.001-0.769-0.001-111.566 0-202.059 90.224-202.494 201.688v3.882c0 112.26 91.004 203.264 203.264 203.264s203.264-91.004 203.264-203.264v0-3.84c-0.436-111.505-90.929-201.729-202.495-201.729-0.271 0-0.541 0.001-0.811 0.002h0.042zM820.736 857.6c-0.307 0.003-0.669 0.005-1.032 0.005-54.692 0-99.113-43.976-99.831-98.498l-0.001-0.068v-3.84c0-55.706 45.158-100.864 100.864-100.864s100.864 45.158 100.864 100.864v0 3.84c-0.719 54.589-45.14 98.565-99.832 98.565-0.363 0-0.725-0.002-1.087-0.006h0.055z" />
56
+ <glyph unicode="&#xe92e;" glyph-name="tables" d="M966.144 960h-908.288c-31.953 0-57.856-25.903-57.856-57.856v0-908.288c0-31.953 25.903-57.856 57.856-57.856v0h908.288c31.953 0 57.856 25.903 57.856 57.856v0 908.288c0 31.953-25.903 57.856-57.856 57.856v0zM418.56 844.288h186.88v-187.136h-186.88zM418.56 541.44h186.88v-186.88h-186.88zM302.848 51.712h-187.136v187.136h187.136zM302.848 354.56h-187.136v186.88h187.136zM302.848 657.152h-187.136v187.136h187.136zM605.44 51.712h-186.88v187.136h186.88zM908.288 51.712h-187.136v187.136h187.136zM908.288 354.56h-187.136v186.88h187.136zM908.288 657.152h-187.136v187.136h187.136z" />
57
+ <glyph unicode="&#xe92f;" glyph-name="tabs" d="M972.8 532.48h-921.6c-28.277 0-51.2 22.923-51.2 51.2v0 325.12c0 28.277 22.923 51.2 51.2 51.2v0h921.6c28.277 0 51.2-22.923 51.2-51.2v0-325.12c0-28.277-22.923-51.2-51.2-51.2v0zM102.4 634.88h819.2v222.72h-819.2zM972.8-64h-921.6c-28.277 0-51.2 22.923-51.2 51.2v0 325.12c0 28.277 22.923 51.2 51.2 51.2v0h921.6c28.277 0 51.2-22.923 51.2-51.2v0-325.12c0-28.277-22.923-51.2-51.2-51.2v0zM102.4 38.4h819.2v222.72h-819.2z" />
58
+ <glyph unicode="&#xe930;" glyph-name="trustpilot" d="M195.584-39.424l119.808 374.528-315.392 227.328 389.888 2.816 122.112 369.152 119.296-369.152 392.704-2.816-512-369.152-316.416-232.704zM832-36.864l-320 230.144 221.696 61.44 98.304-291.584z" />
59
+ <glyph unicode="&#xe931;" glyph-name="twitter-feed" d="M322.048 38.4c386.304 0 597.76 320 597.76 597.76 0 8.96 0 17.92 0 27.136 41.023 30.13 75.596 66.169 103.222 107.268l0.97 1.532c-35.109-16.142-75.839-27.862-118.577-33.081l-1.999-0.199c43.321 26.458 75.94 66.791 91.98 114.721l0.436 1.503c-38.467-23.22-83.226-40.975-130.898-50.732l-2.734-0.468c-38.48 41.26-93.16 66.981-153.847 66.981-116.077 0-210.176-94.099-210.176-210.176 0-17.133 2.050-33.786 5.918-49.729l-0.295 1.437c-174.874 9.249-328.64 92.418-431.795 218.582l-0.845 1.066c-18.199-30.472-28.959-67.211-28.959-106.463 0-72.791 37.004-136.939 93.226-174.659l0.757-0.478c-34.967 0.923-67.551 10.298-96.041 26.144l1.065-0.544v-2.56c0.591-100.815 72.070-184.766 167.084-204.562l1.364-0.238c-15.949-4.402-34.263-6.932-53.168-6.932-1.018 0-2.034 0.007-3.049 0.022l0.153-0.002c-14.1 0.109-27.804 1.501-41.090 4.067l1.41-0.227c27.752-84.096 104.81-144.061 196.135-145.917l0.217-0.003c-70.634-55.776-160.879-89.566-259.006-89.856h-0.066c-0.057 0-0.125 0-0.193 0-17.97 0-35.702 1.023-53.139 3.014l2.132-0.198c90.704-59.076 201.703-94.209 320.908-94.209 0.401 0 0.801 0 1.202 0.001h-0.062z" />
60
+ <glyph unicode="&#xe932;" glyph-name="unfold" d="M1024 448c0-28.277-22.923-51.2-51.2-51.2v0h-409.6v-409.6c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 409.6h-409.6c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h409.6v409.6c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-409.6h409.6c28.277 0 51.2-22.923 51.2-51.2v0z" />
61
+ <glyph unicode="&#xe933;" glyph-name="whatsapp-chat" horiz-adv-x="1019" d="M870.4 811.264c-91.866 92.1-218.903 149.081-359.249 149.081-280.225 0-507.392-227.167-507.392-507.392 0-93.548 25.317-181.184 69.472-256.429l-1.295 2.388-71.936-262.912 268.8 70.656c70.087-38.943 153.7-61.891 242.669-61.952h0.019c280.104 0.348 507.038 227.496 507.038 507.648 0 140.159-56.801 267.051-148.639 358.914l0.001-0.001zM512 30.464v0c-0.009 0-0.019 0-0.029 0-79.439 0-153.744 21.982-217.163 60.196l1.896-1.060-15.36 8.96-159.744-41.984 42.752 155.648-9.984 15.872c-40.423 63.543-64.423 140.968-64.423 223.998 0 232.861 188.771 421.632 421.632 421.632s421.632-188.771 421.632-421.632c0-232.442-188.093-420.953-420.376-421.63h-0.065zM742.4 346.368c-12.8 6.4-75.008 37.12-86.528 41.216s-20.224 6.4-28.672-6.4-32.768-41.216-40.192-49.664-14.592-9.472-27.392-3.072c-39.436 15.796-73.35 37.052-102.739 63.273l0.339-0.297c-27.318 25.263-50.755 54.159-69.686 86.044l-0.97 1.764c-7.424 12.544 0 18.688 5.632 25.6 11.043 12.806 21.504 26.932 30.885 41.806l0.859 1.458c1.721 3.231 2.732 7.065 2.732 11.136s-1.011 7.905-2.795 11.266l0.063-0.13c-3.328 6.4-28.672 68.608-39.168 94.208s-20.736 21.248-28.416 21.76h-24.32c-13.568-0.331-25.66-6.382-34.005-15.822l-0.043-0.050c-27.463-25.963-44.557-62.648-44.557-103.324 0-0.665 0.005-1.329 0.014-1.992l-0.001 0.1c4.336-49.989 22.916-94.95 51.609-131.615l-0.409 0.543c6.4-8.448 89.6-136.448 216.576-191.488 18.463-7.996 42.51-16.704 67.087-24.195l5.361-1.405c15.146-4.835 32.567-7.622 50.639-7.622 10.328 0 20.444 0.91 30.271 2.655l-1.039-0.153c24.32 3.584 75.008 30.72 85.504 60.416 5.598 12.575 8.858 27.248 8.858 42.682 0 6.173-0.521 12.224-1.523 18.111l0.089-0.633c-3.072 5.376-11.776 8.448-24.32 14.848z" />
62
+ <glyph unicode="&#xe934;" glyph-name="yelp-reviews" horiz-adv-x="784" d="M289.792 301.056c23.635 7.12 40.616 28.539 40.96 53.976v0.040c0.146 1.563 0.23 3.38 0.23 5.217 0 24.667-15.038 45.822-36.446 54.797l-0.392 0.146-46.336 18.944c-168.192 69.376-168.704 69.376-179.2 69.376-0.438 0.013-0.954 0.021-1.471 0.021-18.86 0-35.338-10.197-44.222-25.379l-0.131-0.242c-20.736-33.024-25.6-121.856-19.712-171.008 1.117-17.27 5.247-33.305 11.871-47.972l-0.351 0.868c8.084-16.521 24.361-27.919 43.393-28.923l0.127-0.005h1.28c9.728 0 25.6 4.608 163.328 49.408l67.072 20.736zM370.176 267.52c-6.839 2.977-14.805 4.708-23.176 4.708-18.048 0-34.216-8.050-45.109-20.756l-0.067-0.080-32-37.888c-117.504-137.984-117.76-139.008-121.6-149.504-1.922-5.083-3.035-10.96-3.035-17.096 0-1.642 0.080-3.266 0.235-4.867l-0.016 0.203c1.159-11.353 5.708-21.468 12.604-29.512l-0.060 0.072c27.136-32.768 141.312-76.8 194.048-76.8 1.686-0.134 3.65-0.211 5.632-0.211s3.946 0.077 5.89 0.227l-0.258-0.016c18.8 2.767 34.093 15.418 40.586 32.417l0.118 0.351c3.584 10.24 3.584 11.008 4.096 173.568 0 0 0 64.768 0 68.096 0.032 0.711 0.050 1.546 0.050 2.384 0 24.854-16.026 45.964-38.308 53.562l-0.398 0.118zM765.184 240.384c-8.704 6.4-9.216 6.656-163.584 57.344l-64.768 22.272c-5.741 2.138-12.373 3.375-19.295 3.375-18.685 0-35.263-9.017-45.622-22.936l-0.108-0.151c-9.107-10.384-14.663-24.080-14.663-39.074 0-11.496 3.266-22.229 8.921-31.322l-0.146 0.252 25.6-42.496c94.976-153.6 96.256-155.136 104.704-162.048 8.213-6.388 18.672-10.242 30.032-10.242 0.152 0 0.304 0.001 0.455 0.002h-0.023c0.093-0.001 0.203-0.001 0.313-0.001 7.659 0 14.943 1.601 21.537 4.488l-0.346-0.135c42.752 16.896 128 125.952 135.168 171.52 0.555 2.829 0.872 6.083 0.872 9.41 0 16.285-7.603 30.795-19.453 40.172l-0.107 0.082zM512.512 371.2h3.584c0.924-0.176 1.986-0.277 3.072-0.277s2.148 0.101 3.178 0.294l-0.106-0.017c7.424 2.816 23.040 6.656 47.872 12.544v0c175.872 42.496 176.896 43.264 186.624 49.664 13.486 9.356 22.205 24.759 22.205 42.199 0 1.547-0.069 3.077-0.203 4.589l0.014-0.195s0 2.304 0 3.072c-4.864 47.104-81.152 159.488-121.6 179.2-6.976 3.795-15.277 6.026-24.099 6.026-10.577 0-20.405-3.207-28.564-8.702l0.183 0.116c-9.216-6.144-9.216-6.144-105.472-137.728l-40.704-55.296c-7.512-9.483-12.050-21.619-12.050-34.816 0-12.296 3.941-23.672 10.628-32.934l-0.114 0.166c10.945-16.98 29.76-28.063 51.164-28.063 1.544 0 3.075 0.058 4.59 0.171l-0.202-0.012zM388.864 921.088c-5.462 18.62-20.382 32.775-39.068 37.051l-0.356 0.069c-48.64 11.776-219.136-35.84-253.44-71.424-9.96-9.364-16.163-22.625-16.163-37.334 0-4.471 0.573-8.808 1.65-12.942l-0.079 0.356c-0.053-0.461-0.083-0.995-0.083-1.536s0.030-1.075 0.088-1.601l-0.006 0.065c4.864-9.984 161.024-256 208.64-330.752 19.968-32.256 41.984-48.64 65.024-48.64 6.062 0.065 11.863 1.090 17.287 2.931l-0.391-0.115c29.952 8.96 43.776 37.12 41.728 83.712-2.56 58.88-22.784 362.24-25.6 380.16z" />
63
+ <glyph unicode="&#xe935;" glyph-name="banner" d="M1015.808 121.6l-296.192 484.864c-9.972 15.491-27.129 25.605-46.648 25.605-0.25 0-0.5-0.002-0.749-0.005h0.038c-0.163 0.002-0.356 0.003-0.549 0.003-19.641 0-36.923-10.1-46.935-25.389l-0.131-0.214-284.672-465.664h-198.144l122.88 201.216 45.056-73.216c9.303-15.221 25.714-25.298 44.5-25.599l0.044-0.001h-1.536c0.133-0.001 0.291-0.002 0.449-0.002 18.36 0 34.529 9.383 43.973 23.615l0.122 0.195c5.033 7.788 8.025 17.305 8.025 27.52s-2.992 19.732-8.147 27.722l0.122-0.202-86.016 140.544c-10.077 16.22-27.796 26.859-48 26.859s-37.923-10.639-47.861-26.62l-0.139-0.239-207.104-340.992c-4.825-7.973-7.681-17.605-7.681-27.904s2.855-19.931 7.818-28.148l-0.137 0.244c9.919-16.953 28.038-28.16 48.775-28.16 0.043 0 0.085 0 0.128 0h911.609c0.028 0 0.061 0 0.093 0 20.463 0 38.33 11.116 47.893 27.638l0.142 0.266c4.669 7.78 7.43 17.168 7.43 27.2 0 10.719-3.152 20.702-8.58 29.073l0.127-0.208zM455.424 140.8l216.32 353.792 216.576-353.792zM332.8 870.4c-85.127-0.725-153.856-69.902-153.856-155.131 0-85.679 69.457-155.136 155.136-155.136s155.136 69.457 155.136 155.136c0 0.088 0 0.176 0 0.264v-0.014c-0.725 85.693-70.36 154.88-156.155 154.88-0.092 0-0.184 0-0.276 0h0.014zM332.8 665.6c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2c28.277 0 51.2-22.923 51.2-51.2v0c0-0.076 0.001-0.166 0.001-0.256 0-28.277-22.923-51.2-51.2-51.2 0 0 0 0-0.001 0v0z" />
64
+ <glyph unicode="&#xe936;" glyph-name="blog" d="M964.096 900.096c-37.044 36.957-88.173 59.809-144.64 59.809s-107.596-22.852-144.644-59.813l-590.332-590.076c-6.357-6.46-11.016-14.609-13.24-23.713l-0.072-0.351-69.632-286.72c-0.897-3.586-1.412-7.703-1.412-11.94 0-14.13 5.724-26.924 14.98-36.188v0c9.226-9.28 21.982-15.043 36.084-15.104h0.012c0.030 0 0.065 0 0.101 0 4.241 0 8.351 0.561 12.261 1.612l-0.329-0.075 106.24 25.6h1.792l179.2 43.52c9.455 2.296 17.604 6.955 24.071 13.319l-0.007-0.007 588.8 590.336c37.339 37.107 60.45 88.494 60.45 145.28 0 56.403-22.801 107.481-59.689 144.519l0.007-0.007zM311.808 103.168l-135.936-33.024-41.472 42.24 32.768 135.424 482.816 481.792c-0.41-2.383-0.644-5.128-0.644-7.928 0-13.735 5.634-26.154 14.716-35.073l116.231-116.231zM891.648 683.008l-39.168-39.168-116.224 116.224c-9.24 9.121-21.943 14.755-35.961 14.755-2.304 0-4.572-0.152-6.796-0.447l0.261 0.028 53.248 53.248c18.1 16.447 42.252 26.517 68.757 26.517 56.554 0 102.4-45.846 102.4-102.4 0-26.504-10.070-50.657-26.592-68.841l0.075 0.084z" />
65
+ <glyph unicode="&#xe937;" glyph-name="button" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM512 857.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM668.16 240.64h-312.32c-28.277 0-51.2 22.923-51.2 51.2v0 312.32c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-261.12h209.92v209.92h-104.96c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h156.16c28.277 0 51.2-22.923 51.2-51.2v0-312.32c0-28.277-22.923-51.2-51.2-51.2v0z" />
66
+ <glyph unicode="&#xe938;" glyph-name="carousel" d="M378.112 69.888c-14.669 0.259-27.859 6.382-37.366 16.117l-0.010 0.011-325.632 322.56c-9.050 9.228-14.636 21.882-14.636 35.84s5.586 26.612 14.644 35.848l-0.008-0.008 325.632 322.56c9.606 9.264 22.697 14.971 37.12 14.971s27.514-5.707 37.136-14.987l-0.016 0.015c9.277-9.267 15.016-22.075 15.016-36.224s-5.739-26.957-15.016-36.224v0l-288.768-285.952 289.536-287.488c9.277-9.267 15.016-22.075 15.016-36.224s-5.739-26.957-15.016-36.224v0c-9.56-9.041-22.496-14.6-36.73-14.6-0.317 0-0.633 0.003-0.949 0.008l0.047-0.001zM645.888 69.888c-0.042 0-0.092 0-0.141 0-14.23 0-27.163 5.555-36.748 14.616l0.025-0.024c-9.277 9.267-15.016 22.075-15.016 36.224s5.739 26.957 15.016 36.224v0l288.768 287.488-289.536 287.488c-9.277 9.267-15.016 22.075-15.016 36.224s5.739 26.957 15.016 36.224v0c9.58 9.322 22.679 15.071 37.12 15.071s27.54-5.749 37.132-15.083l-0.012 0.012 326.4-324.096c9.050-9.228 14.636-21.882 14.636-35.84s-5.586-26.612-14.644-35.848l0.008 0.008-325.632-322.56c-9.517-9.746-22.707-15.869-37.328-16.127l-0.048-0.001z" />
67
+ <glyph unicode="&#xe939;" glyph-name="contact-form" d="M972.8 622.592c-28.277 0-51.2-22.923-51.2-51.2v0-379.392c0-28.277-22.923-51.2-51.2-51.2v0h-716.8c-28.277 0-51.2 22.923-51.2 51.2v0 500.736l377.344-307.2c8.717-7.152 19.977-11.495 32.251-11.52h0.005c0.064 0 0.14 0 0.216 0 12.172 0 23.351 4.247 32.138 11.341l-0.097-0.076 428.544 348.16c4.477 3.717 8.294 8.022 11.387 12.835l0.133 0.221 23.808 23.296c9.508 9.304 15.403 22.267 15.403 36.606 0 12.62-4.566 24.174-12.136 33.1l0.061-0.074c-9.453 11.162-23.478 18.2-39.146 18.2-0.548 0-1.094-0.009-1.637-0.026l0.079 0.002h-842.752c-70.692 0-128-57.308-128-128v0-537.6c0-84.831 68.769-153.6 153.6-153.6v0h716.8c84.831 0 153.6 68.769 153.6 153.6v0 379.392c0 28.277-22.923 51.2-51.2 51.2v0zM837.12 755.2l-325.12-263.936-323.84 263.936z" />
68
+ <glyph unicode="&#xe93a;" glyph-name="countdown" d="M1024 712.704v-619.52c0-70.692-57.308-128-128-128v0h-768c-70.692 0-128 57.308-128 128v0 619.52c0 70.692 57.308 128 128 128v0h136.192v42.496c0 28.277 22.923 51.2 51.2 51.2v0c0.012 0 0.026 0 0.041 0 14.192 0 27.035-5.774 36.309-15.102l0.002-0.002c9.177-9.25 14.849-21.991 14.849-36.056 0-0.104 0-0.208-0.001-0.312v0.016-42.24h290.816v42.24c0 0.012 0 0.026 0 0.041 0 28.277 22.923 51.2 51.2 51.2 14.085 0 26.842-5.687 36.098-14.891l-0.002 0.002c9.28-9.226 15.043-21.982 15.104-36.084v-192.78c0-28.277-22.923-51.2-51.2-51.2v0 0c-28.277 0-51.2 22.923-51.2 51.2v0 47.872h-290.816v-48.128c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 48.128h-136.192c-14.138 0-25.6-11.462-25.6-25.6v0-619.52c0-14.138 11.462-25.6 25.6-25.6v0h768c14.138 0 25.6 11.462 25.6 25.6v0 619.52c0 14.138-11.462 25.6-25.6 25.6v0h-43.008c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h43.008c70.692 0 128-57.308 128-128v0zM315.392 407.040c-28.277 0-51.2 22.923-51.2 51.2v0 0c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0c0-28.277-22.923-51.2-51.2-51.2v0zM315.392 207.36c-28.277 0-51.2 22.923-51.2 51.2v0 1.28c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2c0-28.277-22.923-51.2-51.2-51.2v0zM512 406.784c-13.641 0.127-25.986 5.569-35.087 14.351l0.015-0.015c-9.501 9.308-15.391 22.27-15.391 36.608 0 28.294 22.937 51.231 51.231 51.231 13.956 0 26.609-5.581 35.849-14.632l-0.009 0.008c9.819-9.347 15.926-22.515 15.926-37.11 0-13.963-5.59-26.621-14.653-35.858l0.008 0.008c-9.227-9.048-21.88-14.633-35.837-14.633-0.721 0-1.439 0.015-2.153 0.044l0.102-0.003zM512 206.848c-13.641 0.127-25.986 5.569-35.087 14.351l0.015-0.015v1.28c-7.765 8.927-12.498 20.671-12.498 33.52 0 28.277 22.923 51.2 51.2 51.2 12.018 0 23.069-4.141 31.804-11.073l-0.106 0.081c10.492-9.416 17.062-23.019 17.062-38.158 0-28.277-22.923-51.2-51.2-51.2-0.418 0-0.836 0.005-1.251 0.015l0.062-0.001zM708.608 407.040c-28.277 0-51.2 22.923-51.2 51.2v0 0c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2c0-28.277-22.923-51.2-51.2-51.2v0zM708.608 207.36c-28.277 0-51.2 22.923-51.2 51.2v0 1.28c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2c0-28.277-22.923-51.2-51.2-51.2v0z" />
69
+ <glyph unicode="&#xe93b;" glyph-name="counter" horiz-adv-x="867" d="M552.192 211.968c-0.045 0-0.097 0-0.15 0-13.146 0-25.135 4.954-34.201 13.098l0.047-0.042-118.528 106.752c-10.365 9.381-16.859 22.872-16.896 37.881v215.815c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-193.024l102.4-91.392c10.315-9.401 16.763-22.891 16.763-37.888 0-28.23-22.847-51.124-51.060-51.2h-0.007zM484.864 800.512v57.088h113.408c28.277 0 51.2 22.923 51.2 51.2s-22.923 51.2-51.2 51.2v0h-329.216c-28.277 0-51.2-22.923-51.2-51.2s22.923-51.2 51.2-51.2v0h113.408v-57.088c-216.459-26.479-382.464-209.169-382.464-430.631 0-239.506 194.158-433.664 433.664-433.664s433.664 194.158 433.664 433.664c0 221.462-166.006 404.152-380.369 430.422l-2.095 0.209zM433.664 38.4c-0.076 0-0.166 0-0.256 0-183.093 0-331.52 148.427-331.52 331.52s148.427 331.52 331.52 331.52c183.093 0 331.52-148.427 331.52-331.52 0-0.090 0-0.18 0-0.27v0.014c-0.868-182.602-148.662-330.396-331.181-331.264h-0.083z" />
70
+ <glyph unicode="&#xe93c;" glyph-name="dual-heading" d="M642.56 499.2h327.68c29.691 0 53.76-24.069 53.76-53.76s-24.069-53.76-53.76-53.76h-327.68c-29.691 0-53.76 24.069-53.76 53.76s24.069 53.76 53.76 53.76zM53.76 499.2h327.68c29.691 0 53.76-24.069 53.76-53.76s-24.069-53.76-53.76-53.76h-327.68c-29.691 0-53.76 24.069-53.76 53.76s24.069 53.76 53.76 53.76z" />
71
+ <glyph unicode="&#xe93d;" glyph-name="fancy-text" horiz-adv-x="401" d="M398.080 16.128c2.095-5.875 3.306-12.652 3.306-19.712 0-33.359-27.037-60.404-60.393-60.416h-278.273c-0.51-0.015-1.111-0.024-1.713-0.024-26.6 0-49.252 16.904-57.8 40.556l-0.135 0.428c-1.923 5.656-3.034 12.171-3.034 18.945 0 33.405 26.996 60.504 60.362 60.671h80.144v782.848h-76.8c-0.733-0.031-1.593-0.049-2.457-0.049-26.752 0-49.527 17.027-58.080 40.835l-0.135 0.43c-1.932 5.655-3.047 12.169-3.047 18.944 0 33.358 27.035 60.402 60.389 60.416h278.017c0.487 0.014 1.060 0.022 1.635 0.022 26.406 0 48.953-16.52 57.87-39.789l0.143-0.424c2.086-5.876 3.292-12.654 3.292-19.713 0-33.405-26.997-60.505-60.364-60.671h-80.144v-782.848h76.8c0.686 0.027 1.491 0.043 2.3 0.043 26.51 0 49.131-16.651 57.975-40.064l0.141-0.426z" />
72
+ <glyph unicode="&#xe93e;" glyph-name="google-maps" horiz-adv-x="826" d="M412.928 380.416c-0.004 0-0.008 0-0.013 0-49.482 0-94.279 20.055-126.707 52.48v0c-32.433 32.43-52.493 77.232-52.493 126.72 0 98.969 80.231 179.2 179.2 179.2s179.2-80.231 179.2-179.2c0-98.965-80.223-179.193-179.186-179.2h-0.001zM358.656 505.344c13.895-13.878 33.081-22.46 54.272-22.46 42.392 0 76.761 34.346 76.8 76.729v0.004c-0.019 21.2-8.625 40.386-22.527 54.271l-0.001 0.001c-14.056 13.52-33.191 21.846-54.272 21.846s-40.216-8.327-54.297-21.871l0.025 0.024c-13.878-13.895-22.46-33.081-22.46-54.272s8.583-40.377 22.461-54.273l-0.001 0.001zM825.6 535.040c-14.080-340.224-348.16-566.784-384-588.8l-5.632-3.328-5.632-2.56-4.608-1.536c-0.654-0.112-1.408-0.176-2.176-0.176s-1.522 0.064-2.255 0.187l0.079-0.011c-2.847-0.651-6.116-1.025-9.472-1.025s-6.625 0.373-9.768 1.081l0.296-0.056c-0.654-0.112-1.408-0.176-2.176-0.176s-1.522 0.064-2.255 0.187l0.079-0.011-4.608 1.536c-2.054 0.622-3.836 1.405-5.499 2.37l0.123-0.066-3.584 2.048-2.304 1.536c-25.088 15.36-245.504 165.376-339.968 399.36-6.144 15.104-11.776 30.72-16.64 46.080-1.494 4.592-2.356 9.875-2.356 15.36 0 28.306 22.946 51.252 51.252 51.252 22.821 0 42.158-14.915 48.795-35.529l0.101-0.363c4.096-12.8 8.704-25.6 13.824-38.4 67.328-166.4 214.272-288.768 275.712-334.080 78.592 58.368 300.032 244.48 310.272 489.216 0.060 2.287 0.095 4.98 0.095 7.68 0 171.495-138.905 310.546-310.344 310.784h-0.023c-171.462-0.238-310.367-139.289-310.367-310.784 0-2.701 0.034-5.393 0.103-8.077l-0.008 0.397c0.028-0.638 0.045-1.386 0.045-2.138 0-27.212-21.229-49.466-48.029-51.103l-0.144-0.007h-3.072c-0.012 0-0.027 0-0.041 0-27.557 0-50.029 21.77-51.156 49.050l-0.003 0.102c-0.102 3.432-0.161 7.47-0.161 11.52 0 228.123 184.758 413.094 412.8 413.44h0.033c228.075-0.346 412.833-185.317 412.833-413.44 0-4.051-0.058-8.089-0.174-12.112l0.013 0.592z" />
73
+ <glyph unicode="&#xe93f;" glyph-name="heading" horiz-adv-x="903" d="M903.68 899.84v-91.136c0.006-0.326 0.010-0.711 0.010-1.097 0-27.118-17.496-50.15-41.815-58.423l-0.435-0.128c-5.359-1.725-11.524-2.719-17.921-2.719-33.243 0-60.215 26.848-60.415 60.044v33.043h-271.104v-782.848h76.8c0.458 0.012 0.997 0.019 1.538 0.019 26.498 0 49.143-16.5 58.22-39.786l0.146-0.425c2.087-5.878 3.293-12.657 3.293-19.717 0-33.226-26.708-60.214-59.827-60.666h-277.803c-0.458-0.012-0.997-0.019-1.538-0.019-26.498 0-49.143 16.5-58.22 39.786l-0.146 0.425c-2.086 5.876-3.292 12.654-3.292 19.713 0 33.405 26.997 60.505 60.364 60.671h80.144v782.848h-271.104v-33.024c-0.2-33.215-27.172-60.063-60.415-60.063-6.397 0-12.562 0.994-18.349 2.837l0.428-0.118c-24.754 8.402-42.25 31.433-42.25 58.551 0 0.386 0.004 0.771 0.011 1.155l-0.001-0.058v91.136c0.145 33.257 27.139 60.16 60.415 60.16 0 0 0 0 0.001 0h782.848c0 0 0 0 0.001 0 33.277 0 60.27-26.903 60.415-60.146v-0.014z" />
74
+ <glyph unicode="&#xe940;" glyph-name="icon-list" d="M972.8 739.072h-660.736c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h660.736c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM185.6 790.528c0-0.076 0-0.166 0-0.256 0-51.323-41.605-92.928-92.928-92.928s-92.928 41.605-92.928 92.928c0 51.323 41.605 92.928 92.928 92.928v0c51.175-0.144 92.638-41.518 92.928-92.644v-0.028zM972.8 391.168h-660.736c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h660.736c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM185.344 442.368c0-51.181-41.491-92.672-92.672-92.672s-92.672 41.491-92.672 92.672c0 51.181 41.491 92.672 92.672 92.672s92.672-41.491 92.672-92.672zM972.8 43.008h-660.736c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h660.736c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM185.344 94.208c0-51.181-41.491-92.672-92.672-92.672s-92.672 41.491-92.672 92.672c0 51.181 41.491 92.672 92.672 92.672s92.672-41.491 92.672-92.672z" />
75
+ <glyph unicode="&#xe941;" glyph-name="image-button" d="M972.8 468.48c28.277 0 51.2 22.923 51.2 51.2v0 222.72c0 84.831-68.769 153.6-153.6 153.6v0h-716.8c-84.831 0-153.6-68.769-153.6-153.6v0-584.192c0-84.831 68.769-153.6 153.6-153.6v0h742.4c70.692 0 128 57.308 128 128v0 144.128c0.002 0.141 0.002 0.307 0.002 0.474 0 6.282-1.223 12.278-3.444 17.764l0.114-0.318v2.048c-1.215 2.988-2.503 5.514-3.974 7.915l0.134-0.235c-1.859 2.572-3.706 4.826-5.678 6.962l0.046-0.050-316.928 323.84c-9.193 9.374-21.948 15.226-36.071 15.36h-0.025c-14.213-0.161-27.082-5.786-36.631-14.869l0.023 0.021-508.928-508.16c-6.393 8.45-10.24 19.136-10.24 30.72v0 584.192c0 28.277 22.923 51.2 51.2 51.2v0h716.8c28.277 0 51.2-22.923 51.2-51.2v0-222.72c0-28.277 22.923-51.2 51.2-51.2v0zM657.152 527.104l264.448-271.36v-123.136c0-14.138-11.462-25.6-25.6-25.6v0h-659.2zM434.688 590.080c0-56.554-45.846-102.4-102.4-102.4s-102.4 45.846-102.4 102.4c0 56.554 45.846 102.4 102.4 102.4s102.4-45.846 102.4-102.4z" />
76
+ <glyph unicode="&#xe942;" glyph-name="image-scroll" horiz-adv-x="624" d="M311.808-64c-172.148 0.146-311.662 139.66-311.808 311.794v400.398c0 172.207 139.601 311.808 311.808 311.808s311.808-139.601 311.808-311.808v0-400.384c-0.291-172.090-139.719-311.517-311.78-311.808h-0.028zM311.808 857.6c-115.594-0.146-209.262-93.814-209.408-209.394v-400.398c0-115.653 93.755-209.408 209.408-209.408s209.408 93.755 209.408 209.408v0 400.384c-0.146 115.594-93.814 209.262-209.394 209.408h-0.014zM311.808 488.704c-28.277 0-51.2 22.923-51.2 51.2v0 102.4c0 28.277 22.923 51.2 51.2 51.2s51.2-22.923 51.2-51.2v0-102.4c0-28.277-22.923-51.2-51.2-51.2v0z" />
77
+ <glyph unicode="&#xe943;" glyph-name="image-separator" d="M870.4 24.576h-716.8c-84.831 0-153.6 68.769-153.6 153.6v0 399.104c0 84.831 68.769 153.6 153.6 153.6v0h66.048c0.032 0 0.069 0 0.106 0 19.672 0 36.753 11.095 45.327 27.368l0.134 0.28 16.384 29.184c26.159 49.501 77.3 82.664 136.189 82.688h190.979c58.892-0.024 110.033-33.187 135.789-81.853l0.403-0.835 15.104-29.184c8.708-16.553 25.789-27.648 45.462-27.648 0.037 0 0.075 0 0.112 0h64.762c84.831 0 153.6-68.769 153.6-153.6v0-399.104c0-84.831-68.769-153.6-153.6-153.6v0zM153.6 628.48c-28.277 0-51.2-22.923-51.2-51.2v0-399.104c0-28.277 22.923-51.2 51.2-51.2v0h716.8c28.277 0 51.2 22.923 51.2 51.2v0 399.104c0 28.277-22.923 51.2-51.2 51.2v0h-66.048c-58.892 0.024-110.033 33.187-135.789 81.853l-0.403 0.835-15.36 29.184c-8.685 16.51-25.698 27.589-45.304 27.648h-190.984c-19.614-0.059-36.627-11.138-45.178-27.368l-0.134-0.28-15.36-29.184c-26.159-49.501-77.3-82.664-136.189-82.688h-0.003zM512 189.696c-123.005 0-222.72 99.715-222.72 222.72s99.715 222.72 222.72 222.72c123.005 0 222.72-99.715 222.72-222.72 0-0.090 0-0.18 0-0.27v0.014c-0.146-122.895-99.805-222.464-222.72-222.464 0 0 0 0 0 0v0zM512 532.48c-66.451 0-120.32-53.869-120.32-120.32s53.869-120.32 120.32-120.32c66.451 0 120.32 53.869 120.32 120.32v0c-0.145 66.392-53.928 120.175-120.306 120.32h-0.014z" />
78
+ <glyph unicode="&#xe944;" glyph-name="lottie-animations-fill" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512v0c0 282.77-229.23 512-512 512v0zM815.104 697.856c-1.28-25.6-22.016-43.52-54.784-43.52-0.117 0.001-0.256 0.001-0.395 0.001-21.459 0-41.11-7.743-56.311-20.587l0.129 0.106c-4.444-3.303-8.369-6.66-12.054-10.261l0.022 0.021c-29.226-26.509-54.608-56.449-75.742-89.375l-1.058-1.761c-12.544-19.2-25.6-40.448-40.704-68.096l-19.456-35.072c-9.472-17.664-19.456-35.328-29.44-52.992-7.424-13.568-15.36-26.88-23.040-39.936-11.008-16.896-23.808-37.12-38.912-57.088-27.040-37.641-58.962-69.645-95.295-95.93l-1.217-0.838c-27.86-20.498-62.85-32.803-100.714-32.803-1.223 0-2.443 0.013-3.66 0.038l0.182-0.003c-0.69-0.030-1.5-0.047-2.313-0.047-15.781 0-30.073 6.375-40.442 16.689l0.002-0.002c-6.884 7.419-11.108 17.39-11.108 28.348 0 1.015 0.036 2.021 0.107 3.018l-0.008-0.134c1.28 25.6 22.016 43.52 54.784 43.52 21.567 0.154 41.304 7.861 56.728 20.602l-0.152-0.122c4.444 3.303 8.369 6.66 12.054 10.261l-0.022-0.021c29.226 26.509 54.608 56.449 75.742 89.375l1.058 1.761c12.544 19.2 25.6 40.448 40.704 67.84l3.072 5.12c5.376 10.24 11.008 20.224 16.384 30.208 9.472 17.664 19.456 35.328 29.44 52.992 7.424 13.568 15.36 27.136 23.040 39.936 11.008 17.152 23.808 37.12 38.912 57.088 27.107 37.585 59.019 69.578 95.296 95.926l1.216 0.842c27.719 20.5 62.576 32.812 100.308 32.812 1.366 0 2.728-0.016 4.086-0.048l-0.202 0.004c0.84 0.044 1.823 0.069 2.811 0.069 15.535 0 29.628-6.178 39.954-16.21l-0.014 0.013c6.877-7.382 11.098-17.317 11.098-28.238 0-0.963-0.033-1.919-0.097-2.866l0.007 0.128z" />
79
+ <glyph unicode="&#xe945;" glyph-name="lottie-animations-outline" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM512 857.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM739.328 621.312c-1.926-25.559-23.137-45.566-49.021-45.566-1.759 0-3.497 0.092-5.208 0.273l0.213-0.018c-11.454-0.008-21.934-4.17-30.017-11.062l0.065 0.054c-2.564-1.895-4.824-3.911-6.886-6.116l-0.026-0.028c-19.643-17.531-36.584-37.485-50.523-59.526l-0.677-1.146c-8.704-13.312-17.664-27.904-27.904-46.336l-13.568-25.6c-6.656-12.288-13.568-25.6-20.736-37.376s-10.752-18.944-16.384-27.904l-3.328-5.12c-6.912-11.008-15.104-23.808-25.6-36.096-20.020-27.622-43.546-51.148-70.265-70.543l-0.903-0.625c-21.303-15.57-47.891-25.092-76.679-25.598l-0.121-0.002h-4.096c-16.134 0.135-30.693 6.766-41.211 17.403l-0.005 0.005c-7.215 8.028-11.628 18.702-11.628 30.406 0 1.102 0.039 2.194 0.116 3.276l-0.008-0.145c1.536 25.904 22.918 46.329 49.071 46.329 1.742 0 3.462-0.091 5.157-0.267l-0.212 0.018c11.347 0.187 21.695 4.314 29.771 11.069l-0.075-0.061c2.564 1.895 4.824 3.911 6.886 6.116l0.026 0.028c19.643 17.531 36.584 37.485 50.523 59.526l0.677 1.146c9.472 14.336 18.432 29.184 27.904 46.336l2.048 3.584 6.144 11.52 5.376 9.472c6.656 12.288 13.568 25.6 20.736 37.376s10.496 18.944 16.384 28.16 16.128 25.6 27.904 40.96c20.013 27.628 43.54 51.155 70.265 70.544l0.903 0.624c21.859 16.026 49.289 25.645 78.966 25.645 1.219 0 2.434-0.016 3.645-0.048l-0.179 0.004c15.958-0.22 30.328-6.838 40.695-17.399l0.009-0.009c7.352-8.027 11.858-18.768 11.858-30.561 0-0.957-0.030-1.906-0.088-2.848l0.006 0.129z" />
80
+ <glyph unicode="&#xe946;" glyph-name="media-grid" d="M384 524.8h-332.8c-28.277 0-51.2 22.923-51.2 51.2v0 332.8c0 28.277 22.923 51.2 51.2 51.2v0h332.8c28.277 0 51.2-22.923 51.2-51.2v0-332.8c0-28.277-22.923-51.2-51.2-51.2v0zM102.4 627.2h230.4v230.4h-230.4zM384-64h-332.8c-28.277 0-51.2 22.923-51.2 51.2v0 332.8c0 28.277 22.923 51.2 51.2 51.2v0h332.8c28.277 0 51.2-22.923 51.2-51.2v0-332.8c0-28.277-22.923-51.2-51.2-51.2v0zM102.4 38.4h230.4v230.4h-230.4zM972.8 524.8h-332.8c-28.277 0-51.2 22.923-51.2 51.2v0 332.8c0 28.277 22.923 51.2 51.2 51.2v0h332.8c28.277 0 51.2-22.923 51.2-51.2v0-332.8c0-28.277-22.923-51.2-51.2-51.2v0zM691.2 627.2h230.4v230.4h-230.4zM972.8-64h-332.8c-28.277 0-51.2 22.923-51.2 51.2v0 332.8c0 28.277 22.923 51.2 51.2 51.2v0h332.8c28.277 0 51.2-22.923 51.2-51.2v0-332.8c0-28.277-22.923-51.2-51.2-51.2v0zM691.2 38.4h230.4v230.4h-230.4z" />
81
+ <glyph unicode="&#xe947;" glyph-name="modal-box" horiz-adv-x="1025" d="M751.275-64.769h-589.537c-0.381-0.003-0.831-0.005-1.282-0.005-88.618 0-160.457 71.839-160.457 160.457 0 0.002 0 0.004 0 0.006v0 587.999c0.291 88.397 72.018 159.944 160.456 159.944 0.090 0 0.181 0 0.271 0h371.907c29.445 0 53.315-23.87 53.315-53.315s-23.87-53.315-53.315-53.315h-371.921c-0.076 0-0.166 0.001-0.256 0.001-29.445 0-53.315-23.87-53.315-53.315 0 0 0 0 0-0.001v0-587.999c0.146-29.476 24.074-53.315 53.57-53.315 0 0 0 0 0.001 0h589.537c0 0 0 0 0.001 0 29.496 0 53.425 23.839 53.57 53.301v374.754c0 29.586 23.985 53.571 53.571 53.571s53.571-23.985 53.571-53.571v0-374.74c0 0 0-0.001 0-0.002 0-88.347-71.401-160.018-159.646-160.455h-0.042zM1008.621 642.675c-9.748-10.038-23.37-16.267-38.448-16.267s-28.7 6.229-38.435 16.254l-0.013 0.013-73.308 74.846-76.896-76.896c-9.84-9.84-23.433-15.926-38.448-15.926-30.030 0-54.374 24.344-54.374 54.374 0 15.015 6.086 28.608 15.926 38.448v0l76.896 75.615-73.308 74.589c-10.391 9.753-16.865 23.575-16.865 38.908 0 29.445 23.87 53.315 53.315 53.315 15.334 0 29.156-6.473 38.882-16.836l0.027-0.029 74.589-74.589 76.896 76.896c9.84 9.84 23.433 15.926 38.448 15.926 30.030 0 54.374-24.344 54.374-54.374 0-15.015-6.086-28.608-15.926-38.448l-76.896-76.896 74.589-74.589c8.972-9.555 14.484-22.451 14.484-36.634 0-14.703-5.923-28.023-15.514-37.703l0.004 0.004z" />
82
+ <glyph unicode="&#xe948;" glyph-name="pricing-table" horiz-adv-x="749" d="M589.824 960h-430.592c-88.004-0.291-159.232-71.699-159.232-159.743 0 0 0-0.001 0-0.001v0-704.512c0 0 0-0.001 0-0.001 0-88.044 71.228-159.452 159.204-159.743h430.62c88.004 0.291 159.232 71.699 159.232 159.743 0 0 0 0.001 0 0.001v0 704.512c0 0 0 0.001 0 0.001 0 88.044-71.228 159.452-159.204 159.743h-0.028zM649.984 95.744c0-33.225-26.935-60.16-60.16-60.16v0h-430.592c-33.225 0-60.16 26.935-60.16 60.16v704.512c0 33.225 26.935 60.16 60.16 60.16v0h430.592c33.225 0 60.16-26.935 60.16-60.16v0zM487.168 378.88c-5.15-40.576-33.827-73.292-71.737-84.303l-0.711-0.177v-51.2h-79.36v46.336h-27.136c0 0-0.001 0-0.001 0-21.825 0-39.534 17.62-39.679 39.41v0.014c0.142 21.909 17.792 39.649 39.653 39.936h80.155c11.169 0 20.224 9.055 20.224 20.224s-9.055 20.224-20.224 20.224h-24.064c-0.238-0.002-0.52-0.003-0.803-0.003-52.043 0-95.018 38.824-101.543 89.089l-0.055 0.514c-0.322 3-0.505 6.48-0.505 10.002 0 46.494 31.945 85.528 75.084 96.348l0.685 0.145v47.36h79.104v-44.8h25.6c21.915 0 39.68-17.765 39.68-39.68s-17.765-39.68-39.68-39.68h-81.152c-11.169 0-20.224-9.055-20.224-20.224s9.055-20.224 20.224-20.224h28.16c54.652-0.455 98.781-44.864 98.781-99.581 0-3.427-0.173-6.813-0.511-10.151l0.034 0.42z" />
83
+ <glyph unicode="&#xe949;" glyph-name="progress-bar" d="M969.472 730.88h-355.072c-18.657-30.236-51.603-50.084-89.185-50.084-9.523 0-18.749 1.274-27.515 3.662l0.732-0.17c-44.754 10.952-77.444 50.712-77.444 98.107 0 55.706 45.158 100.864 100.864 100.864 1.217 0 2.429-0.022 3.635-0.064l-0.175 0.005c0.086 0 0.188 0 0.29 0 37.431 0 70.241-19.787 88.54-49.472l0.257-0.449h358.4c0.039 0 0.086 0 0.132 0 28.277 0 51.2-22.923 51.2-51.2 0-5.864-0.986-11.497-2.801-16.744l0.108 0.36c-7.793-20.524-27.297-34.847-50.146-34.847-0.641 0-1.279 0.011-1.914 0.034l0.092-0.003zM326.656 730.88h-271.872c-0.344-0.008-0.75-0.013-1.157-0.013-22.746 0-42.177 14.194-49.918 34.207l-0.124 0.365c-1.762 4.961-2.78 10.683-2.78 16.642 0 28.277 22.923 51.2 51.2 51.2 0.167 0 0.335-0.001 0.502-0.002h272.102c0.344 0.008 0.75 0.013 1.157 0.013 22.746 0 42.177-14.194 49.918-34.207l0.124-0.365c1.763-4.962 2.781-10.685 2.781-16.645 0-28.277-22.923-51.2-51.2-51.2-0.258 0-0.515 0.002-0.772 0.006h0.039zM256 65.28h-201.216c-0.344-0.008-0.75-0.013-1.157-0.013-22.746 0-42.177 14.194-49.918 34.207l-0.124 0.365c-1.762 4.961-2.78 10.683-2.78 16.642 0 28.277 22.923 51.2 51.2 51.2 0.167 0 0.335-0.001 0.502-0.002h201.958c0.344 0.008 0.75 0.013 1.157 0.013 22.746 0 42.177-14.194 49.918-34.207l0.124-0.365c1.765-4.965 2.785-10.691 2.785-16.655 0-28.277-22.923-51.2-51.2-51.2-0.439 0-0.877 0.006-1.313 0.017l0.065-0.001zM972.8 398.080h-93.184c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h93.184c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0zM799.232 449.28c-0.722-56.001-46.288-101.12-102.392-101.12-0.003 0-0.006 0-0.008 0v0c-0.645-0.015-1.406-0.023-2.169-0.023-37.19 0-69.75 19.826-87.686 49.485l-0.257 0.458h-554.24c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h554.24c18.196 30.108 50.75 49.927 87.933 49.927 0.406 0 0.811-0.002 1.216-0.007l-0.062 0.001c0.307 0.003 0.669 0.005 1.032 0.005 56.106 0 101.673-45.122 102.391-101.057l0.001-0.068zM969.472 167.68c0.316 0.007 0.689 0.011 1.062 0.011 22.841 0 42.34-14.313 50.015-34.459l0.123-0.367c1.707-4.888 2.694-10.523 2.694-16.388 0-28.054-22.563-50.838-50.532-51.196h-430.882c-18.035-30.824-50.979-51.201-88.681-51.201-0.143 0-0.286 0-0.429 0.001h0.022c-4.852-0.815-10.442-1.28-16.14-1.28-56.554 0-102.4 45.846-102.4 102.4s45.846 102.4 102.4 102.4c5.699 0 11.288-0.465 16.734-1.361l-0.593 0.081c0.572 0.012 1.247 0.018 1.924 0.018 36.662 0 68.824-19.267 86.913-48.227l0.251-0.431z" />
84
+ <glyph unicode="&#xe94a;" glyph-name="team-members" d="M723.456 414.208c63.021 57.606 102.4 140.17 102.4 231.931 0 173.338-140.518 313.856-313.856 313.856s-313.856-140.518-313.856-313.856c0-91.761 39.379-174.325 102.159-231.714l0.241-0.217c-176.376-63.598-300.249-229.391-300.544-424.156v-0.036c0.145-29.774 24.242-53.871 54.002-54.016h0.014c29.722 0.145 53.76 24.273 53.76 54.015 0 0 0 0 0 0.001v0c0.436 188.804 153.447 341.726 342.244 342.016h123.932c188.825-0.29 341.836-153.212 342.272-341.974v-0.042c-0.082-1.112-0.128-2.409-0.128-3.716 0-29.832 24.184-54.016 54.016-54.016s54.016 24.184 54.016 54.016c0 1.308-0.046 2.605-0.138 3.889l0.010-0.173c-0.295 194.801-124.168 360.594-297.406 423.201l-3.138 0.991zM307.2 646.144c0.148 113.703 92.356 205.82 206.080 205.82 113.815 0 206.080-92.265 206.080-206.080s-92.265-206.080-206.080-206.080c-0.45 0-0.9 0.001-1.349 0.004h0.069c-113.294 0.87-204.8 92.914-204.8 206.33 0 0.002 0 0.004 0 0.006v0z" />
85
+ <glyph unicode="&#xe94b;" glyph-name="testimonials" d="M512 10.752c-0.012 0-0.026 0-0.041 0-14.065 0-26.805 5.671-36.058 14.851l-125.437 125.437c-9.276 9.33-22.119 15.104-36.311 15.104-0.014 0-0.029 0-0.043 0h-160.51c-84.831 0-153.6 68.769-153.6 153.6v0 422.656c0 84.831 68.769 153.6 153.6 153.6v0h90.624c28.277 0 51.2-22.923 51.2-51.2s-22.923-51.2-51.2-51.2v0h-90.624c-28.277 0-51.2-22.923-51.2-51.2v0-422.656c0-28.277 22.923-51.2 51.2-51.2v0h160.512c42.562-0.111 81.037-17.516 108.787-45.555l0.013-0.013 89.088-88.832 89.088 88.832c27.803 27.836 66.23 45.056 108.679 45.056 0.042 0 0.085 0 0.127 0h160.506c28.277 0 51.2 22.923 51.2 51.2v0 423.168c0 28.277-22.923 51.2-51.2 51.2v0h-501.248c-28.277 0-51.2 22.923-51.2 51.2s22.923 51.2 51.2 51.2v0h501.248c84.831 0 153.6-68.769 153.6-153.6v0-422.656c0-84.831-68.769-153.6-153.6-153.6v0h-160.512c-0.012 0-0.026 0-0.041 0-14.192 0-27.035-5.774-36.309-15.102l-125.442-125.442c-9.25-9.177-21.99-14.848-36.055-14.848-0.014 0-0.029 0-0.043 0h0.002zM782.336 514.816c-0.145-34.388-28.056-62.208-62.463-62.208-34.498 0-62.464 27.966-62.464 62.464s27.966 62.464 62.463 62.464v0c34.529-0.145 62.464-28.17 62.464-62.719 0 0 0 0 0-0.001v0zM583.424 514.816c-0.146-34.387-28.056-62.207-62.463-62.207-34.498 0-62.464 27.966-62.464 62.464s27.966 62.464 62.464 62.464c0.090 0 0.18 0 0.269-0.001h-0.014c34.418-0.29 62.208-28.259 62.208-62.718 0-0.001 0-0.001 0-0.002v0zM384 514.816c-0.145-34.388-28.056-62.208-62.463-62.208-34.498 0-62.464 27.966-62.464 62.464s27.966 62.464 62.463 62.464v0c34.529-0.145 62.464-28.17 62.464-62.719 0 0 0 0 0-0.001v0z" />
86
+ <glyph unicode="&#xe94c;" glyph-name="vertical-scroll" horiz-adv-x="230" d="M230.4 844.8c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2zM230.4 448c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2zM230.4 51.2c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2z" />
87
+ <glyph unicode="&#xe94d;" glyph-name="video-box" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM512 857.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM404.736 225.024c-28.051 0.295-50.677 23.104-50.677 51.197 0 18.638 9.959 34.951 24.846 43.906l0.231 0.129 212.736 128-136.192 80.896v-71.424c0-28.277-22.923-51.2-51.2-51.2s-51.2 22.923-51.2 51.2v0 162.048c0.318 28.034 23.118 50.637 51.197 50.637 9.427 0 18.259-2.548 25.845-6.992l-0.242 0.131 286.72-171.776c14.875-9.135 24.646-25.314 24.646-43.776s-9.771-34.641-24.424-43.649l-0.222-0.127-285.952-171.776c-7.445-4.587-16.448-7.337-26.088-7.424h-0.024z" />
88
+ <glyph unicode="&#xe94e;" glyph-name="pa-admin-icon" d="M918.187 628.907c0-13.653-13.653-27.307-27.307-27.307h-249.173c-13.653 0-30.72 10.24-34.133 23.893l-81.92 256c-3.413 13.653 3.413 23.893 6.827 23.893s17.067-6.827 30.72-17.067l314.027-180.907c13.653-6.827 37.547-27.307 40.96-37.547-3.413-6.827 0-27.307 0-40.96zM501.76 881.493l-81.92-256c-3.413-13.653-20.48-23.893-34.133-23.893h-252.587c-13.653 0-27.307 13.653-27.307 27.307s6.827 47.787 10.24 54.613c6.827 6.827 20.48 20.48 34.133 27.307l314.027 180.907c13.653 6.827 30.72 17.067 37.547 17.067 3.413 0 3.413-13.653 0-27.307zM723.627 103.253l-163.84-98.987c-13.653-6.827-44.373-20.48-51.2-17.067-10.24 3.413-27.307 10.24-40.96 17.067l-167.253 95.573c-13.653 6.827-13.653 20.48 0 30.72l191.147 139.947c13.653 6.827 30.72 6.827 44.373 0l191.147-139.947c10.24-6.827 10.24-20.48-3.413-27.307zM918.187 553.813v-286.72c0-13.653-6.827-47.787-10.24-54.613-6.827-6.827-20.48-17.067-34.133-27.307l-81.92-44.373c-13.653-6.827-27.307-3.413-30.72 10.24l-75.093 228.693c-3.413 13.653 0 34.133 13.653 40.96l197.973 143.36c10.24 10.24 20.48 6.827 20.48-10.24zM337.92 383.147l-75.093-228.693c-3.413-13.653-20.48-20.48-30.72-10.24l-78.507 47.787c-13.653 6.827-37.547 27.307-40.96 37.547s-6.827 27.307-6.827 44.373v286.72c0 13.653 10.24 20.48 20.48 10.24l197.973-143.36c13.653-13.653 17.067-30.72 13.653-44.373z" />
89
+ <glyph unicode="&#xe94f;" glyph-name="ihover" horiz-adv-x="847" d="M841.472 629.504c-8.619 16.836-25.849 28.16-45.723 28.16-0.035 0-0.071 0-0.106 0h-179.194l82.432 234.24c1.656 4.818 2.612 10.37 2.612 16.145 0 11.464-3.768 22.048-10.133 30.582l0.096-0.135c-9.398 13.083-24.57 21.504-41.708 21.504-0.007 0-0.014 0-0.021 0h-387.839c-0.034 0-0.074 0-0.113 0-7.29 0-14.205-1.604-20.411-4.477l0.301 0.125c-1.269-0.32-2.381-0.85-3.356-1.556l0.028 0.020c-3.416-1.68-6.361-3.642-9.013-5.933l0.053 0.045c-1.34-0.998-2.515-2.092-3.56-3.3l-0.024-0.028c-5.82-5.654-10.239-12.719-12.707-20.644l-0.093-0.348-209.408-534.272c-2.173-5.467-3.433-11.803-3.433-18.432 0-28.224 22.837-51.114 51.041-51.2h307.208l-69.12-320.512c-0.057-0.231-0.090-0.496-0.090-0.768s0.033-0.537 0.095-0.791l-0.005 0.023c-0.18-1.613-0.283-3.482-0.283-5.376s0.103-3.763 0.303-5.604l-0.020 0.228c-0.126-1.304-0.198-2.82-0.198-4.352s0.072-3.048 0.213-4.543l-0.015 0.191c0.462-3.187 1.177-6.036 2.146-8.765l-0.098 0.317c3.683-9.814 9.867-17.977 17.787-23.967l0.133-0.097c2.301-1.734 4.901-3.352 7.642-4.73l0.294-0.134 6.656-2.56 6.4-1.792c1.38-0.121 2.986-0.19 4.608-0.19s3.228 0.069 4.815 0.204l-0.207-0.014c2.126-0.433 4.596-0.71 7.12-0.767l0.048-0.001h8.192l5.376 2.304c1.574 0.55 2.934 1.333 4.117 2.321l-0.021-0.017c5.626 3.529 10.376 7.872 14.242 12.928l0.094 0.128 2.304 3.328 455.936 619.008c6.289 8.407 10.070 19.008 10.070 30.493 0 8.391-2.019 16.311-5.597 23.3l0.134-0.289zM438.272 208.128l32.256 152.064c0.728 3.236 1.144 6.951 1.144 10.765 0 28.277-22.923 51.2-51.2 51.2-0.402 0-0.804-0.005-1.204-0.014l0.059 0.001h-293.12l170.496 435.456h280.32l-81.152-230.4-1.28-3.328c-0.77-1.911-1.394-4.15-1.768-6.473l-0.024-0.183v-5.12c-0.064-0.767-0.101-1.659-0.101-2.56s0.037-1.793 0.109-2.676l-0.008 0.116s0-2.56 0-3.584c-0.119-0.961-0.188-2.072-0.188-3.2s0.068-2.239 0.201-3.331l-0.013 0.131c0.549-3.46 1.441-6.56 2.661-9.489l-0.101 0.273v-1.536c0.555-1.388 1.156-2.567 1.849-3.683l-0.057 0.099c0.646-1.671 1.51-3.111 2.578-4.374l-0.018 0.022 2.304-3.072c2.179-2.902 4.622-5.426 7.343-7.617l0.081-0.063c3.711-2.876 7.916-5.441 12.396-7.512l0.404-0.168 4.608-1.792c1.937-0.729 4.191-1.27 6.531-1.525l0.125-0.011c1.266-0.121 2.737-0.19 4.224-0.19s2.958 0.069 4.41 0.204l-0.186-0.014h150.784zM288.768-21.504c-0.119 0.808-0.187 1.74-0.187 2.688s0.068 1.88 0.199 2.792l-0.012-0.104v3.328c-0.126-1.304-0.198-2.82-0.198-4.352s0.072-3.048 0.213-4.543l-0.015 0.191zM528.128 557.568h-4.608z" />
90
+ </font></defs></svg>
admin/assets/fonts/pa-dashboard.ttf ADDED
Binary file
admin/assets/fonts/pa-dashboard.woff ADDED
Binary file
admin/assets/fonts/pa-icon.eot DELETED
Binary file
admin/assets/fonts/pa-icon.svg DELETED
@@ -1,11 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Generated by IcoMoon</metadata>
5
- <defs>
6
- <font id="icomoon" horiz-adv-x="1024">
7
- <font-face units-per-em="1024" ascent="960" descent="-64" />
8
- <missing-glyph horiz-adv-x="1024" />
9
- <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
- <glyph unicode="&#xe900;" glyph-name="pa-admin-icon" d="M918.187 628.907c0-13.653-13.653-27.307-27.307-27.307h-249.173c-13.653 0-30.72 10.24-34.133 23.893l-81.92 256c-3.413 13.653 3.413 23.893 6.827 23.893s17.067-6.827 30.72-17.067l314.027-180.907c13.653-6.827 37.547-27.307 40.96-37.547-3.413-6.827 0-27.307 0-40.96zM501.76 881.493l-81.92-256c-3.413-13.653-20.48-23.893-34.133-23.893h-252.587c-13.653 0-27.307 13.653-27.307 27.307s6.827 47.787 10.24 54.613c6.827 6.827 20.48 20.48 34.133 27.307l314.027 180.907c13.653 6.827 30.72 17.067 37.547 17.067 3.413 0 3.413-13.653 0-27.307zM723.627 103.253l-163.84-98.987c-13.653-6.827-44.373-20.48-51.2-17.067-10.24 3.413-27.307 10.24-40.96 17.067l-167.253 95.573c-13.653 6.827-13.653 20.48 0 30.72l191.147 139.947c13.653 6.827 30.72 6.827 44.373 0l191.147-139.947c10.24-6.827 10.24-20.48-3.413-27.307zM918.187 553.813v-286.72c0-13.653-6.827-47.787-10.24-54.613-6.827-6.827-20.48-17.067-34.133-27.307l-81.92-44.373c-13.653-6.827-27.307-3.413-30.72 10.24l-75.093 228.693c-3.413 13.653 0 34.133 13.653 40.96l197.973 143.36c10.24 10.24 20.48 6.827 20.48-10.24zM337.92 383.147l-75.093-228.693c-3.413-13.653-20.48-20.48-30.72-10.24l-78.507 47.787c-13.653 6.827-37.547 27.307-40.96 37.547s-6.827 27.307-6.827 44.373v286.72c0 13.653 10.24 20.48 20.48 10.24l197.973-143.36c13.653-13.653 17.067-30.72 13.653-44.373z" />
11
- </font></defs></svg>
 
 
 
 
 
 
 
 
 
 
 
admin/assets/fonts/pa-icon.ttf DELETED
Binary file
admin/assets/fonts/pa-icon.woff DELETED
Binary file
admin/images/lock.svg ADDED
@@ -0,0 +1 @@
 
1
+ <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="28.79" height="44.21" viewBox="0 0 28.79 44.21"><title>lock</title><path d="M28.9,15.07a16.52,16.52,0,0,1,3.91,2.35V10.63A10.25,10.25,0,0,0,22.58.39h-.16A10.25,10.25,0,0,0,12.19,10.63v6.79a16.52,16.52,0,0,1,3.91-2.35c.38-.16.78-.31,1.17-.44v-4a5.16,5.16,0,0,1,5.15-5.16h.16a5.17,5.17,0,0,1,5.16,5.16v4C28.12,14.76,28.52,14.91,28.9,15.07Z" transform="translate(-8.1 -0.39)"/><path d="M8.1,30.21A14.39,14.39,0,1,0,27.73,16.79,14.41,14.41,0,0,0,8.1,30.21ZM18.79,27.3a3.71,3.71,0,0,1,7.42.1,3.21,3.21,0,0,1-.06.63,3.71,3.71,0,0,1-1.68,2.51A1,1,0,0,0,24,31.61l1.1,5.22a.51.51,0,0,1-.5.62H20.38a.51.51,0,0,1-.5-.62L21,31.61a1,1,0,0,0-.45-1.08A3.67,3.67,0,0,1,18.85,28,4.32,4.32,0,0,1,18.79,27.3Z" transform="translate(-8.1 -0.39)"/></svg>
admin/images/pa-logo-symbol.png ADDED
Binary file
admin/images/papro-banner.png ADDED
Binary file
admin/images/papro-notice-logo.png ADDED
Binary file
admin/images/popup-pattern.jpg ADDED
Binary file
admin/images/premium-addons-black-friday.png DELETED
Binary file
admin/images/premium-blocks-logo.png DELETED
Binary file
admin/includes/admin-helper.php ADDED
@@ -0,0 +1,748 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * PA Admin Helper
5
+ */
6
+ namespace PremiumAddons\Admin\Includes;
7
+
8
+ use PremiumAddons\Includes\Helper_Functions;
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) exit;
11
+
12
+ /**
13
+ * Class Admin_Helper
14
+ */
15
+ class Admin_Helper {
16
+
17
+ /**
18
+ * Admin settings tabs
19
+ *
20
+ * @var tabs
21
+ */
22
+ private static $tabs = null;
23
+
24
+ /**
25
+ * Class instance
26
+ *
27
+ * @var instance
28
+ */
29
+ private static $instance = null;
30
+
31
+ /**
32
+ * Premium Addons Settings Page Slug
33
+ *
34
+ * @var page_slug
35
+ */
36
+ protected $page_slug = 'premium-addons';
37
+
38
+ /**
39
+ * Current Screen ID
40
+ *
41
+ * @var current_screen
42
+ */
43
+ public static $current_screen = null;
44
+
45
+ /**
46
+ * Elements List
47
+ *
48
+ * @var elements_list
49
+ */
50
+ public static $elements_list = null;
51
+
52
+ /**
53
+ * Integrations List
54
+ *
55
+ * @var integrations_list
56
+ */
57
+ public static $integrations_list = null;
58
+
59
+ /**
60
+ * Constructor for the class
61
+ */
62
+ public function __construct() {
63
+
64
+ //Get current screen ID
65
+ add_action( 'current_screen', array( $this, 'get_current_screen' ) );
66
+
67
+ //Insert admin settings submenus
68
+ $this->set_admin_tabs();
69
+ add_action( 'admin_menu', array ( $this,'add_menu_tabs' ), 100 );
70
+
71
+ //Enqueue required admin scripts
72
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
73
+
74
+ //Plugin Action Links
75
+ add_filter( 'plugin_action_links_' . PREMIUM_ADDONS_BASENAME, array( $this, 'insert_action_links' ) );
76
+ add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
77
+
78
+ //Register AJAX HOOKS
79
+ add_action( 'wp_ajax_pa_save_global_btn', array( $this, 'save_global_btn_value' ) );
80
+ add_action( 'wp_ajax_pa_elements_settings', array( $this, 'save_settings' ) );
81
+ add_action( 'wp_ajax_pa_additional_settings', array( $this, 'save_additional_settings' ) );
82
+
83
+ add_action( 'pa_before_render_admin_tabs', array( $this, 'render_dashboard_header' ) );
84
+
85
+ //PA Duplicator
86
+ if( self::check_duplicator() )
87
+ Duplicator::get_instance();
88
+
89
+ }
90
+
91
+ /**
92
+ * Get Elements List
93
+ *
94
+ * Get a list of all the elements available in the plugin
95
+ *
96
+ * @since 3.20.9
97
+ * @access private
98
+ *
99
+ * @return array widget_list
100
+ */
101
+ private static function get_elements_list() {
102
+
103
+ if ( null === self::$elements_list ) {
104
+
105
+ $prefix = Helper_Functions::get_prefix();
106
+
107
+ self::$elements_list = require_once PREMIUM_ADDONS_PATH . 'admin/includes/elements.php';
108
+
109
+ }
110
+
111
+ return self::$elements_list;
112
+
113
+ }
114
+
115
+ /**
116
+ * Get Integrations List
117
+ *
118
+ * Get a list of all the integrations available in the plugin
119
+ *
120
+ * @since 3.20.9
121
+ * @access private
122
+ *
123
+ * @return array integrations_list
124
+ */
125
+ private static function get_integrations_list() {
126
+
127
+ if ( null === self::$integrations_list ) {
128
+
129
+ self::$integrations_list = [
130
+ 'premium-map-api',
131
+ 'premium-youtube-api',
132
+ 'premium-map-disable-api',
133
+ 'premium-map-cluster',
134
+ 'premium-map-locale',
135
+ 'is-beta-tester'
136
+ ];
137
+
138
+ }
139
+
140
+ return self::$integrations_list;
141
+
142
+ }
143
+
144
+ /**
145
+ * Admin Enqueue Scripts
146
+ *
147
+ * Enqueue the required assets on our admin pages
148
+ *
149
+ * @since 1.0.0
150
+ * @access public
151
+ *
152
+ */
153
+ public function admin_enqueue_scripts() {
154
+
155
+ wp_enqueue_style( 'pa_admin_icon', PREMIUM_ADDONS_URL .'admin/assets/fonts/style.css' );
156
+
157
+ $suffix = is_rtl() ? '-rtl' : '';
158
+
159
+ $current_screen = self::get_current_screen();
160
+
161
+ wp_enqueue_style(
162
+ 'pa-notice-css',
163
+ PREMIUM_ADDONS_URL . 'admin/assets/css/notice' . $suffix . '.css'
164
+ );
165
+
166
+ if( strpos( $current_screen , $this->page_slug ) !== false ) {
167
+
168
+ wp_enqueue_style(
169
+ 'pa-admin-css',
170
+ PREMIUM_ADDONS_URL.'admin/assets/css/admin' . $suffix . '.css'
171
+ );
172
+
173
+ wp_enqueue_style(
174
+ 'pa-sweetalert-style',
175
+ PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/sweetalert2.min.css'
176
+ );
177
+
178
+ wp_enqueue_script(
179
+ 'pa-admin-js',
180
+ PREMIUM_ADDONS_URL .'admin/assets/js/admin.js',
181
+ array('jquery'),
182
+ PREMIUM_ADDONS_VERSION,
183
+ true
184
+ );
185
+
186
+ wp_enqueue_script(
187
+ 'pa-admin-dialog',
188
+ PREMIUM_ADDONS_URL . 'admin/assets/js/dialog/dialog.js',
189
+ array('jquery-ui-position'),
190
+ PREMIUM_ADDONS_VERSION,
191
+ true
192
+ );
193
+
194
+ wp_enqueue_script(
195
+ 'pa-sweetalert-core',
196
+ PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/core.js',
197
+ array('jquery'),
198
+ PREMIUM_ADDONS_VERSION,
199
+ true
200
+ );
201
+
202
+ wp_enqueue_script(
203
+ 'pa-sweetalert',
204
+ PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/sweetalert2.min.js',
205
+ array( 'jquery', 'pa-sweetalert-core' ),
206
+ PREMIUM_ADDONS_VERSION,
207
+ true
208
+ );
209
+
210
+ $theme_slug = Helper_Functions::get_installed_theme();
211
+
212
+ $localized_data = array(
213
+ 'settings' => array(
214
+ 'ajaxurl' => admin_url( 'admin-ajax.php' ),
215
+ 'nonce' => wp_create_nonce( 'pa-settings-tab' ),
216
+ 'theme' => $theme_slug
217
+ ),
218
+ 'premiumRollBackConfirm' => array(
219
+ 'home_url' => home_url(),
220
+ 'i18n' => array(
221
+ 'rollback_to_previous_version' => __( 'Rollback to Previous Version', 'premium-addons-for-elementor' ),
222
+ 'rollback_confirm' => __( 'Are you sure you want to reinstall version ' . PREMIUM_ADDONS_STABLE_VERSION . ' ?', 'premium-addons-for-elementor' ),
223
+ 'yes' => __( 'Continue', 'premium-addons-for-elementor' ),
224
+ 'cancel' => __( 'Cancel', 'premium-addons-for-elementor' ),
225
+ ),
226
+ )
227
+ );
228
+
229
+ //Add PAPRO Rollback Confirm message if PAPRO installed
230
+ if( Helper_Functions::check_papro_version() ) {
231
+ $localized_data['premiumRollBackConfirm']['i18n']['papro_rollback_confirm'] = __( 'Are you sure you want to reinstall version ' . PREMIUM_PRO_ADDONS_STABLE_VERSION . ' ?', 'premium-addons-for-elementor' );
232
+ }
233
+
234
+ wp_localize_script( 'pa-admin-js', 'premiumAddonsSettings', $localized_data );
235
+
236
+ }
237
+ }
238
+
239
+ /**
240
+ * Insert action links.
241
+ *
242
+ * Adds action links to the plugin list table
243
+ *
244
+ * Fired by `plugin_action_links` filter.
245
+ *
246
+ * @since 1.0.0
247
+ * @access public
248
+ *
249
+ */
250
+ public function insert_action_links( $links ) {
251
+
252
+ $papro_path = 'premium-addons-pro/premium-addons-pro-for-elementor.php';
253
+
254
+ $is_papro_installed = Helper_Functions::is_plugin_installed( $papro_path );
255
+
256
+ $settings_link = sprintf( '<a href="%1$s">%2$s</a>', admin_url( 'admin.php?page=' . $this->page_slug . '#tab=elements' ), __( 'Settings', 'premium-addons-for-elementor' ) );
257
+
258
+ $rollback_link = sprintf( '<a href="%1$s">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __( 'Rollback to Version ' . PREMIUM_ADDONS_STABLE_VERSION, 'premium-addons-for-elementor' ) );
259
+
260
+ $new_links = array( $settings_link, $rollback_link );
261
+
262
+ if( ! $is_papro_installed ) {
263
+
264
+ $link = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/pro', 'plugins-page', 'wp-dash', 'get-pro' );
265
+
266
+ $pro_link = sprintf( '<a href="%s" target="_blank" style="color: #39b54a; font-weight: bold;">%s</a>', $link, __( 'Go Pro', 'premium-addons-for-elementor' ) );
267
+ array_push ( $new_links, $pro_link );
268
+ }
269
+
270
+ $new_links = array_merge( $links, $new_links );
271
+
272
+ return $new_links;
273
+ }
274
+
275
+ /**
276
+ * Plugin row meta.
277
+ *
278
+ * Extends plugin row meta links
279
+ *
280
+ * Fired by `plugin_row_meta` filter.
281
+ *
282
+ * @since 3.8.4
283
+ * @access public
284
+ *
285
+ * @return array An array of plugin row meta links.
286
+ */
287
+ public function plugin_row_meta( $meta, $file ) {
288
+
289
+ if( Helper_Functions::is_hide_row_meta() )
290
+ return $meta;
291
+
292
+ if ( PREMIUM_ADDONS_BASENAME == $file ) {
293
+
294
+ $link = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/support', 'plugins-page', 'wp-dash', 'get-support' );
295
+
296
+ $row_meta = [
297
+ 'docs' => '<a href="' . esc_attr( $link ) . '" aria-label="' . esc_attr( __( 'View Premium Addons for Elementor Documentation', 'premium-addons-for-elementor' ) ) . '" target="_blank">' . __( 'Docs & FAQs', 'premium-addons-for-elementor' ) . '</a>',
298
+ 'videos' => '<a href="https://www.youtube.com/watch?v=D3INxWw_jKI&list=PLLpZVOYpMtTArB4hrlpSnDJB36D2sdoTv" aria-label="' . esc_attr( __( 'View Premium Addons Video Tutorials', 'premium-addons-for-elementor' ) ) . '" target="_blank">' . __( 'Video Tutorials', 'premium-addons-for-elementor' ) . '</a>',
299
+ ];
300
+
301
+ $meta = array_merge( $meta, $row_meta );
302
+ }
303
+
304
+ return $meta;
305
+
306
+ }
307
+
308
+ /**
309
+ * Gets current screen slug
310
+ *
311
+ * @since 3.3.8
312
+ * @access public
313
+ *
314
+ * @return string current screen slug
315
+ */
316
+ public static function get_current_screen() {
317
+
318
+ self::$current_screen = get_current_screen()->id;
319
+
320
+ return isset( self::$current_screen ) ? self::$current_screen : false;
321
+
322
+ }
323
+
324
+ /**
325
+ * Set Admin Tabs
326
+ *
327
+ * @access private
328
+ * @since 3.20.8
329
+ *
330
+ * @param $tab_slug string current active tab slug
331
+ */
332
+ private function set_admin_tabs() {
333
+
334
+ $slug = $this->page_slug;
335
+
336
+ self::$tabs = [
337
+ 'general' => [
338
+ 'id' => 'general',
339
+ 'slug' => $slug . '#tab=general',
340
+ 'title' => __('General', 'premium-addons-for-elementor'),
341
+ 'href' => '#tab=general',
342
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/general'
343
+ ],
344
+ 'elements' => [
345
+ 'id' => 'elements',
346
+ 'slug' => $slug . '#tab=elements',
347
+ 'title' => __('Widgets & Add-ons', 'premium-addons-for-elementor'),
348
+ 'href' => '#tab=elements',
349
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/modules-settings'
350
+ ],
351
+ 'features' => [
352
+ 'id' => 'features',
353
+ 'slug' => $slug . '#tab=features',
354
+ 'title' => __('Features', 'premium-addons-for-elementor'),
355
+ 'href' => '#tab=features',
356
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/features'
357
+ ],
358
+ 'integrations' => [
359
+ 'id' => 'integrations',
360
+ 'slug' => $slug . '#tab=integrations',
361
+ 'title' => __('Integrations', 'premium-addons-for-elementor'),
362
+ 'href' => '#tab=integrations',
363
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/integrations'
364
+ ],
365
+ 'version-control' => [
366
+ 'id' => 'vcontrol',
367
+ 'slug' => $slug . '#tab=vcontrol',
368
+ 'title' => __('Version Control', 'premium-addons-for-elementor'),
369
+ 'href' => '#tab=vcontrol',
370
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/version-control'
371
+ ],
372
+ 'white-label' => [
373
+ 'id' => 'white-label',
374
+ 'slug' => $slug . '#tab=white-label',
375
+ 'title' => __('White Labeling', 'premium-addons-for-elementor'),
376
+ 'href' => '#tab=white-label',
377
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/white-label'
378
+ ],
379
+ 'info' => [
380
+ 'id' => 'system-info',
381
+ 'slug' => $slug . '#tab=system-info',
382
+ 'title' => __('System Info', 'premium-addons-for-elementor'),
383
+ 'href' => '#tab=system-info',
384
+ 'template' => PREMIUM_ADDONS_PATH . 'admin/includes/templates/info'
385
+ ]
386
+ ];
387
+
388
+ self::$tabs = apply_filters( 'pa_admin_register_tabs', self::$tabs );
389
+
390
+ }
391
+
392
+ /**
393
+ * Add Menu Tabs
394
+ *
395
+ * Create Submenu Page
396
+ *
397
+ * @since 3.20.9
398
+ * @access public
399
+ *
400
+ * @return void
401
+ */
402
+ public function add_menu_tabs() {
403
+
404
+ $plugin_name = 'Premium Addons for Elementor';
405
+
406
+ call_user_func(
407
+ 'add_menu_page',
408
+ $plugin_name,
409
+ $plugin_name,
410
+ 'manage_options',
411
+ $this->page_slug,
412
+ array( $this , 'render_setting_tabs' ),
413
+ '' ,
414
+ 100
415
+ );
416
+
417
+
418
+ foreach( self::$tabs as $index => $tab ) {
419
+ call_user_func(
420
+ 'add_submenu_page',
421
+ $this->page_slug,
422
+ $tab['title'],
423
+ $tab['title'],
424
+ 'manage_options',
425
+ $tab['slug'],
426
+ '__return_null'
427
+ );
428
+ }
429
+
430
+ remove_submenu_page( $this->page_slug, $this->page_slug );
431
+ }
432
+
433
+ /**
434
+ * Render Setting Tabs
435
+ *
436
+ * Render the final HTML content for admin setting tabs
437
+ *
438
+ * @access public
439
+ * @since 3.20.8
440
+ *
441
+ * @param $tab_slug string current active tab slug
442
+ */
443
+ public function render_setting_tabs() {
444
+
445
+ ?>
446
+ <div class="pa-settings-wrap">
447
+ <?php do_action('pa_before_render_admin_tabs'); ?>
448
+ <div class="pa-settings-tabs">
449
+ <ul class="pa-settings-tabs-list">
450
+ <?php
451
+ foreach( self::$tabs as $key => $tab ) {
452
+ $link = '<li class="pa-settings-tab">';
453
+ $link .= '<a id="pa-tab-link-' . $tab['id'] . '"';
454
+ $link .= 'href="' . $tab['href'] . '">';
455
+ $link .= '<i class="pa-dash-' . $tab['id'] . '"></i>';
456
+ $link .= '<span>' . $tab['title'] . '</span>';
457
+ $link.= '</a>';
458
+ $link .= '</li>';
459
+
460
+ echo $link;
461
+ } ?>
462
+ </ul>
463
+ </div> <!-- Settings Tabs -->
464
+
465
+ <div class="pa-settings-sections">
466
+ <?php
467
+ foreach( self::$tabs as $key => $tab ) {
468
+ echo '<div id="pa-section-' . $tab['id'] . '" class="pa-section pa-section-'. $key .'">';
469
+ include_once $tab['template'] . '.php';
470
+ echo '</div>';
471
+ } ?>
472
+ </div> <!-- Settings Sections -->
473
+ <?php do_action('pa_after_render_admin_tabs'); ?>
474
+ </div> <!-- Settings Wrap -->
475
+ <?php
476
+ }
477
+
478
+ /**
479
+ * Render Dashboard Header
480
+ *
481
+ * @since 4.0.0
482
+ * @access public
483
+ *
484
+ */
485
+ public function render_dashboard_header() {
486
+
487
+ $url = Helper_Functions::get_campaign_link('https://premiumaddons.com/pro/', 'settings-page', 'wp-dash', 'dashboard');
488
+
489
+ $show_logo = Helper_Functions::is_hide_logo();
490
+
491
+ ?>
492
+
493
+ <div class="papro-admin-notice">
494
+ <?php if( ! $show_logo ) : ?>
495
+ <div class="papro-admin-notice-left">
496
+ <div class="papro-admin-notice-logo">
497
+ <img class="pa-notice-logo" src="<?php echo PREMIUM_ADDONS_URL .'admin/images/papro-notice-logo.png'; ?>">
498
+ </div>
499
+ </div>
500
+ <?php endif; ?>
501
+
502
+ <?php if( ! Helper_Functions::check_papro_version() ) : ?>
503
+ <div class="papro-admin-notice-right">
504
+ <div class="papro-admin-notice-info">
505
+ <h4><?php echo __('Get Premium Addons PRO', 'premium-addons-for-elementor'); ?></h4>
506
+ <p><?php echo sprintf( __('Supercharge your Elementor with %sPRO Widgets & Addons%s that you won\'t find anywhere else.', 'premium-addons-for-elementor'), '<span>', '</span>' ); ?></p>
507
+ </div>
508
+ <div class="papro-admin-notice-cta">
509
+ <a class="papro-notice-btn" href="<?php echo $url; ?>" target="_blank"><?php echo __('Get PRO','premium-addons-for-elementor'); ?></a>
510
+ </div>
511
+ </div>
512
+ <?php endif; ?>
513
+ </div>
514
+
515
+ <?php
516
+ }
517
+
518
+ /**
519
+ * Save Settings
520
+ *
521
+ * Save elements settings using AJAX
522
+ *
523
+ * @access public
524
+ * @since 3.20.8
525
+ */
526
+ public function save_settings() {
527
+
528
+ check_ajax_referer( 'pa-settings-tab', 'security' );
529
+
530
+ if (!isset($_POST['fields'])) {
531
+ return;
532
+ }
533
+
534
+ parse_str( $_POST['fields'], $settings );
535
+
536
+ $defaults = self::get_default_elements();
537
+
538
+ $elements = array_merge($defaults, array_fill_keys(array_keys(array_intersect_key($settings, $defaults)), true));
539
+
540
+ update_option( 'pa_save_settings', $elements );
541
+
542
+ wp_send_json_success();
543
+ }
544
+
545
+ /**
546
+ * Save Integrations Control Settings
547
+ *
548
+ * Stores integration and version control settings
549
+ *
550
+ * @since 3.20.8
551
+ * @access public
552
+ *
553
+ */
554
+ public function save_additional_settings() {
555
+
556
+ check_ajax_referer( 'pa-settings-tab', 'security' );
557
+
558
+ if (!isset($_POST['fields'])) {
559
+ return;
560
+ }
561
+
562
+ parse_str( $_POST['fields'], $settings );
563
+
564
+ $new_settings = array(
565
+ 'premium-map-api' => sanitize_text_field( $settings['premium-map-api'] ),
566
+ 'premium-youtube-api' => sanitize_text_field( $settings['premium-youtube-api'] ),
567
+ 'premium-map-disable-api' => intval( $settings['premium-map-disable-api'] ? 1 : 0 ),
568
+ 'premium-map-cluster' => intval( $settings['premium-map-cluster'] ? 1 : 0 ),
569
+ 'premium-map-locale' => sanitize_text_field( $settings['premium-map-locale'] ),
570
+ 'is-beta-tester' => intval( $settings['is-beta-tester'] ? 1 : 0 ),
571
+ );
572
+
573
+ update_option( 'pa_maps_save_settings', $new_settings );
574
+
575
+ wp_send_json_success($settings);
576
+
577
+ }
578
+
579
+ /**
580
+ * Save Global Button Value
581
+ *
582
+ * Saves value for elements global switcher
583
+ *
584
+ * @since 4.0.0
585
+ * @access public
586
+ */
587
+
588
+ public function save_global_btn_value() {
589
+
590
+ check_ajax_referer( 'pa-settings-tab', 'security' );
591
+
592
+ if (!isset($_POST['isGlobalOn'])) {
593
+ wp_send_json_error();
594
+ }
595
+
596
+ $global_btn_value = $_POST['isGlobalOn'];
597
+
598
+ update_option( 'pa_global_btn_value', $global_btn_value );
599
+
600
+ wp_send_json_success();
601
+
602
+ }
603
+
604
+ /**
605
+ * Get default Elements
606
+ *
607
+ * @since 3.20.9
608
+ * @access private
609
+ *
610
+ * @return $default_keys array default keys
611
+ */
612
+ private static function get_default_elements() {
613
+
614
+ $elements = self::get_elements_list();
615
+
616
+ $keys = array();
617
+
618
+ //Now, we need to fill our array with elements keys
619
+ foreach( $elements as $key => $cat ) {
620
+ if( count( $cat['elements'] ) ) {
621
+ foreach( $cat['elements'] as $index => $elem ) {
622
+ array_push( $keys, $elem['key'] );
623
+ }
624
+ }
625
+ }
626
+
627
+ $default_keys = array_fill_keys( $keys, true );
628
+
629
+ return $default_keys;
630
+
631
+ }
632
+
633
+ /**
634
+ * Get Default Interations
635
+ *
636
+ * @since 3.20.9
637
+ * @access private
638
+ *
639
+ * @return $default_keys array default keys
640
+ */
641
+ private static function get_default_integrations() {
642
+
643
+ $settings = self::get_integrations_list();
644
+
645
+ $default_keys = array_fill_keys( $settings, true );
646
+
647
+ return $default_keys;
648
+
649
+ }
650
+
651
+ /**
652
+ * Get enabled widgets
653
+ *
654
+ * @since 3.20.9
655
+ * @access public
656
+ *
657
+ * @return array $enabled_keys enabled elements
658
+ */
659
+ public static function get_enabled_elements() {
660
+
661
+ $defaults = self::get_default_elements();
662
+
663
+ $enabled_keys = get_option( 'pa_save_settings', $defaults );
664
+
665
+ $enabled_keys = array_merge($defaults, $enabled_keys);
666
+
667
+ return $enabled_keys;
668
+
669
+ }
670
+
671
+ /*
672
+ * Check If Premium Templates is enabled
673
+ *
674
+ * @since 3.6.0
675
+ * @access public
676
+ *
677
+ * @return boolean
678
+ */
679
+ public static function check_premium_templates() {
680
+
681
+ $settings = self::get_enabled_elements();
682
+
683
+ if( ! isset( $settings['premium-templates'] ) )
684
+ return true;
685
+
686
+ $is_enabled = $settings['premium-templates'];
687
+
688
+ return $is_enabled;
689
+ }
690
+
691
+
692
+ /*
693
+ * Check If Premium Duplicator is enabled
694
+ *
695
+ * @since 3.20.9
696
+ * @access public
697
+ *
698
+ * @return boolean
699
+ */
700
+ public static function check_duplicator() {
701
+
702
+ $settings = self::get_enabled_elements();
703
+
704
+ if( ! isset( $settings['premium-duplicator'] ) )
705
+ return true;
706
+
707
+ $is_enabled = $settings['premium-duplicator'];
708
+
709
+ return $is_enabled;
710
+ }
711
+
712
+ /**
713
+ * Get Integrations Settings
714
+ *
715
+ * Get plugin integrations settings
716
+ *
717
+ * @since 3.20.9
718
+ * @access public
719
+ *
720
+ * @return array $settings integrations settings
721
+ */
722
+ public static function get_integrations_settings() {
723
+
724
+ $enabled_keys = get_option( 'pa_maps_save_settings', self::get_default_integrations() );
725
+
726
+ return $enabled_keys;
727
+
728
+ }
729
+
730
+ /**
731
+ * Creates and returns an instance of the class
732
+ *
733
+ * @since 1.0.0
734
+ * @access public
735
+ *
736
+ * @return object
737
+ */
738
+ public static function get_instance() {
739
+
740
+ if( self::$instance == null ) {
741
+
742
+ self::$instance = new self;
743
+
744
+ }
745
+
746
+ return self::$instance;
747
+ }
748
+ }
admin/includes/dep/info.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
-
3
- if( ! defined( 'ABSPATH' ) ) exit; //Exit if accessed directly
4
-
5
- function pa_get_sysinfo() {
6
- global $wpdb;
7
-
8
- // Get theme info
9
- $theme_data = wp_get_theme();
10
- $theme = $theme_data->Name . ' ' . $theme_data->Version;
11
-
12
- $return = '### <strong>Begin System Info</strong> ###' . "\n\n";
13
-
14
- // Start with the basics...
15
- $return .= '-- Site Info' . "\n\n";
16
- $return .= 'Site URL: ' . site_url() . "\n";
17
- $return .= 'Home URL: ' . home_url() . "\n";
18
- $return .= 'Multisite: ' . (is_multisite() ? 'Yes' : 'No') . "\n";
19
-
20
- // Theme info
21
- $plugin = get_plugin_data(PREMIUM_ADDONS_FILE);
22
-
23
-
24
- // Plugin configuration
25
- $return .= "\n" . '-- Plugin Configuration' . "\n\n";
26
- $return .= 'Name: ' . $plugin['Name'] . "\n";
27
- $return .= 'Version: ' . $plugin['Version'] . "\n";
28
-
29
- // WordPress configuration
30
- $return .= "\n" . '-- WordPress Configuration' . "\n\n";
31
- $return .= 'Version: ' . get_bloginfo('version') . "\n";
32
- $return .= 'Language: ' . (defined('WPLANG') && WPLANG ? WPLANG : 'en_US') . "\n";
33
- $return .= 'Permalink Structure: ' . (get_option('permalink_structure') ? get_option('permalink_structure') : 'Default') . "\n";
34
- $return .= 'Active Theme: ' . $theme . "\n";
35
- $return .= 'Show On Front: ' . get_option('show_on_front') . "\n";
36
-
37
- // Only show page specs if frontpage is set to 'page'
38
- if (get_option('show_on_front') == 'page') {
39
- $front_page_id = get_option('page_on_front');
40
- $blog_page_id = get_option('page_for_posts');
41
-
42
- $return .= 'Page On Front: ' . ($front_page_id != 0 ? get_the_title($front_page_id) . ' (#' . $front_page_id . ')' : 'Unset') . "\n";
43
- $return .= 'Page For Posts: ' . ($blog_page_id != 0 ? get_the_title($blog_page_id) . ' (#' . $blog_page_id . ')' : 'Unset') . "\n";
44
- }
45
-
46
- $return .= 'ABSPATH: ' . ABSPATH . "\n";
47
-
48
-
49
- $return .= 'WP_DEBUG: ' . (defined('WP_DEBUG') ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set') . "\n";
50
- $return .= 'Memory Limit: ' . WP_MEMORY_LIMIT . "\n";
51
- $return .= 'Registered Post Stati: ' . implode(', ', get_post_stati()) . "\n";
52
-
53
- // Get plugins that have an update
54
- $updates = get_plugin_updates();
55
-
56
- // WordPress active plugins
57
- $return .= "\n" . '-- WordPress Active Plugins' . "\n\n";
58
-
59
- $plugins = get_plugins();
60
- $active_plugins = get_option('active_plugins', array());
61
-
62
- foreach ($plugins as $plugin_path => $plugin) {
63
- if (!in_array($plugin_path, $active_plugins))
64
- continue;
65
-
66
- $update = (array_key_exists($plugin_path, $updates)) ? ' (needs update - ' . $updates[$plugin_path]->update->new_version . ')' : '';
67
- $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
68
- }
69
-
70
- // WordPress inactive plugins
71
- $return .= "\n" . '-- WordPress Inactive Plugins' . "\n\n";
72
-
73
- foreach ($plugins as $plugin_path => $plugin) {
74
- if (in_array($plugin_path, $active_plugins))
75
- continue;
76
-
77
- $update = (array_key_exists($plugin_path, $updates)) ? ' (needs update - ' . $updates[$plugin_path]->update->new_version . ')' : '';
78
- $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
79
- }
80
-
81
- if (is_multisite()) {
82
- // WordPress Multisite active plugins
83
- $return .= "\n" . '-- Network Active Plugins' . "\n\n";
84
-
85
- $plugins = wp_get_active_network_plugins();
86
- $active_plugins = get_site_option('active_sitewide_plugins', array());
87
-
88
- foreach ($plugins as $plugin_path) {
89
- $plugin_base = plugin_basename($plugin_path);
90
-
91
- if (!array_key_exists($plugin_base, $active_plugins))
92
- continue;
93
-
94
- $update = (array_key_exists($plugin_path, $updates)) ? ' (needs update - ' . $updates[$plugin_path]->update->new_version . ')' : '';
95
- $plugin = get_plugin_data($plugin_path);
96
- $return .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
97
- }
98
- }
99
-
100
- // Server configuration (really just versioning)
101
- $return .= "\n" . '-- Webserver Configuration' . "\n\n";
102
- $return .= 'PHP Version: ' . PHP_VERSION . "\n";
103
- $return .= 'MySQL Version: ' . $wpdb->db_version() . "\n";
104
- $return .= 'Webserver Info: ' . $_SERVER['SERVER_SOFTWARE'] . "\n";
105
-
106
- // PHP configs... now we're getting to the important stuff
107
- $return .= "\n" . '-- PHP Configuration' . "\n\n";
108
- $return .= 'Memory Limit: ' . ini_get('memory_limit') . "\n";
109
- $return .= 'Upload Max Size: ' . ini_get('upload_max_filesize') . "\n";
110
- $return .= 'Post Max Size: ' . ini_get('post_max_size') . "\n";
111
- $return .= 'Upload Max Filesize: ' . ini_get('upload_max_filesize') . "\n";
112
- $return .= 'Time Limit: ' . ini_get('max_execution_time') . "\n";
113
- $return .= 'Max Input Vars: ' . ini_get('max_input_vars') . "\n";
114
- $return .= 'Display Errors: ' . (ini_get('display_errors') ? 'On (' . ini_get('display_errors') . ')' : 'N/A') . "\n";
115
-
116
- $return = apply_filters('edd_sysinfo_after_php_config', $return);
117
-
118
- // PHP extensions and such
119
- $return .= "\n" . '-- PHP Extensions' . "\n\n";
120
- $return .= 'cURL: ' . (function_exists('curl_init') ? 'Supported' : 'Not Supported') . "\n";
121
- $return .= 'fsockopen: ' . (function_exists('fsockopen') ? 'Supported' : 'Not Supported') . "\n";
122
- $return .= 'SOAP Client: ' . (class_exists('SoapClient') ? 'Installed' : 'Not Installed') . "\n";
123
- $return .= 'Suhosin: ' . (extension_loaded('suhosin') ? 'Installed' : 'Not Installed') . "\n";
124
-
125
- $return .= "\n" . '### End System Info ###';
126
-
127
- return $return;
128
- }
129
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/{dep/admin-helper.php → duplicator.php} RENAMED
@@ -1,113 +1,54 @@
1
  <?php
2
 
 
 
 
3
  namespace PremiumAddons\Admin\Includes;
4
 
5
- use PremiumAddons\Admin\Settings\Modules_Settings;
6
- use PremiumAddons\Helper_Functions;
7
 
8
- if ( ! defined( 'ABSPATH' ) ) exit;
 
 
 
9
 
10
- class Admin_Helper {
11
-
 
12
  const DUPLICATE_ACTION = 'pa_duplicator';
13
 
14
- protected $page_slug = 'premium-addons';
 
 
 
 
 
15
 
16
- private static $instance = null;
 
 
 
 
 
17
 
18
- public static $current_screen = null;
 
 
 
 
 
19
 
20
  /**
21
  * Constructor for the class
22
  */
23
  public function __construct() {
24
 
25
- add_action( 'current_screen', array( $this, 'get_current_screen' ) );
26
-
27
- add_filter( 'plugin_action_links_' . PREMIUM_ADDONS_BASENAME, array( $this, 'insert_action_links' ) );
28
-
29
- add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 2 );
30
-
31
- if( ! Modules_Settings::check_premium_duplicator() )
32
- return;
33
-
34
  add_action( 'admin_action_' . self::DUPLICATE_ACTION, array( $this, 'duplicate_post' ) );
35
- add_filter( 'post_row_actions', array( $this, 'add_duplicator_actions' ), 10, 2 );
36
- add_filter( 'page_row_actions', array( $this, 'add_duplicator_actions' ), 10, 2 );
37
-
38
- }
39
-
40
- /**
41
- * Insert action links.
42
- *
43
- * Adds action links to the plugin list table
44
- *
45
- * Fired by `plugin_action_links` filter.
46
- *
47
- * @since 1.0.0
48
- * @access public
49
- *
50
- */
51
- public function insert_action_links( $links ) {
52
 
53
- $papro_path = 'premium-addons-pro/premium-addons-pro-for-elementor.php';
54
-
55
- $is_papro_installed = Helper_Functions::is_plugin_installed( $papro_path );
56
-
57
- $settings_link = sprintf( '<a href="%1$s">%2$s</a>', admin_url( 'admin.php?page=' . $this->page_slug ), __( 'Settings', 'premium-addons-for-elementor' ) );
58
-
59
- $rollback_link = sprintf( '<a href="%1$s">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __( 'Rollback to Version ' . PREMIUM_ADDONS_STABLE_VERSION, 'premium-addons-for-elementor' ) );
60
-
61
- $new_links = array( $settings_link, $rollback_link );
62
-
63
- if( ! $is_papro_installed ) {
64
-
65
- $theme = Helper_Functions::get_installed_theme();
66
-
67
- $link = sprintf( 'https://premiumaddons.com/pro/?utm_source=plugins-page&utm_medium=wp-dash&utm_campaign=get-pro&utm_term=%s', $theme );
68
-
69
- $pro_link = sprintf( '<a href="%s" target="_blank" style="color: #39b54a; font-weight: bold;">%s</a>', $link, __( 'Go Pro', 'premium-addons-for-elementor' ) );
70
- array_push ( $new_links, $pro_link );
71
- }
72
-
73
- $new_links = array_merge( $links, $new_links );
74
 
75
- return $new_links;
76
- }
77
-
78
- /**
79
- * Plugin row meta.
80
- *
81
- * Extends plugin row meta links
82
- *
83
- * Fired by `plugin_row_meta` filter.
84
- *
85
- * @since 3.8.4
86
- * @access public
87
- *
88
- * @return array An array of plugin row meta links.
89
- */
90
- public function plugin_row_meta( $meta, $file ) {
91
-
92
- if( Helper_Functions::is_hide_row_meta() )
93
- return $meta;
94
 
95
- if ( PREMIUM_ADDONS_BASENAME == $file ) {
96
-
97
- $theme = Helper_Functions::get_installed_theme();
98
-
99
- $link = sprintf( 'https://premiumaddons.com/support/?utm_source=plugins-page&utm_medium=wp-dash&utm_campaign=get-support&utm_term=%s', $theme );
100
-
101
- $row_meta = [
102
- 'docs' => '<a href="' . esc_attr( $link ) . '" aria-label="' . esc_attr( __( 'View Premium Addons for Elementor Documentation', 'premium-addons-for-elementor' ) ) . '" target="_blank">' . __( 'Docs & FAQs', 'premium-addons-for-elementor' ) . '</a>',
103
- 'videos' => '<a href="https://www.youtube.com/watch?v=D3INxWw_jKI&list=PLLpZVOYpMtTArB4hrlpSnDJB36D2sdoTv" aria-label="' . esc_attr( __( 'View Premium Addons Video Tutorials', 'premium-addons-for-elementor' ) ) . '" target="_blank">' . __( 'Video Tutorials', 'premium-addons-for-elementor' ) . '</a>',
104
- ];
105
-
106
- $meta = array_merge( $meta, $row_meta );
107
- }
108
-
109
- return $meta;
110
-
111
  }
112
 
113
  /**
@@ -213,6 +154,7 @@ class Admin_Helper {
213
  * @return void
214
  */
215
  protected static function insert_post( $post ) {
 
216
  $current_user = wp_get_current_user();
217
 
218
  $post_meta = get_post_meta( $post->ID );
@@ -304,22 +246,15 @@ class Admin_Helper {
304
 
305
  }
306
 
 
307
  /**
308
- * Gets current screen slug
309
  *
310
- * @since 3.3.8
311
  * @access public
312
  *
313
- * @return string current screen slug
314
  */
315
- public static function get_current_screen() {
316
-
317
- self::$current_screen = get_current_screen()->id;
318
-
319
- return isset( self::$current_screen ) ? self::$current_screen : false;
320
-
321
- }
322
-
323
  public static function get_instance() {
324
  if( self::$instance == null ) {
325
  self::$instance = new self;
@@ -327,19 +262,4 @@ class Admin_Helper {
327
  return self::$instance;
328
  }
329
 
330
- }
331
-
332
- if( ! function_exists('get_admin_helper_instance') ) {
333
- /**
334
- * Returns an instance of the plugin class.
335
- *
336
- * @since 3.3.8
337
- *
338
- * @return object
339
- */
340
- function get_admin_helper_instance() {
341
- return Admin_Helper::get_instance();
342
- }
343
- }
344
-
345
- get_admin_helper_instance();
1
  <?php
2
 
3
+ /**
4
+ * PA Duplicator.
5
+ */
6
  namespace PremiumAddons\Admin\Includes;
7
 
8
+ if( ! defined( 'ABSPATH') ) exit();
 
9
 
10
+ /**
11
+ * Class Duplicator
12
+ */
13
+ class Duplicator {
14
 
15
+ /**
16
+ * PA Duplicator action.
17
+ */
18
  const DUPLICATE_ACTION = 'pa_duplicator';
19
 
20
+ /**
21
+ * Class object
22
+ *
23
+ * @var instance
24
+ */
25
+ private static $instance = null;
26
 
27
+ /**
28
+ * Elementor slug
29
+ *
30
+ * @var elementor
31
+ */
32
+ private static $elementor = 'elementor';
33
 
34
+ /**
35
+ * PAPRO Slug
36
+ *
37
+ * @var papro
38
+ */
39
+ private static $papro = 'premium-addons-pro';
40
 
41
  /**
42
  * Constructor for the class
43
  */
44
  public function __construct() {
45
 
 
 
 
 
 
 
 
 
 
46
  add_action( 'admin_action_' . self::DUPLICATE_ACTION, array( $this, 'duplicate_post' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ add_filter( 'post_row_actions', array( $this, 'add_duplicator_actions' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ add_filter( 'page_row_actions', array( $this, 'add_duplicator_actions' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
 
54
  /**
154
  * @return void
155
  */
156
  protected static function insert_post( $post ) {
157
+
158
  $current_user = wp_get_current_user();
159
 
160
  $post_meta = get_post_meta( $post->ID );
246
 
247
  }
248
 
249
+
250
  /**
251
+ * Creates and returns an instance of the class
252
  *
253
+ * @since 3.20.9
254
  * @access public
255
  *
256
+ * @return object
257
  */
 
 
 
 
 
 
 
 
258
  public static function get_instance() {
259
  if( self::$instance == null ) {
260
  self::$instance = new self;
262
  return self::$instance;
263
  }
264
 
265
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/elements.php ADDED
@@ -0,0 +1,878 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ use PremiumAddons\Includes\Helper_Functions;
4
+
5
+ $elements = [
6
+ 'cat-1' => [
7
+ 'icon' => 'all',
8
+ 'title' => __('All Widgets', 'premium-addons-for-elementor'),
9
+ 'elements' => [
10
+ // [
11
+ // 'key' => 'premium-woo-products',
12
+ // 'title' => sprintf( '%1$s %2$s', $prefix, __('Products', 'premium-addons-for-elementor') ),
13
+ // 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-lottie-animations-widget/', 'settings-page', 'wp-dash', 'dashboard'),
14
+ // 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/lottie-animations-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
15
+ // 'tutorial' => 'https://www.youtube.com/watch?v=0QWzUpF57dw',
16
+ // ],
17
+ [
18
+ 'key' => 'premium-lottie-widget',
19
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Lottie Animations', 'premium-addons-for-elementor') ),
20
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-lottie-animations-widget/', 'settings-page', 'wp-dash', 'dashboard'),
21
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/lottie-animations-widget/', 'settings-page', 'wp-dash', 'dashboard'),
22
+ 'tutorial' => 'https://www.youtube.com/watch?v=0QWzUpF57dw',
23
+ ],
24
+ [
25
+ 'key' => 'premium-carousel',
26
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Carousel', 'premium-addons-for-elementor') ),
27
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/carousel-widget-for-elementor-page-builder', 'settings-page', 'wp-dash', 'dashboard'),
28
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/carousel/', 'settings-page', 'wp-dash', 'dashboard'),
29
+ 'tutorial' => 'https://www.youtube.com/watch?v=ZMgprLKvq24',
30
+ ],
31
+ [
32
+ 'key' => 'premium-blog',
33
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Blog', 'premium-addons-for-elementor') ),
34
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/blog-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
35
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/blog-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
36
+ ],
37
+ [
38
+ 'key' => 'premium-maps',
39
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Google Maps', 'premium-addons-for-elementor') ),
40
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/google-maps-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
41
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/google-maps/', 'settings-page', 'wp-dash', 'dashboard'),
42
+ 'tutorial' => 'https://www.youtube.com/watch?v=z4taEeCY77Q',
43
+ ],
44
+ [
45
+ 'key' => 'premium-person',
46
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Team Members', 'premium-addons-for-elementor') ),
47
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/persons-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
48
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/persons-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
49
+ ],
50
+ [
51
+ 'key' => 'premium-tabs',
52
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Tabs', 'premium-addons-for-elementor') ),
53
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-tabs-widget/', 'settings-page', 'wp-dash', 'dashboard'),
54
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/tabs-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
55
+ 'is_pro' => true
56
+ ],
57
+ [
58
+ 'key' => 'premium-content-toggle',
59
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Content Switcher', 'premium-addons-for-elementor') ),
60
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/content-switcher-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
61
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-content-switcher/', 'settings-page', 'wp-dash', 'dashboard'),
62
+ 'is_pro' => true
63
+ ],
64
+ [
65
+ 'key' => 'premium-fancytext',
66
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Fancy Text', 'premium-addons-for-elementor') ),
67
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/fancy-text-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
68
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/fancy-text-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
69
+ ],
70
+ [
71
+ 'key' => 'premium-title',
72
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Heading', 'premium-addons-for-elementor') ),
73
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/heading-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
74
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/heading-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
75
+ ],
76
+ [
77
+ 'key' => 'premium-dual-header',
78
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Dual Heading', 'premium-addons-for-elementor') ),
79
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/dual-header-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
80
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/dual-heading-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
81
+ ],
82
+ [
83
+ 'key' => 'premium-divider',
84
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Divider', 'premium-addons-for-elementor') ),
85
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/divider-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
86
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/divider-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
87
+ 'is_pro' => true
88
+ ],
89
+ [
90
+ 'key' => 'premium-grid',
91
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Media Grid', 'premium-addons-for-elementor') ),
92
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/grid-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
93
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/grid/', 'settings-page', 'wp-dash', 'dashboard'),
94
+ ],
95
+ [
96
+ 'key' => 'premium-image-scroll',
97
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Scroll', 'premium-addons-for-elementor') ),
98
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-image-scroll-widget/', 'settings-page', 'wp-dash', 'dashboard'),
99
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
100
+ ],
101
+ [
102
+ 'key' => 'premium-image-separator',
103
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Separator', 'premium-addons-for-elementor') ),
104
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-separator-widget-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
105
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-separator-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
106
+ ],
107
+ [
108
+ 'key' => 'premium-image-comparison',
109
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Comparison', 'premium-addons-for-elementor') ),
110
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-comparison-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
111
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-image-comparison-widget/', 'settings-page', 'wp-dash', 'dashboard'),
112
+ 'is_pro' => true
113
+ ],
114
+ [
115
+ 'key' => 'premium-image-hotspots',
116
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Hotspots', 'premium-addons-for-elementor') ),
117
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-hotspots-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
118
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-hotspots-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
119
+ 'is_pro' => true
120
+ ],
121
+ [
122
+ 'key' => 'premium-img-layers',
123
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Layers', 'premium-addons-for-elementor') ),
124
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-layers-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
125
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/image-layers/', 'settings-page', 'wp-dash', 'dashboard'),
126
+ 'tutorial' => 'https://www.youtube.com/watch?v=D3INxWw_jKI',
127
+ 'is_pro' => true
128
+ ],
129
+ [
130
+ 'key' => 'premium-image-accordion',
131
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Accordion', 'premium-addons-for-elementor') ),
132
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-image-accordion-widget/', 'settings-page', 'wp-dash', 'dashboard'),
133
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-accordion-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
134
+ 'is_pro' => true
135
+ ],
136
+ [
137
+ 'key' => 'premium-videobox',
138
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Video Box', 'premium-addons-for-elementor') ),
139
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/video-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
140
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/video-box/', 'settings-page', 'wp-dash', 'dashboard'),
141
+ ],
142
+ [
143
+ 'key' => 'premium-hscroll',
144
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Horizontal Scroll', 'premium-addons-for-elementor') ),
145
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-horizontal-scroll-widget/', 'settings-page', 'wp-dash', 'dashboard'),
146
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/horizontal-scroll/', 'settings-page', 'wp-dash', 'dashboard'),
147
+ 'tutorial' => 'https://www.youtube.com/watch?v=4HqT_3s-ZXg',
148
+ 'is_pro' => true
149
+ ],
150
+ [
151
+ 'key' => 'premium-vscroll',
152
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Vertical Scroll', 'premium-addons-for-elementor') ),
153
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/vertical-scroll-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
154
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/vertical-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
155
+ 'tutorial' => 'https://www.youtube.com/watch?v=MuLaIn1QXfQ',
156
+ ],
157
+ [
158
+ 'key' => 'premium-color-transition',
159
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Background Transition', 'premium-addons-for-elementor') ),
160
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-background-transition-widget/', 'settings-page', 'wp-dash', 'dashboard'),
161
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/background-transition-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
162
+ 'is_pro' => true
163
+ ],
164
+ [
165
+ 'key' => 'premium-multi-scroll',
166
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Multi Scroll', 'premium-addons-for-elementor') ),
167
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/multi-scroll-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
168
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/multi-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
169
+ 'tutorial' => 'https://www.youtube.com/watch?v=IzYnD6oDYXw',
170
+ 'is_pro' => true
171
+ ],
172
+ [
173
+ 'key' => 'premium-lottie',
174
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Lottie Animations', 'premium-addons-for-elementor') ),
175
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-lottie-animations-section-addon/', 'settings-page', 'wp-dash', 'dashboard'),
176
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/lottie-background/', 'settings-page', 'wp-dash', 'dashboard'),
177
+ 'tutorial' => 'https://www.youtube.com/watch?v=KVrenWNEdkY',
178
+ 'is_pro' => true
179
+ ],
180
+ [
181
+ 'key' => 'premium-parallax',
182
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Parallax', 'premium-addons-for-elementor') ),
183
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/parallax-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
184
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/parallax-section-addon-tutorial-2/', 'settings-page', 'wp-dash', 'dashboard'),
185
+ 'tutorial' => 'https://www.youtube.com/watch?v=hkMNjxLoZ2w',
186
+ 'is_pro' => true
187
+ ],
188
+ [
189
+ 'key' => 'premium-particles',
190
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Particles', 'premium-addons-for-elementor') ),
191
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/particles-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
192
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/particles/', 'settings-page', 'wp-dash', 'dashboard'),
193
+ 'tutorial' => 'https://www.youtube.com/watch?v=bPmWKv4VWrI',
194
+ 'is_pro' => true
195
+ ],
196
+ [
197
+ 'key' => 'premium-gradient',
198
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Animated Gradient', 'premium-addons-for-elementor') ),
199
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/animated-section-gradients-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
200
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/animated-gradient-section-addon-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
201
+ 'tutorial' => 'https://www.youtube.com/watch?v=IL4USvwR6K4',
202
+ 'is_pro' => true
203
+ ],
204
+ [
205
+ 'key' => 'premium-kenburns',
206
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Animated Ken Burns', 'premium-addons-for-elementor') ),
207
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/ken-burns-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
208
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/ken-burns-section-addon-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
209
+ 'tutorial' => 'https://www.youtube.com/watch?v=DUNFjWphZfs',
210
+ 'is_pro' => true
211
+ ],
212
+ [
213
+ 'key' => 'premium-modalbox',
214
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Modal Box', 'premium-addons-for-elementor') ),
215
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/modal-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
216
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/modal-box/', 'settings-page', 'wp-dash', 'dashboard'),
217
+ 'tutorial' => 'https://www.youtube.com/watch?v=3lLxSyf2nyk',
218
+ ],
219
+ [
220
+ 'key' => 'premium-notbar',
221
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Alert Box', 'premium-addons-for-elementor') ),
222
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/alert-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
223
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/alert-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
224
+ 'is_pro' => true
225
+ ],
226
+ [
227
+ 'key' => 'premium-magic-section',
228
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Magic Section', 'premium-addons-for-elementor') ),
229
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/magic-section-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
230
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/magic-section-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
231
+ 'is_pro' => true
232
+ ],
233
+ [
234
+ 'key' => 'premium-prev-img',
235
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Preview Window', 'premium-addons-for-elementor') ),
236
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/preview-window-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
237
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/preview-window-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
238
+ 'tutorial' => 'https://www.youtube.com/watch?v=EmptjFjrc4E',
239
+ 'is_pro' => true
240
+ ],
241
+ [
242
+ 'key' => 'premium-testimonials',
243
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Testimonials', 'premium-addons-for-elementor') ),
244
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/testimonials-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
245
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/testimonials-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
246
+ ],
247
+ [
248
+ 'key' => 'premium-facebook-reviews',
249
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Reviews', 'premium-addons-for-elementor') ),
250
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/facebook-reviews-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
251
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/facebook-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
252
+ 'tutorial' => 'https://www.youtube.com/watch?v=zl-OFo3IFd8',
253
+ 'is_pro' => true
254
+ ],
255
+ [
256
+ 'key' => 'premium-google-reviews',
257
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Google Reviews', 'premium-addons-for-elementor') ),
258
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/google-reviews-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
259
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/google-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
260
+ 'tutorial' => 'https://www.youtube.com/watch?v=Z0EeGyD34Zk',
261
+ 'is_pro' => true
262
+ ],
263
+ [
264
+ 'key' => 'premium-yelp-reviews',
265
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Yelp Reviews', 'premium-addons-for-elementor') ),
266
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-yelp-reviews-widget/', 'settings-page', 'wp-dash', 'dashboard'),
267
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/yelp-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
268
+ 'tutorial' => 'https://www.youtube.com/watch?v=5T-MveVFvns',
269
+ 'is_pro' => true
270
+ ],
271
+ [
272
+ 'key' => 'premium-countdown',
273
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Countdown', 'premium-addons-for-elementor') ),
274
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/countdown-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
275
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/countdown-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
276
+ ],
277
+ [
278
+ 'key' => 'premium-banner',
279
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Banner', 'premium-addons-for-elementor') ),
280
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/banner-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
281
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-banner-widget/', 'settings-page', 'wp-dash', 'dashboard'),
282
+ ],
283
+ [
284
+ 'key' => 'premium-button',
285
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Button', 'premium-addons-for-elementor') ),
286
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/button-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
287
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/button/', 'settings-page', 'wp-dash', 'dashboard'),
288
+ 'tutorial' => 'https://www.youtube.com/watch?v=w4NuCUkCIV4',
289
+ ],
290
+ [
291
+ 'key' => 'premium-image-button',
292
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Button', 'premium-addons-for-elementor') ),
293
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-button-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
294
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/image-button/', 'settings-page', 'wp-dash', 'dashboard'),
295
+ ],
296
+ [
297
+ 'key' => 'premium-flipbox',
298
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Hover Box', 'premium-addons-for-elementor') ),
299
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/flip-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
300
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/flip-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
301
+ 'is_pro' => true
302
+ ],
303
+ [
304
+ 'key' => 'premium-iconbox',
305
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Icon Box', 'premium-addons-for-elementor') ),
306
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/icon-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
307
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/icon-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
308
+ 'is_pro' => true
309
+ ],
310
+ [
311
+ 'key' => 'premium-ihover',
312
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('iHover', 'premium-addons-for-elementor') ),
313
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/ihover-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
314
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-ihover-widget/', 'settings-page', 'wp-dash', 'dashboard'),
315
+ 'is_pro' => true
316
+ ],
317
+ [
318
+ 'key' => 'premium-unfold',
319
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Unfold', 'premium-addons-for-elementor') ),
320
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/unfold-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
321
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-unfold-widget/', 'settings-page', 'wp-dash', 'dashboard'),
322
+ 'is_pro' => true
323
+ ],
324
+ [
325
+ 'key' => 'premium-icon-list',
326
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Bullet List', 'premium-addons-for-elementor') ),
327
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-bullet-list-widget/', 'settings-page', 'wp-dash', 'dashboard'),
328
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/bullet-list-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
329
+ 'tutorial' => 'https://youtube.com/',
330
+ ],
331
+ [
332
+ 'key' => 'premium-facebook-feed',
333
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Feed', 'premium-addons-for-elementor') ),
334
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-facebook-feed-widget/', 'settings-page', 'wp-dash', 'dashboard'),
335
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/facebook-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
336
+ 'is_pro' => true
337
+ ],
338
+ [
339
+ 'key' => 'premium-twitter-feed',
340
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Twitter Feed', 'premium-addons-for-elementor') ),
341
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/twitter-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
342
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/twitter-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
343
+ 'tutorial' => 'https://www.youtube.com/watch?v=wsurRDuR6pg',
344
+ 'is_pro' => true
345
+ ],
346
+ [
347
+ 'key' => 'premium-instagram-feed',
348
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Instagram Feed', 'premium-addons-for-elementor') ),
349
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/instagram-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
350
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/instagram-feed/', 'settings-page', 'wp-dash', 'dashboard'),
351
+ 'is_pro' => true
352
+ ],
353
+ [
354
+ 'key' => 'premium-behance',
355
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Behance Feed', 'premium-addons-for-elementor') ),
356
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/behance-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
357
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/behance-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
358
+ 'tutorial' => 'https://www.youtube.com/watch?v=AXATK3oIXl0',
359
+ 'is_pro' => true
360
+ ],
361
+ [
362
+ 'key' => 'premium-progressbar',
363
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Progress Bar', 'premium-addons-for-elementor') ),
364
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/progress-bar-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
365
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-progress-bar-widget/', 'settings-page', 'wp-dash', 'dashboard'),
366
+ 'tutorial' => 'https://www.youtube.com/watch?v=Y7xqwhgDQJg',
367
+ ],
368
+ [
369
+ 'key' => 'premium-pricing-table',
370
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Pricing Table', 'premium-addons-for-elementor') ),
371
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/pricing-table-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
372
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/pricing-table-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
373
+ ],
374
+ [
375
+ 'key' => 'premium-charts',
376
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Charts', 'premium-addons-for-elementor') ),
377
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/charts-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
378
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/charts-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
379
+ 'tutorial' => 'https://www.youtube.com/watch?v=lZZvslQ2UYU',
380
+ 'is_pro' => true
381
+ ],
382
+ [
383
+ 'key' => 'premium-tables',
384
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Table', 'premium-addons-for-elementor') ),
385
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/table-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
386
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/table-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
387
+ 'is_pro' => true
388
+ ],
389
+ [
390
+ 'key' => 'premium-counter',
391
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Counter', 'premium-addons-for-elementor') ),
392
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/counter-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
393
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/counter-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
394
+ ],
395
+ [
396
+ 'key' => 'premium-contactform',
397
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Contact Form 7', 'premium-addons-for-elementor') ),
398
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/contact-form-7-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
399
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/contact-form-7-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
400
+ ],
401
+ [
402
+ 'key' => 'premium-fb-chat',
403
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Messenger Chat', 'premium-addons-for-elementor') ),
404
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/facebook-messenger-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
405
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/facebook-messenger/', 'settings-page', 'wp-dash', 'dashboard'),
406
+ 'is_pro' => true
407
+ ],
408
+ [
409
+ 'key' => 'premium-whatsapp-chat',
410
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Whatsapp Chat', 'premium-addons-for-elementor') ),
411
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/whatsapp-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
412
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/whatsapp-chat-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
413
+ 'is_pro' => true
414
+ ],
415
+ ]
416
+ ],
417
+ 'cat-2' => [
418
+ 'icon' => 'content',
419
+ 'title' => __('Content Widgets', 'premium-addons-for-elementor'),
420
+ 'elements' => [
421
+ [
422
+ 'key' => 'premium-carousel',
423
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Carousel', 'premium-addons-for-elementor') ),
424
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/carousel-widget-for-elementor-page-builder', 'settings-page', 'wp-dash', 'dashboard'),
425
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/carousel/', 'settings-page', 'wp-dash', 'dashboard'),
426
+ 'tutorial' => 'https://www.youtube.com/watch?v=ZMgprLKvq24',
427
+ ],
428
+ [
429
+ 'key' => 'premium-blog',
430
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Blog', 'premium-addons-for-elementor') ),
431
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/blog-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
432
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/blog-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
433
+ ],
434
+ [
435
+ 'key' => 'premium-maps',
436
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Google Maps', 'premium-addons-for-elementor') ),
437
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/google-maps-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
438
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/google-maps/', 'settings-page', 'wp-dash', 'dashboard'),
439
+ 'tutorial' => 'https://www.youtube.com/watch?v=z4taEeCY77Q',
440
+ ],
441
+ [
442
+ 'key' => 'premium-person',
443
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Team Members', 'premium-addons-for-elementor') ),
444
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/persons-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
445
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/persons-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
446
+ ],
447
+ [
448
+ 'key' => 'premium-tabs',
449
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Tabs', 'premium-addons-for-elementor') ),
450
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-tabs-widget/', 'settings-page', 'wp-dash', 'dashboard'),
451
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/tabs-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
452
+ 'is_pro' => true
453
+ ],
454
+ [
455
+ 'key' => 'premium-content-toggle',
456
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Content Switcher', 'premium-addons-for-elementor') ),
457
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/content-switcher-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
458
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-content-switcher/', 'settings-page', 'wp-dash', 'dashboard'),
459
+ 'is_pro' => true
460
+ ],
461
+ [
462
+ 'key' => 'premium-fancytext',
463
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Fancy Text', 'premium-addons-for-elementor') ),
464
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/fancy-text-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
465
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/fancy-text-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
466
+ ],
467
+ [
468
+ 'key' => 'premium-title',
469
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Heading', 'premium-addons-for-elementor') ),
470
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/heading-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
471
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/heading-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
472
+ ],
473
+ [
474
+ 'key' => 'premium-dual-header',
475
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Dual Heading', 'premium-addons-for-elementor') ),
476
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/dual-header-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
477
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/dual-heading-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
478
+ ],
479
+ [
480
+ 'key' => 'premium-divider',
481
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Divider', 'premium-addons-for-elementor') ),
482
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/divider-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
483
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/divider-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
484
+ 'is_pro' => true
485
+ ],
486
+ ]
487
+ ],
488
+ 'cat-3' => [
489
+ 'icon' => 'images',
490
+ 'title' => __('Image & Video Widgets', 'premium-addons-for-elementor'),
491
+ 'elements' => [
492
+ [
493
+ 'key' => 'premium-grid',
494
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Media Grid', 'premium-addons-for-elementor') ),
495
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/grid-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
496
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/grid-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
497
+ ],
498
+ [
499
+ 'key' => 'premium-image-scroll',
500
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Scroll', 'premium-addons-for-elementor') ),
501
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-image-scroll-widget/', 'settings-page', 'wp-dash', 'dashboard'),
502
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
503
+ ],
504
+ [
505
+ 'key' => 'premium-image-separator',
506
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Separator', 'premium-addons-for-elementor') ),
507
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-separator-widget-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
508
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-separator-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
509
+ ],
510
+ [
511
+ 'key' => 'premium-image-comparison',
512
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Comparison', 'premium-addons-for-elementor') ),
513
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-comparison-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
514
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-image-comparison-widget/', 'settings-page', 'wp-dash', 'dashboard'),
515
+ 'is_pro' => true
516
+ ],
517
+ [
518
+ 'key' => 'premium-image-hotspots',
519
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Hotspots', 'premium-addons-for-elementor') ),
520
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-hotspots-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
521
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-hotspots-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
522
+ 'is_pro' => true
523
+ ],
524
+ [
525
+ 'key' => 'premium-img-layers',
526
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Layers', 'premium-addons-for-elementor') ),
527
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/image-layers-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
528
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/image-layers/', 'settings-page', 'wp-dash', 'dashboard'),
529
+ 'tutorial' => 'https://www.youtube.com/watch?v=D3INxWw_jKI',
530
+ 'is_pro' => true
531
+ ],
532
+ [
533
+ 'key' => 'premium-image-accordion',
534
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Accordion', 'premium-addons-for-elementor') ),
535
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-image-accordion-widget/', 'settings-page', 'wp-dash', 'dashboard'),
536
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-accordion-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
537
+ 'is_pro' => true
538
+ ],
539
+ [
540
+ 'key' => 'premium-videobox',
541
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Video Box', 'premium-addons-for-elementor') ),
542
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/video-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
543
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/video-box/', 'settings-page', 'wp-dash', 'dashboard'),
544
+ ],
545
+ ]
546
+ ],
547
+ 'cat-4' => [
548
+ 'icon' => 'section',
549
+ 'title' => __('Section Addons & Widgets', 'premium-addons-for-elementor'),
550
+ 'elements' => [
551
+ [
552
+ 'key' => 'premium-hscroll',
553
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Horizontal Scroll', 'premium-addons-for-elementor') ),
554
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-horizontal-scroll-widget/', 'settings-page', 'wp-dash', 'dashboard'),
555
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/horizontal-scroll/', 'settings-page', 'wp-dash', 'dashboard'),
556
+ 'tutorial' => 'https://www.youtube.com/watch?v=4HqT_3s-ZXg',
557
+ 'is_pro' => true
558
+ ],
559
+ [
560
+ 'key' => 'premium-vscroll',
561
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Vertical Scroll', 'premium-addons-for-elementor') ),
562
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/vertical-scroll-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
563
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/vertical-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
564
+ 'tutorial' => 'https://www.youtube.com/watch?v=MuLaIn1QXfQ',
565
+ ],
566
+ [
567
+ 'key' => 'premium-color-transition',
568
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Background Transition', 'premium-addons-for-elementor') ),
569
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-background-transition-widget/', 'settings-page', 'wp-dash', 'dashboard'),
570
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/background-transition-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
571
+ 'is_pro' => true
572
+ ],
573
+ [
574
+ 'key' => 'premium-multi-scroll',
575
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Multi Scroll', 'premium-addons-for-elementor') ),
576
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/multi-scroll-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
577
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/multi-scroll-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
578
+ 'tutorial' => 'https://www.youtube.com/watch?v=IzYnD6oDYXw',
579
+ 'is_pro' => true
580
+ ],
581
+ [
582
+ 'key' => 'premium-lottie',
583
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Lottie Animations', 'premium-addons-for-elementor') ),
584
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-lottie-animations-section-addon/', 'settings-page', 'wp-dash', 'dashboard'),
585
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/lottie-background/', 'settings-page', 'wp-dash', 'dashboard'),
586
+ 'tutorial' => 'https://www.youtube.com/watch?v=KVrenWNEdkY',
587
+ 'is_pro' => true
588
+ ],
589
+ [
590
+ 'key' => 'premium-parallax',
591
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Parallax', 'premium-addons-for-elementor') ),
592
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/parallax-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
593
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/parallax-section-addon-tutorial-2/', 'settings-page', 'wp-dash', 'dashboard'),
594
+ 'tutorial' => 'https://www.youtube.com/watch?v=hkMNjxLoZ2w',
595
+ 'is_pro' => true
596
+ ],
597
+ [
598
+ 'key' => 'premium-particles',
599
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Particles', 'premium-addons-for-elementor') ),
600
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/particles-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
601
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/particles/', 'settings-page', 'wp-dash', 'dashboard'),
602
+ 'tutorial' => 'https://www.youtube.com/watch?v=bPmWKv4VWrI',
603
+ 'is_pro' => true
604
+ ],
605
+ [
606
+ 'key' => 'premium-gradient',
607
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Animated Gradient', 'premium-addons-for-elementor') ),
608
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/animated-section-gradients-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
609
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/animated-gradient-section-addon-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
610
+ 'tutorial' => 'https://www.youtube.com/watch?v=IL4USvwR6K4',
611
+ 'is_pro' => true
612
+ ],
613
+ [
614
+ 'key' => 'premium-kenburns',
615
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Animated Ken Burns', 'premium-addons-for-elementor') ),
616
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/ken-burns-section-addon-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
617
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/ken-burns-section-addon-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
618
+ 'tutorial' => 'https://www.youtube.com/watch?v=DUNFjWphZfs',
619
+ 'is_pro' => true
620
+ ],
621
+ ]
622
+ ],
623
+ 'cat-5' => [
624
+ 'icon' => 'off-grid',
625
+ 'title' => __('Off-Grid Widgets', 'premium-addons-for-elementor'),
626
+ 'elements' => [
627
+ [
628
+ 'key' => 'premium-modalbox',
629
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Modal Box', 'premium-addons-for-elementor') ),
630
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/modal-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
631
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/modal-box/', 'settings-page', 'wp-dash', 'dashboard'),
632
+ 'tutorial' => 'https://www.youtube.com/watch?v=3lLxSyf2nyk',
633
+ ],
634
+ [
635
+ 'key' => 'premium-notbar',
636
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Alert Box', 'premium-addons-for-elementor') ),
637
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/alert-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
638
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/alert-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
639
+ 'is_pro' => true
640
+ ],
641
+ [
642
+ 'key' => 'premium-magic-section',
643
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Magic Section', 'premium-addons-for-elementor') ),
644
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/magic-section-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
645
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/magic-section-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
646
+ 'is_pro' => true
647
+ ],
648
+ [
649
+ 'key' => 'premium-prev-img',
650
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Preview Window', 'premium-addons-for-elementor') ),
651
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/preview-window-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
652
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/preview-window-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
653
+ 'tutorial' => 'https://www.youtube.com/watch?v=EmptjFjrc4E',
654
+ 'is_pro' => true
655
+ ],
656
+ ]
657
+ ],
658
+ 'cat-6' => [
659
+ 'icon' => 'social',
660
+ 'title' => __('Reviews & Testimonials Widgets', 'premium-addons-for-elementor'),
661
+ 'elements' => [
662
+ [
663
+ 'key' => 'premium-testimonials',
664
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Testimonials', 'premium-addons-for-elementor') ),
665
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/testimonials-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
666
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/testimonials-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
667
+ ],
668
+ [
669
+ 'key' => 'premium-facebook-reviews',
670
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Reviews', 'premium-addons-for-elementor') ),
671
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/facebook-reviews-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
672
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/facebook-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
673
+ 'tutorial' => 'https://www.youtube.com/watch?v=zl-OFo3IFd8',
674
+ 'is_pro' => true
675
+ ],
676
+ [
677
+ 'key' => 'premium-google-reviews',
678
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Google Reviews', 'premium-addons-for-elementor') ),
679
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/google-reviews-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
680
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/google-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
681
+ 'tutorial' => 'https://www.youtube.com/watch?v=Z0EeGyD34Zk',
682
+ 'is_pro' => true
683
+ ],
684
+ [
685
+ 'key' => 'premium-yelp-reviews',
686
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Yelp Reviews', 'premium-addons-for-elementor') ),
687
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-yelp-reviews-widget/', 'settings-page', 'wp-dash', 'dashboard'),
688
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/yelp-reviews/', 'settings-page', 'wp-dash', 'dashboard'),
689
+ 'tutorial' => 'https://www.youtube.com/watch?v=5T-MveVFvns',
690
+ 'is_pro' => true
691
+ ],
692
+ ]
693
+ ],
694
+ 'cat-7' => [
695
+ 'icon' => 'blurbs',
696
+ 'title' => __('Blurbs & CTA Widgets', 'premium-addons-for-elementor'),
697
+ 'elements' => [
698
+ [
699
+ 'key' => 'premium-countdown',
700
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Countdown', 'premium-addons-for-elementor') ),
701
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/countdown-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
702
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/countdown-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
703
+ ],
704
+ [
705
+ 'key' => 'premium-banner',
706
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Banner', 'premium-addons-for-elementor') ),
707
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/banner-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
708
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-banner-widget/', 'settings-page', 'wp-dash', 'dashboard'),
709
+ ],
710
+ [
711
+ 'key' => 'premium-button',
712
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Button', 'premium-addons-for-elementor') ),
713
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/button-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
714
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/button/', 'settings-page', 'wp-dash', 'dashboard'),
715
+ 'tutorial' => 'https://www.youtube.com/watch?v=w4NuCUkCIV4',
716
+ ],
717
+ [
718
+ 'key' => 'premium-image-button',
719
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Image Button', 'premium-addons-for-elementor') ),
720
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/image-button-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
721
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/image-button/', 'settings-page', 'wp-dash', 'dashboard'),
722
+ ],
723
+ [
724
+ 'key' => 'premium-flipbox',
725
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Hover Box', 'premium-addons-for-elementor') ),
726
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/flip-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
727
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/flip-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
728
+ 'is_pro' => true
729
+ ],
730
+ [
731
+ 'key' => 'premium-iconbox',
732
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Icon Box', 'premium-addons-for-elementor') ),
733
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/icon-box-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
734
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/icon-box-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
735
+ 'is_pro' => true
736
+ ],
737
+ [
738
+ 'key' => 'premium-ihover',
739
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('iHover', 'premium-addons-for-elementor') ),
740
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/ihover-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
741
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-ihover-widget/', 'settings-page', 'wp-dash', 'dashboard'),
742
+ 'is_pro' => true
743
+ ],
744
+ [
745
+ 'key' => 'premium-unfold',
746
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Unfold', 'premium-addons-for-elementor') ),
747
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/unfold-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
748
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-unfold-widget/', 'settings-page', 'wp-dash', 'dashboard'),
749
+ 'is_pro' => true
750
+ ],
751
+ [
752
+ 'key' => 'premium-icon-list',
753
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Bullet List', 'premium-addons-for-elementor') ),
754
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-bullet-list-widget/', 'settings-page', 'wp-dash', 'dashboard'),
755
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/bullet-list-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
756
+ 'tutorial' => 'https://youtube.com/',
757
+ ],
758
+ ]
759
+ ],
760
+ 'cat-8' => [
761
+ 'icon' => 'feed',
762
+ 'title' => __('Social Feed Widgets', 'premium-addons-for-elementor'),
763
+ 'elements' => [
764
+ [
765
+ 'key' => 'premium-facebook-feed',
766
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Feed', 'premium-addons-for-elementor') ),
767
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/elementor-facebook-feed-widget/', 'settings-page', 'wp-dash', 'dashboard'),
768
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/facebook-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
769
+ 'is_pro' => true
770
+ ],
771
+ [
772
+ 'key' => 'premium-twitter-feed',
773
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Twitter Feed', 'premium-addons-for-elementor') ),
774
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/twitter-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
775
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/twitter-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
776
+ 'tutorial' => 'https://www.youtube.com/watch?v=wsurRDuR6pg',
777
+ 'is_pro' => true
778
+ ],
779
+ [
780
+ 'key' => 'premium-instagram-feed',
781
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Instagram Feed', 'premium-addons-for-elementor') ),
782
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/instagram-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
783
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/instagram-feed/', 'settings-page', 'wp-dash', 'dashboard'),
784
+ 'is_pro' => true
785
+ ],
786
+ [
787
+ 'key' => 'premium-behance',
788
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Behance Feed', 'premium-addons-for-elementor') ),
789
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/behance-feed-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
790
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/behance-feed-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
791
+ 'tutorial' => 'https://www.youtube.com/watch?v=AXATK3oIXl0',
792
+ 'is_pro' => true
793
+ ],
794
+ ]
795
+ ],
796
+ 'cat-9' => [
797
+ 'icon' => 'data',
798
+ 'title' => __('Tables, Charts & Anything Data Widgets', 'premium-addons-for-elementor'),
799
+ 'elements' => [
800
+ [
801
+ 'key' => 'premium-progressbar',
802
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Progress Bar', 'premium-addons-for-elementor') ),
803
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/progress-bar-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
804
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/premium-progress-bar-widget/', 'settings-page', 'wp-dash', 'dashboard'),
805
+ 'tutorial' => 'https://www.youtube.com/watch?v=Y7xqwhgDQJg',
806
+ ],
807
+ [
808
+ 'key' => 'premium-pricing-table',
809
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Pricing Table', 'premium-addons-for-elementor') ),
810
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/pricing-table-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
811
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/pricing-table-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
812
+ ],
813
+ [
814
+ 'key' => 'premium-charts',
815
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Charts', 'premium-addons-for-elementor') ),
816
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/charts-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
817
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/charts-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
818
+ 'tutorial' => 'https://www.youtube.com/watch?v=lZZvslQ2UYU',
819
+ 'is_pro' => true
820
+ ],
821
+ [
822
+ 'key' => 'premium-tables',
823
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Table', 'premium-addons-for-elementor') ),
824
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/table-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
825
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/table-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
826
+ 'is_pro' => true
827
+ ],
828
+ [
829
+ 'key' => 'premium-counter',
830
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Counter', 'premium-addons-for-elementor') ),
831
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/counter-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
832
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/counter-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
833
+ ],
834
+ ],
835
+ ],
836
+ 'cat-10' => [
837
+ 'icon' => 'contact',
838
+ 'title' => __('Contact Widgets', 'premium-addons-for-elementor'),
839
+ 'elements' => [
840
+ [
841
+ 'key' => 'premium-contactform',
842
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Contact Form 7', 'premium-addons-for-elementor') ),
843
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/contact-form-7-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
844
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/contact-form-7-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
845
+ ],
846
+ [
847
+ 'key' => 'premium-fb-chat',
848
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Facebook Messenger Chat', 'premium-addons-for-elementor') ),
849
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/facebook-messenger-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
850
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs-category/using-widgets/facebook-messenger/', 'settings-page', 'wp-dash', 'dashboard'),
851
+ 'is_pro' => true
852
+ ],
853
+ [
854
+ 'key' => 'premium-whatsapp-chat',
855
+ 'title' => sprintf( '%1$s %2$s', $prefix, __('Whatsapp Chat', 'premium-addons-for-elementor') ),
856
+ 'demo' => Helper_Functions::get_campaign_link('https://premiumaddons.com/whatsapp-widget-for-elementor-page-builder/', 'settings-page', 'wp-dash', 'dashboard'),
857
+ 'doc' => Helper_Functions::get_campaign_link('https://premiumaddons.com/docs/whatsapp-chat-widget-tutorial/', 'settings-page', 'wp-dash', 'dashboard'),
858
+ 'is_pro' => true
859
+ ],
860
+ ],
861
+ ],
862
+ 'cat-11' => [
863
+ 'icon' => 'extensions',
864
+ 'elements' => [
865
+ [
866
+ 'key' => 'premium-templates',
867
+ ],
868
+ [
869
+ 'key' => 'premium-cross-domain',
870
+ ],
871
+ [
872
+ 'key' => 'premium-duplicator',
873
+ ],
874
+ ],
875
+ ],
876
+ ];
877
+
878
+ return $elements;
admin/includes/papro-actions.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Includes;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if ( ! defined( 'ABSPATH' ) ) exit;
8
-
9
- class Papro_Actions {
10
-
11
- public function create_pro_menus() {
12
-
13
- add_submenu_page(
14
- 'premium-addons',
15
- '',
16
- '<span class="dashicons dashicons-star-filled" style="font-size: 17px"></span> ' . __( 'Get PRO Widgets & Addons', 'premium-addons-for-elementor' ),
17
- 'manage_options',
18
- 'premium-addons-pro',
19
- [ $this, 'handle_custom_redirects' ]
20
- );
21
-
22
- }
23
-
24
-
25
- public function handle_custom_redirects() {
26
-
27
- $theme_slug = Helper_Functions::get_installed_theme();
28
-
29
- if ( empty( $_GET['page'] ) ) {
30
- return;
31
- }
32
-
33
- if ( 'premium-addons-pro' === $_GET['page'] ) {
34
-
35
- $url = sprintf('https://premiumaddons.com/pro/?utm_source=wp-menu&utm_medium=wp-dash&utm_campaign=get-pro&utm_term=%s', $theme_slug );
36
-
37
- wp_redirect( $url );
38
-
39
- die();
40
- }
41
- }
42
-
43
-
44
- public function change_admin_menu_name() {
45
-
46
- global $submenu;
47
-
48
- if( isset($submenu['premium-addons'] ) ) {
49
- $submenu['premium-addons'][0][0] = __( 'Settings', 'premium-addons-for-elementor' );
50
- }
51
- }
52
-
53
- public function on_admin_init() {
54
-
55
- $this->handle_custom_redirects();
56
-
57
- }
58
-
59
- public function __construct() {
60
-
61
- add_action( 'admin_init', [ $this, 'on_admin_init' ] );
62
-
63
- if( ! Helper_Functions::check_papro_version() )
64
- add_action( 'admin_menu', array ( $this,'create_pro_menus' ), 100 );
65
-
66
- add_action( 'admin_menu', array ( $this, 'change_admin_menu_name'), 100 );
67
-
68
- }
69
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/plugin-info.php DELETED
@@ -1,90 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Includes;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if ( ! defined( 'ABSPATH' ) ) exit;
8
-
9
- class Plugin_Info {
10
-
11
- public function create_about_menu() {
12
-
13
- if ( ! Helper_Functions::is_hide_about() ) {
14
- add_submenu_page(
15
- 'premium-addons',
16
- '',
17
- __('About','premium-addons-for-elementor'),
18
- 'manage_options',
19
- 'premium-addons-about',
20
- [ $this, 'pa_about_page' ]
21
- );
22
- }
23
-
24
- }
25
-
26
- public function pa_about_page() {
27
-
28
- $theme_name = Helper_Functions::get_installed_theme();
29
-
30
- $url = sprintf('https://premiumaddons.com/pro/?utm_source=about-page&utm_medium=wp-dash&utm_campaign=get-pro&utm_term=%s', $theme_name );
31
-
32
- $support_url = sprintf('https://premiumaddons.com/support/?utm_source=about-page&utm_medium=wp-dash&utm_campaign=get-support&utm_term=%s', $theme_name );
33
-
34
- ?>
35
- <div class="wrap">
36
- <div class="response-wrap"></div>
37
- <div class="pa-header-wrapper">
38
- <div class="pa-title-left">
39
- <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
40
- <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(),Helper_Functions::author()); ?></h3>
41
- </div>
42
- <?php if( ! Helper_Functions::is_hide_logo() ) : ?>
43
- <div class="pa-title-right">
44
- <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png';?>">
45
- </div>
46
- <?php endif; ?>
47
- </div>
48
- <div class="pa-settings-tabs">
49
- <div id="pa-about" class="pa-settings-tab">
50
- <div class="pa-row">
51
- <div class="pa-col-half">
52
- <div class="pa-about-panel">
53
- <div class="pa-icon-container">
54
- <i class="dashicons dashicons-info abt-icon-style"></i>
55
- </div>
56
- <div class="pa-text-container">
57
- <h4><?php echo __('What is Premium Addons?', 'premium-addons-for-elementor'); ?></h4>
58
- <p><?php echo __('Premium Addons for Elementor extends Elementor Page Builder capabilities with many fully customizable widgets and addons that help you to build impressive websites with no coding required.', 'premium-addons-for-elementor'); ?></p>
59
- <?php if( ! Helper_Functions::check_papro_version() ) : ?>
60
- <p><?php echo __('Get more widgets and addons with ', 'premium-addons-for-elementor'); ?><strong><?php echo __('Premium Addons Pro', 'premium-addons-for-elementor'); ?></strong> <a href="<?php echo esc_url( $url ); ?>" target="_blank" ><?php echo __('Click Here', 'premium-addons-for-elementor'); ?></a><?php echo __(' to know more.', 'premium-addons-for-elementor'); ?></p>
61
- <?php endif; ?>
62
- </div>
63
- </div>
64
- </div>
65
- <div class="pa-col-half">
66
- <div class="pa-about-panel">
67
- <div class="pa-icon-container">
68
- <i class="dashicons dashicons-universal-access-alt abt-icon-style"></i>
69
- </div>
70
- <div class="pa-text-container">
71
- <h4><?php echo __('Docs and Support', 'premium-addons-for-elementor'); ?></h4>
72
- <p><?php echo __('It’s highly recommended to check out documentation and FAQ before using this plugin. ', 'premium-addons-for-elementor'); ?><a target="_blank" href="<?php echo esc_url( $support_url ); ?>"><?php echo __('Click Here', 'premium-addons-for-elementor'); ?></a><?php echo __(' for more details. You can also join our ', 'premium-addons-for-elementor'); ?><a href="https://www.facebook.com/groups/PremiumAddons" target="_blank"><?php echo __('Facebook Group', 'premium-addons-for-elementor'); ?></a><?php echo __(' and Our ', 'premium-addons-for-elementor'); ?><a href="https://my.leap13.com/forums/" target="_blank"><?php echo __('Community Forums', 'premium-addons-for-elementor'); ?></a></p>
73
- </div>
74
- </div>
75
- </div>
76
- </div>
77
- <?php if( ! Helper_Functions::is_hide_rate() ) : ?>
78
- <div>
79
- <p><?php echo __('Did you like Premium Addons for Elementor Plugin? Please ', 'premium-addons-for-elementor'); ?><a href="https://wordpress.org/support/plugin/premium-addons-for-elementor/reviews/#new-post" target="_blank"><?php echo __('Click Here to Rate it ★★★★★', 'premium-addons-for-elementor'); ?></a></p>
80
- </div>
81
- <?php endif; ?>
82
- </div>
83
- </div>
84
- </div>
85
- <?php }
86
-
87
- public function __construct() {
88
- add_action( 'admin_menu', array ($this,'create_about_menu' ), 100 );
89
- }
90
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/reports.php DELETED
@@ -1,63 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Includes;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if( ! defined( 'ABSPATH' ) ) exit;
8
-
9
- class Config_Data {
10
-
11
- public function __construct() {
12
-
13
- add_action( 'admin_menu', array ($this,'create_sys_info_menu' ), 100 );
14
- }
15
-
16
- public function create_sys_info_menu() {
17
- add_submenu_page(
18
- 'premium-addons',
19
- '',
20
- __( 'System Info','premium-addons-for-elementor' ),
21
- 'manage_options',
22
- 'premium-addons-sys',
23
- [$this, 'pa_sys_info_page']
24
- );
25
- }
26
-
27
- public function pa_sys_info_page() {
28
- ?>
29
- <div class="wrap">
30
- <div class="response-wrap"></div>
31
- <div class="pa-header-wrapper">
32
- <div class="pa-title-left">
33
- <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
34
- <h3 class="pa-title-sub"><?php echo sprintf( __( 'Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor' ), Helper_Functions::name(), Helper_Functions::author() ); ?></h3>
35
- </div>
36
- <?php if( ! Helper_Functions::is_hide_logo() ) : ?>
37
- <div class="pa-title-right">
38
- <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png'; ?>">
39
- </div>
40
- <?php endif; ?>
41
- </div>
42
- <div class="pa-settings-tabs pa-sys-info-tab">
43
- <div id="pa-system" class="pa-settings-tab">
44
- <div class="pa-row">
45
- <h3 class="pa-sys-info-title"><?php echo __('System setup information useful for debugging purposes.','premium-addons-for-elementor');?></h3>
46
- <div class="pa-system-info-container">
47
- <?php
48
- require_once ( PREMIUM_ADDONS_PATH . 'admin/includes/dep/info.php');
49
- echo nl2br( pa_get_sysinfo() );
50
- ?>
51
- </div>
52
- </div>
53
- </div>
54
- <?php if( ! Helper_Functions::is_hide_rate() ) : ?>
55
- <div>
56
- <p><?php echo __('Did you like Premium Addons for Elementor Plugin? Please ', 'premium-addons-for-elementor'); ?><a href="https://wordpress.org/support/plugin/premium-addons-for-elementor/reviews/#new-post" target="_blank"><?php echo __('Click Here to Rate it ★★★★★', 'premium-addons-for-elementor'); ?></a></p>
57
- </div>
58
- <?php endif; ?>
59
- </div>
60
- </div>
61
- <?php }
62
- }
63
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/templates/features.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+
7
+ $prefix = Helper_Functions::get_prefix();
8
+
9
+ //Get elements settings
10
+ $enabled_elements = self::get_enabled_elements();
11
+
12
+ ?>
13
+
14
+ <div class="pa-section-content">
15
+ <div class="row">
16
+ <div class="col-full">
17
+ <form action="" method="POST" id="pa-features" name="pa-features" class="pa-settings-form">
18
+ <div id="pa-features-settings" class="pa-settings-tab">
19
+
20
+ <div class="pa-section-info-wrap">
21
+ <div class="pa-section-info">
22
+ <h4><?php echo sprintf( '%1$s %2$s', $prefix, __('Templates', 'premium-addons-for-elementor') ); ?></h4>
23
+ <p><?php echo __('Build Professional Website in Minutes Using Our Pre-Made Premium Elementor Templates.', 'premium-addons-for-elementor'); ?></p>
24
+ </div>
25
+
26
+ <div class="pa-section-info-cta">
27
+ <label class="switch">
28
+ <input type="checkbox" id="premium-templates" name="premium-templates" <?php echo checked( 1, $enabled_elements[ 'premium-templates' ], false ); ?>>
29
+ <span class="slider round"></span>
30
+ </label>
31
+ </p>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="pa-section-info-wrap">
36
+ <div class="pa-section-info">
37
+ <h4><?php echo __('Cross-Domain Copy N’ Paste', 'premium-addons-for-elementor'); ?></h4>
38
+ <p><?php echo __('Copy any Elementor content from site to another in just ONE click.', 'premium-addons-for-elementor'); ?></p>
39
+ </div>
40
+
41
+ <div class="pa-section-info-cta">
42
+ <label class="switch">
43
+ <input type="checkbox" id="premium-cross-domain" name="premium-cross-domain" <?php echo checked( 1, $enabled_elements[ 'premium-cross-domain' ], false ); ?>>
44
+ <span class="slider round"></span>
45
+ </label>
46
+ </p>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="pa-section-info-wrap">
51
+ <div class="pa-section-info">
52
+ <h4><?php echo __('Duplicator', 'premium-addons-for-elementor'); ?></h4>
53
+ <p><?php echo __('Duplicate any post, page or template on your website.', 'premium-addons-for-elementor'); ?></p>
54
+ </div>
55
+
56
+ <div class="pa-section-info-cta">
57
+ <label class="switch">
58
+ <input type="checkbox" id="premium-duplicator" name="premium-duplicator" <?php echo checked( 1, $enabled_elements[ 'premium-duplicator' ], false ); ?>>
59
+ <span class="slider round"></span>
60
+ </label>
61
+ </p>
62
+ </div>
63
+ </div>
64
+
65
+ <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
66
+ </div>
67
+ </form> <!-- End Form -->
68
+ </div>
69
+ </div>
70
+ </div> <!-- End Section Content -->
admin/includes/templates/general.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ <div class="pa-section-content">
3
+ <div class="row">
4
+ <div id="pa-general-settings" class="pa-settings-tab">
5
+ <div class="col-half">
6
+ <div class="pa-section-info-wrap">
7
+
8
+ <div class="pa-section-info">
9
+ <h4>
10
+ <i class="dashicons dashicons-info abt-icon-style"></i>
11
+ <?php echo __('What is Premium Addons?', 'premium-addons-for-elementor'); ?>
12
+ </h4>
13
+ <p><?php echo __('Premium Addons for Elementor extends Elementor Page Builder capabilities with many fully customizable widgets and addons that help you to build impressive websites with no coding required.', 'premium-addons-for-elementor'); ?></p>
14
+ </div>
15
+ </div>
16
+ </div>
17
+
18
+ <div class="col-half">
19
+ <div class="pa-section-info-wrap">
20
+ <div class="pa-section-info">
21
+ <h4>
22
+ <i class="dashicons dashicons-universal-access-alt abt-icon-style"></i>
23
+ <?php echo __('Docs and Support', 'premium-addons-for-elementor'); ?>
24
+ </h4>
25
+ <p><?php echo __('It’s highly recommended to check out documentation and FAQ before using this plugin. ', 'premium-addons-for-elementor'); ?><a target="_blank" href="<?php echo esc_url( $support_url ); ?>"><?php echo __('Click Here', 'premium-addons-for-elementor'); ?></a><?php echo __(' for more details. You can also join our ', 'premium-addons-for-elementor'); ?><a href="https://www.facebook.com/groups/PremiumAddons" target="_blank"><?php echo __('Facebook Group', 'premium-addons-for-elementor'); ?></a><?php echo __(' and Our ', 'premium-addons-for-elementor'); ?><a href="https://my.leap13.com/forums/" target="_blank"><?php echo __('Community Forums', 'premium-addons-for-elementor'); ?></a></p>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div> <!-- End Section Content -->
admin/includes/templates/info.php ADDED
@@ -0,0 +1,199 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <table class="widefat" cellspacing="0">
2
+ <thead>
3
+ <tr>
4
+ <th colspan="2"><b><?php _e( 'WordPress Environment', 'premium-addons-for-elementor' ); ?></b></th>
5
+ </tr>
6
+ </thead>
7
+ <tbody>
8
+ <tr>
9
+ <td><?php _e( 'Home URL', 'premium-addons-for-elementor' ); ?>:</td>
10
+ <td><?php form_option( 'home' ); ?></td>
11
+ </tr>
12
+ <tr>
13
+ <td><?php _e( 'Site URL', 'premium-addons-for-elementor' ); ?>:</td>
14
+ <td><?php form_option( 'siteurl' ); ?></td>
15
+ </tr>
16
+ <tr>
17
+ <td><?php _e( 'WP Version', 'premium-addons-for-elementor' ); ?>:</td>
18
+ <td><?php bloginfo( 'version' ); ?></td>
19
+ </tr>
20
+ <tr>
21
+ <td><?php _e( 'WP Multisite', 'premium-addons-for-elementor' ); ?>:</td>
22
+ <td><?php
23
+ if ( is_multisite() )
24
+ echo '&#10004;';
25
+ else
26
+ echo '&ndash;';
27
+ ?></td>
28
+ </tr>
29
+ <tr>
30
+ <td><?php _e( 'WP Memory Limit', 'premium-addons-for-elementor' ); ?>:</td>
31
+ <td><?php //echo "kok";
32
+ $memory_limit = wp_convert_hr_to_bytes( WP_MEMORY_LIMIT );
33
+ if ($memory_limit < 67108864) {
34
+ echo '<mark>' . sprintf( __( '%1$s - We recommend setting wp memory at least 64MB.</mark> See: <a href="%2$s" target="_blank">Increasing WP Memory Limit</a>', 'premium-addons-for-elementor' ), size_format($memory_limit), 'https://premiumaddons.com/docs/im-getting-a-blank-page-on-elementor-after-activating-premium-add-ons/' );
35
+ } else {
36
+ echo size_format( $memory_limit );
37
+ }
38
+ ?></td>
39
+ </tr>
40
+ <tr>
41
+ <td><?php _e( 'WP Path', 'premium-addons-for-elementor' ); ?>:</td>
42
+ <td><?php echo ABSPATH; ?></td>
43
+ </tr>
44
+
45
+
46
+ <tr>
47
+ <td><?php _e( 'WP Debug Mode', 'premium-addons-for-elementor' ); ?>:</td>
48
+ <td><?php
49
+ if ( defined( 'WP_DEBUG' ) && WP_DEBUG )
50
+ echo '&#10004;';
51
+ else
52
+ echo '&ndash;';
53
+ ?></td>
54
+ </tr>
55
+ <tr>
56
+ <td><?php _e( 'Language', 'premium-addons-for-elementor' ); ?>:</td>
57
+ <td><?php echo get_locale() ?></td>
58
+ </tr>
59
+ </tbody>
60
+ </table>
61
+ <br>
62
+ <table class="widefat" cellspacing="0">
63
+ <thead>
64
+ <tr>
65
+ <th colspan="2" data-export-label="Server Environment"><b><?php _e( 'Server Environment', 'premium-addons-for-elementor' ); ?></b></th>
66
+ </tr>
67
+ </thead>
68
+ <tbody>
69
+ <tr>
70
+ <td><?php _e( 'Server Info', 'premium-addons-for-elementor' ); ?>:</td>
71
+ <td><?php echo esc_html( $_SERVER[ 'SERVER_SOFTWARE' ] ); ?></td>
72
+ </tr>
73
+ <tr>
74
+ <td><?php _e( 'PHP Version', 'premium-addons-for-elementor' ); ?>:</td>
75
+ <td><?php
76
+ // Check if phpversion function exists
77
+ if ( function_exists( 'phpversion' ) ) {
78
+ $php_version = phpversion();
79
+
80
+ echo esc_html( $php_version );
81
+ } else {
82
+ _e( "Couldn't determine PHP version because phpversion() doesn't exist.", 'premium-addons-for-elementor' );
83
+ }
84
+ ?></td>
85
+ </tr>
86
+ <?php if ( function_exists( 'ini_get' ) ) : ?>
87
+ <tr>
88
+ <td><?php _e( 'PHP Memory Limit', 'premium-addons-for-elementor' ); ?>:</td>
89
+ <td><?php echo size_format( wp_convert_hr_to_bytes( ini_get( 'memory_limit' ) ) ); ?></td>
90
+ </tr>
91
+ <tr>
92
+ <td><?php _e( 'PHP Post Max Size', 'premium-addons-for-elementor' ); ?>:</td>
93
+ <td><?php echo size_format( wp_convert_hr_to_bytes( ini_get( 'post_max_size' ) ) ); ?></td>
94
+ </tr>
95
+ <tr>
96
+ <td ><?php _e( 'PHP Time Limit', 'premium-addons-for-elementor' ); ?>:</td>
97
+ <td>
98
+ <?php
99
+ $time_limit = ini_get('max_execution_time');
100
+ if ( $time_limit < 120 && $time_limit != 0 ) {
101
+ echo '<mark>' . sprintf( __( '%s - We recommend setting max execution time at least 300.</mark> See: <a href="%2$s" target="_blank">Increasing WP Time Limit</a>', 'premium-addons-for-elementor' ), $time_limit, 'https://premiumaddons.com/docs/im-getting-a-blank-page-on-elementor-after-activating-premium-add-ons/' );
102
+ } else {
103
+ echo $time_limit;
104
+ }
105
+ ?></td>
106
+ </tr>
107
+ <tr>
108
+ <td><?php _e( 'PHP Max Input Vars', 'premium-addons-for-elementor' ); ?>:</td>
109
+ <td><?php echo ini_get( 'max_input_vars' ); ?></td>
110
+ </tr>
111
+ <tr>
112
+ <td ><?php _e( 'SUHOSIN Installed', 'premium-addons-for-elementor' ); ?>:</td>
113
+ <td><?php echo extension_loaded( 'suhosin' ) ? '&#10004;' : '&ndash;'; ?></td>
114
+ </tr>
115
+ <?php endif; ?>
116
+ <tr>
117
+ <td><?php _e( 'MySQL Version', 'premium-addons-for-elementor' ); ?>:</td>
118
+ <td>
119
+ <?php
120
+ /** @global wpdb $wpdb */
121
+ global $wpdb;
122
+ echo $wpdb->db_version();
123
+ ?>
124
+ </td>
125
+ </tr>
126
+ <tr>
127
+ <td><?php _e( 'Max Upload Size', 'premium-addons-for-elementor' ); ?>:</td>
128
+ <td><?php echo size_format( wp_max_upload_size() ); ?></td>
129
+ </tr>
130
+ </tbody>
131
+ </table>
132
+ <br>
133
+ <table class="widefat" cellspacing="0">
134
+ <thead>
135
+ <tr>
136
+ <th colspan="2" data-export-label="PHP Extensions"><b><?php _e( 'PHP Extensions', 'premium-addons-for-elementor' ); ?></b></th>
137
+ </tr>
138
+ </thead>
139
+ <tbody>
140
+ <tr>
141
+ <td><?php _e( 'cURL', 'premium-addons-for-elementor' ); ?>:</td>
142
+ <td><?php echo (function_exists('curl_init') ? 'Supported' : 'Not Supported'); ?></td>
143
+ </tr>
144
+ <tr>
145
+ <td><?php _e( 'fsockopen', 'premium-addons-for-elementor' ); ?>:</td>
146
+ <td><?php echo (function_exists('fsockopen') ? 'Supported' : 'Not Supported'); ?></td>
147
+ </tr>
148
+ <tr>
149
+ <td><?php _e( 'SOAP Client', 'premium-addons-for-elementor' ); ?>:</td>
150
+ <td><?php echo (class_exists('SoapClient') ? 'Installed' : 'Not Installed'); ?></td>
151
+ </tr>
152
+ <tr>
153
+ <td><?php _e( 'Suhosin', 'premium-addons-for-elementor' ); ?>:</td>
154
+ <td><?php echo (extension_loaded('suhosin') ? 'Installed' : 'Not Installed'); ?></td>
155
+ </tr>
156
+ </tbody>
157
+ </table>
158
+ <br>
159
+ <table class="widefat" cellspacing="0">
160
+ <thead>
161
+ <tr>
162
+ <th colspan="2"><b><?php _e( 'Active Plugins', 'premium-addons-for-elementor' ); ?> (<?php echo count( (array) get_option( 'active_plugins' ) ); ?>)</b></th>
163
+ </tr>
164
+ </thead>
165
+ <tbody>
166
+ <?php
167
+ $active_plugins = (array) get_option( 'active_plugins', array() );
168
+
169
+ if ( is_multisite() ) {
170
+ $network_activated_plugins = array_keys( get_site_option( 'active_sitewide_plugins', array() ) );
171
+ $active_plugins = array_merge( $active_plugins, $network_activated_plugins );
172
+ }
173
+
174
+ foreach ( $active_plugins as $plugin ) {
175
+
176
+ $plugin_data = @get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin );
177
+ $dirname = dirname( $plugin );
178
+ $version_string = '';
179
+ $network_string = '';
180
+
181
+ if ( !empty( $plugin_data[ 'Name' ] ) ) {
182
+
183
+ // link the plugin name to the plugin url if available
184
+ $plugin_name = esc_html( $plugin_data[ 'Name' ] );
185
+
186
+ if ( !empty( $plugin_data[ 'PluginURI' ] ) ) {
187
+ $plugin_name = '<a href="' . esc_url( $plugin_data[ 'PluginURI' ] ) . '" title="' . esc_attr__( 'Visit plugin homepage', 'premium-addons-for-elementor' ) . '" target="_blank">' . $plugin_name . '</a>';
188
+ }
189
+ ?>
190
+ <tr>
191
+ <td><?php echo $plugin_name; ?></td>
192
+ <td><?php echo sprintf( _x( 'by %s', 'by author', 'premium-addons-for-elementor' ), $plugin_data[ 'Author' ] ) . ' &ndash; ' . esc_html( $plugin_data[ 'Version' ] ) . $version_string . $network_string; ?></td>
193
+ </tr>
194
+ <?php
195
+ }
196
+ }
197
+ ?>
198
+ </tbody>
199
+ </table>
admin/includes/templates/integrations.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+
7
+ //Get settings
8
+ $settings = self::get_integrations_settings();
9
+
10
+ $locales = Helper_Functions::get_google_maps_prefixes();
11
+
12
+ ?>
13
+
14
+ <div class="pa-section-content">
15
+ <div class="row">
16
+ <div class="col-full">
17
+ <form action="" method="POST" id="pa-integrations" name="pa-integrations" class="pa-settings-form">
18
+ <div id="pa-integrations-settings" class="pa-settings-tab">
19
+
20
+ <div class="pa-section-info-wrap">
21
+ <div class="pa-section-info">
22
+ <h4><?php echo __('Google API Keys', 'premium-addons-for-elementor'); ?></h4>
23
+ <p><?php echo sprintf( __('Google APIs are used in Premium Google Maps and Premium Video Box widgets. If you don\'t have one, click %shere%s to get your key. Click %shere%2$s to enable Youtube Data for your API key', 'premium-addons-for-elementor'), '<a href="https://premiumaddons.com/docs/getting-your-api-key-for-google-reviews/" target="_blank">', '</a>', '<a href="https://premiumaddons.com/docs/how-to-enable-youtube-data-api-for-premium-video-box-widget" target="_blank">' ); ?></p>
24
+ </div>
25
+ </div>
26
+
27
+ <table class="pa-maps-table">
28
+
29
+ <tr>
30
+ <td>
31
+ <span class="pa-maps-circle-icon"></span>
32
+ <h4 class="pa-api-title"><?php echo __('Youtube Data API Key:', 'premium-addons-for-elementor'); ?></h4>
33
+ </td>
34
+ <td>
35
+ <input name="premium-youtube-api" id="premium-youtube-api" type="text" placeholder="Youtube API Key" value="<?php echo esc_attr( $settings['premium-youtube-api'] ); ?>">
36
+ </td>
37
+ </tr>
38
+
39
+ <tr>
40
+ <td>
41
+ <span class="pa-maps-circle-icon"></span>
42
+ <h4 class="pa-api-title"><?php echo __('Google Maps API Key:', 'premium-addons-for-elementor'); ?></h4>
43
+ </td>
44
+ <td>
45
+ <input name="premium-map-api" id="premium-map-api" type="text" placeholder="Maps API Key" value="<?php echo esc_attr( $settings['premium-map-api'] ); ?>">
46
+ </td>
47
+ </tr>
48
+ <tr>
49
+ <td>
50
+ <span class="pa-maps-circle-icon"></span>
51
+ <h4 class="pa-api-disable-title"><?php echo __('Google Maps Localization Language:', 'premium-addons-for-elementor'); ?></h4>
52
+ </td>
53
+ <td>
54
+ <select name="premium-map-locale" id="premium-map-locale" class="placeholder placeholder-active">
55
+ <option value=""><?php _e( 'Default', 'premium-addons-for-elementor' ); ?></option>
56
+ <?php foreach ( $locales as $key => $value ) {
57
+ $selected = '';
58
+ if ( $key === $settings['premium-map-locale'] ) {
59
+ $selected = 'selected="selected" ';
60
+ }
61
+ ?>
62
+ <option value="<?php echo esc_attr( $key ); ?>" <?php echo $selected; ?>><?php echo esc_attr( $value ); ?></option>
63
+ <?php } ?>
64
+ </select>
65
+ </td>
66
+ </tr>
67
+ <tr>
68
+ <td>
69
+ <span class="pa-maps-circle-icon"></span>
70
+ <h4 class="pa-api-disable-title"><?php echo __('Load Maps API JS File:','premium-addons-for-elementor'); ?></h4>
71
+ </td>
72
+ <td>
73
+ <input name="premium-map-disable-api" id="premium-map-disable-api" type="checkbox" <?php checked(1, $settings['premium-map-disable-api'], true) ?>>
74
+ <label for="premium-map-disable-api"></label>
75
+ <span>
76
+ <?php echo __('This will load API JS file if it\'s not loaded by another theme or plugin.', 'premium-addons-for-elementor'); ?>
77
+ </span>
78
+ </td>
79
+ </tr>
80
+ <tr>
81
+ <td>
82
+ <span class="pa-maps-circle-icon"></span>
83
+ <h4 class="pa-api-disable-title">
84
+ <?php echo __('Load Markers Clustering JS File:','premium-addons-for-elementor'); ?>
85
+ </h4>
86
+ </td>
87
+ <td>
88
+ <input name="premium-map-cluster" id="premium-map-cluster" type="checkbox" <?php checked(1, $settings['premium-map-cluster'], true) ?>>
89
+ <label for="premium-map-cluster"></label>
90
+ <span><?php echo __('This will load the JS file for markers clusters.', 'premium-addons-for-elementor'); ?></span>
91
+ </td>
92
+ </tr>
93
+ </table>
94
+
95
+ <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
96
+ </div>
97
+ </form> <!-- End Form -->
98
+ </div>
99
+ </div>
100
+ </div> <!-- End Section Content -->
admin/includes/templates/modules-settings.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+
7
+ $elements = self::get_elements_list();
8
+
9
+ //Get elements settings
10
+ $enabled_elements = self::get_enabled_elements();
11
+
12
+ $global_btn = get_option('pa_global_btn_value', 'true');
13
+ $enable_btn = 'true' === $global_btn ? 'active' : '';
14
+ $disable_btn = 'true' === $global_btn ? '' : 'active';
15
+
16
+ $row_meta = Helper_Functions::is_hide_row_meta();
17
+
18
+ ?>
19
+
20
+ <div class="pa-section-content">
21
+ <div class="row">
22
+ <div class="col-full">
23
+ <form action="" method="POST" id="pa-settings" name="pa-settings" class="pa-settings-form">
24
+ <div id="pa-modules" class="pa-settings-tab">
25
+
26
+ <div class="pa-section-info-wrap">
27
+ <div class="pa-section-info">
28
+ <h4><?php echo __('Master Switch', 'premium-addons-for-elementor'); ?></h4>
29
+ <p><?php echo __('Use this to switch on or off ALL Widgets & Add-ons at once.', 'premium-addons-for-elementor'); ?></p>
30
+ </div>
31
+
32
+ <div class="pa-btn-group">
33
+ <button type="button" class="pa-btn pa-btn-enable <?php echo esc_attr( $enable_btn ); ?>"><?php echo __('Switch On', 'premium-addons-for-elementor'); ?></button>
34
+ <button type="button" class="pa-btn pa-btn-disable <?php echo esc_attr( $disable_btn ); ?>"><?php echo __('Switch Off', 'premium-addons-for-elementor'); ?></button>
35
+ </div>
36
+ </div>
37
+
38
+ <div class="pa-elements-settings">
39
+
40
+ <div class="pa-elements-filter">
41
+ <label for="premium-elements-filter"><?php _e('Filter Widgets', 'premium-addons-for-elementor'); ?></label>
42
+ <select name="premium-elements-filter" id="premium-elements-filter" class="placeholder placeholder-active">
43
+ <option value=""><?php _e( 'All Widgets', 'premium-addons-for-elementor' ); ?></option>
44
+ <option value="free"><?php _e( 'Free Widgets', 'premium-addons-for-elementor' ); ?></option>
45
+ <option value="pro"><?php _e( 'PRO Widgets', 'premium-addons-for-elementor' ); ?></option>
46
+ </select>
47
+ </div>
48
+
49
+ <div class="pa-elements-tabs">
50
+ <ul class="pa-elements-tabs-list">
51
+ <?php foreach( $elements as $index => $cat ):
52
+ if( 'cat-11' !== $index ) :
53
+ ?>
54
+ <li class="pa-elements-tab">
55
+ <a class="pa-elements-tab-link" href="pa-elements-tab-<?php echo $index; ?>">
56
+ <i class="<?php echo esc_attr( 'pa-dash-cat-' . $cat['icon'] ) ?>"></i>
57
+ </a>
58
+ <span class="pa-element-tab-tooltip"><?php echo esc_html( $cat['title'] ); ?></span>
59
+ </li>
60
+ <?php endif; ?>
61
+ <?php endforeach; ?>
62
+ </ul>
63
+ </div>
64
+
65
+ <?php foreach( $elements as $index => $cat ):
66
+ if( 'cat-11' !== $index ) :
67
+ ?>
68
+ <div id="pa-elements-tab-<?php echo $index; ?>" class="pa-switchers-container hidden">
69
+ <h3 class="pa-elements-tab-title"><?php echo __( $cat['title'] ); ?></h3>
70
+ <div class="pa-switchers">
71
+ <?php foreach( $cat['elements'] as $index => $elem ) :
72
+ $status = (isset( $elem['is_pro'] ) && ! Helper_Functions::check_papro_version() ) ? 'disabled' : checked( 1, $enabled_elements[ $elem['key'] ], false );
73
+ $class = (isset( $elem['is_pro'] ) && ! Helper_Functions::check_papro_version() ) ? 'pro-' : '';
74
+ $switcher_class = $class . 'slider round';
75
+ ?>
76
+ <div class="pa-switcher <?php echo isset( $elem['is_pro'] ) ? 'pro-element' : ''; ?>">
77
+ <div class="pa-element-info">
78
+ <div class="pa-element-icon-wrap">
79
+ <i class="pa-dash-<?php echo esc_attr( $elem['key'] ); ?> pa-element-icon"></i>
80
+ </div>
81
+ <div class="pa-element-meta-wrap">
82
+ <p class="pa-element-name">
83
+ <?php echo $elem['title']; ?>
84
+ <?php if( isset( $elem['is_pro'] ) ) : ?>
85
+ <span><?php echo __('pro', 'premium-addons-for-elementor'); ?></span>
86
+ <?php endif; ?>
87
+ </p>
88
+ <?php if( ! $row_meta ) : ?>
89
+ <div>
90
+ <?php if( isset( $elem['demo'] ) ) : ?>
91
+ <a class="pa-element-link" href="<?php echo esc_url( $elem['demo'] ); ?>" target="_blank">
92
+ <?php echo __('Live Demo', 'premium-addons-for-elementor'); ?>
93
+ <span class="pa-element-link-separator"></span>
94
+ </a>
95
+ <?php endif; ?>
96
+ <?php if( isset( $elem['doc'] ) ) : ?>
97
+ <a class="pa-element-link" href="<?php echo esc_url( $elem['doc'] ); ?>" target="_blank">
98
+ <?php echo __('Docs', 'premium-addons-for-elementor'); ?>
99
+ <?php if( isset( $elem['tutorial'] ) ) : ?>
100
+ <span class="pa-element-link-separator"></span>
101
+ <?php endif; ?>
102
+ </a>
103
+ <?php endif; ?>
104
+ <?php if( isset( $elem['tutorial'] ) ) : ?>
105
+ <a class="pa-element-link" href="<?php echo esc_url( $elem['tutorial'] ); ?>" target="_blank">
106
+ <?php echo __('Video Tutorial', 'premium-addons-for-elementor'); ?>
107
+ </a>
108
+ <?php endif; ?>
109
+ </div>
110
+ <?php endif; ?>
111
+ </div>
112
+ </div>
113
+ <label class="switch">
114
+ <input type="checkbox" id="<?php echo esc_attr($elem['key']); ?>" name="<?php echo esc_attr($elem['key']); ?>" <?php echo $status; ?>>
115
+ <span class="<?php echo esc_attr( $switcher_class ); ?>"></span>
116
+ </label>
117
+ </div>
118
+ <?php endforeach; ?>
119
+ </div>
120
+ </div>
121
+ <?php endif; ?>
122
+ <?php endforeach; ?>
123
+ </div>
124
+
125
+ <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
126
+
127
+ </div>
128
+ </form> <!-- End Form -->
129
+ </div>
130
+ </div>
131
+ </div> <!-- End Section Content -->
admin/includes/templates/version-control.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+
7
+ //Get settings
8
+ $settings = self::get_integrations_settings();
9
+
10
+ ?>
11
+
12
+ <div class="pa-section-content">
13
+ <div class="row">
14
+ <div class="col-full">
15
+ <form action="" method="POST" id="pa-ver-control" name="pa-ver-control" class="pa-settings-form">
16
+ <div id="pa-ver-control-settings" class="pa-settings-tab">
17
+
18
+ <div class="pa-section-info-wrap">
19
+ <div class="pa-section-info">
20
+ <h4><?php echo __('Rollback to Previous Version', 'premium-addons-for-elementor'); ?></h4>
21
+ <p><?php echo __('Experiencing an issue with Premium Addons for Elementor version 3.21.1? Rollback to a previous version before the issue appeared.', 'premium-addons-for-elementor'); ?></p>
22
+ </div>
23
+
24
+ <div class="pa-section-info-cta">
25
+ <a target="_blank" href="<?php echo esc_url( wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ) ); ?>" class="button pa-btn pa-rollback-button">
26
+ <?php echo __('Rollback to Version ' . PREMIUM_ADDONS_STABLE_VERSION, 'premium-addons-for-elementor'); ?>
27
+ </a>
28
+ <span class="pa-section-info-warning">
29
+ <i class="dashicons dashicons-info-outline"></i>
30
+ <?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?>
31
+ </span>
32
+ </p>
33
+ </div>
34
+ </div>
35
+
36
+ <div class="pa-section-info-wrap">
37
+ <div class="pa-section-info">
38
+ <h4><?php echo __('Become a Beta Tester', 'premium-addons-for-elementor'); ?></h4>
39
+ <p><?php echo __('Turn-on Beta Tester, to get notified when a new beta version of Premium Addons for Elementor. The Beta version will not install automatically. You always have the option to ignore it.', 'premium-addons-for-elementor'); ?></p>
40
+ </div>
41
+
42
+ <div class="pa-section-info-cta">
43
+ <input name="is-beta-tester" id="is-beta-tester" type="checkbox" <?php checked(1, $settings['is-beta-tester'], true) ?>>
44
+ <label for="is-beta-tester"></label>
45
+ <span class="pa-section-info-label">
46
+ <?php echo __('Check this box to get updates for beta versions','premium-addons-for-elementor'); ?>
47
+ </span>
48
+ <span class="pa-section-info-warning">
49
+ <i class="dashicons dashicons-info-outline"></i>
50
+ <?php echo __('We do not recommend updating to a beta version on production sites.', 'premium-addons-for-elementor'); ?>
51
+ </span>
52
+ </p>
53
+ </div>
54
+ </div>
55
+
56
+ <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
57
+ </div>
58
+ </form> <!-- End Form -->
59
+ </div>
60
+ </div>
61
+ </div> <!-- End Section Content -->
admin/includes/templates/white-label.php ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) exit;
4
+
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+
7
+ //Premium Addons Pro Classes
8
+ use PremiumAddonsPro\Includes\White_Label\Helper;
9
+
10
+ //Get settings
11
+ $class = 'premium-white-label-form';
12
+ if( Helper_Functions::check_papro_version() ) {
13
+
14
+ $settings = Helper::get_white_labeling_settings();
15
+
16
+ } else {
17
+ $class .= ' pro-inactive';
18
+
19
+ $settings = array(
20
+ 'premium-wht-lbl-name' => '',
21
+ 'premium-wht-lbl-url' => '',
22
+ 'premium-wht-lbl-plugin-name' => '',
23
+ 'premium-wht-lbl-short-name' => '',
24
+ 'premium-wht-lbl-desc' => '',
25
+ 'premium-wht-lbl-row' => '',
26
+ 'premium-wht-lbl-name-pro' => '',
27
+ 'premium-wht-lbl-url-pro' => '',
28
+ 'premium-wht-lbl-plugin-name-pro' => '',
29
+ 'premium-wht-lbl-desc-pro' => '',
30
+ 'premium-wht-lbl-changelog' => '',
31
+ 'premium-wht-lbl-option' => '',
32
+ 'premium-wht-lbl-rate' => '',
33
+ 'premium-wht-lbl-about' => '',
34
+ 'premium-wht-lbl-license' => '',
35
+ 'premium-wht-lbl-logo' => '',
36
+ 'premium-wht-lbl-version' => '',
37
+ 'premium-wht-lbl-prefix' => '',
38
+ 'premium-wht-lbl-badge' => ''
39
+ );
40
+ }
41
+
42
+ if( ! Helper_Functions::check_papro_version() ) {
43
+
44
+ $campaign = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/pro/', 'whitelabel-page', 'wp-dash', 'dashboard' );
45
+
46
+ ?>
47
+ <div class="pa-white-label-notice">
48
+ <div class="pa-white-label-notice-content">
49
+ <div class="pa-white-label-notice-logo">
50
+ <img src="<?php echo PREMIUM_ADDONS_URL .'admin/images/pa-logo-symbol.png'; ?>" alt="Premium Addons White Labeling Notice">
51
+ </div>
52
+ <h2><?php _e('Get Premium Addons <span>Pro</span> to Enable White Labeling Options', 'premium-addons-for-elementor'); ?></h2>
53
+ <p><?php _e('Premium Addons can be completely re-branded with your own brand name and author details. Your clients will never know what tools you are using to build their website and will think that this is your own tool set. White-labeling works as long as your license is active.', 'premium-addons-for-elementor'); ?></p>
54
+ <a class="pa-btn pa-get-pro" href="<?php echo esc_attr( $campaign ); ?>" target="_blank"><?php _e('Get PRO', 'premium-addons-for-elementor'); ?></a>
55
+ </div>
56
+ </div>
57
+ <?php
58
+ }
59
+
60
+ ?>
61
+
62
+ <div class="pa-section-content">
63
+ <div class="row">
64
+ <div class="col-full">
65
+ <form action="" method="POST" id="pa-white-label" class="<?php echo esc_attr( $class ); ?>" name="pa-white-label-settings">
66
+ <div id="pa-white-label" class="pa-settings-tab pa-wht-lbl-settings">
67
+ <div class="pa-row">
68
+ <div class="pa-wht-lbl-settings-wrap">
69
+ <h3 class="pa-wht-lbl-title pa-wht-lbl-head"><?php echo __('Free Version', 'premium-addons-for-elementor'); ?></h3>
70
+ <div class="pa-wht-lbl-group-wrap">
71
+ <!-- Author Name -->
72
+ <label for="premium-wht-lbl-name" class="pa-input-label"><?php echo __('Author Name', 'premium-addons-for-elementor'); ?></label>
73
+ <input name="premium-wht-lbl-name" id="premium-wht-lbl-name" type="text" placeholder="Leap13" value="<?php echo esc_attr( $settings['premium-wht-lbl-name'] ); ?>">
74
+ <!-- Author URL -->
75
+ <label for="premium-wht-lbl-url" class="pa-input-label"><?php echo __('Author URL', 'premium-addons-for-elementor'); ?></label>
76
+ <input name="premium-wht-lbl-url" id="premium-wht-lbl-url" type="text" placeholder="https://premiumaddons.com" value="<?php echo esc_attr( $settings['premium-wht-lbl-url'] ); ?>">
77
+ <!-- Plugin Name -->
78
+ <label for="premium-wht-lbl-plugin-name" class="pa-input-label"><?php echo __('Plugin Name', 'premium-addons-for-elementor'); ?></label>
79
+ <input name="premium-wht-lbl-plugin-name" id="premium-wht-lbl-plugin-name" type="text" placeholder="Premium Addons for Elementor" value="<?php echo esc_attr( $settings['premium-wht-lbl-plugin-name'] ); ?>">
80
+
81
+ <!-- Plugin Description -->
82
+ <label for="premium-wht-lbl-desc" class="pa-input-label"><?php echo __('Plugin Description', 'premium-addons-for-elementor'); ?></label>
83
+ <input name="premium-wht-lbl-desc" id="premium-wht-lbl-desc" type="text" placeholder="Premium Addons for Elementor plugin includes widgets and addons.." value="<?php echo esc_attr( $settings['premium-wht-lbl-desc'] ); ?>">
84
+
85
+ <p class="pa-input-label"><?php echo __('Hide Plugin Row Meta Links', 'premium-addons-for-elementor'); ?></p>
86
+ <input name="premium-wht-lbl-row" id="premium-wht-lbl-row" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-row'], true) ?>>
87
+ <label for="premium-wht-lbl-row"></label>
88
+ <span><?php echo __('This will hide Docs, FAQs, and Video Tutorials links located on the plugins page.', 'premium-addons-for-elementor'); ?></span>
89
+ </div>
90
+ </div>
91
+
92
+ <div class="pa-wht-lbl-settings-wrap">
93
+ <h3 class="pa-wht-lbl-title pa-wht-lbl-head"><?php echo __('PRO Version', 'premium-addons-for-elementor'); ?></h3>
94
+ <div class="pa-wht-lbl-group-wrap">
95
+
96
+ <label for="premium-wht-lbl-name-pro" class="pa-input-label"><?php echo __('Author Name', 'premium-addons-for-elementor'); ?></label>
97
+ <input name="premium-wht-lbl-name-pro" id="premium-wht-lbl-name-pro" type="text" placeholder="Leap13" value="<?php echo esc_attr( $settings['premium-wht-lbl-name-pro'] ); ?>">
98
+
99
+ <label for="premium-wht-lbl-url-pro" class="pa-input-label"><?php echo __('Author URL', 'premium-addons-for-elementor'); ?></label>
100
+ <input name="premium-wht-lbl-url-pro" id="premium-wht-lbl-url-pro" type="text" placeholder="https://premiumaddons.com" value="<?php echo esc_attr( $settings['premium-wht-lbl-url-pro'] ); ?>">
101
+
102
+ <label for="premium-wht-lbl-plugin-name-pro" class="pa-input-label"><?php echo __('Plugin Name', 'premium-addons-for-elementor'); ?></label>
103
+ <input name="premium-wht-lbl-plugin-name-pro" id="premium-wht-lbl-plugin-name-pro" type="text" placeholder="Premium Addons PRO for Elementor" value="<?php echo esc_attr( $settings['premium-wht-lbl-plugin-name-pro'] ); ?>">
104
+
105
+ <label for="premium-wht-lbl-desc-rpo" class="pa-input-label"><?php echo __('Plugin Description', 'premium-addons-for-elementor'); ?></label>
106
+ <input name="premium-wht-lbl-desc-pro" id="premium-wht-lbl-desc-pro" type="text" placeholder="Premium Addons PRO Plugin Includes 33+ premium widgets & addons..." value="<?php echo esc_attr( $settings['premium-wht-lbl-desc-pro'] ); ?>">
107
+
108
+ <p class="pa-input-label"><?php echo __('Hide Plugin Changelog Link', 'premium-addons-for-elementor'); ?></p>
109
+ <input name="premium-wht-lbl-changelog" id="premium-wht-lbl-changelog" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-changelog'], true ) ?>>
110
+ <label for="premium-wht-lbl-changelog"></label>
111
+ <span><?php echo __('This will hide the Changelog link located on the plugins page.', 'premium-addons-for-elementor'); ?></span>
112
+
113
+ </div>
114
+ </div>
115
+ <div class="pa-wht-lbl-settings-wrap">
116
+ <h3 class="pa-wht-lbl-title pa-wht-lbl-head"><?php echo __('General Options', 'premium-addons-for-elementor'); ?></h3>
117
+ <div class="pa-wht-lbl-group-wrap">
118
+ <!-- Widgets Category Name -->
119
+ <label for="premium-wht-lbl-short-name" class="pa-input-label"><?php echo __('Widgets Category Name', 'premium-addons-for-elementor'); ?></label>
120
+ <input name="premium-wht-lbl-short-name" id="premium-wht-lbl-short-name" type="text" placeholder="Premium Addons" value="<?php echo esc_attr( $settings['premium-wht-lbl-short-name'] ); ?>">
121
+ <!-- Widgets Prefix -->
122
+ <label for="premium-wht-lbl-prefix" class="pa-input-label"><?php echo __('Widgets Prefix', 'premium-addons-for-elementor'); ?></label>
123
+ <input name="premium-wht-lbl-prefix" id="premium-wht-lbl-prefix" type="text" placeholder="Premium" value="<?php echo esc_attr( $settings['premium-wht-lbl-prefix'] ); ?>">
124
+ <!-- Widgets Badge -->
125
+ <label for="premium-wht-lbl-badge" class="pa-input-label"><?php echo __('Widgets Badge', 'premium-addons-for-elementor'); ?></label>
126
+ <input name="premium-wht-lbl-badge" id="premium-wht-lbl-badge" type="text" placeholder="PA" value="<?php echo esc_attr( $settings['premium-wht-lbl-badge'] ); ?>">
127
+ </div>
128
+ </div>
129
+
130
+ <div class="pa-wht-lbl-save">
131
+ <input type="submit" value="Save Settings" class="button pa-btn pa-save-button">
132
+ </div>
133
+ </div>
134
+
135
+ <div class="pa-wht-lbl-admin">
136
+ <div class="pa-wht-lbl-settings-wrap">
137
+ <h3 class="pa-wht-lbl-title pa-wht-lbl-head"><?php echo __('Admin Settings', 'premium-addons-for-elementor'); ?></h3>
138
+ <div class="pa-wht-lbl-group-wrap">
139
+ <!-- Hide General Tab-->
140
+ <p class="pa-input-label"><?php echo __('General Tab', 'premium-addons-for-elementor'); ?></p>
141
+ <input name="premium-wht-lbl-about" id="premium-wht-lbl-about" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-about'], true) ?>>
142
+ <label for="premium-wht-lbl-about"></label>
143
+ <span><?php echo __('This will hide the General tab', 'premium-addons-for-elementor'); ?></span>
144
+
145
+ <!-- Hide Version Control Tab-->
146
+ <p class="pa-input-label"><?php echo __('Version Control Tab', 'premium-addons-for-elementor'); ?></p>
147
+ <input name="premium-wht-lbl-version" id="premium-wht-lbl-version" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-version'], true) ?>>
148
+ <label for="premium-wht-lbl-version"></label>
149
+ <span><?php echo __('This will hide the Version Control tab.', 'premium-addons-for-elementor'); ?></span>
150
+
151
+ <!-- Hide Logo-->
152
+ <p class="pa-input-label"><?php echo __('Hide Premium Addons Logo', 'premium-addons-for-elementor'); ?></p>
153
+ <input name="premium-wht-lbl-logo" id="premium-wht-lbl-logo" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-logo'], true) ?>>
154
+ <label for="premium-wht-lbl-logo"></label>
155
+ <span><?php echo __('This will hide Premium Addons logo located on the dashboard.', 'premium-addons-for-elementor'); ?></span>
156
+
157
+ <!-- Hide License Tab-->
158
+ <p class="pa-input-label"><?php echo __('License Tab', 'premium-addons-for-elementor'); ?></p>
159
+ <input name="premium-wht-lbl-license" id="premium-wht-lbl-license" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-license'], true) ?>>
160
+ <label for="premium-wht-lbl-license"></label>
161
+ <span><?php echo __('This will hide the License tab.', 'premium-addons-for-elementor') ;?></span>
162
+
163
+ <!-- Hide White Labeling Tab-->
164
+
165
+ <p class="pa-input-label"><?php echo __('White Labeling Tab', 'premium-addons-for-elementor'); ?></p>
166
+ <input name="premium-wht-lbl-option" id="premium-wht-lbl-option" type="checkbox" <?php checked(1, $settings['premium-wht-lbl-option'], true) ?>>
167
+ <label for="premium-wht-lbl-option"></label>
168
+ <span><?php echo __('This will hide the White Labeling tab options.', 'premium-addons-for-elementor'); ?></span>
169
+
170
+ <p>
171
+ <strong><?php _e('NOTE: ', 'premium-addons-for-elementor'); ?></strong>
172
+ <?php echo __('You will need to reactivate Premium Addons PRO for Elementor plugin to be able to reset White Labeling tab options.', 'premium-addons-for-elementor'); ?>
173
+ </p>
174
+ </div>
175
+ </div>
176
+ </div>
177
+ <div class="clearfix"></div>
178
+ </div>
179
+ </form>
180
+ </div>
181
+ </div>
182
+ </div> <!-- End Section Content -->
admin/includes/version-control.php DELETED
@@ -1,142 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Includes;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if( ! defined( 'ABSPATH' ) ) exit;
8
-
9
- class Version_Control {
10
-
11
- public $pa_beta_keys = [ 'is-beta-tester' ];
12
-
13
- private $pa_beta_default_settings;
14
-
15
- private $pa_beta_settings;
16
-
17
- private $pa_beta_get_settings;
18
-
19
- public function __construct() {
20
-
21
- add_action( 'admin_menu', array ($this,'create_version_control_menu' ), 100 );
22
-
23
- add_action( 'wp_ajax_pa_beta_save_settings', array( $this, 'pa_beta_save_settings' ) );
24
-
25
- }
26
-
27
-
28
- public function create_version_control_menu() {
29
-
30
- if ( ! Helper_Functions::is_hide_version_control() ) {
31
-
32
- add_submenu_page(
33
- 'premium-addons',
34
- '',
35
- __('Version Control','premium-addons-for-elementor'),
36
- 'manage_options',
37
- 'premium-addons-version',
38
- [$this, 'pa_version_page']
39
- );
40
- }
41
-
42
- }
43
-
44
- public function pa_version_page() {
45
-
46
- $js_info = array(
47
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
48
- 'nonce' => wp_create_nonce( 'pa-version-control' ),
49
- );
50
-
51
- wp_localize_script( 'pa-admin-js', 'settings', $js_info );
52
-
53
- $this->pa_beta_default_settings = array_fill_keys( $this->pa_beta_keys, true );
54
-
55
- $this->pa_beta_get_settings = get_option( 'pa_beta_save_settings', $this->pa_beta_default_settings );
56
-
57
- $pa_beta_new_settings = array_diff_key( $this->pa_beta_default_settings, $this->pa_beta_get_settings );
58
-
59
- if( ! empty( $pa_beta_new_settings ) ) {
60
- $pa_beta_updated_settings = array_merge( $this->pa_beta_get_settings, $pa_beta_new_settings );
61
- update_option( 'pa_beta_save_settings', $pa_beta_updated_settings );
62
- }
63
-
64
- $this->pa_beta_get_settings = get_option( 'pa_beta_save_settings', $this->pa_beta_default_settings );
65
-
66
- ?>
67
-
68
- <div class="wrap">
69
- <div class="response-wrap"></div>
70
- <form action="" method="POST" id="pa-beta-form" name="pa-beta-form">
71
- <div class="pa-header-wrapper">
72
- <div class="pa-title-left">
73
- <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
74
- <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(), Helper_Functions::author() ); ?></h3>
75
- </div>
76
- <?php if( ! Helper_Functions::is_hide_logo() ) : ?>
77
- <div class="pa-title-right">
78
- <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png'; ?>">
79
- </div>
80
- <?php endif; ?>
81
- </div>
82
- <div class="pa-settings-tabs">
83
- <div id="pa-maintenance" class="pa-settings-tab">
84
- <div class="pa-row">
85
- <table class="pa-beta-table">
86
- <tr>
87
- <th>
88
- <h4 class="pa-roll-back"><?php echo __('Rollback to Previous Version', 'premium-addons-for-elementor'); ?></h4>
89
- <span class="pa-roll-back-span"><?php echo sprintf( __('Experiencing an issue with Premium Addons for Elementor version %s? Rollback to a previous version before the issue appeared.', 'premium-addons-for-elementor'), PREMIUM_ADDONS_VERSION ); ?></span>
90
- </th>
91
- </tr>
92
- <tr class="pa-roll-row">
93
- <th><?php echo __('Rollback Version', 'premium-addons-for-elementor'); ?></th>
94
- <td>
95
- <div><?php echo sprintf( '<a target="_blank" href="%1$s" class="button pa-btn pa-rollback-button elementor-button-spinner">%2$s</a>', wp_nonce_url( admin_url( 'admin-post.php?action=premium_addons_rollback' ), 'premium_addons_rollback' ), __('Rollback to Version ' . PREMIUM_ADDONS_STABLE_VERSION, 'premium-addons-for-elementor') ); ?></div>
96
- <p class="pa-roll-desc">
97
- <span><?php echo __('Warning: Please backup your database before making the rollback.', 'premium-addons-for-elementor'); ?></span>
98
- </p>
99
- </td>
100
- </tr>
101
- <tr>
102
- <th>
103
- <h4 class="pa-beta-test"><?php echo __('Become a Beta Tester', 'premium-addons-for-elementor'); ?></h4>
104
- <span class="pa-beta-test-span"><?php echo __('Turn-on Beta Tester, to get notified when a new beta version of Premium Addons for Elementor. The Beta version will not install automatically. You always have the option to ignore it.', 'premium-addons-for-elementor'); ?></span>
105
- </th>
106
- </tr>
107
- <tr class="pa-beta-row">
108
- <th><?php echo __('Beta Tester','premium-addons-for-elementor'); ?></th>
109
- <td>
110
- <div><input name="is-beta-tester" id="is-beta-tester" type="checkbox" <?php checked(1, $this->pa_beta_get_settings['is-beta-tester'], true) ?>><span><?php echo __('Check this box to get updates for beta versions','premium-addons-for-elementor'); ?></span></div>
111
- <p class="pa-beta-desc"><span><?php echo __('Please Note: We do not recommend updating to a beta version on production sites.', 'premium-addons-for-elementor'); ?></span></p>
112
- </td>
113
- </tr>
114
- </table>
115
- <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
116
- </div>
117
- </div>
118
- </div>
119
- </form>
120
- </div>
121
-
122
- <?php }
123
-
124
- public function pa_beta_save_settings() {
125
-
126
- check_ajax_referer('pa-version-control', 'security');
127
-
128
- if( isset( $_POST['fields'] ) ) {
129
- parse_str( $_POST['fields'], $settings );
130
- } else {
131
- return;
132
- }
133
-
134
- $this->pa_beta_settings = array(
135
- 'is-beta-tester' => intval( $settings['is-beta-tester'] ? 1 : 0 ),
136
- );
137
-
138
- update_option( 'pa_beta_save_settings', $this->pa_beta_settings );
139
-
140
- return true;
141
- }
142
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/settings/maps.php DELETED
@@ -1,182 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Settings;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if( ! defined( 'ABSPATH' ) ) exit;
8
-
9
- class Maps {
10
-
11
- public static $pa_maps_keys = [ 'premium-map-api', 'premium-map-disable-api', 'premium-map-cluster', 'premium-map-locale' ];
12
-
13
- private $pa_maps_default_settings;
14
-
15
- private $pa_maps_settings;
16
-
17
- private $pa_maps_get_settings;
18
-
19
- public function __construct() {
20
-
21
- add_action( 'admin_menu', array ( $this,'create_maps_menu' ), 100 );
22
-
23
- add_action( 'wp_ajax_pa_maps_save_settings', array( $this, 'pa_save_maps_settings' ) );
24
-
25
- }
26
-
27
- public function create_maps_menu() {
28
-
29
- add_submenu_page(
30
- 'premium-addons',
31
- '',
32
- __('Google Maps', 'premium-addons-for-elementor'),
33
- 'manage_options',
34
- 'premium-addons-maps',
35
- [ $this, 'pa_maps_page' ]
36
- );
37
-
38
- }
39
-
40
- public function pa_maps_page() {
41
-
42
- $js_info = array(
43
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
44
- 'nonce' => wp_create_nonce( 'pa-maps' ),
45
- );
46
-
47
- wp_localize_script( 'pa-admin-js', 'settings', $js_info );
48
-
49
- $this->pa_maps_default_settings = $this->get_default_keys();
50
-
51
- $this->pa_maps_get_settings = $this->get_enabled_keys();
52
-
53
- $pa_maps_new_settings = array_diff_key( $this->pa_maps_default_settings, $this->pa_maps_get_settings );
54
-
55
- if( ! empty( $pa_maps_new_settings ) ) {
56
- $pa_maps_updated_settings = array_merge( $this->pa_maps_get_settings, $pa_maps_new_settings );
57
- update_option( 'pa_maps_save_settings', $pa_maps_updated_settings );
58
- }
59
-
60
- $this->pa_maps_get_settings = get_option( 'pa_maps_save_settings', $this->pa_maps_default_settings );
61
-
62
- $settings = $this->pa_maps_get_settings;
63
-
64
- $locales = Helper_Functions::get_google_maps_prefixes();
65
-
66
- ?>
67
- <div class="wrap">
68
- <div class="response-wrap"></div>
69
- <form action="" method="POST" id="pa-maps" name="pa-maps">
70
- <div class="pa-header-wrapper">
71
- <div class="pa-title-left">
72
- <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
73
- <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(), Helper_Functions::author()); ?></h3>
74
- </div>
75
- <?php if( ! Helper_Functions::is_hide_logo()) : ?>
76
- <div class="pa-title-right">
77
- <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png';?>">
78
- </div>
79
- <?php endif; ?>
80
- </div>
81
- <div class="pa-settings-tabs">
82
- <div id="pa-maps-api" class="pa-maps-tab">
83
- <div class="pa-row">
84
- <table class="pa-maps-table">
85
- <tr>
86
- <p class="pa-maps-api-notice">
87
- <?php echo esc_html( Helper_Functions::get_prefix() ) . __(' Maps Element requires Google API key to be entered below. If you don’t have one, click ', 'premium-addons-for-elementor'); ?><a href="https://premiumaddons.com/docs/getting-your-api-key-for-google-reviews/" target="_blank"><?php echo __('here', 'premium-addons-for-elementor'); ?></a><?php echo __(' to get your key.', 'premium-addons-for-elementor'); ?>
88
- </p>
89
- </tr>
90
- <tr>
91
- <td>
92
- <h4 class="pa-api-title"><?php echo __('Google Maps API Key:', 'premium-addons-for-elementor'); ?></h4>
93
- </td>
94
- <td>
95
- <input name="premium-map-api" id="premium-map-api" type="text" placeholder="API Key" value="<?php echo esc_attr( $settings['premium-map-api'] ); ?>">
96
- </td>
97
- </tr>
98
- <tr>
99
- <td>
100
- <h4 class="pa-api-disable-title"><?php echo __('Google Maps Localization Language:', 'premium-addons-for-elementor'); ?></h4>
101
- </td>
102
- <td>
103
- <select name="premium-map-locale" id="premium-map-locale" class="placeholder placeholder-active">
104
- <option value=""><?php _e( 'Default', 'premium-addons-for-elementor' ); ?></option>
105
- <?php foreach ( $locales as $key => $value ) { ?>
106
- <?php
107
- $selected = '';
108
- if ( $key === $settings['premium-map-locale'] ) {
109
- $selected = 'selected="selected" ';
110
- }
111
- ?>
112
- <option value="<?php echo esc_attr( $key ); ?>" <?php echo $selected; ?>><?php echo esc_attr( $value ); ?></option>
113
- <?php } ?>
114
- </select>
115
- </td>
116
- </tr>
117
- <tr>
118
- <td>
119
- <h4 class="pa-api-disable-title"><?php echo __('Load Maps API JS File:','premium-addons-for-elementor'); ?></h4>
120
- </td>
121
- <td>
122
- <input name="premium-map-disable-api" id="premium-map-disable-api" type="checkbox" <?php checked(1, $settings['premium-map-disable-api'], true) ?>><span><?php echo __('This will load API JS file if it\'s not loaded by another theme or plugin', 'premium-addons-for-elementor'); ?></span>
123
- </td>
124
- </tr>
125
- <tr>
126
- <td>
127
- <h4 class="pa-api-disable-title"><?php echo __('Load Markers Clustering JS File:','premium-addons-for-elementor'); ?></h4>
128
- </td>
129
- <td>
130
- <input name="premium-map-cluster" id="premium-map-cluster" type="checkbox" <?php checked(1, $settings['premium-map-cluster'], true) ?>><span><?php echo __('This will load the JS file for markers clusters', 'premium-addons-for-elementor'); ?></span>
131
- </td>
132
- </tr>
133
- </table>
134
- <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
135
- <?php if( ! Helper_Functions::is_hide_rate() ) : ?>
136
- <div>
137
- <p><?php echo __('Did you like Premium Addons for Elementor Plugin? Please ', 'premium-addons-for-elementor'); ?><a href="https://wordpress.org/support/plugin/premium-addons-for-elementor/reviews/#new-post" target="_blank"><?php echo __('Click Here to Rate it ★★★★★', 'premium-addons-for-elementor'); ?></a></p>
138
- </div>
139
- <?php endif; ?>
140
- </div>
141
- </div>
142
- </div>
143
- </form>
144
- </div>
145
- <?php }
146
-
147
- public static function get_default_keys() {
148
-
149
- $default_keys = array_fill_keys( self::$pa_maps_keys, true );
150
-
151
- return $default_keys;
152
- }
153
-
154
- public static function get_enabled_keys() {
155
-
156
- $enabled_keys = get_option( 'pa_maps_save_settings', self::get_default_keys() );
157
-
158
- return $enabled_keys;
159
- }
160
-
161
- public function pa_save_maps_settings() {
162
-
163
- check_ajax_referer('pa-maps', 'security');
164
-
165
- if( isset( $_POST['fields'] ) ) {
166
- parse_str( $_POST['fields'], $settings );
167
- } else {
168
- return;
169
- }
170
-
171
- $this->pa_maps_settings = array(
172
- 'premium-map-api' => sanitize_text_field( $settings['premium-map-api'] ),
173
- 'premium-map-disable-api' => intval( $settings['premium-map-disable-api'] ? 1 : 0 ),
174
- 'premium-map-cluster' => intval( $settings['premium-map-cluster'] ? 1 : 0 ),
175
- 'premium-map-locale' => sanitize_text_field( $settings['premium-map-locale'] )
176
- );
177
-
178
- update_option( 'pa_maps_save_settings', $this->pa_maps_settings );
179
-
180
- return true;
181
- }
182
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/settings/modules-setting.php DELETED
@@ -1,820 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons\Admin\Settings;
4
-
5
- use PremiumAddons\Helper_Functions;
6
-
7
- if( ! defined( 'ABSPATH' ) ) exit(); // Exit if accessed directly
8
-
9
- class Modules_Settings {
10
-
11
- protected $page_slug = 'premium-addons';
12
-
13
- public static $pa_elements_keys = ['premium-banner', 'premium-blog', 'premium-carousel', 'premium-countdown', 'premium-counter', 'premium-dual-header', 'premium-fancytext', 'premium-image-separator', 'premium-lottie', 'premium-maps', 'premium-modalbox', 'premium-person', 'premium-progressbar', 'premium-testimonials', 'premium-title', 'premium-videobox', 'premium-pricing-table', 'premium-button', 'premium-contactform', 'premium-image-button', 'premium-grid', 'premium-vscroll', 'premium-image-scroll', 'premium-templates', 'premium-duplicator' ];
14
-
15
- private $pa_default_settings;
16
-
17
- private $pa_settings;
18
-
19
- private $pa_get_settings;
20
-
21
- public function __construct() {
22
-
23
- add_action( 'admin_menu', array( $this,'pa_admin_menu') );
24
-
25
- add_action( 'admin_enqueue_scripts', array( $this, 'pa_admin_page_scripts' ) );
26
-
27
- add_action( 'wp_ajax_pa_save_admin_addons_settings', array( $this, 'pa_save_settings' ) );
28
-
29
- add_action( 'admin_enqueue_scripts',array( $this, 'localize_js_script' ) );
30
-
31
- }
32
-
33
- public function localize_js_script(){
34
- wp_localize_script(
35
- 'pa-admin-js',
36
- 'premiumRollBackConfirm',
37
- [
38
- 'home_url' => home_url(),
39
- 'i18n' => [
40
- 'rollback_confirm' => __( 'Are you sure you want to reinstall version ' . PREMIUM_ADDONS_STABLE_VERSION . ' ?', 'premium-addons-for-elementor' ),
41
- 'rollback_to_previous_version' => __( 'Rollback to Previous Version', 'premium-addons-for-elementor' ),
42
- 'yes' => __( 'Yes', 'premium-addons-for-elementor' ),
43
- 'cancel' => __( 'Cancel', 'premium-addons-for-elementor' ),
44
- ],
45
- ]
46
- );
47
- }
48
-
49
- public function pa_admin_page_scripts () {
50
-
51
- wp_enqueue_style( 'pa_admin_icon', PREMIUM_ADDONS_URL .'admin/assets/fonts/style.css' );
52
-
53
- $suffix = is_rtl() ? '-rtl' : '';
54
-
55
- $current_screen = get_current_screen();
56
-
57
- wp_enqueue_style(
58
- 'pa-notice-css',
59
- PREMIUM_ADDONS_URL . 'admin/assets/css/notice' . $suffix . '.css'
60
- );
61
-
62
- if( strpos( $current_screen->id , $this->page_slug ) !== false ) {
63
-
64
- wp_enqueue_style(
65
- 'pa-admin-css',
66
- PREMIUM_ADDONS_URL.'admin/assets/css/admin' . $suffix . '.css'
67
- );
68
-
69
- wp_enqueue_style(
70
- 'pa-sweetalert-style',
71
- PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/sweetalert2.min.css'
72
- );
73
-
74
- wp_enqueue_script(
75
- 'pa-admin-js',
76
- PREMIUM_ADDONS_URL .'admin/assets/js/admin.js',
77
- array('jquery'),
78
- PREMIUM_ADDONS_VERSION,
79
- true
80
- );
81
-
82
- wp_enqueue_script(
83
- 'pa-admin-dialog',
84
- PREMIUM_ADDONS_URL . 'admin/assets/js/dialog/dialog.js',
85
- array('jquery-ui-position'),
86
- PREMIUM_ADDONS_VERSION,
87
- true
88
- );
89
-
90
- wp_enqueue_script(
91
- 'pa-sweetalert-core',
92
- PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/core.js',
93
- array('jquery'),
94
- PREMIUM_ADDONS_VERSION,
95
- true
96
- );
97
-
98
- wp_enqueue_script(
99
- 'pa-sweetalert',
100
- PREMIUM_ADDONS_URL . 'admin/assets/js/sweetalert2/sweetalert2.min.js',
101
- array( 'jquery', 'pa-sweetalert-core' ),
102
- PREMIUM_ADDONS_VERSION,
103
- true
104
- );
105
-
106
- }
107
- }
108
-
109
- public function pa_admin_menu() {
110
-
111
- $plugin_name = 'Premium Addons for Elementor';
112
-
113
- if( Helper_Functions::check_papro_version() ) {
114
- if( isset( get_option( 'pa_wht_lbl_save_settings' )['premium-wht-lbl-plugin-name'] ) ) {
115
- $name = get_option( 'pa_wht_lbl_save_settings' )['premium-wht-lbl-plugin-name'];
116
- if( '' !== $name )
117
- $plugin_name = $name;
118
- }
119
-
120
- }
121
-
122
- add_menu_page(
123
- $plugin_name,
124
- $plugin_name,
125
- 'manage_options',
126
- 'premium-addons',
127
- array( $this , 'pa_admin_page' ),
128
- '' ,
129
- 100
130
- );
131
- }
132
-
133
- public function pa_admin_page() {
134
-
135
- $theme_slug = Helper_Functions::get_installed_theme();
136
-
137
- $js_info = array(
138
- 'ajaxurl' => admin_url( 'admin-ajax.php' ),
139
- 'nonce' => wp_create_nonce( 'pa-elements' ),
140
- 'theme' => $theme_slug
141
- );
142
-
143
- wp_localize_script( 'pa-admin-js', 'settings', $js_info );
144
-
145
- $this->pa_default_settings = $this->get_default_keys();
146
-
147
- $this->pa_get_settings = $this->get_enabled_keys();
148
-
149
- $pa_new_settings = array_diff_key( $this->pa_default_settings, $this->pa_get_settings );
150
-
151
- if( ! empty( $pa_new_settings ) ) {
152
- $pa_updated_settings = array_merge( $this->pa_get_settings, $pa_new_settings );
153
- update_option( 'pa_save_settings', $pa_updated_settings );
154
- }
155
- $this->pa_get_settings = get_option( 'pa_save_settings', $this->pa_default_settings );
156
-
157
- $prefix = Helper_Functions::get_prefix();
158
-
159
- ?>
160
- <div class="wrap">
161
- <div class="response-wrap"></div>
162
- <form action="" method="POST" id="pa-settings" name="pa-settings">
163
- <div class="pa-header-wrapper">
164
- <div class="pa-title-left">
165
- <h1 class="pa-title-main"><?php echo Helper_Functions::name(); ?></h1>
166
- <h3 class="pa-title-sub"><?php echo sprintf(__('Thank you for using %s. This plugin has been developed by %s and we hope you enjoy using it.','premium-addons-for-elementor'), Helper_Functions::name(), Helper_Functions::author() ); ?></h3>
167
- </div>
168
- <?php if( ! Helper_Functions::is_hide_logo() ) : ?>
169
- <div class="pa-title-right">
170
- <img class="pa-logo" src="<?php echo PREMIUM_ADDONS_URL . 'admin/images/premium-addons-logo.png';?>">
171
- </div>
172
- <?php endif; ?>
173
- </div>
174
- <div class="pa-settings-tabs">
175
- <div id="pa-modules" class="pa-settings-tab">
176
- <div>
177
- <br>
178
- <input type="checkbox" class="pa-checkbox" checked="checked">
179
- <label>Enable/Disable All</label>
180
- </div>
181
- <table class="pa-elements-table">
182
- <tbody>
183
- <tr>
184
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Banner', 'premium-addons-for-elementor') ); ?></th>
185
- <td>
186
- <label class="switch">
187
- <input type="checkbox" id="premium-banner" name="premium-banner" <?php checked(1, $this->pa_get_settings['premium-banner'], true) ?>>
188
- <span class="slider round"></span>
189
- </label>
190
- </td>
191
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Blog', 'premium-addons-for-elementor') ); ?></th>
192
- <td>
193
- <label class="switch">
194
- <input type="checkbox" id="premium-blog" name="premium-blog" <?php checked(1, $this->pa_get_settings['premium-blog'], true) ?>>
195
- <span class="slider round"></span>
196
- </label>
197
- </td>
198
- </tr>
199
-
200
- <tr>
201
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Button', 'premium-addons-for-elementor') ); ?></th>
202
- <td>
203
- <label class="switch">
204
- <input type="checkbox" id="premium-button" name="premium-button" <?php checked(1, $this->pa_get_settings['premium-button'], true) ?>>
205
- <span class="slider round"></span>
206
- </label>
207
- </td>
208
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Carousel', 'premium-addons-for-elementor') ); ?></th>
209
- <td>
210
- <label class="switch">
211
- <input type="checkbox" id="premium-carousel" name="premium-carousel" <?php checked(1, $this->pa_get_settings['premium-carousel'], true) ?>>
212
- <span class="slider round"></span>
213
- </label>
214
- </td>
215
- </tr>
216
-
217
- <tr>
218
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Contact Form7', 'premium-addons-for-elementor') ); ?></th>
219
- <td>
220
- <label class="switch">
221
- <input type="checkbox" id="premium-contactform" name="premium-contactform" <?php checked(1, $this->pa_get_settings['premium-contactform'], true) ?>>
222
- <span class="slider round"></span>
223
- </label>
224
- </td>
225
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Countdown', 'premium-addons-for-elementor') ); ?></th>
226
- <td>
227
- <label class="switch">
228
- <input type="checkbox" id="premium-countdown" name="premium-countdown" <?php checked(1, $this->pa_get_settings['premium-countdown'], true) ?>>
229
- <span class="slider round"></span>
230
- </label>
231
- </td>
232
- </tr>
233
-
234
- <tr>
235
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Counter', 'premium-addons-for-elementor') ); ?></th>
236
- <td>
237
- <label class="switch">
238
- <input type="checkbox" id="premium-counter" name="premium-counter" <?php checked(1, $this->pa_get_settings['premium-counter'], true) ?>>
239
- <span class="slider round"></span>
240
- </label>
241
- </td>
242
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Dual Heading', 'premium-addons-for-elementor') ); ?></th>
243
- <td>
244
- <label class="switch">
245
- <input type="checkbox" id="premium-dual-header" name="premium-dual-header" <?php checked(1, $this->pa_get_settings['premium-dual-header'], true) ?>>
246
- <span class="slider round"></span>
247
- </label>
248
- </td>
249
- </tr>
250
-
251
- <tr>
252
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Fancy Text', 'premium-addons-for-elementor') ); ?></th>
253
- <td>
254
- <label class="switch">
255
- <input type="checkbox" id="premium-fancytext" name="premium-fancytext" <?php checked(1, $this->pa_get_settings['premium-fancytext'], true) ?>>
256
- <span class="slider round"></span>
257
- </label>
258
- </td>
259
-
260
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Media Grid', 'premium-addons-for-elementor') ); ?></th>
261
- <td>
262
- <label class="switch">
263
- <input type="checkbox" id="premium-grid" name="premium-grid" <?php checked(1, $this->pa_get_settings['premium-grid'], true) ?>>
264
- <span class="slider round"></span>
265
- </label>
266
- </td>
267
- </tr>
268
-
269
- <tr>
270
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Image Button', 'premium-addons-for-elementor') ); ?></th>
271
- <td>
272
- <label class="switch">
273
- <input type="checkbox" id="premium-image-button" name="premium-image-button" <?php checked(1, $this->pa_get_settings['premium-image-button'], true) ?>>
274
- <span class="slider round"></span>
275
- </label>
276
- </td>
277
-
278
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Image Scroll', 'premium-addons-for-elementor') ); ?></th>
279
- <td>
280
- <label class="switch">
281
- <input type="checkbox" id="premium-image-scroll" name="premium-image-scroll" <?php checked(1, $this->pa_get_settings['premium-image-scroll'], true) ?>>
282
- <span class="slider round"></span>
283
- </label>
284
- </td>
285
- </tr>
286
-
287
- <tr>
288
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Image Separator', 'premium-addons-for-elementor') ); ?></th>
289
- <td>
290
- <label class="switch">
291
- <input type="checkbox" id="premium-image-separator" name="premium-image-separator" <?php checked(1, $this->pa_get_settings['premium-image-separator'], true) ?>>
292
- <span class="slider round"></span>
293
- </label>
294
- </td>
295
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Lottie Animations', 'premium-addons-for-elementor') ); ?></th>
296
- <td>
297
- <label class="switch">
298
- <input type="checkbox" id="premium-lottie" name="premium-lottie" <?php checked(1, $this->pa_get_settings['premium-lottie'], true) ?>>
299
- <span class="slider round"></span>
300
- </label>
301
- </td>
302
- </tr>
303
-
304
- <tr>
305
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Maps', 'premium-addons-for-elementor') ); ?></th>
306
- <td>
307
- <label class="switch">
308
- <input type="checkbox" id="premium-maps" name="premium-maps" <?php checked(1, $this->pa_get_settings['premium-maps'], true) ?>>
309
- <span class="slider round"></span>
310
- </label>
311
- </td>
312
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Modal Box', 'premium-addons-for-elementor') ); ?></th>
313
- <td>
314
- <label class="switch">
315
- <input type="checkbox" id="premium-modalbox" name="premium-modalbox" <?php checked(1, $this->pa_get_settings['premium-modalbox'], true) ?>>
316
- <span class="slider round"></span>
317
- </label>
318
- </td>
319
- </tr>
320
-
321
- <tr>
322
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Team Members', 'premium-addons-for-elementor') ); ?></th>
323
- <td>
324
- <label class="switch">
325
- <input type="checkbox" id="premium-person" name="premium-person" <?php checked(1, $this->pa_get_settings['premium-person'], true) ?>>
326
- <span class="slider round"></span>
327
- </label>
328
- </td>
329
-
330
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Progress Bar', 'premium-addons-for-elementor') ); ?></th>
331
- <td>
332
- <label class="switch">
333
- <input type="checkbox" id="premium-progressbar" name="premium-progressbar" <?php checked(1, $this->pa_get_settings['premium-progressbar'], true) ?>>
334
- <span class="slider round"></span>
335
- </label>
336
- </td>
337
- </tr>
338
-
339
- <tr>
340
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Pricing Table', 'premium-addons-for-elementor') ); ?></th>
341
- <td>
342
- <label class="switch">
343
- <input type="checkbox" id="premium-pricing-table" name="premium-pricing-table" <?php checked(1, $this->pa_get_settings['premium-pricing-table'], true) ?>>
344
- <span class="slider round"></span>
345
- </label>
346
- </td>
347
-
348
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Testimonials', 'premium-addons-for-elementor') ); ?></th>
349
- <td>
350
- <label class="switch">
351
- <input type="checkbox" id="premium-testimonials" name="premium-testimonials" <?php checked(1, $this->pa_get_settings['premium-testimonials'], true) ?>>
352
- <span class="slider round"></span>
353
- </label>
354
- </td>
355
- </tr>
356
-
357
- <tr>
358
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Title', 'premium-addons-for-elementor') ); ?></th>
359
- <td>
360
- <label class="switch">
361
- <input type="checkbox" id="premium-title" name="premium-title" <?php checked(1, $this->pa_get_settings['premium-title'], true) ?>>
362
- <span class="slider round"></span>
363
- </label>
364
- </td>
365
-
366
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Video Box', 'premium-addons-for-elementor') ); ?></th>
367
- <td>
368
- <label class="switch">
369
- <input type="checkbox" id="premium-videobox" name="premium-videobox" <?php checked(1, $this->pa_get_settings['premium-videobox'], true) ?>>
370
- <span class="slider round"></span>
371
- </label>
372
- </td>
373
- </tr>
374
-
375
- <tr>
376
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Vertical Scroll', 'premium-addons-for-elementor') ); ?></th>
377
- <td>
378
- <label class="switch">
379
- <input type="checkbox" id="premium-vscroll" name="premium-vscroll" <?php checked(1, $this->pa_get_settings['premium-vscroll'], true) ?>>
380
- <span class="slider round"></span>
381
- </label>
382
- </td>
383
- </tr>
384
-
385
- <tr>
386
-
387
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Duplicator', 'premium-addons-for-elementor') ); ?></th>
388
- <td>
389
- <label class="switch">
390
- <input type="checkbox" id="premium-duplicator" name="premium-duplicator" <?php checked(1, $this->pa_get_settings['premium-duplicator'], true) ?>>
391
- <span class="slider round"></span>
392
- </label>
393
- </td>
394
-
395
- <th><?php echo sprintf( '%1$s %2$s', $prefix, __('Templates', 'premium-addons-for-elementor') ); ?></th>
396
- <td>
397
- <label class="switch">
398
- <input type="checkbox" id="premium-templates" name="premium-templates" <?php checked(1, $this->pa_get_settings['premium-templates'], true) ?>>
399
- <span class="slider round"></span>
400
- </label>
401
- </td>
402
-
403
- </tr>
404
-
405
- <?php if( ! Helper_Functions::check_papro_version() ) : ?>
406
- <tr class="pa-sec-elems-tr"><th><h1>PRO Elements</h1></th></tr>
407
-
408
- <tr>
409
-
410
- <th><?php echo __('Premium Alert Box', 'premium-addons-for-elementor'); ?></th>
411
- <td>
412
- <label class="switch">
413
- <input type="checkbox">
414
- <span class="pro-slider round"></span>
415
- </label>
416
- </td>
417
-
418
- <th><?php echo __('Premium Behance Feed', 'premium-addons-for-elementor'); ?></th>
419
- <td>
420
- <label class="switch">
421
- <input type="checkbox">
422
- <span class="pro-slider round"></span>
423
- </label>
424
- </td>
425
-
426
- </tr>
427
-
428
- <tr>
429
-
430
- <th><?php echo __('Premium Charts', 'premium-addons-for-elementor'); ?></th>
431
- <td>
432
- <label class="switch">
433
- <input type="checkbox">
434
- <span class="pro-slider round"></span>
435
- </label>
436
- </td>
437
-
438
- <th><?php echo __('Premium Content Switcher', 'premium-addons-for-elementor'); ?></th>
439
- <td>
440
- <label class="switch">
441
- <input type="checkbox">
442
- <span class="pro-slider round"></span>
443
- </label>
444
- </td>
445
-
446
- </tr>
447
-
448
- <tr>
449
- <th><?php echo __('Premium Background Transition', 'premium-addons-for-elementor'); ?></th>
450
- <td>
451
- <label class="switch">
452
- <input type="checkbox">
453
- <span class="pro-slider round"></span>
454
- </label>
455
- </td>
456
-
457
- <th><?php echo __('Premium Divider', 'premium-addons-for-elementor'); ?></th>
458
- <td>
459
- <label class="switch">
460
- <input type="checkbox">
461
- <span class="pro-slider round"></span>
462
- </label>
463
- </td>
464
- </tr>
465
-
466
- <tr>
467
-
468
- <th><?php echo __('Premium Facebook Feed', 'premium-addons-for-elementor'); ?></th>
469
- <td>
470
- <label class="switch">
471
- <input type="checkbox">
472
- <span class="pro-slider round"></span>
473
- </label>
474
- </td>
475
-
476
- <th><?php echo __('Premium Facebook Reviews', 'premium-addons-for-elementor'); ?></th>
477
- <td>
478
- <label class="switch">
479
- <input type="checkbox">
480
- <span class="pro-slider round"></span>
481
- </label>
482
- </td>
483
- </tr>
484
-
485
- <tr>
486
- <th><?php echo __('Premium Flip Box', 'premium-addons-for-elementor'); ?></th>
487
- <td>
488
- <label class="switch">
489
- <input type="checkbox">
490
- <span class="pro-slider round"></span>
491
- </label>
492
- </td>
493
-
494
- <th><?php echo __('Premium Google Reviews', 'premium-addons-for-elementor'); ?></th>
495
- <td>
496
- <label class="switch">
497
- <input type="checkbox">
498
- <span class="pro-slider round"></span>
499
- </label>
500
- </td>
501
- </tr>
502
-
503
- <tr>
504
- <th><?php echo __('Premium Horizontal Scroll', 'premium-addons-for-elementor'); ?></th>
505
- <td>
506
- <label class="switch">
507
- <input type="checkbox">
508
- <span class="pro-slider round"></span>
509
- </label>
510
- </td>
511
-
512
- <th><?php echo __('Premium Icon Box', 'premium-addons-for-elementor'); ?></th>
513
- <td>
514
- <label class="switch">
515
- <input type="checkbox">
516
- <span class="pro-slider round"></span>
517
- </label>
518
- </td>
519
- </tr>
520
-
521
- <tr>
522
- <th><?php echo __('Premium iHover', 'premium-addons-for-elementor'); ?></th>
523
- <td>
524
- <label class="switch">
525
- <input type="checkbox">
526
- <span class="pro-slider round"></span>
527
- </label>
528
- </td>
529
-
530
- <th><?php echo __('Premium Image Accordion', 'premium-addons-for-elementor'); ?></th>
531
- <td>
532
- <label class="switch">
533
- <input type="checkbox">
534
- <span class="pro-slider round"></span>
535
- </label>
536
- </td>
537
- </tr>
538
-
539
- <tr>
540
- <th><?php echo __('Premium Image Comparison', 'premium-addons-for-elementor'); ?></th>
541
- <td>
542
- <label class="switch">
543
- <input type="checkbox">
544
- <span class="pro-slider round"></span>
545
- </label>
546
- </td>
547
-
548
- <th><?php echo __('Premium Image Hotspots', 'premium-addons-for-elementor'); ?></th>
549
- <td>
550
- <label class="switch">
551
- <input type="checkbox">
552
- <span class="pro-slider round"></span>
553
- </label>
554
- </td>
555
- </tr>
556
-
557
- <tr>
558
- <th><?php echo __('Premium Image Layers', 'premium-addons-for-elementor'); ?></th>
559
- <td>
560
- <label class="switch">
561
- <input type="checkbox">
562
- <span class="pro-slider round"></span>
563
- </label>
564
- </td>
565
-
566
- <th><?php echo __('Premium Instagram Feed', 'premium-addons-for-elementor'); ?></th>
567
- <td>
568
- <label class="switch">
569
- <input type="checkbox">
570
- <span class="pro-slider round"></span>
571
- </label>
572
- </td>
573
- </tr>
574
-
575
- <tr>
576
- <th><?php echo __('Premium Magic Section', 'premium-addons-for-elementor'); ?></th>
577
- <td>
578
- <label class="switch">
579
- <input type="checkbox">
580
- <span class="pro-slider round"></span>
581
- </label>
582
- </td>
583
-
584
- <th><?php echo __('Premium Messenger Chat', 'premium-addons-for-elementor'); ?></th>
585
- <td>
586
- <label class="switch">
587
- <input type="checkbox">
588
- <span class="pro-slider round"></span>
589
- </label>
590
- </td>
591
- </tr>
592
-
593
- <tr>
594
- <th><?php echo __('Premium Multi Scroll', 'premium-addons-for-elementor'); ?></th>
595
- <td>
596
- <label class="switch">
597
- <input type="checkbox">
598
- <span class="pro-slider round"></span>
599
- </label>
600
- </td>
601
- <th><?php echo __('Premium Preview Window', 'premium-addons-for-elementor'); ?></th>
602
- <td>
603
- <label class="switch">
604
- <input type="checkbox">
605
- <span class="pro-slider round"></span>
606
- </label>
607
- </td>
608
- </tr>
609
-
610
- <tr>
611
- <th><?php echo __('Premium Table', 'premium-addons-for-elementor'); ?></th>
612
- <td>
613
- <label class="switch">
614
- <input type="checkbox">
615
- <span class="pro-slider round"></span>
616
- </label>
617
- </td>
618
- <th><?php echo __('Premium Tabs', 'premium-addons-for-elementor'); ?></th>
619
- <td>
620
- <label class="switch">
621
- <input type="checkbox">
622
- <span class="pro-slider round"></span>
623
- </label>
624
- </td>
625
- </tr>
626
-
627
- <tr>
628
- <th><?php echo __('Premium Twitter Feed', 'premium-addons-for-elementor'); ?></th>
629
- <td>
630
- <label class="switch">
631
- <input type="checkbox">
632
- <span class="pro-slider round"></span>
633
- </label>
634
- </td>
635
- <th><?php echo __('Premium Unfold', 'premium-addons-for-elementor'); ?></th>
636
- <td>
637
- <label class="switch">
638
- <input type="checkbox">
639
- <span class="pro-slider round"></span>
640
- </label>
641
- </td>
642
- </tr>
643
-
644
- <tr>
645
- <th><?php echo __('Premium Whatsapp Chat', 'premium-addons-for-elementor'); ?></th>
646
- <td>
647
- <label class="switch">
648
- <input type="checkbox">
649
- <span class="pro-slider round"></span>
650
- </label>
651
- </td>
652
-
653
- <th><?php echo __('Premium Yelp Reviews', 'premium-addons-for-elementor'); ?></th>
654
- <td>
655
- <label class="switch">
656
- <input type="checkbox">
657
- <span class="pro-slider round"></span>
658
- </label>
659
- </td>
660
- </tr>
661
-
662
- <tr>
663
- <th><?php echo __('Premium Section Parallax', 'premium-addons-for-elementor'); ?></th>
664
- <td>
665
- <label class="switch">
666
- <input type="checkbox">
667
- <span class="pro-slider round"></span>
668
- </label>
669
- </td>
670
- <th><?php echo __('Premium Section Particles', 'premium-addons-for-elementor'); ?></th>
671
- <td>
672
- <label class="switch">
673
- <input type="checkbox">
674
- <span class="pro-slider round"></span>
675
- </label>
676
- </td>
677
- </tr>
678
-
679
- <tr>
680
- <th><?php echo __('Premium Section Animated Gradient', 'premium-addons-for-elementor'); ?></th>
681
- <td>
682
- <label class="switch">
683
- <input type="checkbox">
684
- <span class="pro-slider round"></span>
685
- </label>
686
- </td>
687
- <th><?php echo __('Premium Section Ken Burns', 'premium-addons-for-elementor'); ?></th>
688
- <td>
689
- <label class="switch">
690
- <input type="checkbox">
691
- <span class="pro-slider round"></span>
692
- </label>
693
- </td>
694
- </tr>
695
-
696
- <tr>
697
- <th><?php echo __('Premium Section Lottie Animations', 'premium-addons-for-elementor'); ?></th>
698
- <td>
699
- <label class="switch">
700
- <input type="checkbox">
701
- <span class="pro-slider round"></span>
702
- </label>
703
- </td>
704
- </tr>
705
-
706
- <?php endif; ?>
707
- </tbody>
708
- </table>
709
- <input type="submit" value="<?php echo __('Save Settings', 'premium-addons-for-elementor'); ?>" class="button pa-btn pa-save-button">
710
-
711
- </div>
712
- <?php if( ! Helper_Functions::is_hide_rate()) : ?>
713
- <div>
714
- <p><?php echo __('Did you like Premium Addons for Elementor Plugin? Please ', 'premium-addons-for-elementor'); ?><a href="https://wordpress.org/support/plugin/premium-addons-for-elementor/reviews/#new-post" target="_blank"><?php echo __('Click Here to Rate it ★★★★★', 'premium-addons-for-elementor'); ?></a></p>
715
- </div>
716
- <?php endif; ?>
717
- </div>
718
- </form>
719
- </div>
720
- <?php
721
- }
722
-
723
- public static function get_default_keys() {
724
-
725
- $default_keys = array_fill_keys( self::$pa_elements_keys, true );
726
-
727
- return $default_keys;
728
- }
729
-
730
- public static function get_enabled_keys() {
731
-
732
- $enabled_keys = get_option( 'pa_save_settings', self::get_default_keys() );
733
-
734
- return $enabled_keys;
735
- }
736
-
737
- /*
738
- * Check If Premium Templates is enabled
739
- *
740
- * @since 3.6.0
741
- * @access public
742
- *
743
- * @return boolean
744
- */
745
- public static function check_premium_templates() {
746
-
747
- $settings = self::get_enabled_keys();
748
-
749
- if( ! isset( $settings['premium-templates'] ) )
750
- return true;
751
-
752
- $is_enabled = $settings['premium-templates'];
753
-
754
- return $is_enabled;
755
- }
756
-
757
- /*
758
- * Check If Premium Duplicator is enabled
759
- *
760
- * @since 3.9.7
761
- * @access public
762
- *
763
- * @return boolean
764
- */
765
- public static function check_premium_duplicator() {
766
-
767
- $settings = self::get_enabled_keys();
768
-
769
- if( ! isset( $settings['premium-duplicator'] ) )
770
- return true;
771
-
772
- $is_enabled = $settings['premium-duplicator'];
773
-
774
- return $is_enabled;
775
- }
776
-
777
- public function pa_save_settings() {
778
-
779
- check_ajax_referer( 'pa-elements', 'security' );
780
-
781
- if( isset( $_POST['fields'] ) ) {
782
- parse_str( $_POST['fields'], $settings );
783
- } else {
784
- return;
785
- }
786
-
787
- $this->pa_settings = array(
788
- 'premium-banner' => intval( $settings['premium-banner'] ? 1 : 0 ),
789
- 'premium-blog' => intval( $settings['premium-blog'] ? 1 : 0 ),
790
- 'premium-carousel' => intval( $settings['premium-carousel'] ? 1 : 0 ),
791
- 'premium-countdown' => intval( $settings['premium-countdown'] ? 1 : 0 ),
792
- 'premium-counter' => intval( $settings['premium-counter'] ? 1 : 0 ),
793
- 'premium-dual-header' => intval( $settings['premium-dual-header'] ? 1 : 0 ),
794
- 'premium-fancytext' => intval( $settings['premium-fancytext'] ? 1 : 0 ),
795
- 'premium-image-separator' => intval( $settings['premium-image-separator'] ? 1 : 0 ),
796
- 'premium-lottie' => intval( $settings['premium-lottie'] ? 1 : 0 ),
797
- 'premium-maps' => intval( $settings['premium-maps'] ? 1 : 0 ),
798
- 'premium-modalbox' => intval( $settings['premium-modalbox'] ? 1 : 0 ),
799
- 'premium-person' => intval( $settings['premium-person'] ? 1 : 0 ),
800
- 'premium-progressbar' => intval( $settings['premium-progressbar'] ? 1 : 0 ),
801
- 'premium-testimonials' => intval( $settings['premium-testimonials'] ? 1 : 0 ),
802
- 'premium-title' => intval( $settings['premium-title'] ? 1 : 0 ),
803
- 'premium-videobox' => intval( $settings['premium-videobox'] ? 1 : 0 ),
804
- 'premium-pricing-table' => intval( $settings['premium-pricing-table'] ? 1 : 0 ),
805
- 'premium-button' => intval( $settings['premium-button'] ? 1 : 0 ),
806
- 'premium-contactform' => intval( $settings['premium-contactform'] ? 1 : 0 ),
807
- 'premium-image-button' => intval( $settings['premium-image-button'] ? 1 : 0 ),
808
- 'premium-grid' => intval( $settings['premium-grid'] ? 1 : 0 ),
809
- 'premium-vscroll' => intval( $settings['premium-vscroll'] ? 1 : 0 ),
810
- // 'premium-icon-list' => intval( $settings['premium-icon-list'] ? 1 : 0),
811
- 'premium-image-scroll' => intval( $settings['premium-image-scroll'] ? 1 : 0 ),
812
- 'premium-templates' => intval( $settings['premium-templates'] ? 1 : 0 ),
813
- 'premium-duplicator' => intval( $settings['premium-duplicator'] ? 1 : 0 ),
814
- );
815
-
816
- update_option( 'pa_save_settings', $this->pa_settings );
817
-
818
- return true;
819
- }
820
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/editor/js/premium-cross-cp.js ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function () {
2
+ function a(b) {
3
+ return b.forEach(function (b) {
4
+ b.id = elementor.helpers.getUniqueID(), 0 < b.elements.length && a(b.elements)
5
+ }), b
6
+ }
7
+
8
+ function b(b, c) {
9
+ var d = c,
10
+ e = c.model.get("elType"),
11
+ f = b.elecode.elType,
12
+ g = b.elecode,
13
+ h = JSON.stringify(g);
14
+
15
+ var i = /\.(jpg|png|jpeg|gif|svg)/gi.test(h),
16
+ j = {
17
+ elType: f,
18
+ settings: g.settings
19
+ },
20
+ k = null,
21
+ l = {
22
+ index: 0
23
+ };
24
+ switch (f) {
25
+ case "section":
26
+ j.elements = a(g.elements), k = elementor.getPreviewContainer();
27
+ break;
28
+ case "column":
29
+ j.elements = a(g.elements);
30
+ "section" === e ? k = d.getContainer() : "column" === e ? (k = d.getContainer().parent, l.index = d.getOption("_index") + 1) : "widget" === e ? (k = d.getContainer().parent.parent, l.index = d.getContainer().parent.view.getOption("_index") + 1) : void 0;
31
+ break;
32
+ case "widget":
33
+ j.widgetType = b.eletype, k = d.getContainer();
34
+ "section" === e ? k = d.children.findByIndex(0).getContainer() : "column" === e ? k = d.getContainer() : "widget" === e ? (k = d.getContainer().parent, e.index = d.getOption("_index") + 1, l.index = d.getOption("_index") + 1) : void 0;
35
+ }
36
+ var m = $e.run("document/elements/create", {
37
+ model: j,
38
+ container: k,
39
+ options: l
40
+ });
41
+ i && jQuery.ajax({
42
+ url: premium_cross_cp.ajax_url,
43
+ method: "POST",
44
+ data: {
45
+ nonce: premium_cross_cp.nonce,
46
+ action: "premium_cross_cp_import",
47
+ copy_content: h
48
+ }
49
+ }).done(function (a) {
50
+ if (a.success) {
51
+ var b = a.data[0];
52
+ j.elType = b.elType, j.settings = b.settings, "widget" === j.elType ? j.widgetType = b.widgetType : j.elements = b.elements, $e.run("document/elements/delete", {
53
+ container: m
54
+ }), $e.run("document/elements/create", {
55
+ model: j,
56
+ container: k,
57
+ options: l
58
+ })
59
+ }
60
+ })
61
+ }
62
+ xdLocalStorage.init({
63
+ iframeUrl: "https://leap13.github.io/pa-cdcp/",
64
+ initCallback: function () { }
65
+ });
66
+ var c = ["section", "column", "widget"],
67
+ d = [];
68
+ c.forEach(function (a, e) {
69
+ elementor.hooks.addFilter("elements/" + c[e] + "/contextMenuGroups", function (a, f) {
70
+ return d.push(f), a.push({
71
+ name: "premium_" + c[e],
72
+ actions: [{
73
+ name: "premium_addons_copy",
74
+ title: "PA Copy",
75
+ icon: "pa-dash-icon",
76
+ callback: function () {
77
+ var a = {};
78
+ a.eletype = "widget" == c[e] ? f.model.get("widgetType") : null, a.elecode = f.model.toJSON(), xdLocalStorage.setItem("premium-c-p-element", JSON.stringify(a)), console.log(a)
79
+ }
80
+ }, {
81
+ name: "premium_addons_paste",
82
+ title: "PA Paste",
83
+ icon: "pa-dash-icon",
84
+ callback: function () {
85
+ xdLocalStorage.getItem("premium-c-p-element", function (a) {
86
+ b(JSON.parse(a.value), f)
87
+ })
88
+ }
89
+ }]
90
+ }), a
91
+ })
92
+ })
93
+ })(jQuery);
assets/editor/js/xdlocalstorage.js ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";
2
+ window.XdUtils = window.XdUtils || function() {
3
+ function a(a, b) {
4
+ var c, d = b || {};
5
+ for (c in a) a.hasOwnProperty(c) && (d[c] = a[c]);
6
+ return d
7
+ }
8
+ return {
9
+ extend: a
10
+ }
11
+ }(), window.xdLocalStorage = window.xdLocalStorage || function() {
12
+ function a(a) {
13
+ k[a.id] && (k[a.id](a), delete k[a.id])
14
+ }
15
+
16
+ function b(b) {
17
+ var c;
18
+ try {
19
+ c = JSON.parse(b.data)
20
+ } catch (a) {}
21
+ c && c.namespace === h && ("iframe-ready" === c.id ? (m = !0, i.initCallback()) : a(c))
22
+ }
23
+
24
+ function c(a, b, c, d) {
25
+ j++, k[j] = d;
26
+ var e = {
27
+ namespace: h,
28
+ id: j,
29
+ action: a,
30
+ key: b,
31
+ value: c
32
+ };
33
+ g.contentWindow.postMessage(JSON.stringify(e), "*")
34
+ }
35
+
36
+ function d(a) {
37
+ i = XdUtils.extend(a, i);
38
+ var c = document.createElement("div");
39
+ window.addEventListener ? window.addEventListener("message", b, !1) : window.attachEvent("onmessage", b), c.innerHTML = '<iframe id="' + i.iframeId + '" src=' + i.iframeUrl + ' style="display: none;"></iframe>', document.body.appendChild(c), g = document.getElementById(i.iframeId)
40
+ }
41
+
42
+ function e() {
43
+ return l ? !!m || (console.log("You must wait for iframe ready message before using the api."), !1) : (console.log("You must call xdLocalStorage.init() before using it."), !1)
44
+ }
45
+
46
+ function f() {
47
+ return "complete" === document.readyState
48
+ }
49
+ var g, h = "cross-domain-pa-cp-message",
50
+ i = {
51
+ iframeId: "cross-domain-iframe",
52
+ iframeUrl: void 0,
53
+ initCallback: function() {}
54
+ },
55
+ j = -1,
56
+ k = {},
57
+ l = !1,
58
+ m = !0;
59
+ return {
60
+ init: function(a) {
61
+ if (!a.iframeUrl) throw "You must specify iframeUrl";
62
+ if (l) return void console.log("xdLocalStorage was already initialized!");
63
+ l = !0, f() ? d(a) : document.addEventListener ? document.addEventListener("readystatechange", function() {
64
+ f() && d(a)
65
+ }) : document.attachEvent("readystatechange", function() {
66
+ f() && d(a)
67
+ })
68
+ },
69
+ setItem: function(a, b, d) {
70
+ e() && c("set", a, b, d)
71
+ },
72
+ getItem: function(a, b) {
73
+ e() && c("get", a, null, b)
74
+ },
75
+ removeItem: function(a, b) {
76
+ e() && c("remove", a, null, b)
77
+ },
78
+ key: function(a, b) {
79
+ e() && c("key", a, null, b)
80
+ },
81
+ getSize: function(a) {
82
+ e() && c("size", null, null, a)
83
+ },
84
+ getLength: function(a) {
85
+ e() && c("length", null, null, a)
86
+ },
87
+ clear: function(a) {
88
+ e() && c("clear", null, null, a)
89
+ },
90
+ wasInit: function() {
91
+ return l
92
+ }
93
+ }
94
+ }();
assets/frontend/js/premium-woocommerce.js ADDED
@@ -0,0 +1,438 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function ($) {
2
+
3
+ var PremiumWooProductsHandler = function ($scope, $) {
4
+
5
+ var instance = null;
6
+
7
+ instance = new premiumWooProducts($scope);
8
+ instance.init();
9
+
10
+ };
11
+
12
+ window.premiumWooProducts = function ($scope) {
13
+
14
+ var self = this,
15
+ $elem = $scope.find(".premium-woocommerce");
16
+
17
+ //Check Quick View
18
+ var isQuickView = $elem.data("quick-view");
19
+
20
+ if ("yes" === isQuickView) {
21
+
22
+ var widgetID = $scope.data("id"),
23
+ $modal = $elem.siblings(".premium-woo-quick-view-" + widgetID),
24
+ $qvModal = $modal.find('#premium-woo-quick-view-modal'),
25
+ contentWrap = $qvModal.find('#premium-woo-quick-view-content'),
26
+ wrapper = $qvModal.find('.premium-woo-content-main-wrapper'),
27
+ $backWrap = $modal.find('.premium-woo-quick-view-back');
28
+
29
+ }
30
+
31
+ self.init = function () {
32
+
33
+ self.handleProductsCarousel();
34
+
35
+ if ("yes" === isQuickView)
36
+ self.handleProductQuickView();
37
+
38
+ self.handleProductPagination();
39
+
40
+ var skin = $scope.data("widget_type");
41
+
42
+ if ("premium-woo-products.grid-1" === skin || "premium-woo-products.grid-4" === skin)
43
+ self.handleAddToCart();
44
+
45
+ if ("premium-woo-products.grid-6" === skin)
46
+ self.handleGalleryImages();
47
+
48
+ if ($elem.hasClass("premium-woo-products-metro")) {
49
+
50
+ self.handleGridMetro();
51
+
52
+ $(window).on("resize", self.handleGridMetro);
53
+
54
+ }
55
+
56
+
57
+ };
58
+
59
+ self.handleProductsCarousel = function () {
60
+
61
+ var carousel = $elem.data("woo_carousel");
62
+
63
+ if (!carousel)
64
+ return;
65
+
66
+ var $products = $elem.find('ul.products');
67
+
68
+ carousel['customPaging'] = function () {
69
+ return '<i class="fas fa-circle"></i>';
70
+ };
71
+
72
+ $products.slick(carousel);
73
+
74
+ };
75
+
76
+ self.handleGridMetro = function () {
77
+
78
+ var $products = $elem.find("ul.products"),
79
+ currentDevice = elementorFrontend.getCurrentDeviceMode(),
80
+ suffix = "";
81
+
82
+ //Grid Parameters
83
+ var gridWidth = $products.width(),
84
+ cellSize = Math.floor(gridWidth / 12);
85
+
86
+
87
+ var metroStyle = $elem.data("metro-style");
88
+
89
+ if ("tablet" === currentDevice) {
90
+ suffix = "_tablet";
91
+ } else if ("mobile" === currentDevice) {
92
+ suffix = "_mobile";
93
+ }
94
+
95
+ if ('custom' === metroStyle) {
96
+
97
+ var wPatternLength = 0,
98
+ hPatternLength = 0;
99
+
100
+ var settings = $elem.data("metro");
101
+
102
+ //Get Products Width/Height Pattern
103
+ var wPattern = settings['wPattern' + suffix],
104
+ hPattern = settings['hPattern' + suffix];
105
+
106
+ if ("" === wPattern)
107
+ wPattern = "12";
108
+
109
+ if ("" === hPattern)
110
+ hPattern = "12";
111
+
112
+ wPattern = wPattern.split(',');
113
+ hPattern = hPattern.split(',');
114
+
115
+ wPatternLength = wPatternLength + wPattern.length;
116
+ hPatternLength = hPatternLength + hPattern.length;
117
+
118
+ $products.find("li.product").each(function (index, product) {
119
+
120
+ var wIndex = index % wPatternLength,
121
+ hIndex = index % hPatternLength;
122
+
123
+ var wCell = (parseInt(wPattern[wIndex])),
124
+ hCell = (parseInt(hPattern[hIndex]));
125
+
126
+ $(product).css({
127
+ width: Math.floor(wCell) * cellSize,
128
+ height: Math.floor(hCell) * cellSize
129
+ });
130
+ });
131
+
132
+ }
133
+
134
+ $products
135
+ .imagesLoaded(function () { })
136
+ .done(
137
+ function () {
138
+ $products.isotope({
139
+ itemSelector: "li.product",
140
+ percentPosition: true,
141
+ animationOptions: {
142
+ duration: 750,
143
+ easing: "linear"
144
+ },
145
+ layoutMode: "masonry",
146
+ masonry: {
147
+ columnWidth: cellSize
148
+ }
149
+ });
150
+ });
151
+ };
152
+
153
+ self.handleProductQuickView = function () {
154
+
155
+ $modal.appendTo(document.body);
156
+
157
+ $elem.on('click', '.premium-woo-qv-btn', self.triggerQuickViewModal);
158
+
159
+ window.addEventListener("resize", function () {
160
+ self.updateQuickViewHeight();
161
+ });
162
+
163
+ };
164
+
165
+ self.triggerQuickViewModal = function (event) {
166
+
167
+ event.preventDefault();
168
+
169
+ var $this = $(this),
170
+ productID = $this.data('product-id');
171
+
172
+ if (!$qvModal.hasClass('loading'))
173
+ $qvModal.addClass('loading');
174
+
175
+ if (!$backWrap.hasClass('premium-woo-quick-view-active'))
176
+ $backWrap.addClass('premium-woo-quick-view-active');
177
+
178
+
179
+ $(document).trigger('uael_quick_view_loading');
180
+
181
+ self.getProductByAjax(productID);
182
+
183
+ self.addCloseEvents();
184
+ };
185
+
186
+ self.getProductByAjax = function (itemID) {
187
+
188
+ $.ajax({
189
+ url: PremiumWooSettings.ajaxurl,
190
+ data: {
191
+ action: 'get_woo_product_qv',
192
+ product_id: itemID,
193
+ nonce: PremiumWooSettings.qv_nonce,
194
+ },
195
+ dataType: 'html',
196
+ type: 'POST',
197
+ success: function (data) {
198
+
199
+ contentWrap.html(data);
200
+ self.handleQuickViewModal();
201
+ }
202
+ });
203
+
204
+ };
205
+
206
+ self.addCloseEvents = function () {
207
+
208
+ var $closeBtn = $qvModal.find('#premium-woo-quick-view-close');
209
+
210
+ $(document).keyup(function (e) {
211
+ if (e.keyCode === 27)
212
+ self.closeModal();
213
+ });
214
+
215
+ $closeBtn.on('click', function (e) {
216
+ e.preventDefault();
217
+ self.closeModal();
218
+ });
219
+
220
+ wrapper.on('click', function (e) {
221
+
222
+ if (this === e.target)
223
+ self.closeModal();
224
+
225
+ });
226
+ };
227
+
228
+ self.handleQuickViewModal = function () {
229
+
230
+ if (!$qvModal.hasClass('active')) {
231
+
232
+ $qvModal.removeClass('loading').addClass('active');
233
+
234
+ var barWidth = self.getBarWidth();
235
+
236
+ $("html").css('margin-right', barWidth);
237
+ $("html").addClass('premium-woo-qv-opened');
238
+ }
239
+
240
+ contentWrap.imagesLoaded(function () {
241
+ self.handleQuickViewSlider();
242
+ });
243
+
244
+ };
245
+
246
+ self.getBarWidth = function () {
247
+
248
+ var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div>');
249
+ // Append our div, do our calculation and then remove it
250
+ $('body').append(div);
251
+ var w1 = $('div', div).innerWidth();
252
+ div.css('overflow-y', 'scroll');
253
+ var w2 = $('div', div).innerWidth();
254
+ $(div).remove();
255
+
256
+ return (w1 - w2);
257
+ };
258
+
259
+ self.handleQuickViewSlider = function () {
260
+
261
+ var $productSlider = $qvModal.find('.premium-woo-qv-image-slider');
262
+
263
+ if ($productSlider.find('li').length) {
264
+ $productSlider.flexslider({
265
+ animation: "slide",
266
+ start: function () {
267
+ setTimeout(function () {
268
+ self.updateQuickViewHeight(true);
269
+ }, 300);
270
+ }
271
+ });
272
+ } else {
273
+ setTimeout(function () {
274
+ self.updateQuickViewHeight(true);
275
+ }, 300);
276
+ }
277
+
278
+ };
279
+
280
+ self.updateQuickViewHeight = function (update_css) {
281
+ var $quickView = contentWrap,
282
+ imgHeight = $quickView.find('.product .uael-qv-image-slider').first().height(),
283
+ summary = $quickView.find('.product .summary.entry-summary'),
284
+ content = summary.css('content');
285
+
286
+ if ('undefined' != typeof content && 544 == content.replace(/[^0-9]/g, '') && 0 != imgHeight && null !== imgHeight) {
287
+ summary.css('height', imgHeight);
288
+ } else {
289
+ summary.css('height', '');
290
+ }
291
+
292
+ if (true === update_css)
293
+ $qvModal.css('opacity', 1);
294
+
295
+ };
296
+
297
+ self.closeModal = function () {
298
+
299
+ $backWrap.removeClass('premium-woo-quick-view-active');
300
+
301
+ $qvModal.removeClass('active').removeClass('loading');
302
+
303
+ $('html').removeClass('premium-woo-qv-opened');
304
+
305
+ $('html').css('margin-right', '');
306
+
307
+ setTimeout(function () {
308
+ contentWrap.html('');
309
+ }, 600);
310
+
311
+ };
312
+
313
+ self.handleAddToCart = function () {
314
+
315
+ $elem.on('click', '.premium-woo-cart-btn.product_type_simple', self.onBtnClick).on('premium_product_add_to_cart', self.handleBtnClick);
316
+
317
+ };
318
+
319
+ self.onBtnClick = function (event) {
320
+
321
+ event.preventDefault();
322
+
323
+ var $this = $(this),
324
+ productID = $this.data('product_id'),
325
+ quantity = 1;
326
+
327
+ $this.removeClass('added').addClass('adding');
328
+
329
+ $.ajax({
330
+ url: PremiumWooSettings.ajaxurl,
331
+ type: 'POST',
332
+ data: 'action=premium_woo_add_cart_product&product_id=' + productID + '&quantity=' + quantity,
333
+ success: function () {
334
+ $(document.body).trigger('wc_fragment_refresh');
335
+ $elem.trigger('premium_product_add_to_cart', [$this]);
336
+ }
337
+ });
338
+
339
+ };
340
+
341
+ self.handleBtnClick = function (event, $btn) {
342
+
343
+ if (!$btn)
344
+ return;
345
+
346
+ $btn.removeClass('adding').addClass('added');
347
+
348
+ };
349
+
350
+ self.handleGalleryImages = function () {
351
+
352
+ $elem.on('click', '.premium-woo-product__gallery_image', function () {
353
+ var $thisImg = $(this);
354
+
355
+ $thisImg.closest(".premium-woo-product-thumbnail").find(".woocommerce-loop-product__link img").replaceWith($thisImg.clone(true));
356
+ });
357
+
358
+ };
359
+
360
+ self.handleProductPagination = function () {
361
+
362
+ $elem.on('click', '.premium-woo-products-pagination a.page-numbers', function (e) {
363
+
364
+ var $targetPage = $(this);
365
+
366
+ if ($elem.hasClass('premium-woo-query-main'))
367
+ return;
368
+
369
+ e.preventDefault();
370
+
371
+ $elem.find('ul.products').after('<div class="premium-loading-feed"><div class="premium-loader"></div></div>');
372
+
373
+ var pageID = $elem.data('page-id'),
374
+ currentPage = $elem.find('.page-numbers.current').index(),
375
+ skin = $elem.data('skin'),
376
+ page_number = 1;
377
+
378
+ if ($targetPage.hasClass('next')) {
379
+ page_number = currentPage + 1;
380
+ } else if ($targetPage.hasClass('prev')) {
381
+ page_number = currentPage - 1;
382
+ } else {
383
+ page_number = $targetPage.html();
384
+ }
385
+
386
+ $.ajax({
387
+ url: PremiumWooSettings.ajaxurl,
388
+ data: {
389
+ action: 'get_woo_products',
390
+ pageID: pageID,
391
+ elemID: $scope.data('id'),
392
+ category: '',
393
+ skin: skin,
394
+ page_number: page_number,
395
+ nonce: PremiumWooSettings.products_nonce,
396
+ },
397
+ dataType: 'json',
398
+ type: 'POST',
399
+ success: function (data) {
400
+
401
+ $elem.find('.premium-loading-feed').remove();
402
+
403
+ $('html, body').animate({
404
+ scrollTop: (($scope.find('.premium-woocommerce').offset().top) - 100)
405
+ }, 'slow');
406
+
407
+ var $currentProducts = $elem.find('ul.products');
408
+
409
+ $currentProducts.replaceWith(data.data.html);
410
+
411
+ $elem.find('.premium-woo-products-pagination').replaceWith(data.data.pagination);
412
+
413
+ if ($elem.hasClass("premium-woo-products-metro"))
414
+ self.handleGridMetro();
415
+
416
+ },
417
+ error: function (err) {
418
+ console.log(err);
419
+ }
420
+ });
421
+
422
+ });
423
+
424
+ };
425
+
426
+
427
+ };
428
+
429
+ //Elementor JS Hooks
430
+ $(window).on("elementor/frontend/init", function () {
431
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-1", PremiumWooProductsHandler);
432
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-2", PremiumWooProductsHandler);
433
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-3", PremiumWooProductsHandler);
434
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-4", PremiumWooProductsHandler);
435
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-5", PremiumWooProductsHandler);
436
+ elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-6", PremiumWooProductsHandler);
437
+ });
438
+ })(jQuery);
assets/frontend/min-js/premium-woocommerce.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(l){function e(e,o){new premiumWooProducts(e).init()}window.premiumWooProducts=function(r){var d=this,s=r.find(".premium-woocommerce"),o=s.data("quick-view");if("yes"===o)var e=r.data("id"),i=s.siblings(".premium-woo-quick-view-"+e),a=i.find("#premium-woo-quick-view-modal"),c=a.find("#premium-woo-quick-view-content"),t=a.find(".premium-woo-content-main-wrapper"),n=i.find(".premium-woo-quick-view-back");d.init=function(){d.handleProductsCarousel(),"yes"===o&&d.handleProductQuickView(),d.handleProductPagination();var e=r.data("widget_type");"premium-woo-products.grid-1"!==e&&"premium-woo-products.grid-4"!==e||d.handleAddToCart(),"premium-woo-products.grid-6"===e&&d.handleGalleryImages(),s.hasClass("premium-woo-products-metro")&&(d.handleGridMetro(),l(window).on("resize",d.handleGridMetro))},d.handleProductsCarousel=function(){var e=s.data("woo_carousel");if(e){var o=s.find("ul.products");e.customPaging=function(){return'<i class="fas fa-circle"></i>'},o.slick(e)}},d.handleGridMetro=function(){var e=s.find("ul.products"),o=elementorFrontend.getCurrentDeviceMode(),i="",t=e.width(),a=Math.floor(t/12);if("tablet"===o?i="_tablet":"mobile"===o&&(i="_mobile"),"custom"===s.data("metro-style")){var r=0,d=0,n=s.data("metro"),c=n["wPattern"+i],u=n["hPattern"+i];""===c&&(c="12"),""===u&&(u="12"),c=c.split(","),u=u.split(","),r+=c.length,d+=u.length,e.find("li.product").each(function(e,o){var i=e%d,t=parseInt(c[e%r]),n=parseInt(u[i]);l(o).css({width:Math.floor(t)*a,height:Math.floor(n)*a})})}e.imagesLoaded(function(){}).done(function(){e.isotope({itemSelector:"li.product",percentPosition:!0,animationOptions:{duration:750,easing:"linear"},layoutMode:"masonry",masonry:{columnWidth:a}})})},d.handleProductQuickView=function(){i.appendTo(document.body),s.on("click",".premium-woo-qv-btn",d.triggerQuickViewModal),window.addEventListener("resize",function(){d.updateQuickViewHeight()})},d.triggerQuickViewModal=function(e){e.preventDefault();var o=l(this).data("product-id");a.hasClass("loading")||a.addClass("loading"),n.hasClass("premium-woo-quick-view-active")||n.addClass("premium-woo-quick-view-active"),l(document).trigger("uael_quick_view_loading"),d.getProductByAjax(o),d.addCloseEvents()},d.getProductByAjax=function(e){l.ajax({url:PremiumWooSettings.ajaxurl,data:{action:"get_woo_product_qv",product_id:e,nonce:PremiumWooSettings.qv_nonce},dataType:"html",type:"POST",success:function(e){c.html(e),d.handleQuickViewModal()}})},d.addCloseEvents=function(){var e=a.find("#premium-woo-quick-view-close");l(document).keyup(function(e){27===e.keyCode&&d.closeModal()}),e.on("click",function(e){e.preventDefault(),d.closeModal()}),t.on("click",function(e){this===e.target&&d.closeModal()})},d.handleQuickViewModal=function(){if(!a.hasClass("active")){a.removeClass("loading").addClass("active");var e=d.getBarWidth();l("html").css("margin-right",e),l("html").addClass("premium-woo-qv-opened")}c.imagesLoaded(function(){d.handleQuickViewSlider()})},d.getBarWidth=function(){var e=l('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div>');l("body").append(e);var o=l("div",e).innerWidth();e.css("overflow-y","scroll");var i=l("div",e).innerWidth();return l(e).remove(),o-i},d.handleQuickViewSlider=function(){var e=a.find(".premium-woo-qv-image-slider");e.find("li").length?e.flexslider({animation:"slide",start:function(){setTimeout(function(){d.updateQuickViewHeight(!0)},300)}}):setTimeout(function(){d.updateQuickViewHeight(!0)},300)},d.updateQuickViewHeight=function(e){var o=c,i=o.find(".product .uael-qv-image-slider").first().height(),t=o.find(".product .summary.entry-summary"),n=t.css("content");void 0!==n&&544==n.replace(/[^0-9]/g,"")&&0!=i&&null!==i?t.css("height",i):t.css("height",""),!0===e&&a.css("opacity",1)},d.closeModal=function(){n.removeClass("premium-woo-quick-view-active"),a.removeClass("active").removeClass("loading"),l("html").removeClass("premium-woo-qv-opened"),l("html").css("margin-right",""),setTimeout(function(){c.html("")},600)},d.handleAddToCart=function(){s.on("click",".premium-woo-cart-btn.product_type_simple",d.onBtnClick).on("premium_product_add_to_cart",d.handleBtnClick)},d.onBtnClick=function(e){e.preventDefault();var o=l(this),i=o.data("product_id");o.removeClass("added").addClass("adding"),l.ajax({url:PremiumWooSettings.ajaxurl,type:"POST",data:"action=premium_woo_add_cart_product&product_id="+i+"&quantity=1",success:function(){l(document.body).trigger("wc_fragment_refresh"),s.trigger("premium_product_add_to_cart",[o])}})},d.handleBtnClick=function(e,o){o&&o.removeClass("adding").addClass("added")},d.handleGalleryImages=function(){s.on("click",".premium-woo-product__gallery_image",function(){var e=l(this);e.closest(".premium-woo-product-thumbnail").find(".woocommerce-loop-product__link img").replaceWith(e.clone(!0))})},d.handleProductPagination=function(){s.on("click",".premium-woo-products-pagination a.page-numbers",function(e){var o=l(this);if(!s.hasClass("premium-woo-query-main")){e.preventDefault(),s.find("ul.products").after('<div class="premium-loading-feed"><div class="premium-loader"></div></div>');var i=s.data("page-id"),t=s.find(".page-numbers.current").index(),n=s.data("skin"),a=1;a=o.hasClass("next")?t+1:o.hasClass("prev")?t-1:o.html(),l.ajax({url:PremiumWooSettings.ajaxurl,data:{action:"get_woo_products",pageID:i,elemID:r.data("id"),category:"",skin:n,page_number:a,nonce:PremiumWooSettings.products_nonce},dataType:"json",type:"POST",success:function(e){s.find(".premium-loading-feed").remove(),l("html, body").animate({scrollTop:r.find(".premium-woocommerce").offset().top-100},"slow"),s.find("ul.products").replaceWith(e.data.html),s.find(".premium-woo-products-pagination").replaceWith(e.data.pagination),s.hasClass("premium-woo-products-metro")&&d.handleGridMetro()},error:function(e){console.log(e)}})}})}},l(window).on("elementor/frontend/init",function(){elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-1",e),elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-2",e),elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-3",e),elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-4",e),elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-5",e),elementorFrontend.hooks.addAction("frontend/element_ready/premium-woo-products.grid-6",e)})}(jQuery);
base/module-base.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace PremiumAddons\Base;
4
+
5
+ use PremiumAddons\Admin\Includes\Admin_Helper;
6
+
7
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
8
+
9
+
10
+ /**
11
+ * Module Base
12
+ *
13
+ * @since 4.0.0
14
+ */
15
+ abstract class Module_Base {
16
+
17
+ /**
18
+ * Reflection
19
+ *
20
+ * @var reflection
21
+ */
22
+ private $reflection;
23
+
24
+ /**
25
+ * Modules
26
+ *
27
+ * @var modules
28
+ */
29
+ private static $modules = null;
30
+
31
+ /**
32
+ * Reflection
33
+ *
34
+ * @var instances
35
+ */
36
+ protected static $instances = [];
37
+
38
+
39
+ /**
40
+ * Class name to Call
41
+ *
42
+ * @since 4.0.0
43
+ */
44
+ public static function class_name() {
45
+ return get_called_class();
46
+ }
47
+
48
+ /**
49
+ * Class instance
50
+ *
51
+ * @since 4.0.0
52
+ *
53
+ * @return static
54
+ */
55
+ public static function instance() {
56
+
57
+ if ( empty( static::$instances[ static::class_name() ] ) ) {
58
+
59
+ static::$instances[ static::class_name() ] = new static();
60
+
61
+ }
62
+
63
+ return static::$instances[ static::class_name() ];
64
+ }
65
+
66
+ /**
67
+ * Constructor
68
+ */
69
+ public function __construct() {
70
+
71
+ $this->reflection = new \ReflectionClass( $this );
72
+
73
+ add_action( 'elementor/widgets/widgets_registered', [ $this, 'init_widgets' ] );
74
+ }
75
+
76
+ /**
77
+ * Init Widgets
78
+ *
79
+ * @since 4.0.0
80
+ */
81
+ public function init_widgets() {
82
+
83
+ self::$modules = Admin_Helper::get_enabled_elements();
84
+
85
+ $widget_manager = \Elementor\Plugin::instance()->widgets_manager;
86
+
87
+ foreach ( $this->get_widgets() as $widget ) {
88
+
89
+ $key = sprintf( 'premium-%s', strtolower( str_replace('_', '-', $widget ) ) );
90
+
91
+ $enabled = isset( self::$modules[ $key ] ) ? self::$modules[ $key ] : '';
92
+
93
+ if ( filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ) ) {
94
+ $class_name = $this->reflection->getNamespaceName() . '\Widgets\\' . $widget;
95
+
96
+ $widget_manager->register_widget_type( new $class_name() );
97
+ }
98
+
99
+
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Get Widgets
105
+ *
106
+ * @since 4.0.0
107
+ *
108
+ * @return array
109
+ */
110
+ public function get_widgets() {
111
+ return [];
112
+ }
113
+ }
includes/{class-addons-category.php → addons-category.php} RENAMED
@@ -5,7 +5,7 @@
5
  */
6
  namespace PremiumAddons\Includes;
7
 
8
- use PremiumAddons\Helper_Functions;
9
 
10
  if( ! defined( 'ABSPATH' ) ) exit();
11
 
@@ -21,6 +21,9 @@ class Addons_Category {
21
  */
22
  private static $instance = null;
23
 
 
 
 
24
  public function __construct() {
25
  $this->create_premium_category();
26
  }
@@ -50,24 +53,14 @@ class Addons_Category {
50
  *
51
  * @return object
52
  */
53
- public static function get_instance() {
54
- if( self::$instance == null ) {
55
- self::$instance = new self;
56
- }
57
- return self::$instance;
58
- }
59
- }
60
-
61
 
62
- if ( ! function_exists( 'premium_addons_category' ) ) {
63
 
64
- /**
65
- * Returns an instance of the plugin class.
66
- * @since 2.6.8
67
- * @return object
68
- */
69
- function premium_addons_category() {
70
- return Addons_Category::get_instance();
71
- }
72
  }
73
- premium_addons_category();
5
  */
6
  namespace PremiumAddons\Includes;
7
 
8
+ use PremiumAddons\Includes\Helper_Functions;
9
 
10
  if( ! defined( 'ABSPATH' ) ) exit();
11
 
21
  */
22
  private static $instance = null;
23
 
24
+ /**
25
+ * Constructor for the class
26
+ */
27
  public function __construct() {
28
  $this->create_premium_category();
29
  }
53
  *
54
  * @return object
55
  */
56
+ public static function get_instance() {
 
 
 
 
 
 
 
57
 
58
+ if( self::$instance == null ) {
59
 
60
+ self::$instance = new self;
61
+
62
+ }
63
+
64
+ return self::$instance;
65
+ }
 
 
66
  }
 
includes/addons-cross-cp.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace PremiumAddons\Includes;
4
+
5
+ use Elementor\Utils;
6
+ use Elementor\Controls_Stack;
7
+
8
+ if ( ! defined( 'WPINC' ) ) {
9
+ die;
10
+ }
11
+ /*
12
+ * Premium Cross Domain Copy Paste Feature
13
+ */
14
+ if ( ! class_exists( 'Addons_Cross_CP' ) ) {
15
+
16
+ /**
17
+ * Define Addons_Cross_CP class
18
+ */
19
+ class Addons_Cross_CP {
20
+
21
+ /**
22
+ * A reference to an instance of this class.
23
+ *
24
+ * @since 3.21.1
25
+ */
26
+ private static $instance = null;
27
+
28
+ /**
29
+ * Initalize integration hooks
30
+ *
31
+ * @return void
32
+ */
33
+ public function __construct() {
34
+ add_action( 'wp_ajax_premium_cross_cp_import', array( $this, 'cross_cp_fetch_content_data' ) );
35
+ }
36
+
37
+ /**
38
+ * Cross copy paste fetch data.
39
+ *
40
+ * @since 3.21.1
41
+ */
42
+ public static function cross_cp_fetch_content_data() {
43
+
44
+ check_ajax_referer( 'premium_cross_cp_import', 'nonce' );
45
+
46
+ if ( ! current_user_can( 'edit_posts' ) ) {
47
+ wp_send_json_error(
48
+ __( 'Not a Valid', 'premium-addons-for-elementor' ),
49
+ 403
50
+ );
51
+ }
52
+
53
+ $media_import = isset( $_POST['copy_content'] ) ? wp_unslash( $_POST['copy_content'] ) : '';
54
+
55
+ if ( empty( $media_import ) ) {
56
+ wp_send_json_error( __( 'Empty Content.', 'premium-addons-for-elementor' ) );
57
+ }
58
+
59
+ $media_import = array( json_decode( $media_import, true ) );
60
+ $media_import = self::cross_cp_import_elements_ids( $media_import );
61
+ $media_import = self::cross_cp_import_copy_content( $media_import );
62
+
63
+ wp_send_json_success( $media_import );
64
+ }
65
+
66
+ /**
67
+ * Replace media element id with random id.
68
+ *
69
+ * @since 3.21.1
70
+ */
71
+ protected static function cross_cp_import_elements_ids( $media_import ) {
72
+
73
+ return \Elementor\Plugin::instance()->db->iterate_data(
74
+ $media_import,
75
+ function( $element ) {
76
+ $element['id'] = Utils::generate_random_string();
77
+ return $element;
78
+ }
79
+ );
80
+
81
+ }
82
+
83
+ /**
84
+ * Media import copy content.
85
+ *
86
+ * @since 3.21.1
87
+ */
88
+ protected static function cross_cp_import_copy_content( $media_import ) {
89
+
90
+ return \Elementor\Plugin::instance()->db->iterate_data(
91
+ $media_import,
92
+ function( $element_data ) {
93
+ $elements = \Elementor\Plugin::instance()->elements_manager->create_element_instance( $element_data );
94
+
95
+ if ( ! $elements ) {
96
+ return null;
97
+ }
98
+
99
+ return self::cross_cp_import_element( $elements );
100
+ }
101
+ );
102
+
103
+ }
104
+
105
+ /**
106
+ * Start element copy content for media import.
107
+ *
108
+ * @since 3.21.1
109
+ */
110
+ protected static function cross_cp_import_element( Controls_Stack $element ) {
111
+ $get_element_instance = $element->get_data();
112
+ $method = 'on_import';
113
+
114
+ if ( method_exists( $element, $method ) ) {
115
+ $get_element_instance = $element->{$method}( $get_element_instance );
116
+ }
117
+
118
+ foreach ( $element->get_controls() as $get_control ) {
119
+ $control_type = \Elementor\Plugin::instance()->controls_manager->get_control( $get_control['type'] );
120
+ $control_name = $get_control['name'];
121
+
122
+ if ( ! $control_type ) {
123
+ return $get_element_instance;
124
+ }
125
+
126
+ if ( method_exists( $control_type, $method) ) {
127
+ $get_element_instance['settings'][ $control_name ] = $control_type->{$method}( $element->get_settings( $control_name ), $get_control );
128
+ }
129
+ }
130
+
131
+ return $get_element_instance;
132
+ }
133
+
134
+ /**
135
+ * Returns the instance.
136
+ *
137
+ * @since 3.21.1
138
+ * @return object
139
+ */
140
+ public static function get_instance( $shortcodes = array() ) {
141
+
142
+ if ( null == self::$instance ) {
143
+ self::$instance = new self( $shortcodes );
144
+ }
145
+ return self::$instance;
146
+ }
147
+ }
148
+ }
includes/{class-addons-integration.php → addons-integration.php} RENAMED
@@ -1,10 +1,9 @@
1
  <?php
2
 
3
- namespace PremiumAddons;
4
 
5
- use PremiumAddons\Admin\Settings\Maps;
6
- use PremiumAddons\Admin\Settings\Modules_Settings;
7
- use PremiumAddons\Helper_Functions;
8
 
9
  if( ! defined( 'ABSPATH' ) ) exit();
10
 
@@ -16,17 +15,16 @@ class Addons_Integration {
16
  //Modules Keys
17
  private static $modules = null;
18
 
19
- //`premium_Template_Tags` Instance
20
- protected $templateInstance;
21
-
22
-
23
  //Maps Keys
24
  private static $maps = null;
 
 
 
25
 
26
  /**
27
  * Cross-Site CDN URL.
28
  *
29
- * @since 1.24.1
30
  * @var (String) URL
31
  */
32
  public $cdn_url;
@@ -38,13 +36,15 @@ class Addons_Integration {
38
  */
39
  public function __construct() {
40
 
41
- self::$modules = Modules_Settings::get_enabled_keys();
42
 
43
- self::$maps = Maps::get_enabled_keys();
44
 
45
- $this->templateInstance = Includes\premium_Template_Tags::getInstance();
46
 
47
  add_action( 'elementor/editor/before_enqueue_styles', array( $this, 'enqueue_editor_styles' ) );
 
 
48
 
49
  add_action( 'elementor/widgets/widgets_registered', array( $this, 'widgets_area' ) );
50
 
@@ -58,14 +58,15 @@ class Addons_Integration {
58
 
59
  add_action( 'wp_ajax_get_elementor_template_content', array( $this, 'get_template_content' ) );
60
 
61
- // $cross_enabled = isset( self::$modules['premium-cross-domain'] ) ? self::$modules['premium-cross-domain'] : 1;
62
 
63
- // if( $cross_enabled ) {
64
 
65
- // add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'enqueue_editor_cp_scripts' ) );
66
- // require_once PREMIUM_ADDONS_PATH . 'includes/class-addons-cross-cp.php';
 
67
 
68
- // }
69
 
70
  }
71
 
@@ -102,7 +103,7 @@ class Addons_Integration {
102
 
103
  $dynamic_css = sprintf( '[class^="pa-"]::after, [class*=" pa-"]::after { content: "%s"; }', $badge_text ) ;
104
 
105
- wp_add_inline_style( 'premium-addons-font', $dynamic_css );
106
 
107
  }
108
 
@@ -157,6 +158,21 @@ class Addons_Integration {
157
  wp_enqueue_style( 'premium-addons' );
158
 
159
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
 
161
  /**
162
  * Load widgets require function
@@ -183,8 +199,22 @@ class Addons_Integration {
183
 
184
  $slug = basename( $file, '.php' );
185
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
186
  $enabled = isset( $check_component_active[ $slug ] ) ? $check_component_active[ $slug ] : '';
187
-
188
  if ( filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ) || ! $check_component_active ) {
189
  $this->register_addon( $file );
190
  }
@@ -208,12 +238,21 @@ class Addons_Integration {
208
  $locale = isset ( $maps_settings['premium-map-locale'] ) ? $maps_settings['premium-map-locale'] : "en";
209
 
210
  wp_register_script(
211
- 'premium-addons-js',
212
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-addons' . $suffix . '.js',
213
  array('jquery'),
214
  PREMIUM_ADDONS_VERSION,
215
  true
216
  );
 
 
 
 
 
 
 
 
 
217
 
218
  wp_register_script(
219
  'prettyPhoto-js',
@@ -245,7 +284,7 @@ class Addons_Integration {
245
  PREMIUM_ADDONS_VERSION,
246
  true
247
  );
248
-
249
  wp_register_script(
250
  'isotope-js',
251
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/isotope' . $suffix . '.js',
@@ -278,23 +317,23 @@ class Addons_Integration {
278
  true
279
  );
280
 
281
- wp_register_script(
282
- 'slimscroll-js',
283
- PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/jquery-slimscroll' . $suffix . '.js',
284
- array('jquery'),
285
- PREMIUM_ADDONS_VERSION,
286
- true
287
- );
288
-
289
- wp_register_script(
290
- 'iscroll-js',
291
- PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/iscroll' . $suffix . '.js',
292
- array('jquery'),
293
- PREMIUM_ADDONS_VERSION,
294
- true
295
- );
296
-
297
- wp_register_script(
298
  'tilt-js',
299
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/universal-tilt' . $suffix . '.js',
300
  array( 'jquery' ),
@@ -310,7 +349,7 @@ class Addons_Integration {
310
  true
311
  );
312
 
313
- if( $maps_settings['premium-map-cluster'] ) {
314
  wp_register_script(
315
  'google-maps-cluster',
316
  'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js',
@@ -331,11 +370,24 @@ class Addons_Integration {
331
  );
332
  }
333
 
334
- $data = array(
335
- 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) )
 
 
 
 
 
336
  );
337
-
338
- wp_localize_script( 'premium-addons-js', 'PremiumSettings', $data );
 
 
 
 
 
 
 
 
339
 
340
  }
341
 
@@ -351,24 +403,24 @@ class Addons_Integration {
351
 
352
  if( $map_enabled ) {
353
 
354
- $premium_maps_api = self::$maps['premium-map-api'];
355
 
356
- $locale = isset ( self::$maps['premium-map-locale'] ) ? self::$maps['premium-map-locale'] : "en";
357
 
358
- $premium_maps_disable_api = self::$maps['premium-map-disable-api'];
359
 
360
- if ( $premium_maps_disable_api && '1' != $premium_maps_api ) {
361
 
362
- $api = sprintf ( 'https://maps.googleapis.com/maps/api/js?key=%1$s&language=%2$s', $premium_maps_api, $locale );
363
- wp_enqueue_script(
364
- 'premium-maps-api-js',
365
- $api,
366
- array(),
367
- PREMIUM_ADDONS_VERSION,
368
- false
369
- );
370
 
371
- }
372
 
373
  wp_enqueue_script(
374
  'pa-maps-finder',
@@ -390,9 +442,6 @@ class Addons_Integration {
390
 
391
  public function enqueue_editor_cp_scripts() {
392
 
393
- $dir = Helper_Functions::get_scripts_dir();
394
- $suffix = Helper_Functions::get_assets_suffix();
395
-
396
  wp_enqueue_script(
397
  'premium-xdlocalstorage-js',
398
  PREMIUM_ADDONS_URL . 'assets/editor/js/xdlocalstorage.js',
@@ -478,8 +527,8 @@ class Addons_Integration {
478
  }
479
  }
480
 
481
- if ( 'PremiumAddons\Widgets\Premium_Blog' == $class ) {
482
- require_once ( PREMIUM_ADDONS_PATH . 'widgets/dep/queries.php' );
483
  }
484
 
485
  if ( class_exists( $class ) ) {
@@ -497,24 +546,14 @@ class Addons_Integration {
497
  * @return object
498
  *
499
  */
500
- public static function get_instance() {
501
- if( self::$instance == null ) {
502
- self::$instance = new self;
503
- }
504
- return self::$instance;
505
- }
506
- }
507
-
508
 
509
- if ( ! function_exists( 'premium_addons_integration' ) ) {
510
 
511
- /**
512
- * Returns an instance of the plugin class.
513
- * @since 1.0.0
514
- * @return object
515
- */
516
- function premium_addons_integration() {
517
- return Addons_Integration::get_instance();
518
- }
519
  }
520
- premium_addons_integration();
1
  <?php
2
 
3
+ namespace PremiumAddons\Includes;
4
 
5
+ use PremiumAddons\Includes\Helper_Functions;
6
+ use PremiumAddons\Admin\Includes\Admin_Helper;
 
7
 
8
  if( ! defined( 'ABSPATH' ) ) exit();
9
 
15
  //Modules Keys
16
  private static $modules = null;
17
 
 
 
 
 
18
  //Maps Keys
19
  private static $maps = null;
20
+
21
+ //`Premium_Template_Tags` Instance
22
+ protected $templateInstance;
23
 
24
  /**
25
  * Cross-Site CDN URL.
26
  *
27
+ * @since 4.0.0
28
  * @var (String) URL
29
  */
30
  public $cdn_url;
36
  */
37
  public function __construct() {
38
 
39
+ self::$modules = Admin_Helper::get_enabled_elements();
40
 
41
+ self::$maps = Admin_Helper::get_integrations_settings();
42
 
43
+ $this->templateInstance = Premium_Template_Tags::getInstance();
44
 
45
  add_action( 'elementor/editor/before_enqueue_styles', array( $this, 'enqueue_editor_styles' ) );
46
+
47
+ add_action( 'elementor/elements/categories_registered', array( $this, 'register_widgets_category' ), 9 );
48
 
49
  add_action( 'elementor/widgets/widgets_registered', array( $this, 'widgets_area' ) );
50
 
58
 
59
  add_action( 'wp_ajax_get_elementor_template_content', array( $this, 'get_template_content' ) );
60
 
61
+ $cross_enabled = isset( self::$modules['premium-cross-domain'] ) ? self::$modules['premium-cross-domain'] : 1;
62
 
63
+ if( $cross_enabled ) {
64
 
65
+ add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'enqueue_editor_cp_scripts' ), 99 );
66
+ // require_once PREMIUM_ADDONS_PATH . 'includes/class-addons-cross-cp.php';
67
+ Addons_Cross_CP::get_instance();
68
 
69
+ }
70
 
71
  }
72
 
103
 
104
  $dynamic_css = sprintf( '[class^="pa-"]::after, [class*=" pa-"]::after { content: "%s"; }', $badge_text ) ;
105
 
106
+ wp_add_inline_style( 'pa-editor', $dynamic_css );
107
 
108
  }
109
 
158
  wp_enqueue_style( 'premium-addons' );
159
 
160
  }
161
+
162
+ /**
163
+ * Register Widgets Category
164
+ *
165
+ * Register a new category for Premium Addons widgets
166
+ *
167
+ * @since 4.0.0
168
+ * @access public
169
+ *
170
+ */
171
+ public function register_widgets_category() {
172
+
173
+ Addons_Category::get_instance();
174
+
175
+ }
176
 
177
  /**
178
  * Load widgets require function
199
 
200
  $slug = basename( $file, '.php' );
201
 
202
+ //Fixes the conflict between Lottie widget/addon keys
203
+ if( 'premium-lottie' === $slug ) {
204
+
205
+ //Check if Lottie widget switcher value was saved before.
206
+ $saved_options = get_option( 'pa_save_settings' );
207
+
208
+ $slug = 'premium-lottie-widget';
209
+
210
+ if( ! isset( $saved_options[ $slug ] ) ) {
211
+ $check_component_active[ $slug ] = 1;
212
+ }
213
+
214
+ }
215
+
216
  $enabled = isset( $check_component_active[ $slug ] ) ? $check_component_active[ $slug ] : '';
217
+
218
  if ( filter_var( $enabled, FILTER_VALIDATE_BOOLEAN ) || ! $check_component_active ) {
219
  $this->register_addon( $file );
220
  }
238
  $locale = isset ( $maps_settings['premium-map-locale'] ) ? $maps_settings['premium-map-locale'] : "en";
239
 
240
  wp_register_script(
241
+ 'premium-addons',
242
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-addons' . $suffix . '.js',
243
  array('jquery'),
244
  PREMIUM_ADDONS_VERSION,
245
  true
246
  );
247
+
248
+ // wp_register_script(
249
+ // 'premium-woocommerce',
250
+ // PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/premium-woocommerce' . $suffix . '.js',
251
+ // array('jquery'),
252
+ // PREMIUM_ADDONS_VERSION,
253
+ // true
254
+ // );
255
+
256
 
257
  wp_register_script(
258
  'prettyPhoto-js',
284
  PREMIUM_ADDONS_VERSION,
285
  true
286
  );
287
+
288
  wp_register_script(
289
  'isotope-js',
290
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/isotope' . $suffix . '.js',
317
  true
318
  );
319
 
320
+ wp_register_script(
321
+ 'slimscroll-js',
322
+ PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/jquery-slimscroll' . $suffix . '.js',
323
+ array('jquery'),
324
+ PREMIUM_ADDONS_VERSION,
325
+ true
326
+ );
327
+
328
+ wp_register_script(
329
+ 'iscroll-js',
330
+ PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/iscroll' . $suffix . '.js',
331
+ array('jquery'),
332
+ PREMIUM_ADDONS_VERSION,
333
+ true
334
+ );
335
+
336
+ wp_register_script(
337
  'tilt-js',
338
  PREMIUM_ADDONS_URL . 'assets/frontend/' . $dir . '/universal-tilt' . $suffix . '.js',
339
  array( 'jquery' ),
349
  true
350
  );
351
 
352
+ if( $maps_settings['premium-map-cluster'] ) {
353
  wp_register_script(
354
  'google-maps-cluster',
355
  'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js',
370
  );
371
  }
372
 
373
+ wp_localize_script(
374
+ 'premium-addons',
375
+ 'PremiumSettings',
376
+ array(
377
+ 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ),
378
+ 'nonce' => wp_create_nonce( 'pa-blog-widget-nonce' ),
379
+ )
380
  );
381
+
382
+ // wp_localize_script(
383
+ // 'premium-woocommerce',
384
+ // 'PremiumWooSettings',
385
+ // array(
386
+ // 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ),
387
+ // 'products_nonce' => wp_create_nonce( 'pa-woo-products-nonce' ),
388
+ // 'qv_nonce' => wp_create_nonce( 'pa-woo-qv-nonce' ),
389
+ // )
390
+ // );
391
 
392
  }
393
 
403
 
404
  if( $map_enabled ) {
405
 
406
+ $premium_maps_api = self::$maps['premium-map-api'];
407
 
408
+ $locale = isset ( self::$maps['premium-map-locale'] ) ? self::$maps['premium-map-locale'] : "en";
409
 
410
+ $premium_maps_disable_api = self::$maps['premium-map-disable-api'];
411
 
412
+ if ( $premium_maps_disable_api && '1' != $premium_maps_api ) {
413
 
414
+ $api = sprintf ( 'https://maps.googleapis.com/maps/api/js?key=%1$s&language=%2$s', $premium_maps_api, $locale );
415
+ wp_enqueue_script(
416
+ 'premium-maps-api-js',
417
+ $api,
418
+ array(),
419
+ PREMIUM_ADDONS_VERSION,
420
+ false
421
+ );
422
 
423
+ }
424
 
425
  wp_enqueue_script(
426
  'pa-maps-finder',
442
 
443
  public function enqueue_editor_cp_scripts() {
444
 
 
 
 
445
  wp_enqueue_script(
446
  'premium-xdlocalstorage-js',
447
  PREMIUM_ADDONS_URL . 'assets/editor/js/xdlocalstorage.js',
527
  }
528
  }
529
 
530
+ if ( 'PremiumAddons\Widgets\Premium_Videobox' == $class ) {
531
+ require_once ( PREMIUM_ADDONS_PATH . 'widgets/dep/urlopen.php' );
532
  }
533
 
534
  if ( class_exists( $class ) ) {
546
  * @return object
547
  *
548
  */
549
+ public static function get_instance() {
 
 
 
 
 
 
 
550
 
551
+ if( self::$instance == null ) {
552
 
553
+ self::$instance = new self;
554
+
555
+ }
556
+
557
+ return self::$instance;
558
+ }
 
 
559
  }
 
includes/{class-beta-testers.php → beta-testers.php} RENAMED
@@ -5,6 +5,8 @@
5
  */
6
  namespace PremiumAddons\Includes;
7
 
 
 
8
  if ( ! defined( 'ABSPATH' ) ) exit;
9
 
10
  /**
@@ -27,13 +29,15 @@ class Beta_Testers {
27
  private $transient_key;
28
 
29
  /**
30
- * Construct
31
  */
32
  public function __construct() {
 
 
33
 
34
- $check_component_active = isset(get_option( 'pa_beta_save_settings' )['is-beta-tester']) ? get_option( 'pa_beta_save_settings' )['is-beta-tester'] : 1;
35
 
36
- if ( 0 !== $check_component_active ) {
37
  return;
38
  }
39
 
@@ -126,23 +130,12 @@ class Beta_Testers {
126
  * @return object
127
  */
128
  public static function get_instance() {
 
129
  if( self::$instance == null ) {
 
130
  self::$instance = new self;
 
131
  }
132
  return self::$instance;
133
  }
134
  }
135
-
136
-
137
- if ( ! function_exists( 'premium_beta_tester' ) ) {
138
-
139
- /**
140
- * Returns an instance of the plugin class.
141
- * @since 2.6.8
142
- * @return object
143
- */
144
- function premium_beta_tester() {
145
- return Beta_Testers::get_instance();
146
- }
147
- }
148
- premium_beta_tester();
5
  */
6
  namespace PremiumAddons\Includes;
7
 
8
+ use PremiumAddons\Admin\Includes\Admin_Helper;
9
+
10
  if ( ! defined( 'ABSPATH' ) ) exit;
11
 
12
  /**
29
  private $transient_key;
30
 
31
  /**
32
+ * Class Constructor
33
  */
34
  public function __construct() {
35
+
36
+ $settings = Admin_Helper::get_integrations_settings();
37
 
38
+ $is_beta_tester = $settings['is-beta-tester'];
39
 
40
+ if ( 0 !== $is_beta_tester ) {
41
  return;
42
  }
43
 
130
  * @return object
131
  */
132
  public static function get_instance() {
133
+
134
  if( self::$instance == null ) {
135
+
136
  self::$instance = new self;
137
+
138
  }
139
  return self::$instance;
140
  }
141
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-pa-core.php ADDED
@@ -0,0 +1,225 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * PA Core.
5
+ */
6
+ namespace PremiumAddons\Includes;
7
+
8
+ if( ! class_exists('PA_Core') ) {
9
+
10
+ /*
11
+ * Intialize and Sets up the plugin
12
+ */
13
+ class PA_Core {
14
+
15
+ /**
16
+ * Member Variable
17
+ *
18
+ * @var instance
19
+ */
20
+ private static $instance = null;
21
+
22
+ /**
23
+ * Sets up needed actions/filters for the plug-in to initialize.
24
+ *
25
+ * @since 1.0.0
26
+ * @access public
27
+ *
28
+ * @return void
29
+ */
30
+ public function __construct() {
31
+
32
+ //Autoloader
33
+ spl_autoload_register( array( $this, 'autoload' ) );
34
+
35
+ //Run plugin and require the necessary files
36
+ add_action( 'plugins_loaded', array( $this, 'premium_addons_elementor_setup' ) );
37
+
38
+ //Load Elementor files
39
+ add_action( 'elementor/init', array( $this, 'elementor_init' ) );
40
+ add_action( 'init', array( $this, 'init' ), -999 );
41
+
42
+ //Register Rollback hooks
43
+ add_action( 'admin_post_premium_addons_rollback', 'post_premium_addons_rollback' );
44
+
45
+ //Register Activation hooks
46
+ register_activation_hook( PREMIUM_ADDONS_FILE, array( $this, 'set_transient' ) );
47
+
48
+ }
49
+
50
+ /**
51
+ * AutoLoad
52
+ *
53
+ * @since 3.20.9
54
+ * @param string $class class.
55
+ */
56
+ public function autoload( $class ) {
57
+
58
+ if ( 0 !== strpos( $class, 'PremiumAddons' ) ) {
59
+ return;
60
+ }
61
+
62
+ $class_to_load = $class;
63
+
64
+ if ( ! class_exists( $class_to_load ) ) {
65
+ $filename = strtolower(
66
+ preg_replace(
67
+ array( '/^' . 'PremiumAddons' . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ),
68
+ array( '', '$1-$2', '-', DIRECTORY_SEPARATOR ),
69
+ $class_to_load
70
+ )
71
+ );
72
+
73
+ $filename = PREMIUM_ADDONS_PATH . $filename . '.php';
74
+
75
+ if ( is_readable( $filename ) ) {
76
+
77
+ include( $filename );
78
+ }
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Installs translation text domain and checks if Elementor is installed
84
+ *
85
+ * @since 1.0.0
86
+ * @access public
87
+ *
88
+ * @return void
89
+ */
90
+ public function premium_addons_elementor_setup() {
91
+
92
+ //Load plugin textdomain
93
+ $this->load_domain();
94
+
95
+ //load plugin necessary files
96
+ $this->init_files();
97
+ }
98
+
99
+ /**
100
+ * Set transient for admin review notice
101
+ *
102
+ * @since 3.1.7
103
+ * @access public
104
+ *
105
+ * @return void
106
+ */
107
+ public function set_transient() {
108
+
109
+ $cache_key = 'premium_notice_' . PREMIUM_ADDONS_VERSION;
110
+
111
+ $expiration = 3600 * 72;
112
+
113
+ set_transient( $cache_key, true, $expiration );
114
+ }
115
+
116
+
117
+ /**
118
+ * Require initial necessary files
119
+ *
120
+ * @since 2.6.8
121
+ * @access public
122
+ *
123
+ * @return void
124
+ */
125
+ public function init_files() {
126
+
127
+ \PremiumAddons\Admin\Includes\Admin_Helper::get_instance();
128
+
129
+ require_once ( PREMIUM_ADDONS_PATH . 'includes/elementor-helper.php' );
130
+
131
+ if ( is_admin() ) {
132
+
133
+ require_once ( PREMIUM_ADDONS_PATH . 'admin/includes/dep/maintenance.php');
134
+ require_once ( PREMIUM_ADDONS_PATH . 'admin/includes/dep/rollback.php');
135
+
136
+ Beta_Testers::get_instance();
137
+
138
+ \PremiumAddons\Admin\Includes\Admin_Notices::get_instance();
139
+
140
+ }
141
+
142
+ }
143
+
144
+ /**
145
+ * Load plugin translated strings using text domain
146
+ *
147
+ * @since 2.6.8
148
+ * @access public
149
+ *
150
+ * @return void
151
+ */
152
+ public function load_domain() {
153
+
154
+ load_plugin_textdomain( 'premium-addons-for-elementor' );
155
+
156
+ }
157
+
158
+ /**
159
+ * Elementor Init
160
+ *
161
+ * @since 2.6.8
162
+ * @access public
163
+ *
164
+ * @return void
165
+ */
166
+ public function elementor_init() {
167
+
168
+ Compatibility\Premium_Addons_Wpml::get_instance();
169
+
170
+ Addons_Integration::get_instance();
171
+
172
+ //Make sure Woocommerce is insalled and active.
173
+ // if( class_exists('Woocommerce') ) {
174
+ // Modules_Manager::get_instance();
175
+ // }
176
+
177
+ }
178
+
179
+ /*
180
+ * Init
181
+ *
182
+ * @since 3.4.0
183
+ * @access public
184
+ *
185
+ * @return void
186
+ */
187
+ public function init() {
188
+
189
+ if ( \PremiumAddons\Admin\Includes\Admin_Helper::check_premium_templates() ) {
190
+ require_once ( PREMIUM_ADDONS_PATH . 'includes/templates/templates.php');
191
+ }
192
+ }
193
+
194
+
195
+ /**
196
+ * Creates and returns an instance of the class
197
+ *
198
+ * @since 2.6.8
199
+ * @access public
200
+ *
201
+ * @return object
202
+ */
203
+ public static function get_instance() {
204
+ if( self::$instance == null ) {
205
+ self::$instance = new self;
206
+ }
207
+ return self::$instance;
208
+ }
209
+
210
+ }
211
+ }
212
+
213
+ if ( ! function_exists( 'pa_core' ) ) {
214
+
215
+ /**
216
+ * Returns an instance of the plugin class.
217
+ * @since 1.0.0
218
+ * @return object
219
+ */
220
+ function pa_core() {
221
+ return PA_Core::get_instance();
222
+ }
223
+ }
224
+
225
+ pa_core();
includes/compatibility/{class-premium-addons-wpml.php → premium-addons-wpml.php} RENAMED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- namespace PremiumAddons\Compatibility\WPML;
4
 
5
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
6
 
@@ -579,21 +579,4 @@ if ( ! class_exists ('Premium_Addons_Wpml') ) {
579
 
580
  }
581
 
582
- }
583
-
584
- if( ! function_exists('premium_addons_wpml') ) {
585
-
586
- /**
587
- * Triggers `get_instance` method
588
- * @since 0.0.1
589
- * @access public
590
- * return object
591
- */
592
- function premium_addons_wpml() {
593
-
594
- Premium_Addons_Wpml::get_instance();
595
-
596
- }
597
-
598
- }
599
- premium_addons_wpml();
1
  <?php
2
 
3
+ namespace PremiumAddons\Includes\Compatibility;
4
 
5
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
6
 
579
 
580
  }
581
 
582
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/{class-helper-functions.php → helper-functions.php} RENAMED
@@ -3,7 +3,10 @@
3
  /**
4
  * PA Helper Functions.
5
  */
6
- namespace PremiumAddons;
 
 
 
7
 
8
  //Elementor Classes
9
  use Elementor\Core\Settings\Manager as SettingsManager;
@@ -58,9 +61,14 @@ class Helper_Functions {
58
  *
59
  * @return boolean
60
  */
61
- public static function is_hide_rate(){
62
 
63
  if( self::check_papro_version() ) {
 
 
 
 
 
64
  if( isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-rate'] ) ) {
65
  $hide_rate = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-rate'];
66
  }
@@ -69,44 +77,6 @@ class Helper_Functions {
69
  return isset( $hide_rate ) ? $hide_rate : false;
70
  }
71
 
72
- /**
73
- * Check if white labeling - hide about page is checked
74
- *
75
- * @since 1.0.0
76
- * @access public
77
- *
78
- * @return boolean
79
- */
80
- public static function is_hide_about(){
81
-
82
- if( self::check_papro_version() ) {
83
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-about'])){
84
- $hide_about = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-about'];
85
- }
86
- }
87
-
88
- return isset( $hide_about ) ? $hide_about : false;
89
- }
90
-
91
- /**
92
- * Check if white labeling - hide version control page is checked
93
- *
94
- * @since 1.0.0
95
- * @access public
96
- *
97
- * @return boolean
98
- */
99
- public static function is_hide_version_control(){
100
-
101
- if( self::check_papro_version() ) {
102
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-version'])){
103
- $hide_version_tab = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-version'];
104
- }
105
- }
106
-
107
- return isset( $hide_version_tab ) ? $hide_version_tab : false;
108
- }
109
-
110
  /**
111
  * Check if white labeling - Free version author field is set
112
  *
@@ -115,15 +85,19 @@ class Helper_Functions {
115
  *
116
  * @return string
117
  */
118
- public static function author(){
 
 
119
 
120
  if( self::check_papro_version() ) {
121
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-name'])){
122
- $author_free = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-name'];
123
- }
 
 
124
  }
125
 
126
- return ( isset( $author_free ) && '' != $author_free ) ? $author_free : 'Leap13';
127
  }
128
 
129
  /**
@@ -135,14 +109,18 @@ class Helper_Functions {
135
  * @return string
136
  */
137
  public static function name() {
 
 
138
 
139
  if( self::check_papro_version() ) {
140
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-plugin-name'])){
141
- $name_free = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-plugin-name'];
142
- }
 
 
143
  }
144
 
145
- return ( isset( $name_free ) && '' != $name_free ) ? $name_free : 'Premium Addons for Elementor';
146
  }
147
 
148
  /**
@@ -155,14 +133,16 @@ class Helper_Functions {
155
  public static function is_hide_row_meta() {
156
 
157
  if( self::check_papro_version() ) {
158
- if( isset( get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-row'] ) ){
159
- $hide_meta = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-row'];
160
- }
 
 
161
  }
162
 
163
  return isset( $hide_meta ) ? $hide_meta : false;
164
  }
165
-
166
  /**
167
  * Check if white labeling - Hide plugin logo option is checked
168
  *
@@ -171,12 +151,16 @@ class Helper_Functions {
171
  *
172
  * @return string
173
  */
174
- public static function is_hide_logo(){
175
 
176
  if( self::check_papro_version() ) {
177
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-logo'])){
 
 
178
  $hide_logo = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-logo'];
 
179
  }
 
180
  }
181
 
182
  return isset( $hide_logo ) ? $hide_logo : false;
@@ -190,15 +174,19 @@ class Helper_Functions {
190
  *
191
  * @return string
192
  */
193
- public static function get_category(){
194
 
 
 
195
  if( self::check_papro_version() ) {
196
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-short-name'])){
197
- $category = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-short-name'];
198
- }
 
 
199
  }
200
 
201
- return ( isset( $category ) && '' != $category ) ? $category : __( 'Premium Addons', 'premium-addons-for-elementor' );
202
 
203
  }
204
 
@@ -210,15 +198,19 @@ class Helper_Functions {
210
  *
211
  * @return string
212
  */
213
- public static function get_prefix(){
 
 
214
 
215
  if( self::check_papro_version() ) {
216
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-prefix'])){
217
- $prefix = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-prefix'];
218
- }
 
 
219
  }
220
 
221
- return ( isset( $prefix ) && '' != $prefix ) ? $prefix : __('Premium', 'premium-addons-for-elementor');
222
  }
223
 
224
  /**
@@ -230,14 +222,18 @@ class Helper_Functions {
230
  * @return string
231
  */
232
  public static function get_badge() {
 
 
233
 
234
  if( self::check_papro_version() ) {
235
- if(isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-badge'])){
236
- $badge = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-badge'];
237
- }
 
 
238
  }
239
 
240
- return ( isset( $badge ) && '' != $badge ) ? $badge : 'PA';
241
  }
242
 
243
  /**
@@ -253,7 +249,7 @@ class Helper_Functions {
253
  if ( null === self::$google_localize ) {
254
 
255
  self::$google_localize = array(
256
- 'ar' => __( 'Arabic', 'premium-addons-for-elementor'),
257
  'eu' => __( 'Basque', 'premium-addons-for-elementor'),
258
  'bg' => __( 'Bulgarian', 'premium-addons-for-elementor'),
259
  'bn' => __( 'Bengali', 'premium-addons-for-elementor'),
@@ -425,7 +421,7 @@ class Helper_Functions {
425
  }
426
 
427
  $theme_name = sanitize_key( $theme_name );
428
-
429
  return $theme_name;
430
  }
431
 
@@ -491,7 +487,7 @@ class Helper_Functions {
491
  $thumbnail_src = sprintf( 'https://i.ytimg.com/vi/%s/%s.jpg', $id, $size );
492
 
493
  } elseif ( 'vimeo' === $type ) {
494
-
495
  $vimeo = self::get_vimeo_video_data( $id );
496
 
497
  // if( isset( $vimeo['src'] ) ) {
@@ -537,6 +533,34 @@ class Helper_Functions {
537
  }
538
 
539
  /**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
540
  * Get Elementor UI Theme
541
  *
542
  * Detects user setting for UI theme
3
  /**
4
  * PA Helper Functions.
5
  */
6
+ namespace PremiumAddons\Includes;
7
+
8
+ //Premium Addons Pro Classes
9
+ use PremiumAddonsPro\Includes\White_Label\Helper;
10
 
11
  //Elementor Classes
12
  use Elementor\Core\Settings\Manager as SettingsManager;
61
  *
62
  * @return boolean
63
  */
64
+ public static function is_hide_rate() {
65
 
66
  if( self::check_papro_version() ) {
67
+
68
+ $white_label = Helper::get_white_labeling_settings();
69
+
70
+ $hide_meta = $white_label['premium-wht-lbl-name'];
71
+
72
  if( isset(get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-rate'] ) ) {
73
  $hide_rate = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-rate'];
74
  }
77
  return isset( $hide_rate ) ? $hide_rate : false;
78
  }
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  /**
81
  * Check if white labeling - Free version author field is set
82
  *
85
  *
86
  * @return string
87
  */
88
+ public static function author() {
89
+
90
+ $author_free = 'Leap13';
91
 
92
  if( self::check_papro_version() ) {
93
+
94
+ $white_label = Helper::get_white_labeling_settings();
95
+
96
+ $author_free = $white_label['premium-wht-lbl-name'];
97
+
98
  }
99
 
100
+ return '' != $author_free ? $author_free : 'Leap13';
101
  }
102
 
103
  /**
109
  * @return string
110
  */
111
  public static function name() {
112
+
113
+ $name_free = 'Premium Addons for Elementor';
114
 
115
  if( self::check_papro_version() ) {
116
+
117
+ $white_label = Helper::get_white_labeling_settings();
118
+
119
+ $name_free = $white_label['premium-wht-lbl-plugin-name'];
120
+
121
  }
122
 
123
+ return '' != $name_free ? $name_free : 'Premium Addons for Elementor';
124
  }
125
 
126
  /**
133
  public static function is_hide_row_meta() {
134
 
135
  if( self::check_papro_version() ) {
136
+
137
+ $white_label = Helper::get_white_labeling_settings();
138
+
139
+ $hide_meta = $white_label['premium-wht-lbl-row'];
140
+
141
  }
142
 
143
  return isset( $hide_meta ) ? $hide_meta : false;
144
  }
145
+
146
  /**
147
  * Check if white labeling - Hide plugin logo option is checked
148
  *
151
  *
152
  * @return string
153
  */
154
+ public static function is_hide_logo() {
155
 
156
  if( self::check_papro_version() ) {
157
+
158
+ if( isset( get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-logo'] ) ) {
159
+
160
  $hide_logo = get_option('pa_wht_lbl_save_settings')['premium-wht-lbl-logo'];
161
+
162
  }
163
+
164
  }
165
 
166
  return isset( $hide_logo ) ? $hide_logo : false;
174
  *
175
  * @return string
176
  */
177
+ public static function get_category() {
178
 
179
+ $category = __( 'Premium Addons', 'premium-addons-for-elementor' );
180
+
181
  if( self::check_papro_version() ) {
182
+
183
+ $white_label = Helper::get_white_labeling_settings();
184
+
185
+ $category = $white_label['premium-wht-lbl-short-name'];
186
+
187
  }
188
 
189
+ return '' != $category ? $category : __('Premium Addons', 'premium-addons-for-elementor');
190
 
191
  }
192
 
198
  *
199
  * @return string
200
  */
201
+ public static function get_prefix() {
202
+
203
+ $prefix = __( 'Premium', 'premium-addons-for-elementor' );
204
 
205
  if( self::check_papro_version() ) {
206
+
207
+ $white_label = Helper::get_white_labeling_settings();
208
+
209
+ $prefix = $white_label['premium-wht-lbl-prefix'];
210
+
211
  }
212
 
213
+ return '' != $prefix ? $prefix : __('Premium', 'premium-addons-for-elementor');
214
  }
215
 
216
  /**
222
  * @return string
223
  */
224
  public static function get_badge() {
225
+
226
+ $badge = 'PA';
227
 
228
  if( self::check_papro_version() ) {
229
+
230
+ $white_label = Helper::get_white_labeling_settings();
231
+
232
+ $badge = $white_label['premium-wht-lbl-badge'];
233
+
234
  }
235
 
236
+ return '' != $badge ? $badge : 'PA';
237
  }
238
 
239
  /**
249
  if ( null === self::$google_localize ) {
250
 
251
  self::$google_localize = array(
252
+ 'ar' => __( 'Arabic', 'premium-addons-for-elementor'),
253
  'eu' => __( 'Basque', 'premium-addons-for-elementor'),
254
  'bg' => __( 'Bulgarian', 'premium-addons-for-elementor'),
255
  'bn' => __( 'Bengali', 'premium-addons-for-elementor'),
421
  }
422
 
423
  $theme_name = sanitize_key( $theme_name );
424
+
425
  return $theme_name;
426
  }
427
 
487
  $thumbnail_src = sprintf( 'https://i.ytimg.com/vi/%s/%s.jpg', $id, $size );
488
 
489
  } elseif ( 'vimeo' === $type ) {
490
+
491
  $vimeo = self::get_vimeo_video_data( $id );
492
 
493
  // if( isset( $vimeo['src'] ) ) {
533
  }
534
 
535
  /**
536
+ * Get Campaign Link
537
+ *
538
+ * @since 3.20.9
539
+ * @access public
540
+ *
541
+ * @param string $link page link
542
+ * @param string $source campaign source
543
+ * @param string $medium campaign media
544
+ * @param string $campaign
545
+ *
546
+ * @return string $link campaign URL
547
+ */
548
+ public static function get_campaign_link( $link, $source, $medium, $campaign = '' ) {
549
+
550
+ $theme = self::get_installed_theme();
551
+
552
+ $url = add_query_arg( array(
553
+ 'utm_source' => $source,
554
+ 'utm_medium' => $medium,
555
+ 'utm_campaign' => $campaign,
556
+ 'utm_term' => $theme
557
+ ), $link );
558
+
559
+ return $url;
560
+
561
+ }
562
+
563
+ /**
564
  * Get Elementor UI Theme
565
  *
566
  * Detects user setting for UI theme
includes/modules-manager.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace PremiumAddons\Includes;
4
+
5
+ use PremiumAddons\Base\Module_Base;
6
+
7
+ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
8
+
9
+ final class Modules_Manager {
10
+
11
+ //Class instance
12
+ private static $instance = null;
13
+
14
+ /**
15
+ * @var Module_Base[]
16
+ */
17
+ private $modules = [];
18
+
19
+ public function __construct() {
20
+
21
+ $this->require_files();
22
+
23
+ $this->register_modules();
24
+
25
+ }
26
+
27
+ /**
28
+ * Require Files.
29
+ *
30
+ * @since 1.6.1
31
+ * @access public
32
+ *
33
+ * @return void
34
+ */
35
+ public function require_files() {
36
+
37
+ require_once PREMIUM_ADDONS_PATH . 'base/module-base.php';
38
+
39
+ }
40
+
41
+ /**
42
+ * Register Modules.
43
+ *
44
+ * @since 1.6.1
45
+ * @access public
46
+ *
47
+ * @return void
48
+ */
49
+ public function register_modules() {
50
+
51
+ $modules = [
52
+ 'woocommerce'
53
+ ];
54
+
55
+ foreach ( $modules as $module_name ) {
56
+
57
+ $class_name = str_replace( '-', ' ', $module_name );
58
+
59
+ $class_name = str_replace( ' ', '', ucwords( $class_name ) );
60
+
61
+ $namespace = str_replace( 'Includes', '', __NAMESPACE__ );
62
+
63
+ $class_name = $namespace . 'Modules\\' . $class_name . '\Module';
64
+
65
+ /** @var Module_Base $class_name */
66
+ $this->modules[ $module_name ] = $class_name::instance();
67
+
68
+ }
69
+
70
+ }
71
+
72
+ /**
73
+ *
74
+ * Creates and returns an instance of the class
75
+ *
76
+ * @since 1.0.0
77
+ * @access public
78
+ *
79
+ * @return object
80
+ *
81
+ */
82
+ public static function get_instance() {
83
+
84
+ if( self::$instance == null ) {
85
+
86
+ self::$instance = new self;
87
+
88
+ }
89
+
90
+ return self::$instance;
91
+ }
92
+
93
+ }
includes/plugin.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
-
3
- namespace PremiumAddons;
4
-
5
- use PremiumAddons\Admin\Includes;
6
- use PremiumAddons\Admin\Settings;
7
-
8
- if ( ! defined( 'ABSPATH' ) ) exit;
9
-
10
- /**
11
- * Class Plugin
12
- */
13
- class Plugin {
14
-
15
- public static $instance = null;
16
-
17
- private function __construct() {
18
- add_action( 'init', array( $this, 'init' ), 0 );
19
- }
20
-
21
- public function init() {
22
- $this->init_components();
23
- }
24
-
25
- private function init_components() {
26
-
27
- new Includes\Plugin_Info();
28
-
29
- new Settings\Maps();
30
-
31
- new Includes\Version_Control();
32
-
33
- new Includes\Config_Data();
34
-
35
- new Settings\Modules_Settings();
36
-
37
- $this->settings = new Includes\Papro_Actions();
38
-
39
- }
40
-
41
- public static function instance() {
42
-
43
- if ( is_null( self::$instance ) ) {
44
-
45
- self::$instance = new self();
46
-
47
- }
48
-
49
- return self::$instance;
50
- }
51
-
52
- }
53
-
54
- if ( ! defined( 'ELEMENTOR_TESTS' ) ) {
55
- Plugin::instance();
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
premium-addons-for-elementor.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons for Elementor plugin includes widgets and addons like Blog Post Grid, Gallery, Carousel, Modal Popup, Google Maps, Pricing Tables, Lottie Animations, Countdown, Testimonials.
5
  Plugin URI: https://premiumaddons.com
6
- Version: 4.0.1
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
@@ -14,7 +14,7 @@ License: GNU General Public License v3.0
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
- define('PREMIUM_ADDONS_VERSION', '4.0.1');
18
  define('PREMIUM_ADDONS_URL', plugins_url( '/', __FILE__ ) );
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path( __FILE__ ) );
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
3
  Plugin Name: Premium Addons for Elementor
4
  Description: Premium Addons for Elementor plugin includes widgets and addons like Blog Post Grid, Gallery, Carousel, Modal Popup, Google Maps, Pricing Tables, Lottie Animations, Countdown, Testimonials.
5
  Plugin URI: https://premiumaddons.com
6
+ Version: 4.0.3
7
  Author: Leap13
8
  Author URI: https://leap13.com/
9
  Text Domain: premium-addons-for-elementor
14
  if ( ! defined('ABSPATH') ) exit; // No access of directly access
15
 
16
  // Define Constants
17
+ define('PREMIUM_ADDONS_VERSION', '4.0.3');
18
  define('PREMIUM_ADDONS_URL', plugins_url( '/', __FILE__ ) );
19
  define('PREMIUM_ADDONS_PATH', plugin_dir_path( __FILE__ ) );
20
  define('PREMIUM_ADDONS_FILE', __FILE__);
readme.txt CHANGED
@@ -5,7 +5,7 @@ Donate Link: https://premiumaddons.com/?utm_source=wp-repo&utm_medium=link&utm_c
5
  Requires at least: 5.0
6
  Tested Up To: 5.5.3
7
  Requires PHP: 5.4
8
- Stable Tag: 4.0.1
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
@@ -185,6 +185,10 @@ Premium Addons for Elementor is 100% Ads Free, Ads can only be detected from You
185
 
186
  == Changelog ==
187
 
 
 
 
 
188
  = 4.0.1 =
189
 
190
  - Fixed: Fatal error after v4.0.0
5
  Requires at least: 5.0
6
  Tested Up To: 5.5.3
7
  Requires PHP: 5.4
8
+ Stable Tag: 4.0.3
9
  License: GPL v3.0
10
  License URI: https://opensource.org/licenses/GPL-3.0
11
 
185
 
186
  == Changelog ==
187
 
188
+ = 4.0.3 =
189
+
190
+ - Fixed: Issues after v4.0.0
191
+
192
  = 4.0.1 =
193
 
194
  - Fixed: Fatal error after v4.0.0
widgets/dep/urlopen.php ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if (!function_exists('rplg_urlopen')) {
4
+
5
+ define('RPLG_USER_AGENT', 'RPLG-WPPlugin/1.0');
6
+ define('RPLG_SOCKET_TIMEOUT', 10);
7
+
8
+ function rplg_json_decode($data) {
9
+ return json_decode($data);
10
+ }
11
+
12
+ function rplg_json_urlopen($url, $postdata=false, $headers=array()) {
13
+ if (!($response = rplg_urlopen($url, $postdata, $headers)) || !$response['code']) {
14
+ //$this->last_error = 'COULDNT_CONNECT';
15
+ return false;
16
+ }
17
+ return rplg_json_decode($response['data']);
18
+ }
19
+
20
+ function rplg_urlopen($url, $postdata=false, $headers=array()) {
21
+ $response = array(
22
+ 'data' => '',
23
+ 'code' => 0
24
+ );
25
+
26
+ $url = preg_replace('/\s+/', '+', $url);
27
+
28
+ if(function_exists('curl_init')) {
29
+ if (!function_exists('curl_setopt_array')) {
30
+ function curl_setopt_array(&$ch, $curl_options) {
31
+ foreach ($curl_options as $option => $value) {
32
+ if (!curl_setopt($ch, $option, $value)) {
33
+ return false;
34
+ }
35
+ }
36
+ return true;
37
+ }
38
+ }
39
+ _rplg_curl_urlopen($url, $postdata, $headers, $response);
40
+ } else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
41
+ _rplg_fopen_urlopen($url, $postdata, $headers, $response);
42
+ } else {
43
+ _rplg_fsockopen_urlopen($url, $postdata, $headers, $response);
44
+ }
45
+ return $response;
46
+ }
47
+
48
+ /*-------------------------------- curl --------------------------------*/
49
+ function _rplg_curl_urlopen($url, $postdata, $headers, &$response) {
50
+ $c = curl_init($url);
51
+ $postdata_str = rplg_get_query_string($postdata);
52
+
53
+ $c_options = array(
54
+ CURLOPT_USERAGENT => RPLG_USER_AGENT,
55
+ CURLOPT_RETURNTRANSFER => true,
56
+ CURLOPT_POST => ($postdata_str ? 1 : 0),
57
+ CURLOPT_HEADER => true,
58
+ CURLOPT_HTTPHEADER => array_merge(array('Expect:'), $headers),
59
+ CURLOPT_TIMEOUT => RPLG_SOCKET_TIMEOUT
60
+ );
61
+ if($postdata) {
62
+ $c_options[CURLOPT_POSTFIELDS] = $postdata_str;
63
+ }
64
+ curl_setopt_array($c, $c_options);
65
+
66
+ $open_basedir = ini_get('open_basedir');
67
+ if( empty( $open_basedir ) ) {
68
+ curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
69
+ }
70
+ curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
71
+
72
+ $data = curl_exec($c);
73
+
74
+ // cURL automatically handles Proxy rewrites, remove the "HTTP/1.0 200 Connection established" string
75
+ if (stripos($data, "HTTP/1.0 200 Connection established\r\n\r\n") !== false) {
76
+ $data = str_ireplace("HTTP/1.0 200 Connection established\r\n\r\n", '', $data);
77
+ }
78
+
79
+ list($resp_headers, $response['data']) = explode("\r\n\r\n", $data, 2);
80
+
81
+ $response['headers'] = _rplg_get_response_headers($resp_headers, $response);
82
+ $response['code'] = curl_getinfo($c, CURLINFO_HTTP_CODE);
83
+ curl_close($c);
84
+ }
85
+
86
+ /*-------------------------------- fopen --------------------------------*/
87
+ function _rplg_fopen_urlopen($url, $postdata, $headers, &$response) {
88
+ $params = array();
89
+
90
+ if($postdata) {
91
+ $params = array('http' => array(
92
+ 'method' => 'POST',
93
+ 'header' => implode("\r\n", array_merge(array('Content-Type: application/x-www-form-urlencoded'), $headers)),
94
+ 'content' => rplg_get_query_string($postdata),
95
+ 'timeout' => RPLG_SOCKET_TIMEOUT
96
+ ));
97
+ } else {
98
+ $params = array('http' => array(
99
+ 'header' => implode("\r\n", $headers)
100
+ ));
101
+ }
102
+
103
+ ini_set('user_agent', RPLG_USER_AGENT);
104
+ $ctx = stream_context_create($params);
105
+ $fp = fopen($url, 'rb', false, $ctx);
106
+ if(!$fp) { return false; }
107
+
108
+ $response_header_array = explode(' ', $http_response_header[0], 3);
109
+
110
+ $unused = $response_header_array[0];
111
+
112
+ $response['code'] = $response_header_array[0];
113
+
114
+ $unused = $response_header_array[2];
115
+
116
+ $resp_headers = array_slice($http_response_header, 1);
117
+
118
+ foreach($resp_headers as $unused=>$header) {
119
+ $header = explode(':', $header);
120
+ $header[0] = trim($header[0]);
121
+ $header[1] = trim($header[1]);
122
+ $resp_headers[strtolower($header[0])] = strtolower($header[1]);
123
+ }
124
+ $response['data'] = stream_get_contents($fp);
125
+ $response['headers'] = $resp_headers;
126
+ }
127
+
128
+ /*-------------------------------- fsockpen --------------------------------*/
129
+ function _rplg_fsockopen_urlopen($url, $postdata, $headers, &$response) {
130
+ $buf = '';
131
+ $req = '';
132
+ $length = 0;
133
+ $postdata_str = rplg_get_query_string($postdata);
134
+ $url_pieces = parse_url($url);
135
+ $host = $url_pieces['host'];
136
+
137
+ if(!isset($url_pieces['port'])) {
138
+ switch($url_pieces['scheme']) {
139
+ case 'http':
140
+ $url_pieces['port'] = 80;
141
+ break;
142
+ case 'https':
143
+ $url_pieces['port'] = 443;
144
+ $host = 'ssl://' . $url_pieces['host'];
145
+ break;
146
+ }
147
+ }
148
+
149
+ if(!isset($url_pieces['path'])) { $url_pieces['path'] = '/'; }
150
+
151
+ if(($url_pieces['port'] == 80 && $url_pieces['scheme'] == 'http') ||
152
+ ($url_pieces['port'] == 443 && $url_pieces['scheme'] == 'https')) {
153
+ $req_host = $url_pieces['host'];
154
+ } else {
155
+ $req_host = $url_pieces['host'] . ':' . $url_pieces['port'];
156
+ }
157
+
158
+ $fp = @fsockopen($host, $url_pieces['port'], $errno, $errstr, RPLG_SOCKET_TIMEOUT);
159
+ if(!$fp) { return false; }
160
+
161
+ $path = $url_pieces['path'];
162
+ if (isset($url_pieces['query'])) $path .= '?'.$url_pieces['query'];
163
+
164
+ $req .= ($postdata_str ? 'POST' : 'GET') . ' ' . $path . " HTTP/1.1\r\n";
165
+ $req .= 'Host: ' . $req_host . "\r\n";
166
+ $req .= rplg_get_http_headers_for_request($postdata_str, $headers);
167
+ if($postdata_str) {
168
+ $req .= "\r\n\r\n" . $postdata_str;
169
+ }
170
+ $req .= "\r\n\r\n";
171
+
172
+ fwrite($fp, $req);
173
+ while(!feof($fp)) {
174
+ $buf .= fgets($fp, 4096);
175
+ }
176
+
177
+ list($headers, $response['data']) = explode("\r\n\r\n", $buf, 2);
178
+
179
+ $headers = _rplg_get_response_headers($headers, $response);
180
+
181
+ if(isset($headers['transfer-encoding']) && 'chunked' == strtolower($headers['transfer-encoding'])) {
182
+ $chunk_data = $response['data'];
183
+ $joined_data = '';
184
+ while(true) {
185
+ list($chunk_length, $chunk_data) = explode("\r\n", $chunk_data, 2);
186
+ $chunk_length = hexdec($chunk_length);
187
+ if(!$chunk_length || !strlen($chunk_data)) { break; }
188
+
189
+ $joined_data .= substr($chunk_data, 0, $chunk_length);
190
+ $chunk_data = substr($chunk_data, $chunk_length + 1);
191
+ $length += $chunk_length;
192
+ }
193
+ $response['data'] = $joined_data;
194
+ } else {
195
+ $length = $headers['content-length'];
196
+ }
197
+ $response['headers'] = $headers;
198
+ }
199
+
200
+ /*-------------------------------- helpers --------------------------------*/
201
+ function rplg_get_query_string($params) {
202
+ $query = '';
203
+
204
+ if($params) {
205
+ foreach($params as $key=>$value) {
206
+ $query .= urlencode($key) . '=' . urlencode($value) . '&';
207
+ }
208
+ }
209
+ return $query;
210
+ }
211
+
212
+ function _rplg_get_response_headers($headers, &$response) {
213
+ $headers = explode("\r\n", $headers);
214
+
215
+ $header_array = explode(' ', $headers[0], 3);
216
+
217
+ $unused = $header_array[0];
218
+
219
+ $response['code'] = $header_array[1];
220
+
221
+ $unused = $header_array[2];
222
+
223
+ $headers = array_slice($headers, 1);
224
+ foreach($headers as $unused=>$header) {
225
+ $header = explode(':', $header);
226
+ $header[0] = trim($header[0]);
227
+ $header[1] = trim($header[1]);
228
+ $headers[strtolower($header[0])] = $header[1];
229
+ }
230
+ return $headers;
231
+ }
232
+
233
+ function rplg_get_http_headers_for_request($content, $headers) {
234
+ $req_headers = array();
235
+ $req_headers[] = 'User-Agent: ' . RPLG_USER_AGENT;
236
+ $req_headers[] = 'Connection: close';
237
+ if($content) {
238
+ $req_headers[] = 'Content-Length: ' . strlen($content);
239
+ $req_headers[] = 'Content-Type: application/x-www-form-urlencoded';
240
+ }
241
+ return implode("\r\n", array_merge($req_headers, $headers));
242
+ }
243
+
244
+ function rplg_url_method() {
245
+ if(function_exists('curl_init')) {
246
+ return 'curl';
247
+ } else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
248
+ return 'fopen';
249
+ } else {
250
+ return 'fsockopen';
251
+ }
252
+ }
253
+ }
254
+
255
+ ?>
widgets/premium-icon-list.php ADDED
@@ -0,0 +1,2211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class: Premium_Icon_list
5
+ * Name: Bullet List
6
+ * Slug: premium-addon-icon-list
7
+ */
8
+
9
+ namespace PremiumAddons\Widgets;
10
+
11
+ // Elementor Classes.
12
+ use Elementor\Icons_Manager;
13
+ use Elementor\Control_Media;
14
+ use Elementor\Widget_Base;
15
+ use Elementor\Utils;
16
+ use Elementor\Controls_Manager;
17
+ use Elementor\Repeater;
18
+ use Elementor\Scheme_Color;
19
+ use Elementor\Scheme_Typography;
20
+ use Elementor\Group_Control_Background;
21
+ use Elementor\Group_Control_Box_Shadow;
22
+ use Elementor\Group_Control_Text_Shadow;
23
+ use Elementor\Group_Control_Border;
24
+ use Elementor\Group_Control_Typography;
25
+
26
+
27
+ // PremiumAddons Classes.
28
+ use PremiumAddons\Includes\Helper_Functions;
29
+ use PremiumAddons\Includes\Premium_Template_Tags;
30
+
31
+
32
+ if ( ! defined( 'ABSPATH' ) ) exit; // If this file is called directly, abort.
33
+
34
+ /**
35
+ * Class Premium_Icon_List
36
+ */
37
+ class Premium_Icon_List extends Widget_Base {
38
+
39
+ public function getTemplateInstance() {
40
+ return $this->templateInstance = Premium_Template_Tags::getInstance();
41
+ }
42
+
43
+ public function get_name() {
44
+ return 'premium-icon-list';
45
+ }
46
+
47
+ public function get_title() {
48
+ return sprintf( '%1$s %2$s', Helper_Functions::get_prefix(), __('Bullet list', 'premium-addons-for-elementor') );
49
+ }
50
+
51
+ public function get_style_depends() {
52
+ return [
53
+ 'premium-addons'
54
+ ];
55
+ }
56
+
57
+ public function get_script_depends() {
58
+ return [
59
+ 'elementor-waypoints',
60
+ 'lottie-js',
61
+ 'premium-addons'
62
+ ];
63
+ }
64
+
65
+ public function get_icon() {
66
+ return 'pa-icon-list';
67
+ }
68
+
69
+ public function get_categories() {
70
+ return [ 'premium-elements' ];
71
+ }
72
+
73
+ public function get_custom_help_url() {
74
+ return 'https://premiumaddons.com/support/';
75
+ }
76
+
77
+ public function _register_controls() {
78
+
79
+ // Content Tab
80
+ // List Items Content
81
+ $this->start_controls_section(
82
+ 'list_items_section',
83
+ [
84
+ 'label' => __( 'List Items', 'premium-addons-for-elementor' ),
85
+ 'tab' => Controls_Manager::TAB_CONTENT,
86
+ ]
87
+ );
88
+
89
+ // Title control
90
+ $repeater_list = new REPEATER();
91
+
92
+ $repeater_list->add_control(
93
+ 'list_title',
94
+ [
95
+ 'label' => __( 'Title', 'premium-addons-for-elementor' ),
96
+ 'type' => Controls_Manager::TEXT,
97
+ 'default' => __( 'List Title' , 'premium-addons-for-elementor' ),
98
+ 'label_block' => true,
99
+ ]
100
+ );
101
+
102
+ // Show and Hide icons from view
103
+ $repeater_list->add_control(
104
+ 'show_icon',
105
+ [
106
+ 'label' => __( 'Show Icon', 'premium-addons-for-elementor' ),
107
+ 'type' => Controls_Manager::SWITCHER,
108
+ 'return_value' => 'yes',
109
+ 'default' => 'yes',
110
+ ]
111
+ );
112
+
113
+ // Check icon type
114
+ $repeater_list->add_control(
115
+ 'icon_type',
116
+ [
117
+ 'label' => __( 'Type', 'premium-addons-for-elementor' ),
118
+ 'type' => Controls_Manager::SELECT,
119
+ 'default' => 'icon',
120
+ 'render_type' => 'template',
121
+ 'options' => [
122
+ 'icon' => __( 'Icon', 'premium-addons-for-elementor' ),
123
+ 'image' => __( 'Image', 'premium-addons-for-elementor' ),
124
+ 'lottie' => __( 'Lottie Animation', 'premium-addons-for-elementor' ),
125
+ 'text' => __( 'Text', 'premium-addons-for-elementor' ),
126
+ ],
127
+ 'condition' => [
128
+ 'show_icon' => 'yes'
129
+ ]
130
+ ]
131
+ );
132
+
133
+ // If Icon Type is selected
134
+ $repeater_list->add_control(
135
+ 'premium_icon_list_font_updated',
136
+ [
137
+ 'label' => __('Icon','premium-addons-for-elementor'),
138
+ 'type' => Controls_Manager::ICONS,
139
+ 'default' => [
140
+ 'value' => 'fas fa-star',
141
+ 'library' => 'fa-solid',
142
+ ],
143
+ 'condition' => [
144
+ 'show_icon' => 'yes',
145
+ 'icon_type' => 'icon'
146
+ ]
147
+ ]
148
+ );
149
+
150
+ // If Media Type is selected
151
+ $repeater_list->add_control(
152
+ 'custom_image',
153
+ [
154
+ 'label' => __('Custom Image','premium-addons-for-elementor'),
155
+ 'type' => Controls_Manager::MEDIA,
156
+ 'dynamic' => [ 'active' => true ],
157
+ 'default' => [
158
+ 'url' => Utils::get_placeholder_image_src(),
159
+ ],
160
+ 'condition' => [
161
+ 'show_icon' => 'yes',
162
+ 'icon_type' => 'image'
163
+ ]
164
+ ]
165
+ );
166
+
167
+ // If Text Type is selected
168
+ $repeater_list->add_control(
169
+ 'list_text_icon',
170
+ [
171
+ 'label' => __('Text', 'premium-addons-for-elementor'),
172
+ 'type' => Controls_Manager::TEXT,
173
+ 'default' => __( 'New' , 'premium-addons-for-elementor' ),
174
+ 'condition' => [
175
+ 'show_icon' => 'yes',
176
+ 'icon_type' => 'text'
177
+ ]
178
+ ]
179
+ );
180
+
181
+ // If Animation Type is selected
182
+ $repeater_list->add_control(
183
+ 'lottie_url',
184
+ [
185
+ 'label' => __( 'Animation JSON URL', 'premium-addons-for-elementor' ),
186
+ 'type' => Controls_Manager::TEXT,
187
+ 'dynamic' => [ 'active' => true ],
188
+ 'description' => 'Get JSON code URL from <a href="https://lottiefiles.com/" target="_blank">here</a>',
189
+ 'label_block' => true,
190
+ 'render_type' => 'template',
191
+ 'condition' => [
192
+ 'show_icon' => 'yes',
193
+ 'icon_type' => 'lottie'
194
+ ]
195
+ ]
196
+ );
197
+
198
+ $repeater_list->add_control(
199
+ 'lottie_loop',
200
+ [
201
+ 'label' => __('Loop','premium-addons-for-elementor'),
202
+ 'type' => Controls_Manager::SWITCHER,
203
+ 'return_value' => 'true',
204
+ 'default' => 'true',
205
+ 'render_type' => 'template',
206
+ 'condition' => [
207
+ 'show_icon' => 'yes',
208
+ 'icon_type' => 'lottie'
209
+ ]
210
+ ]
211
+ );
212
+
213
+ $repeater_list->add_control(
214
+ 'lottie_reverse',
215
+ [
216
+ 'label' => __('Reverse','premium-addons-for-elementor'),
217
+ 'type' => Controls_Manager::SWITCHER,
218
+ 'return_value' => 'true',
219
+ 'render_type' => 'template',
220
+ 'condition' => [
221
+ 'show_icon' => 'yes',
222
+ 'icon_type' => 'lottie'
223
+ ]
224
+ ]
225
+ );
226
+
227
+ // Show list link
228
+ $repeater_list->add_control(
229
+ 'show_list_link',
230
+ [
231
+ 'label' => __( 'Link', 'premium-addons-for-elementor' ),
232
+ 'type' => Controls_Manager::SWITCHER,
233
+ 'return_value' => 'yes',
234
+ ]
235
+ );
236
+
237
+ // URL/Existing Page Control
238
+ $repeater_list->add_control(
239
+ 'link_select',
240
+ [
241
+ 'label' => __('Link/URL', 'premium-addons-for-elementor'),
242
+ 'type' => Controls_Manager::SELECT,
243
+ 'options' => [
244
+ 'url' => __('URL', 'premium-addons-for-elementor'),
245
+ 'existing_page' => __('Existing Page', 'premium-addons-for-elementor'),
246
+ ],
247
+ 'default' => 'url',
248
+ 'label_block' => true,
249
+ 'condition' => [
250
+ 'show_list_link' => 'yes'
251
+ ]
252
+ ]
253
+ );
254
+
255
+ $repeater_list->add_control(
256
+ 'link',
257
+ [
258
+ 'label' => __('URL', 'premium-addons-for-elementor'),
259
+ 'type' => Controls_Manager::URL,
260
+ 'dynamic' => [ 'active' => true ],
261
+ 'placeholder' => 'https://premiumaddons.com/',
262
+ 'label_block' => true,
263
+ 'condition' => [
264
+ 'link_select' => 'url',
265
+ 'show_list_link' => 'yes'
266
+ ]
267
+ ]
268
+ );
269
+
270
+ $repeater_list->add_control(
271
+ 'existing_page',
272
+ [
273
+ 'label' => __('Existing Page', 'premium-addons-for-elementor'),
274
+ 'type' => Controls_Manager::SELECT2,
275
+ 'options' => $this->getTemplateInstance()->get_all_posts(),
276
+ 'condition' => [
277
+ 'link_select' => 'existing_page',
278
+ 'show_list_link' => 'yes'
279
+ ],
280
+ 'label_block' => true,
281
+ ]
282
+ );
283
+
284
+ $repeater_list->add_control(
285
+ 'link_title',
286
+ [
287
+ 'label' => __('Link Title', 'premium-addons-for-elementor'),
288
+ 'type' => Controls_Manager::TEXT,
289
+ 'condition' => [
290
+ 'link_select' => 'yes',
291
+ 'show_list_link' => 'yes'
292
+ ],
293
+ 'label_block' => true
294
+ ]
295
+ );
296
+
297
+ // Show Badge
298
+ $repeater_list->add_control(
299
+ 'show_badge',
300
+ [
301
+ 'label' => __( 'Badge', 'premium-addons-for-elementor' ),
302
+ 'type' => Controls_Manager::SWITCHER,
303
+ 'return_value' => 'yes',
304
+ 'separator' => 'before'
305
+ ]
306
+ );
307
+
308
+ $repeater_list->add_control(
309
+ 'badge_title',
310
+ [
311
+ 'label' => __('Badge Text', 'premium-addons-for-elementor'),
312
+ 'type' => Controls_Manager::TEXT,
313
+ 'default' => __( 'New' , 'premium-addons-for-elementor' ),
314
+ 'condition' => [
315
+ 'show_badge' => 'yes',
316
+ ],
317
+ ]
318
+ );
319
+
320
+ // badge color if selected
321
+ $repeater_list->add_control(
322
+ 'badge_text_color',
323
+ [
324
+ 'label' => __( 'Text Color', 'premium-addons-for-elementor' ),
325
+ 'type' => Controls_Manager::COLOR,
326
+ 'selectors' => [
327
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-badge span' => 'color: {{VALUE}}',
328
+ ],
329
+ 'condition' => [
330
+ 'show_badge' => 'yes',
331
+ ]
332
+ ]
333
+ );
334
+
335
+ // Badge Back ground color
336
+ $repeater_list->add_control(
337
+ 'badge_background_color',
338
+ [
339
+ 'label' => __( 'Background', 'premium-addons-for-elementor' ),
340
+ 'type' => Controls_Manager::COLOR,
341
+ 'selectors' => [
342
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-badge span' => 'background-color: {{VALUE}}',
343
+ ],
344
+ 'condition' => [
345
+ 'show_badge' => 'yes',
346
+ ]
347
+ ]
348
+ );
349
+
350
+ // Show global style switcher
351
+ $repeater_list->add_control(
352
+ 'show_global_style',
353
+ [
354
+ 'label' => __( 'Override Global Style', 'premium-addons-for-elementor' ),
355
+ 'type' => Controls_Manager::SWITCHER,
356
+ 'return_value' => 'yes',
357
+ 'default' => 'yes',
358
+ 'separator' => 'before'
359
+ ]
360
+ );
361
+
362
+ // List box Size
363
+ $repeater_list->add_control(
364
+ 'list_box_size',
365
+ [
366
+ 'label' => __('Size', 'premium-addons-for-elementor'),
367
+ 'type' => Controls_Manager::SLIDER,
368
+ 'size_units' => ['px','em','%'],
369
+ 'range' => [
370
+ 'px' => [
371
+ 'min' => 5,
372
+ 'max' => 200
373
+ ],
374
+ 'em' => [
375
+ 'min' => 5,
376
+ 'max' => 30
377
+ ],
378
+ ],
379
+ 'selectors' => [
380
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-text span ,{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-wrapper i ,{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-wrapper .premium-icon-list-icon-text p' => 'font-size: {{SIZE}}{{UNIT}} ',
381
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-wrapper .premium-lottie-animation svg , {{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-wrapper img' => 'width: {{SIZE}}{{UNIT}} !important; height: {{SIZE}}{{UNIT}} !important;',
382
+ ],
383
+ 'condition' => [
384
+ 'show_global_style' => 'yes',
385
+ ]
386
+ ]
387
+ );
388
+
389
+ // Colors Tabs
390
+ $repeater_list->start_controls_tabs(
391
+ 'colors_style_tabs'
392
+ );
393
+
394
+ // Normal State
395
+ $repeater_list->start_controls_tab(
396
+ 'color_normal_state',
397
+ [
398
+ 'label' => __( 'Normal', 'premium-addons-for-elementor' ),
399
+ 'condition' => [
400
+ 'show_global_style' => 'yes'
401
+ ]
402
+ ]
403
+ );
404
+
405
+ // Icon color if selected
406
+ $repeater_list->add_control(
407
+ 'icon_color',
408
+ [
409
+ 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
410
+ 'type' => Controls_Manager::COLOR,
411
+ 'scheme' => [
412
+ 'type' => Scheme_Color::get_type(),
413
+ 'value' => Scheme_Color::COLOR_1,
414
+ ],
415
+ 'selectors' => [
416
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-wrapper i' => 'color: {{VALUE}}',
417
+ '{{WRAPPER}} .premium-icon-list-blur:hover {{CURRENT_ITEM}} .premium-icon-list-wrapper i ' => 'text-shadow: 0 0 3px {{VALUE}};'
418
+
419
+ ],
420
+ 'condition' => [
421
+ 'show_icon' => 'yes',
422
+ 'icon_type' => 'icon',
423
+ 'show_global_style' => 'yes',
424
+ ]
425
+ ]
426
+ );
427
+
428
+ // Text color if selected
429
+ $repeater_list->add_control(
430
+ 'text_icon_color',
431
+ [
432
+ 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
433
+ 'type' => Controls_Manager::COLOR,
434
+ 'scheme' => [
435
+ 'type' => Scheme_Color::get_type(),
436
+ 'value' => Scheme_Color::COLOR_1,
437
+ ],
438
+ 'selectors' => [
439
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-icon-text p' => 'color: {{VALUE}}',
440
+ '{{WRAPPER}} .premium-icon-list-blur:hover {{CURRENT_ITEM}} .premium-icon-list-icon-text p' => 'text-shadow: 0 0 3px {{VALUE}};'
441
+ ],
442
+ 'condition' => [
443
+ 'show_icon' => 'yes',
444
+ 'icon_type' => 'text',
445
+ 'show_global_style' => 'yes',
446
+ ]
447
+ ]
448
+ );
449
+
450
+ // background text icon color if selected
451
+ $repeater_list->add_control(
452
+ 'background_text_icon_color',
453
+ [
454
+ 'label' => __( 'Icon/Text Background', 'premium-addons-for-elementor' ),
455
+ 'type' => Controls_Manager::COLOR,
456
+ 'scheme' => [
457
+ 'type' => Scheme_Color::get_type(),
458
+ 'value' => Scheme_Color::COLOR_1,
459
+ ],
460
+ 'selectors' => [
461
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-icon-text p' => 'background-color: {{VALUE}}',
462
+ ],
463
+ 'condition' => [
464
+ 'show_icon' => 'yes',
465
+ 'icon_type' => 'text',
466
+ 'show_global_style' => 'yes',
467
+ ],
468
+ ]
469
+ );
470
+
471
+ // Title color
472
+ $repeater_list->add_control(
473
+ 'title_list_color',
474
+ [
475
+ 'label' => __( 'Title Color', 'premium-addons-for-elementor' ),
476
+ 'type' => Controls_Manager::COLOR,
477
+ 'scheme' => [
478
+ 'type' => Scheme_Color::get_type(),
479
+ 'value' => Scheme_Color::COLOR_1,
480
+ ],
481
+ 'selectors' => [
482
+ '{{WRAPPER}} {{CURRENT_ITEM}} .premium-icon-list-text span' => 'color: {{VALUE}}',
483
+ '{{WRAPPER}} .premium-icon-list-blur:hover {{CURRENT_ITEM}} .premium-icon-list-text span' => 'text-shadow: 0 0 3px {{VALUE}};'
484
+ ],
485
+ 'condition' => [
486
+ 'show_global_style' => 'yes'
487
+ ]
488
+ ]
489
+ );
490
+
491
+ // Back ground color
492
+ $repeater_list->add_control(
493
+ 'background_color',
494
+ [
495
+ 'label' => __( 'Background', 'premium-addons-for-elementor' ),
496
+ 'type' => Controls_Manager::COLOR,
497
+ 'selectors' => [
498
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content' => 'background-color: {{VALUE}}',
499
+ ],
500
+ 'condition' => [
501
+ 'show_global_style' => 'yes',
502
+ ]
503
+ ]
504
+ );
505
+
506
+ $repeater_list->end_controls_tab();
507
+ // Hover State
508
+ $repeater_list->start_controls_tab(
509
+ 'color_hover_state',
510
+ [
511
+ 'label' => __( 'Hover', 'premium-addons-for-elementor' ),
512
+ 'condition' => [
513
+ 'show_global_style' => 'yes'
514
+ ]
515
+ ]
516
+ );
517
+
518
+ // Icon hover color
519
+ $repeater_list->add_control(
520
+ 'icon_hover_color',
521
+ [
522
+ 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
523
+ 'type' => Controls_Manager::COLOR,
524
+ 'selectors' => [
525
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-wrapper i' => 'color: {{VALUE}}',
526
+ '{{WRAPPER}} .premium-icon-list-blur {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-wrapper i' => 'text-shadow: none !important; color: {{VALUE}} !important;'
527
+ ],
528
+ 'condition' => [
529
+ 'show_icon' => 'yes',
530
+ 'icon_type' => 'icon',
531
+ 'show_global_style' => 'yes',
532
+ ]
533
+ ]
534
+ );
535
+
536
+ // Text hover color if selected
537
+ $repeater_list->add_control(
538
+ 'text_icon_hover_color',
539
+ [
540
+ 'label' => __( 'Icon/Text Color', 'premium-addons-for-elementor' ),
541
+ 'type' => Controls_Manager::COLOR,
542
+ 'selectors' => [
543
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'color: {{VALUE}}',
544
+ '{{WRAPPER}} .premium-icon-list-blur {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'text-shadow: none !important; color: {{VALUE}} !important;'
545
+ ],
546
+ 'condition' => [
547
+ 'show_icon' => 'yes',
548
+ 'icon_type' => 'text',
549
+ 'show_global_style' => 'yes',
550
+ ]
551
+ ]
552
+ );
553
+
554
+ // background text icon color if selected
555
+ $repeater_list->add_control(
556
+ 'background_text_icon_hover_color',
557
+ [
558
+ 'label' => __( 'Icon/Text Background ', 'premium-addons-for-elementor' ),
559
+ 'type' => Controls_Manager::COLOR,
560
+ 'scheme' => [
561
+ 'type' => Scheme_Color::get_type(),
562
+ 'value' => Scheme_Color::COLOR_1,
563
+ ],
564
+ 'selectors' => [
565
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'background-color: {{VALUE}}',
566
+ ],
567
+ 'condition' => [
568
+ 'show_icon' => 'yes',
569
+ 'icon_type' => 'text',
570
+ 'show_global_style' => 'yes',
571
+ ],
572
+ ]
573
+ );
574
+
575
+ // Text hover color
576
+ $repeater_list->add_control(
577
+ 'title_hover_color',
578
+ [
579
+ 'label' => __( 'Title Color', 'premium-addons-for-elementor' ),
580
+ 'type' => Controls_Manager::COLOR,
581
+ 'selectors' => [
582
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-text span' => 'color: {{VALUE}}',
583
+ '{{WRAPPER}} .premium-icon-list-blur {{CURRENT_ITEM}}.premium-icon-list-content:hover .premium-icon-list-text span' => 'text-shadow: none !important; color: {{VALUE}} !important;'
584
+ ],
585
+ 'condition' => [
586
+ 'show_global_style' => 'yes',
587
+ ]
588
+ ]
589
+ );
590
+
591
+ // Back ground hover color
592
+ $repeater_list->add_control(
593
+ 'background_hover_color',
594
+ [
595
+ 'label' => __( 'Background', 'premium-addons-for-elementor' ),
596
+ 'type' => Controls_Manager::COLOR,
597
+ 'selectors' => [
598
+ '{{WRAPPER}} {{CURRENT_ITEM}}.premium-icon-list-content:hover' => 'background-color: {{VALUE}}',
599
+ ],
600
+ 'condition' => [
601
+ 'show_global_style' => 'yes',
602
+ ]
603
+ ]
604
+ );
605
+
606
+ $repeater_list->end_controls_tab();
607
+ $repeater_list->end_controls_tabs();
608
+
609
+ //Reapeter control for items
610
+ $this->add_control(
611
+ 'list',
612
+ [
613
+ 'label' => __( 'List Items', 'premium-addons-for-elementor' ),
614
+ 'type' => Controls_Manager::REPEATER,
615
+ 'fields' => $repeater_list->get_controls(),
616
+ 'render_type' => 'template',
617
+ 'default' => [
618
+ [
619
+ 'list_title' => 'List Title #1',
620
+ 'premium_icon_list_font_updated' => [
621
+ 'value' => 'fas fa-star',
622
+ 'library' => 'fa-solid',
623
+ ],
624
+ ],
625
+ [
626
+ 'list_title' => 'List Title #2',
627
+ 'premium_icon_list_font_updated' => [
628
+ 'value' => 'far fa-smile',
629
+ 'library' => 'fa-regular',
630
+ ],
631
+
632
+ ],
633
+ [
634
+ 'list_title' => 'List Title #3',
635
+ 'premium_icon_list_font_updated' => [
636
+ 'value' => 'fa fa-check',
637
+ 'library' => 'fa-solid',
638
+ ],
639
+ ],
640
+ ],
641
+ 'title_field' => '<# if ( "icon" === icon_type ) { #> {{{ elementor.helpers.renderIcon( this, premium_icon_list_font_updated, {}, "i", "panel" ) }}}<#} else if( "text" === icon_type ) { #> {{list_text_icon}} <# } else if( "image" === icon_type) {#> <img class="editor-pa-img" width="20px" height="20px" src="{{custom_image.url}}"><# } #> {{{ list_title }}}'
642
+ ]
643
+ );
644
+
645
+ $this->end_controls_section();
646
+ //End of List items tab
647
+
648
+ // Display Options Content
649
+ $this->start_controls_section(
650
+ 'display_options_section',
651
+ [
652
+ 'label' => __( 'Display Options', 'premium-addons-for-elementor' ),
653
+ 'tab' => Controls_Manager::TAB_CONTENT,
654
+ ]
655
+ );
656
+
657
+ // over flow Style
658
+ $this->add_control(
659
+ 'list_overflow',
660
+ [
661
+ 'label' => __( 'List Overflow', 'premium-addons-for-elementor' ),
662
+ 'type' => Controls_Manager::SELECT,
663
+ 'options' => [
664
+ 'visible' => __( 'Visible', 'premium-addons-for-elementor' ),
665
+ 'hidden' => __( 'Hidden', 'premium-addons-for-elementor' ),
666
+ ],
667
+ 'default' =>'hidden',
668
+ 'render_type' => 'template',
669
+ 'selectors' => [
670
+ '{{WRAPPER}} .premium-icon-list-content' => 'overflow: {{VALUE}};',
671
+ ],
672
+ ]
673
+ );
674
+
675
+ $this->add_control(
676
+ 'overflow_render_notice',
677
+ [
678
+ 'raw' => __("Please note that icon connector option only appears when overflow set to visible.", 'premium-addons-for-elementor'),
679
+ 'type' => Controls_Manager::RAW_HTML,
680
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
681
+ ]
682
+ );
683
+
684
+ // Check Layout inline/block
685
+ $this->add_control(
686
+ 'layout_type',
687
+ [
688
+ 'label' => __( 'Layout Type', 'premium-addons-for-elementor' ),
689
+ 'type' => Controls_Manager::SELECT,
690
+ 'options' => [
691
+ 'row' => __( 'Inline', 'premium-addons-for-elementor' ),
692
+ 'column' => __( 'Block', 'premium-addons-for-elementor' ),
693
+
694
+ ],
695
+ 'render_type' => 'template',
696
+ 'default' => 'column',
697
+ 'selectors' => [
698
+ '{{WRAPPER}} .premium-icon-list-box ' => 'flex-direction: {{VALUE}};',
699
+ ],
700
+ ]
701
+ );
702
+
703
+ // Display Alignments
704
+ $this->add_responsive_control(
705
+ 'premium_icon_list_align',
706
+ [
707
+ 'label' => __( 'Alignment', 'premium-addons-for-elementor' ),
708
+ 'type' => Controls_Manager::CHOOSE,
709
+ 'render_type' => 'template',
710
+ 'options' => [
711
+ 'flex-start' => [
712
+ 'title'=> __( 'Left', 'premium-addons-for-elementor' ),
713
+ 'icon' => 'fa fa-align-left',
714
+ ],
715
+ 'center' => [
716
+ 'title'=> __( 'Center', 'premium-addons-for-elementor' ),
717
+ 'icon' => 'fa fa-align-center',
718
+ ],
719
+ 'flex-end' => [
720
+ 'title'=> __( 'Right', 'premium-addons-for-elementor' ),
721
+ 'icon' => 'fa fa-align-right',
722
+ ],
723
+ ],
724
+ 'selectors' => [
725
+ '{{WRAPPER}} .premium-icon-list-content , {{WRAPPER}} .premium-icon-list-box ' => 'justify-content:{{VALUE}};',
726
+ '{{WRAPPER}} .premium-icon-list-divider , {{WRAPPER}} .premium-icon-list-wrapper-top ' => 'align-self:{{VALUE}};',
727
+ ],
728
+ 'default' => 'flex-start',
729
+ ]
730
+ );
731
+
732
+ // Icon postion select
733
+ $this->add_control(
734
+ 'icon_postion',
735
+ [
736
+ 'label' => __( 'Icon Position', 'premium-addons-for-elementor' ),
737
+ 'type' => Controls_Manager::SELECT,
738
+ 'options' => [
739
+ 'row' => __( 'Before', 'premium-addons-for-elementor' ),
740
+ 'column' => __( 'Top', 'premium-addons-for-elementor' ),
741
+ 'row-reverse' => __( 'After', 'premium-addons-for-elementor' ),
742
+ ],
743
+ 'render_type' => 'template',
744
+ 'default' => 'row',
745
+ 'selectors' => [
746
+ '{{WRAPPER}} .premium-icon-list-text' => 'display:flex;flex-direction: {{VALUE}};',
747
+ ],
748
+ ]
749
+ );
750
+
751
+ $this->add_responsive_control('top_icon_align',
752
+ [
753
+ 'label' => __( 'Icon Alignment', 'premium-addons-for-elementor' ),
754
+ 'type' => Controls_Manager::CHOOSE,
755
+ 'options' => [
756
+ 'flex-start' => [
757
+ 'title'=> __( 'Left', 'premium-addons-for-elementor' ),
758
+ 'icon' => 'fa fa-align-left',
759
+ ],
760
+ 'center' => [
761
+ 'title'=> __( 'Center', 'premium-addons-for-elementor' ),
762
+ 'icon' => 'fa fa-align-center',
763
+ ],
764
+ 'flex-end' => [
765
+ 'title'=> __( 'Right', 'premium-addons-for-elementor' ),
766
+ 'icon' => 'fa fa-align-right',
767
+ ],
768
+ ],
769
+ 'toggle' => false,
770
+ 'selectors' => [
771
+ '{{WRAPPER}} .premium-icon-list-wrapper-top ' => 'align-self: {{VALUE}} !important',
772
+ ],
773
+ 'condition' => [
774
+ 'icon_postion' => 'column',
775
+ ]
776
+ ]
777
+ );
778
+
779
+ // badge align Horizontal Style
780
+ $this->add_responsive_control(
781
+ 'badge_align_h',
782
+ [
783
+ 'label' => __( 'Badge Alignment ', 'premium-addons-for-elementor' ),
784
+ 'type' => Controls_Manager::CHOOSE,
785
+ 'options' => [
786
+ '8' => [
787
+ 'title'=> __( 'Right', 'premium-addons-for-elementor' ),
788
+ 'icon' => 'fas fa-long-arrow-alt-right',
789
+ ],
790
+ '3' => [
791
+ 'title'=> __( 'Left', 'premium-addons-for-elementor' ),
792
+ 'icon' => 'fas fa-long-arrow-alt-left',
793
+ ],
794
+ ],
795
+ 'default' => '8',
796
+ 'selectors' => [
797
+ '{{WRAPPER}} .premium-icon-list-text' => 'order:5 ;',
798
+ '{{WRAPPER}} .premium-icon-list-badge' => 'order:{{VALUE}} ;'
799
+ ],
800
+ 'separator' => 'after'
801
+ ]
802
+ );
803
+
804
+ // Show Divider
805
+ $this->add_control(
806
+ 'show_divider',
807
+ [
808
+ 'label' => __( 'Divider', 'premium-addons-for-elementor' ),
809
+ 'type' => Controls_Manager::SWITCHER,
810
+ 'return_value' => 'yes',
811
+ ]
812
+ );
813
+
814
+ // Show Connector
815
+ $this->add_control(
816
+ 'show_connector',
817
+ [
818
+ 'label' => __( 'Icon Connector', 'premium-addons-for-elementor' ),
819
+ 'type' => Controls_Manager::SWITCHER,
820
+ 'return_value' => 'yes',
821
+ 'condition' => [
822
+ 'layout_type' => 'column',
823
+ 'icon_postion!' => 'column',
824
+ 'hover_effect_type!' => 'grow',
825
+ 'list_overflow' => 'visible',
826
+ ],
827
+ ]
828
+ );
829
+
830
+ $this->add_control('premium_icon_list_animation_switcher',
831
+ [
832
+ 'label' => __('Animation','premium-addons-for-elementor'),
833
+ 'type' => Controls_Manager::SWITCHER,
834
+ ]
835
+ );
836
+
837
+ $this->add_control('premium_icon_list_animation',
838
+ [
839
+ 'label' => __( 'Entrance Animation', 'premium-addons-for-elementor' ),
840
+ 'type' => Controls_Manager::ANIMATION,
841
+ 'default' => '',
842
+ 'label_block' => true,
843
+ 'frontend_available' => true,
844
+ 'render_type' => 'template',
845
+ 'condition' => [
846
+ 'premium_icon_list_animation_switcher' => 'yes'
847
+ ],
848
+ ]
849
+ );
850
+
851
+ $this->add_control('premium_icon_list_animation_duration',
852
+ [
853
+ 'label' => __( 'Animation Duration', 'premium-addons-for-elementor' ),
854
+ 'type' => Controls_Manager::SELECT,
855
+ 'default' => '',
856
+ 'options' => [
857
+ 'slow' => __( 'Slow', 'premium-addons-for-elementor' ),
858
+ '' => __( 'Normal', 'premium-addons-for-elementor' ),
859
+ 'fast' => __( 'Fast', 'premium-addons-for-elementor' ),
860
+ ],
861
+ 'condition' => [
862
+ 'premium_icon_list_animation_switcher' => 'yes',
863
+ 'premium_icon_list_animation!' => '',
864
+ ],
865
+ ]
866
+ );
867
+
868
+ $this->add_control('premium_icon_list_animation_delay',
869
+ [
870
+ 'label' => __( 'Animation Delay in Between (s)', 'premium-addons-for-elementor' ) ,
871
+ 'type' => Controls_Manager::NUMBER,
872
+ 'default' => 0,
873
+ 'step' => 0.1,
874
+ 'condition' => [
875
+ 'premium_icon_list_animation_switcher' => 'yes',
876
+ 'premium_icon_list_animation!' => '',
877
+ ],
878
+ 'frontend_available' => true,
879
+ ]
880
+ );
881
+
882
+ // select hover type
883
+ $this->add_control(
884
+ 'hover_effect_type',
885
+ [
886
+ 'label' => __( 'Hover Effect', 'premium-addons-for-elementor' ),
887
+ 'type' => Controls_Manager::SELECT,
888
+ 'options' => [
889
+ 'none' => __( 'None', 'premium-addons-for-elementor' ),
890
+ 'blur' => __( 'Blur', 'premium-addons-for-elementor' ),
891
+ 'grow' => __( 'Grow', 'premium-addons-for-elementor' ),
892
+ 'linear gradient' => __( 'Text Gradient', 'premium-addons-for-elementor' ),
893
+ ],
894
+ 'render_type' => 'template',
895
+ 'default' => 'none',
896
+ ]
897
+ );
898
+
899
+ $this->add_group_control(
900
+ Group_Control_Background::get_type(),
901
+ [
902
+ 'name' => 'gradient_color',
903
+ 'types' => [ 'gradient' ],
904
+ 'condition' => [
905
+ 'hover_effect_type' => 'linear gradient'
906
+ ],
907
+ 'selector' => '{{WRAPPER}} a[data-text]::before ,{{WRAPPER}} .premium-icon-list-gradient-effect::before'
908
+ ]
909
+ );
910
+
911
+ $this->end_controls_section();
912
+ //End of display options tab
913
+
914
+ $this->start_controls_section('section_pa_docs',
915
+ [
916
+ 'label' => __('Helpful Documentations', 'premium-addons-for-elementor'),
917
+ ]
918
+ );
919
+
920
+ $doc1_url = Helper_Functions::get_campaign_link( 'https://premiumaddons.com/docs/icon-list-widget-tutorial/', 'editor-page', 'wp-editor', 'get-support' );
921
+
922
+ $this->add_control('doc_1',
923
+ [
924
+ 'type' => Controls_Manager::RAW_HTML,
925
+ 'raw' => sprintf( '<a href="%s" target="_blank">%s</a>', $doc1_url ,__( 'Gettings started »', 'premium-addons-for-elementor' ) ),
926
+ 'content_classes' => 'editor-pa-doc',
927
+ ]
928
+ );
929
+
930
+ $this->end_controls_section();
931
+
932
+ // Style Tab
933
+ $this->style_tab();
934
+ }
935
+
936
+ private function style_tab() {
937
+
938
+ // List Style Settings
939
+ $this->start_controls_section(
940
+ 'list_style_section',
941
+ [
942
+ 'label' => __( ' General ', 'premium-addons-for-elementor' ),
943
+ 'tab' => Controls_Manager::TAB_STYLE,
944
+ ]
945
+ );
946
+
947
+ //list items back ground color
948
+ $this->add_control(
949
+ 'list_items_color',
950
+ [
951
+ 'label' => __( 'Background Color', 'premium-addons-for-elementor' ),
952
+ 'type' => Controls_Manager::COLOR,
953
+ 'selectors' => [
954
+ ' {{WRAPPER}} .premium-icon-list-content' => 'background-color: {{VALUE}}',
955
+ ],
956
+ ]
957
+ );
958
+
959
+ //List items hover style color
960
+ $this->add_control(
961
+ 'list_items_hover_color',
962
+ [
963
+ 'label' => __( 'Hover Background Color', 'premium-addons-for-elementor' ),
964
+ 'type' => Controls_Manager::COLOR,
965
+ 'selectors' => [
966
+ '{{WRAPPER}} .premium-icon-list-content:hover ' => 'background-color: {{VALUE}}',
967
+ ],
968
+ ]
969
+ );
970
+
971
+ // List items Shadow
972
+ $this->add_group_control(
973
+ Group_Control_Box_Shadow::get_type(),
974
+ [
975
+ 'name' => 'list_items_shadow',
976
+ 'selector' => '{{WRAPPER}} .premium-icon-list-content',
977
+ ]
978
+ );
979
+
980
+ // List items Shadow Hover
981
+ $this->add_group_control(
982
+ Group_Control_Box_Shadow::get_type(),
983
+ [
984
+ 'name' => 'list_items_shadow_hover',
985
+ 'label' => 'Hover Box Shadow',
986
+ 'selector' => '{{WRAPPER}} .premium-icon-list-content:hover',
987
+ ]
988
+ );
989
+
990
+ // list item Border
991
+ $this->add_group_control(
992
+ Group_Control_Border::get_type(),
993
+ [
994
+ 'name' => 'list_item_border',
995
+ 'label' => __( 'Border', 'premium-addons-for-elementor' ),
996
+ 'selector' => '{{WRAPPER}} .premium-icon-list-content ',
997
+ ]
998
+ );
999
+
1000
+ // list item Border Radius
1001
+ $this->add_responsive_control(
1002
+ 'list_item_border_radius',
1003
+ [
1004
+ 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ),
1005
+ 'type' => Controls_Manager::DIMENSIONS,
1006
+ 'size_units' => [ 'px', '%', 'em' ],
1007
+ 'default' => [
1008
+ 'top' => 0,
1009
+ 'right' => 0,
1010
+ 'bottom' => 0,
1011
+ 'left' => 0,
1012
+ ],
1013
+ 'selectors' => [
1014
+ '{{WRAPPER}} .premium-icon-list-content ' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1015
+ ],
1016
+ ]
1017
+ );
1018
+
1019
+ // List Items Margin
1020
+ $this->add_responsive_control(
1021
+ 'list_item_margin',
1022
+ [
1023
+ 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
1024
+ 'type' => Controls_Manager::DIMENSIONS,
1025
+ 'size_units' => [ 'px', '%', 'em' ],
1026
+ 'selectors' => [
1027
+ '{{WRAPPER}} .premium-icon-list-content ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1028
+ ],
1029
+ ]
1030
+ );
1031
+
1032
+ // List Items Padding
1033
+ $this->add_responsive_control(
1034
+ 'list_items_padding',
1035
+ [
1036
+ 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
1037
+ 'type' => Controls_Manager::DIMENSIONS,
1038
+ 'size_units' => [ 'px', '%', 'em' ],
1039
+ 'selectors' => [
1040
+ '{{WRAPPER}} .premium-icon-list-content ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1041
+ ],
1042
+ ]
1043
+ );
1044
+
1045
+ $this->end_controls_section();
1046
+ //End of list style settings
1047
+
1048
+ // Icon Style Settings
1049
+ $this->start_controls_section(
1050
+ 'icon_style_section',
1051
+ [
1052
+ 'label' => __( 'Icon', 'premium-addons-for-elementor' ),
1053
+ 'tab' => Controls_Manager::TAB_STYLE,
1054
+ ]
1055
+ );
1056
+
1057
+ $this->add_control(
1058
+ 'icon_render_notice',
1059
+ [
1060
+ 'raw' => __("Options below will be applied on items with no style options set individually from the repeater.", 'premium-addons-for-elementor'),
1061
+ 'type' => Controls_Manager::RAW_HTML,
1062
+ ]
1063
+ );
1064
+
1065
+ // Icon Style Size
1066
+ $this->add_responsive_control(
1067
+ 'icon_size',
1068
+ [
1069
+ 'label' => __( 'Size', 'premium-addons-for-elementor' ),
1070
+ 'type' => Controls_Manager::SLIDER,
1071
+ 'size_units' => ['px', 'em'],
1072
+ 'range' => [
1073
+ 'px' => [
1074
+ 'min' => 1,
1075
+ 'max' => 200,
1076
+ ],
1077
+ 'em' => [
1078
+ 'min' => 1,
1079
+ 'max' => 30,
1080
+ ],
1081
+ ],
1082
+ 'selectors' => [
1083
+ '{{WRAPPER}} .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-wrapper .premium-icon-list-icon-text p' => 'font-size: {{SIZE}}{{UNIT}} ',
1084
+ '{{WRAPPER}} .premium-icon-list-wrapper .premium-lottie-animation svg , {{WRAPPER}} .premium-icon-list-wrapper img' => 'width: {{SIZE}}{{UNIT}} !important; height: {{SIZE}}{{UNIT}} !important',
1085
+ ],
1086
+ ]
1087
+ );
1088
+
1089
+ $this->add_control(
1090
+ 'icon_color_render_notice',
1091
+ [
1092
+ 'raw' => __('Color options below will be applied on Font Awesome and Text.', 'premium-addons-for-elementor'),
1093
+ 'type' => Controls_Manager::RAW_HTML,
1094
+ "separator" => "before"
1095
+ ]
1096
+ );
1097
+
1098
+ //Icon style color
1099
+ $this->add_control(
1100
+ 'icon_color',
1101
+ [
1102
+ 'label' => __( 'Color', 'premium-addons-for-elementor' ),
1103
+ 'type' => Controls_Manager::COLOR,
1104
+ 'scheme' => [
1105
+ 'type' => Scheme_Color::get_type(),
1106
+ 'value' => Scheme_Color::COLOR_1,
1107
+ ],
1108
+ 'selectors' => [
1109
+ '{{WRAPPER}} .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-icon-text p' => 'color: {{VALUE}}',
1110
+ '{{WRAPPER}} .premium-icon-list-blur:hover .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-blur:hover .premium-icon-list-wrapper .premium-icon-list-icon-text p' => 'text-shadow: 0 0 3px {{VALUE}};'
1111
+ ],
1112
+ ]
1113
+ );
1114
+
1115
+ //Icon hover style color
1116
+ $this->add_control(
1117
+ 'icon_hover_color',
1118
+ [
1119
+ 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
1120
+ 'type' => Controls_Manager::COLOR,
1121
+ 'scheme' => [
1122
+ 'type' => Scheme_Color::get_type(),
1123
+ 'value' => Scheme_Color::COLOR_1,
1124
+ ],
1125
+ 'selectors' => [
1126
+ '{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-wrapper i ,{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'color: {{VALUE}}',
1127
+ '{{WRAPPER}} .premium-icon-list-blur .premium-icon-list-content:hover .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-blur .premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'text-shadow: none !important; color: {{VALUE}} !important;'
1128
+ ],
1129
+ ]
1130
+ );
1131
+
1132
+ $this->add_control(
1133
+ 'background_render_notice',
1134
+ [
1135
+ 'raw' => __('Background Color options below will be applied on all icon types.', 'premium-addons-for-elementor'),
1136
+ 'type' => Controls_Manager::RAW_HTML,
1137
+ 'separator' => 'before'
1138
+ ]
1139
+ );
1140
+
1141
+ //Icon Background style color
1142
+ $this->add_control(
1143
+ 'icon_background_color',
1144
+ [
1145
+ 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1146
+ 'type' => Controls_Manager::COLOR,
1147
+ 'selectors' => [
1148
+ '{{WRAPPER}} .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-wrapper svg ,{{WRAPPER}} .premium-icon-list-wrapper img , {{WRAPPER}} .premium-icon-list-icon-text p' => 'background-color: {{VALUE}}',
1149
+ ],
1150
+ ]
1151
+ );
1152
+
1153
+ //Icon Background Hover style color
1154
+ $this->add_control(
1155
+ 'icon_background_hover_color',
1156
+ [
1157
+ 'label' => __( ' Hover Background', 'premium-addons-for-elementor' ),
1158
+ 'type' => Controls_Manager::COLOR,
1159
+ 'selectors' => [
1160
+ '{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-wrapper i,{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-wrapper svg ,{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-wrapper img , {{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-icon-text p' => 'background-color: {{VALUE}}',
1161
+ ],
1162
+ ]
1163
+ );
1164
+
1165
+ $this->add_control(
1166
+ 'typo_text_render_notice',
1167
+ [
1168
+ 'raw' => __('Typography option below will be applied on text.', 'premium-addons-for-elementor'),
1169
+ 'type' => Controls_Manager::RAW_HTML,
1170
+ 'separator' => 'before'
1171
+ ]
1172
+ );
1173
+
1174
+ // Text icon Typography Style
1175
+ $this->add_group_control(
1176
+ Group_Control_Typography::get_type(),
1177
+ [
1178
+ 'name' => 'text_icon_typography',
1179
+ 'label' => __( 'Typography', 'premium-addons-for-elementor' ),
1180
+ 'selector' => ' {{WRAPPER}} .premium-icon-list-icon-text p',
1181
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
1182
+ ]
1183
+ );
1184
+
1185
+ // Icon Border
1186
+ $this->add_group_control(
1187
+ Group_Control_Border::get_type(),
1188
+ [
1189
+ 'name' => 'border',
1190
+ 'label' => __( 'Border', 'premium-addons-for-elementor' ),
1191
+ 'selector' => '{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper i , {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper svg , {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper img ,{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper .premium-icon-list-icon-text p',
1192
+ 'separator' => 'before'
1193
+ ]
1194
+ );
1195
+
1196
+ // Icon Border Radius
1197
+ $this->add_responsive_control(
1198
+ 'icon_border_radius',
1199
+ [
1200
+ 'label' => __( 'Border Radius', 'premium-addons-for-elementor' ),
1201
+ 'type' => Controls_Manager::DIMENSIONS,
1202
+ 'size_units' => [ 'px', '%', 'em' ],
1203
+ 'selectors' => [
1204
+ '{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper i ,{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper .premium-icon-list-icon-text p, {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper svg , {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1205
+ ],
1206
+ ]
1207
+ );
1208
+
1209
+ // Icon Margin
1210
+ $this->add_responsive_control(
1211
+ 'icon_margin',
1212
+ [
1213
+ 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
1214
+ 'type' => Controls_Manager::DIMENSIONS,
1215
+ 'size_units' => [ 'px', '%', 'em' ],
1216
+ 'selectors' => [
1217
+ '{{WRAPPER}} .premium-icon-list-wrapper ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1218
+ ],
1219
+ 'separator' => 'before'
1220
+ ]
1221
+ );
1222
+
1223
+ // Icon Padding
1224
+ $this->add_responsive_control(
1225
+ 'icon_padding',
1226
+ [
1227
+ 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
1228
+ 'type' => Controls_Manager::DIMENSIONS,
1229
+ 'size_units' => [ 'px', '%', 'em' ],
1230
+ 'selectors' => [
1231
+ '{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper i,{{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper .premium-icon-list-icon-text p , {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper svg , {{WRAPPER}} .premium-icon-list-content .premium-icon-list-wrapper img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1232
+ ],
1233
+ ]
1234
+ );
1235
+
1236
+ $this->end_controls_section();
1237
+ //End of icon style settings
1238
+
1239
+ // Title Style Settings
1240
+ $this->start_controls_section(
1241
+ 'title_style_section',
1242
+ [
1243
+ 'label' => __( 'Title', 'premium-addons-for-elementor' ),
1244
+ 'tab' => Controls_Manager::TAB_STYLE,
1245
+ ]
1246
+ );
1247
+
1248
+ $this->add_control(
1249
+ 'title_render_notice',
1250
+ [
1251
+ 'raw' => __("Options below will be applied on items with no style options set individually from the repeater.", 'premium-addons-for-elementor'),
1252
+ 'type' => Controls_Manager::RAW_HTML,
1253
+ ]
1254
+ );
1255
+
1256
+ // Title Typography
1257
+ $this->add_group_control(
1258
+ Group_Control_Typography::get_type(),
1259
+ [
1260
+ 'name' => 'list_title_typography',
1261
+ 'label' => __( 'Typography', 'premium-addons-for-elementor' ),
1262
+ 'selector' => ' {{WRAPPER}} .premium-icon-list-text span ',
1263
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
1264
+
1265
+ ]
1266
+ );
1267
+
1268
+ //Title style color
1269
+ $this->add_control(
1270
+ 'title_color',
1271
+ [
1272
+ 'label' => __( 'Color', 'premium-addons-for-elementor' ),
1273
+ 'type' => Controls_Manager::COLOR,
1274
+ 'scheme' => [
1275
+ 'type' => Scheme_Color::get_type(),
1276
+ 'value' => Scheme_Color::COLOR_1,
1277
+ ],
1278
+ 'selectors' => [
1279
+ ' {{WRAPPER}} .premium-icon-list-text span' => 'color: {{VALUE}}',
1280
+ ' {{WRAPPER}} .premium-icon-list-blur:hover .premium-icon-list-text span' => 'text-shadow: 0 0 3px {{VALUE}};'
1281
+ ],
1282
+ ]
1283
+ );
1284
+
1285
+ //Title hover style color
1286
+ $this->add_control(
1287
+ 'title_hover_color',
1288
+ [
1289
+ 'label' => __( 'Hover Color', 'premium-addons-for-elementor' ),
1290
+ 'type' => Controls_Manager::COLOR,
1291
+ 'scheme' => [
1292
+ 'type' => Scheme_Color::get_type(),
1293
+ 'value' => Scheme_Color::COLOR_1,
1294
+ ],
1295
+ 'selectors' => [
1296
+ '{{WRAPPER}} .premium-icon-list-content:hover .premium-icon-list-text span' => 'color: {{VALUE}}',
1297
+ '{{WRAPPER}} .premium-icon-list-blur .premium-icon-list-content:hover .premium-icon-list-text span' => 'text-shadow: none !important; color: {{VALUE}} !important;'
1298
+ ],
1299
+ ]
1300
+ );
1301
+
1302
+ // Title Shadow
1303
+ $this->add_group_control(
1304
+ Group_Control_text_Shadow::get_type(),
1305
+ [
1306
+ 'name' => 'list_title_shadow',
1307
+ 'selector' => '{{WRAPPER}} .premium-icon-list-text span',
1308
+ ]
1309
+ );
1310
+
1311
+
1312
+ // Title Margin
1313
+ $this->add_responsive_control(
1314
+ 'list_title_margin',
1315
+ [
1316
+ 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
1317
+ 'type' => Controls_Manager::DIMENSIONS,
1318
+ 'size_units' => [ 'px', '%', 'em' ],
1319
+ 'selectors' => [
1320
+ '{{WRAPPER}} .premium-icon-list-text ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1321
+ ],
1322
+ ]
1323
+ );
1324
+
1325
+ $this->end_controls_section();
1326
+ //End of title style settings
1327
+
1328
+ // badge Style Settings
1329
+ $this->start_controls_section(
1330
+ 'badge_style_section',
1331
+ [
1332
+ 'label' => __( ' Badge ', 'premium-addons-for-elementor' ),
1333
+ 'tab' => Controls_Manager::TAB_STYLE,
1334
+ ]
1335
+ );
1336
+
1337
+ // badge text Style
1338
+ $this->add_group_control(
1339
+ Group_Control_Typography::get_type(),
1340
+ [
1341
+ 'name' => 'badge_title_typography',
1342
+ 'label' => __( 'Typography', 'premium-addons-for-elementor' ),
1343
+ 'selector' => ' {{WRAPPER}} .premium-icon-list-badge span',
1344
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
1345
+ ]
1346
+ );
1347
+
1348
+ $this->add_control(
1349
+ 'badge_color_render_notice',
1350
+ [
1351
+ 'raw' => __('Color options below will be applied on badge with no style options set individually from the repeater.', 'premium-addons-for-elementor'),
1352
+ 'type' => Controls_Manager::RAW_HTML,
1353
+ 'separator' => 'before'
1354
+ ]
1355
+ );
1356
+
1357
+ // badge color
1358
+ $this->add_control(
1359
+ 'badge_text_style_color',
1360
+ [
1361
+ 'label' => __( 'Text Color', 'premium-addons-for-elementor' ),
1362
+ 'type' => Controls_Manager::COLOR,
1363
+ 'scheme' => [
1364
+ 'type' => Scheme_Color::get_type(),
1365
+ 'value' => Scheme_Color::COLOR_1,
1366
+ ],
1367
+ 'selectors' => [
1368
+ '{{WRAPPER}} .premium-icon-list-badge span' => 'color: {{VALUE}}',
1369
+ ],
1370
+ 'default' => '#fff',
1371
+ ]
1372
+ );
1373
+
1374
+ // Badge Back ground color
1375
+ $this->add_control(
1376
+ 'badge_background_style_color',
1377
+ [
1378
+ 'label' => __( 'Background', 'premium-addons-for-elementor' ),
1379
+ 'type' => Controls_Manager::COLOR,
1380
+ 'scheme' => [
1381
+ 'type' => Scheme_Color::get_type(),
1382
+ 'value' => Scheme_Color::COLOR_1,
1383
+ ],
1384
+ 'default' => '#6ec1e4',
1385
+ 'selectors' => [
1386
+ '{{WRAPPER}} .premium-icon-list-badge span' => 'background-color: {{VALUE}}',
1387
+ ],
1388
+ 'separator' => 'after'
1389
+ ]
1390
+ );
1391
+
1392
+ // Badge Border Radius
1393
+ $this->add_responsive_control(
1394
+ 'badge_border_radius',
1395
+ [
1396
+ 'label' => __( 'Badge Radius', 'premium-addons-for-elementor' ),
1397
+ 'type' => Controls_Manager::DIMENSIONS,
1398
+ 'size_units' => [ 'px', '%', 'em' ],
1399
+ 'default' => [
1400
+ 'top' => 2,
1401
+ 'right' => 2,
1402
+ 'bottom' => 2,
1403
+ 'left' => 2,
1404
+ ],
1405
+ 'selectors' => [
1406
+ '{{WRAPPER}} .premium-icon-list-badge span ' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1407
+ ],
1408
+ ]
1409
+ );
1410
+
1411
+ // Badge text Shadow
1412
+ $this->add_group_control(
1413
+ Group_Control_text_Shadow::get_type(),
1414
+ [
1415
+ 'name' => 'Badge_text_shadow',
1416
+ 'selector' => '{{WRAPPER}} .premium-icon-list-badge span',
1417
+ ]
1418
+ );
1419
+
1420
+ // Badge box Shadow
1421
+ $this->add_group_control(
1422
+ Group_Control_Box_Shadow::get_type(),
1423
+ [
1424
+ 'name' => 'Badge_box_shadow',
1425
+ 'selector' => '{{WRAPPER}} .premium-icon-list-badge span',
1426
+ ]
1427
+ );
1428
+
1429
+ // Badge Margin
1430
+ $this->add_responsive_control(
1431
+ 'Badge_margin',
1432
+ [
1433
+ 'label' => __( 'Margin', 'premium-addons-for-elementor' ),
1434
+ 'type' => Controls_Manager::DIMENSIONS,
1435
+ 'size_units' => [ 'px', '%', 'em' ],
1436
+ 'default' => [
1437
+ 'top' => 0,
1438
+ 'right' => 0,
1439
+ 'bottom' => 0,
1440
+ 'left' => 5,
1441
+ ],
1442
+ 'selectors' => [
1443
+ '{{WRAPPER}} .premium-icon-list-badge ' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1444
+ ],
1445
+ ]
1446
+ );
1447
+
1448
+ // Badge Padding
1449
+ $this->add_responsive_control(
1450
+ 'Badge_padding',
1451
+ [
1452
+ 'label' => __( 'Padding', 'premium-addons-for-elementor' ),
1453
+ 'type' => Controls_Manager::DIMENSIONS,
1454
+ 'size_units' => [ 'px', '%', 'em' ],
1455
+ 'default' => [
1456
+ 'top' => 2,
1457
+ 'right' => 5,
1458
+ 'bottom' => 2,
1459
+ 'left' => 5,
1460
+ ],
1461
+ 'selectors' => [
1462
+ '{{WRAPPER}} .premium-icon-list-badge span ' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1463
+ ],
1464
+ ]
1465
+ );
1466
+
1467
+ $this->end_controls_section();
1468
+ //End of badge style settings
1469
+
1470
+ // Divider Style Settings
1471
+ $this->start_controls_section(
1472
+ 'divider_style_section',
1473
+ [
1474
+ 'label' => __( ' Divider ', 'premium-addons-for-elementor' ),
1475
+ 'tab' => Controls_Manager::TAB_STYLE,
1476
+ 'condition' =>[
1477
+ 'show_divider' => 'yes'
1478
+ ]
1479
+ ]
1480
+ );
1481
+
1482
+ // Divider Style
1483
+ $this->add_control(
1484
+ 'list_divider_type',
1485
+ [
1486
+ 'label' => __( 'Divider Style', 'premium-addons-for-elementor' ),
1487
+ 'type' => Controls_Manager::SELECT,
1488
+ 'options' => [
1489
+ 'solid' => __( 'Solid', 'premium-addons-for-elementor' ),
1490
+ 'double' => __( 'Double', 'premium-addons-for-elementor' ),
1491
+ 'dotted' => __( 'Dotted', 'premium-addons-for-elementor' ),
1492
+ 'dashed' => __( 'Dashed', 'premium-addons-for-elementor' ),
1493
+ 'groove' => __( 'Groove', 'premium-addons-for-elementor' ),
1494
+ ],
1495
+ 'default' =>'solid',
1496
+ 'selectors' => [
1497
+ '{{WRAPPER}} .premium-icon-list-divider:not(:last-child):after' => 'border-top-style: {{VALUE}};',
1498
+ '{{WRAPPER}} .premium-icon-list-divider-inline:not(:last-child):after' => 'border-left-style: {{VALUE}};'
1499
+ ],
1500
+ 'condition' => [
1501
+ 'show_divider' => 'yes'
1502
+ ]
1503
+ ]
1504
+ );
1505
+
1506
+ // Divider Width
1507
+ $this->add_responsive_control(
1508
+ 'list_divider_width',
1509
+ [
1510
+ 'label' => __(' Width', 'premium-addons-for-elementor'),
1511
+ 'type' => Controls_Manager::SLIDER,
1512
+ 'size_units' => ['px', 'em' ],
1513
+ 'range' => [
1514
+ 'px' => [
1515
+ 'min' => 0,
1516
+ 'max' => 600
1517
+ ],
1518
+ 'em' => [
1519
+ 'min' => 0,
1520
+ 'max' => 30
1521
+ ]
1522
+ ],
1523
+ 'label_block' => true,
1524
+ 'selectors' => [
1525
+ '{{WRAPPER}} .premium-icon-list-divider:not(:last-child):after' => 'width:{{SIZE}}{{UNIT}};',
1526
+ '{{WRAPPER}} .premium-icon-list-divider-inline:not(:last-child):after ' => 'border-left-width: {{SIZE}}{{UNIT}};',
1527
+ ],
1528
+ 'condition' => [
1529
+ 'show_divider' => 'yes'
1530
+ ]
1531
+ ]
1532
+ );
1533
+
1534
+ // Divider Height
1535
+ $this->add_responsive_control(
1536
+ 'list_divider_height',
1537
+ [
1538
+ 'label' => __(' Height', 'premium-addons-for-elementor'),
1539
+ 'type' => Controls_Manager::SLIDER,
1540
+ 'size_units' => ['px', 'em' ],
1541
+ 'range' => [
1542
+ 'px' => [
1543
+ 'min' => 0,
1544
+ 'max' => 600
1545
+ ],
1546
+ 'em' => [
1547
+ 'min' => 0,
1548
+ 'max' => 30
1549
+ ]
1550
+ ],
1551
+ 'label_block' => true,
1552
+ 'selectors' => [
1553
+ '{{WRAPPER}} .premium-icon-list-divider:not(:last-child):after ' => 'border-top-width: {{SIZE}}{{UNIT}};',
1554
+ '{{WRAPPER}} .premium-icon-list-divider-inline:not(:last-child):after' => 'height: {{SIZE}}{{UNIT}};'
1555
+ ],
1556
+ 'condition' => [
1557
+ 'show_divider' => 'yes'
1558
+ ]
1559
+ ]
1560
+ );
1561
+
1562
+ // Divider Color
1563
+ $this->add_control(
1564
+ 'list_divider_color',
1565
+ [
1566
+ 'label' => __('Color', 'premium-addons-for-elementor'),
1567
+ 'type' => Controls_Manager::COLOR,
1568
+ 'scheme' => [
1569
+ 'type' => Scheme_Color::get_type(),
1570
+ 'value' => Scheme_Color::COLOR_2,
1571
+ ],
1572
+ 'default' => '#ddd',
1573
+ 'selectors' => [
1574
+ '{{WRAPPER}} .premium-icon-list-divider:not(:last-child):after ' => 'border-top-color: {{VALUE}};',
1575
+ '{{WRAPPER}} .premium-icon-list-divider-inline:not(:last-child):after ' => 'border-left-color: {{VALUE}};'
1576
+ ],
1577
+ 'condition' => [
1578
+ 'show_divider' => 'yes'
1579
+ ]
1580
+ ]
1581
+ );
1582
+
1583
+ $this->end_controls_section();
1584
+ //End of divider style settings
1585
+
1586
+ // Connector Style Settings
1587
+ $this->start_controls_section(
1588
+ 'connector_style_section',
1589
+ [
1590
+ 'label' => __( ' Connector ', 'premium-addons-for-elementor' ),
1591
+ 'tab' => Controls_Manager::TAB_STYLE,
1592
+ 'condition' => [
1593
+ 'layout_type' => 'column',
1594
+ 'icon_postion!' => 'column',
1595
+ 'show_connector' => 'yes',
1596
+ 'hover_effect_type!' => 'grow',
1597
+ 'list_overflow' => 'visible',
1598
+ ]
1599
+ ]
1600
+ );
1601
+
1602
+ // Connector Style
1603
+ $this->add_control(
1604
+ 'icon_connector_type',
1605
+ [
1606
+ 'label' => __( 'Style', 'premium-addons-for-elementor' ),
1607
+ 'type' => Controls_Manager::SELECT,
1608
+ 'options' => [
1609
+ 'solid' => __( 'Solid', 'premium-addons-for-elementor' ),
1610
+ 'double' => __( 'Double', 'premium-addons-for-elementor' ),
1611
+ 'dashed' => __( 'Dashed', 'premium-addons-for-elementor' ),
1612
+ 'dotted' => __( 'Dotted', 'premium-addons-for-elementor' ),
1613
+ 'dashed' => __( 'Dashed', 'premium-addons-for-elementor' ),
1614
+ 'groove' => __( 'Groove', 'premium-addons-for-elementor' ),
1615
+ ],
1616
+ 'default' =>'solid',
1617
+ 'selectors' => [
1618
+ '{{WRAPPER}} li.premium-icon-list-content:not(:last-of-type) .premium-icon-list-connector .premium-icon-connector-content:after ' => 'border-right-style: {{VALUE}};'
1619
+ ],
1620
+ 'condition' => [
1621
+ 'show_connector' => 'yes'
1622
+ ]
1623
+ ]
1624
+ );
1625
+
1626
+ // Connector Width
1627
+ $this->add_responsive_control(
1628
+ 'icon_connector_width',
1629
+ [
1630
+ 'label' => __(' Width', 'premium-addons-for-elementor'),
1631
+ 'type' => Controls_Manager::SLIDER,
1632
+ 'size_units' => ['px', 'em' ],
1633
+ 'range' => [
1634
+ 'px' => [
1635
+ 'min' => 0,
1636
+ 'max' => 600
1637
+ ],
1638
+ 'em' => [
1639
+ 'min' => 0,
1640
+ 'max' => 30
1641
+ ]
1642
+ ],
1643
+ 'label_block' => true,
1644
+ 'selectors' => [
1645
+ '{{WRAPPER}} li.premium-icon-list-content:not(:last-of-type) .premium-icon-list-connector .premium-icon-connector-content:after' => 'border-right-width: {{SIZE}}{{UNIT}};',
1646
+ ],
1647
+ 'condition' => [
1648
+ 'show_connector' => 'yes'
1649
+ ]
1650
+ ]
1651
+ );
1652
+
1653
+ // Connector Height
1654
+ $this->add_responsive_control(
1655
+ 'icon_connector_height',
1656
+ [
1657
+ 'label' => __(' Height', 'premium-addons-for-elementor'),
1658
+ 'type' => Controls_Manager::SLIDER,
1659
+ 'size_units' => ['px', 'em' ],
1660
+ 'default' => [
1661
+ 'unit' => 'px',
1662
+ 'size' => 28,
1663
+ ],
1664
+ 'range' => [
1665
+ 'px' => [
1666
+ 'min' => 0,
1667
+ 'max' => 600
1668
+ ],
1669
+ 'em' => [
1670
+ 'min' => 0,
1671
+ 'max' => 30
1672
+ ]
1673
+ ],
1674
+ 'label_block' => true,
1675
+ 'selectors' => [
1676
+ '{{WRAPPER}} li.premium-icon-list-content:not(:last-of-type) .premium-icon-list-connector .premium-icon-connector-content:after' => 'height: {{SIZE}}{{UNIT}};'
1677
+ ],
1678
+ 'condition' => [
1679
+ 'show_connector' => 'yes'
1680
+ ]
1681
+ ]
1682
+ );
1683
+
1684
+ // Connector Color
1685
+ $this->add_control(
1686
+ 'icon_connector_color',
1687
+ [
1688
+ 'label' => __('Color', 'premium-addons-for-elementor'),
1689
+ 'type' => Controls_Manager::COLOR,
1690
+ 'scheme' => [
1691
+ 'type' => Scheme_Color::get_type(),
1692
+ 'value' => Scheme_Color::COLOR_2,
1693
+ ],
1694
+ 'default' => '#ddd',
1695
+ 'selectors' => [
1696
+ '{{WRAPPER}} li.premium-icon-list-content:not(:last-of-type) .premium-icon-list-connector .premium-icon-connector-content:after' => 'border-color: {{VALUE}};',
1697
+ ],
1698
+ 'condition' => [
1699
+ 'show_connector' => 'yes'
1700
+ ]
1701
+ ]
1702
+ );
1703
+
1704
+ $this->end_controls_section();
1705
+ //End of connector style settings
1706
+
1707
+ }
1708
+
1709
+ /**
1710
+ * Render Bullet List output on the frontend.
1711
+ *
1712
+ * Written in PHP and used to generate the final HTML.
1713
+ *
1714
+ * @since 3.21.2
1715
+ * @access protected
1716
+ */
1717
+ protected function render() {
1718
+
1719
+ $settings = $this->get_settings_for_display();
1720
+
1721
+ $this->add_render_attribute('box', 'class', 'premium-icon-list-box');
1722
+
1723
+ if( $settings['hover_effect_type'] === 'blur'){
1724
+
1725
+ $this->add_render_attribute('box', 'class', 'premium-icon-list-blur');
1726
+
1727
+ }
1728
+
1729
+ $animation_switch = $settings['premium_icon_list_animation_switcher'] ;
1730
+
1731
+ if( 'yes' == $animation_switch) {
1732
+
1733
+ $animation_class = $settings['premium_icon_list_animation'];
1734
+
1735
+ if( '' != $settings['premium_icon_list_animation_duration'] ) {
1736
+ $animation_dur = 'animated-' . $settings['premium_icon_list_animation_duration'];
1737
+ }
1738
+ else {
1739
+ $animation_dur = 'animated-';
1740
+ }
1741
+
1742
+ $this->add_render_attribute( 'box', 'data-list-animation',
1743
+ [
1744
+ $animation_class,
1745
+ $animation_dur,
1746
+ ]
1747
+ );
1748
+ }
1749
+
1750
+ ?>
1751
+ <ul <?php echo $this->get_render_attribute_string('box');?>>
1752
+ <?php
1753
+
1754
+ $delay = 0;
1755
+
1756
+ if ( $settings['list'] ) {
1757
+ foreach ( $settings['list'] as $index => $item ) {
1758
+
1759
+ $textIcon = $this->get_repeater_setting_key('list_text_icon','list', $index);
1760
+
1761
+ $textBadge = $this->get_repeater_setting_key('badge_title','list', $index);
1762
+
1763
+ $this->add_inline_editing_attributes($textIcon, 'basic');
1764
+
1765
+ $this->add_inline_editing_attributes($textBadge, 'basic');
1766
+
1767
+ $item_link = 'link_' . $index;
1768
+
1769
+ $separator_link_type = $item['link_select'];
1770
+
1771
+ $link_url = ( 'url' === $separator_link_type ) ? $item['link']['url'] : get_permalink( $item['existing_page'] );
1772
+
1773
+ if ( $item['show_list_link'] === 'yes' ) {
1774
+
1775
+ if( ! empty( $item['link']['is_external'] ) ) {
1776
+ $this->add_render_attribute( $item_link, 'target', "_blank" );
1777
+ }
1778
+
1779
+ if( ! empty( $item['link']['nofollow'] ) ) {
1780
+ $this->add_render_attribute( $item_link, 'rel', "nofollow" );
1781
+ }
1782
+
1783
+ if( ! empty( $item['link']['url'] ) || ! empty( $item['existing_page'] ) ) {
1784
+ $this->add_render_attribute( $item_link, 'href', $link_url );
1785
+ }
1786
+ }
1787
+
1788
+ $lottie_key = 'icon_lottie_' . $index;
1789
+
1790
+ if('lottie' === $item['icon_type']){
1791
+
1792
+ $this->add_render_attribute( $lottie_key, [
1793
+ 'class' => 'premium-lottie-animation',
1794
+ 'data-lottie-url' => $item['lottie_url'],
1795
+ 'data-lottie-loop' => $item['lottie_loop'],
1796
+ 'data-lottie-reverse' => $item['lottie_reverse']
1797
+ ]);
1798
+ }
1799
+
1800
+ $list_content_key = 'content_index_' . $index;
1801
+
1802
+ $this->add_render_attribute( $list_content_key, 'class',
1803
+ [
1804
+ 'premium-icon-list-content',
1805
+ 'elementor-repeater-item-' . $item['_id']
1806
+ ]
1807
+ );
1808
+ if( 'yes' == $animation_switch) {
1809
+
1810
+ $this->add_render_attribute( $list_content_key, 'data-delay',
1811
+ [
1812
+ $delay
1813
+ ]
1814
+ );
1815
+
1816
+ $delay+=$settings['premium_icon_list_animation_delay']*1000;
1817
+ }
1818
+ if ('row' === $settings['layout_type']){
1819
+ $this->add_render_attribute( $list_content_key, 'class',
1820
+ [
1821
+ 'premium-icon-list-content-inline',
1822
+ ]
1823
+ );
1824
+ }
1825
+
1826
+ if ( 'grow' === $settings['hover_effect_type'] ){
1827
+
1828
+ $this->add_render_attribute( $list_content_key, 'class',
1829
+ [
1830
+ 'premium-icon-list-content-grow-effect',
1831
+ ]
1832
+ );
1833
+ }
1834
+ if ( 'column' === $settings['layout_type']){
1835
+
1836
+ if('flex-start' === $settings['premium_icon_list_align'] ){
1837
+ $this->add_render_attribute( $list_content_key, 'class',
1838
+ [
1839
+ 'premium-icon-list-content-grow-lc',
1840
+ ]
1841
+ );
1842
+ }
1843
+ else if('flex-end' === $settings['premium_icon_list_align']){
1844
+ $this->add_render_attribute( $list_content_key, 'class',
1845
+ [
1846
+ 'premium-icon-list-content-grow-rc',
1847
+ ]
1848
+ );
1849
+ }
1850
+ else {
1851
+ $this->add_render_attribute( $list_content_key, 'class',
1852
+ [
1853
+ 'premium-icon-list-content-grow-cc',
1854
+ ]
1855
+ );
1856
+ }
1857
+ }
1858
+ ?>
1859
+
1860
+ <li <?php echo $this->get_render_attribute_string( $list_content_key );?> >
1861
+ <?php
1862
+ if ( 'yes' === $item['show_icon'] ) {
1863
+
1864
+ $wrapper_class = 'premium-icon-list-wrapper';
1865
+
1866
+ $this->add_render_attribute('wrapper','class',$wrapper_class);
1867
+
1868
+ if('column' === $settings['icon_postion']){
1869
+
1870
+ $wrapper_top_class = 'premium-icon-list-wrapper-top ';
1871
+
1872
+ $this->add_render_attribute('wrapper','class',$wrapper_top_class );
1873
+
1874
+ }
1875
+
1876
+ $gradient_effect_class = 'premium-icon-list-gradient-effect';
1877
+
1878
+ if ($settings['hover_effect_type'] === 'linear gradient'){
1879
+ $this->add_render_attribute( 'title', 'class',
1880
+ [
1881
+ $gradient_effect_class,
1882
+ ]
1883
+ );
1884
+ }
1885
+
1886
+ ?>
1887
+ <div class="premium-icon-list-text">
1888
+ <div <?php echo $this->get_render_attribute_string('wrapper'); ?>>
1889
+ <?php
1890
+ if ('yes' === $settings['show_connector'] && 'column' === $settings['layout_type'] && 'column' !== $settings['icon_postion'] && 'grow' !== $settings['hover_effect_type'] && 'visible' === $settings['list_overflow']) {
1891
+ ?>
1892
+ <div class="premium-icon-list-connector" >
1893
+ <div class="premium-icon-connector-content"></div>
1894
+ </div>
1895
+ <?php
1896
+ }
1897
+ if ('icon' === $item['icon_type']) {
1898
+ Icons_Manager::render_icon( $item['premium_icon_list_font_updated'], [ 'aria-hidden' => 'true' ]);
1899
+ }
1900
+ else if('text' === $item['icon_type']){ ?>
1901
+ <div class="premium-icon-list-icon-text" >
1902
+ <p <?php echo $this->get_render_attribute_string( $textIcon ) ?> ><?php echo $item['list_text_icon'] ;?></p>
1903
+ </div>
1904
+ <?php
1905
+ }
1906
+ else if('image' === $item['icon_type']){
1907
+
1908
+ if( ! empty( $item['custom_image']['url'] ) ) {
1909
+ echo '<img src="' . $item['custom_image']['url'] . '">';
1910
+ }
1911
+ }
1912
+ else {
1913
+ echo '<div '.$this->get_render_attribute_string( $lottie_key ).'></div>';
1914
+ }
1915
+ echo '</div>' ;
1916
+ }
1917
+ ?>
1918
+ <?php
1919
+ echo '<span ' . $this->get_render_attribute_string( 'title' ) . ' data-text="'.strip_tags($item['list_title']) .'" > '.$item['list_title'] .' </span>';
1920
+ ?>
1921
+ </div>
1922
+ <?php
1923
+ if('yes' === $item['show_badge']){
1924
+ ?>
1925
+ <div class="premium-icon-list-badge">
1926
+ <span <?php echo $this->get_render_attribute_string( $textBadge ) ?>><?php echo $item['badge_title'] ?></span>
1927
+ </div>
1928
+ <?php
1929
+ }
1930
+ ?>
1931
+ <?php
1932
+ if('yes' === $item['show_list_link']){
1933
+ ?>
1934
+ <a class="premium-icon-list-link" <?php echo $this->get_render_attribute_string( $item_link ) ?> ></a>
1935
+ <?php } ?>
1936
+ </li>
1937
+ <?php
1938
+ if( 'yes' === $settings[ 'show_divider' ] ) {
1939
+ $layout= $settings['layout_type'];
1940
+ $divider_class = 'premium-icon-list-divider';
1941
+ if('row' === $layout)
1942
+ $divider_class .='-inline';
1943
+
1944
+ $this->add_render_attribute('divider','class',$divider_class);
1945
+ ?>
1946
+ <div <?php echo $this->get_render_attribute_string('divider'); ?>></div>
1947
+ <?php
1948
+ }
1949
+ }
1950
+ }
1951
+ ?>
1952
+ </ul>
1953
+ <?php
1954
+ }
1955
+
1956
+ /**
1957
+ * Render Bullet List widget output in the editor.
1958
+ *
1959
+ * Written as a Backbone JavaScript template and used to generate the live preview.
1960
+ *
1961
+ * @since 3.21.2
1962
+ * @access protected
1963
+ */
1964
+ protected function content_template() {
1965
+ ?>
1966
+ <#
1967
+ view.addRenderAttribute( 'box', 'class', 'premium-icon-list-box');
1968
+
1969
+ if( 'blur' === settings.hover_effect_type){
1970
+
1971
+ view.addRenderAttribute( 'box', 'class', 'premium-icon-list-blur');
1972
+
1973
+ }
1974
+
1975
+ animationSwitch = settings.premium_icon_list_animation_switcher ;
1976
+
1977
+ if( 'yes' == animationSwitch ) {
1978
+
1979
+ animationClass = settings.premium_icon_list_animation;
1980
+
1981
+ if( '' != settings.premium_icon_list_animation_duration ) {
1982
+
1983
+ animationDur = 'animated-' + settings.premium_icon_list_animation_duration;
1984
+
1985
+ } else {
1986
+ animationDur = 'animated-';
1987
+ }
1988
+ view.addRenderAttribute( 'box', 'data-list-animation',
1989
+ [
1990
+ animationClass,
1991
+ animationDur,
1992
+ ]
1993
+ );
1994
+ }
1995
+ #>
1996
+
1997
+ <ul {{{ view.getRenderAttributeString('box') }}}>
1998
+
1999
+ <#
2000
+ var delay=0;
2001
+
2002
+ _.each( settings.list, function( item ,index ) {
2003
+
2004
+ var textIcon = view.getRepeaterSettingKey( 'list_text_icon', 'list', index );
2005
+ var textBadge = view.getRepeaterSettingKey( 'badge_title', 'list', index );
2006
+
2007
+ view.addInlineEditingAttributes( textIcon, 'basic' );
2008
+ view.addInlineEditingAttributes( textBadge, 'basic' );
2009
+
2010
+ var itemLink = 'link_' + index;
2011
+
2012
+ var separatorLinkType, linkUrl, linkTitle;
2013
+
2014
+ separatorLinkType = item.link_select;
2015
+
2016
+ linkUrl= 'url' === separatorLinkType ? item.link.url : item.existing_page;
2017
+
2018
+ if( 'yes' === item.show_list_link ) {
2019
+ if( '' != item.link.is_external ) {
2020
+ view.addRenderAttribute(itemLink, 'target', '_blank');
2021
+ }
2022
+ if( '' != item.link.nofollow ) {
2023
+ view.addRenderAttribute(itemLink, 'rel', 'nofollow');
2024
+ }
2025
+ if( ('' != item.link.url) || ('' != item.existing_page) ) {
2026
+ view.addRenderAttribute(itemLink, 'href', linkUrl);
2027
+ }
2028
+ }
2029
+
2030
+ var lottieKey = 'icon_lottie_' + index;
2031
+
2032
+ if( 'lottie' === item.icon_type ) {
2033
+ view.addRenderAttribute( lottieKey, {
2034
+ 'class': 'premium-lottie-animation',
2035
+ 'data-lottie-url': item.lottie_url,
2036
+ 'data-lottie-loop': item.lottie_loop,
2037
+ 'data-lottie-reverse': item.lottie_reverse
2038
+ });
2039
+
2040
+ }
2041
+
2042
+ var listContentKey = 'content_index_' + index;
2043
+
2044
+ view.addRenderAttribute( listContentKey, 'class',
2045
+ [
2046
+ 'premium-icon-list-content' ,
2047
+ 'elementor-repeater-item-' + item._id
2048
+ ]
2049
+ );
2050
+ if( 'yes' == animationSwitch ) {
2051
+
2052
+ view.addRenderAttribute( listContentKey, 'data-delay',
2053
+ [
2054
+ delay
2055
+ ]
2056
+ );
2057
+
2058
+ delay+=settings.premium_icon_list_animation_delay*1000;
2059
+ }
2060
+
2061
+ if ( 'row' === settings.layout_type ) {
2062
+
2063
+ view.addRenderAttribute( listContentKey, 'class',
2064
+ [
2065
+ 'premium-icon-list-content-inline'
2066
+ ]
2067
+ );
2068
+
2069
+ }
2070
+
2071
+ if ( 'grow' === settings.hover_effect_type ){
2072
+
2073
+ view.addRenderAttribute( listContentKey, 'class',
2074
+ [
2075
+ 'premium-icon-list-content-grow-effect'
2076
+ ]
2077
+ );
2078
+
2079
+ }
2080
+ if ( 'column' === settings.layout_type){
2081
+ if('flex-start' === settings.premium_icon_list_align){
2082
+ view.addRenderAttribute( listContentKey, 'class',
2083
+ [
2084
+ 'premium-icon-list-content-grow-lc'
2085
+ ]
2086
+ );
2087
+ }
2088
+ else if( 'flex-end' === settings.premium_icon_list_align ){
2089
+ view.addRenderAttribute( listContentKey, 'class',
2090
+ [
2091
+ 'premium-icon-list-content-grow-rc'
2092
+ ]
2093
+ );
2094
+ }
2095
+ else {
2096
+ view.addRenderAttribute( listContentKey, 'class',
2097
+ [
2098
+ 'premium-icon-list-content-grow-cc'
2099
+ ]
2100
+ );
2101
+ }
2102
+ }
2103
+
2104
+ var gradient_effect_class ='';
2105
+
2106
+ if (settings.hover_effect_type === 'linear gradient'){
2107
+
2108
+ gradient_effect_class = 'premium-icon-list-gradient-effect';
2109
+
2110
+ }
2111
+ #>
2112
+ <li {{{ view.getRenderAttributeString( listContentKey ) }}}>
2113
+
2114
+ <div class="premium-icon-list-text">
2115
+ <# if ( 'yes' === item.show_icon ) {
2116
+ var wrapper_top_class ;
2117
+
2118
+ if('column' === settings.icon_postion){
2119
+ wrapper_top_class = 'premium-icon-list-wrapper-top';
2120
+ }
2121
+ #>
2122
+ <div class="premium-icon-list-wrapper {{wrapper_top_class}}">
2123
+ <#
2124
+ if ('yes' === settings.show_connector && 'column' === settings.layout_type && 'column' !== settings.icon_postion && 'grow' !== settings.hover_effect_type && 'visible' === settings.list_overflow) {
2125
+ #>
2126
+ <div class="premium-icon-list-connector" >
2127
+ <div class="premium-icon-connector-content"></div>
2128
+ </div>
2129
+ <# }
2130
+ if ( 'icon' == item.icon_type ) {
2131
+
2132
+ var iconHTML = elementor.helpers.renderIcon( view, item.premium_icon_list_font_updated, {
2133
+ 'aria-hidden': true
2134
+ }, 'i' , 'object' );
2135
+
2136
+ if ( iconHTML && iconHTML.rendered ) { #>
2137
+ {{{ iconHTML.value }}}
2138
+ <#
2139
+ }
2140
+ else {
2141
+ #>
2142
+ <i class =" {{ item.premium_icon_list_font }} "></i>
2143
+ <# }
2144
+ }
2145
+ else if ( 'image' === item.icon_type ) {
2146
+ if ( item.custom_image.url ) {
2147
+
2148
+ var image = {
2149
+ id: item.custom_image.id,
2150
+ url: item.custom_image.url,
2151
+ size: item.thumbnail_size,
2152
+ dimension: item.thumbnail_custom_dimension,
2153
+ model: view.getEditModel()
2154
+ };
2155
+
2156
+ var image_url = elementor.imagesManager.getImageUrl( image );
2157
+ #>
2158
+ <img src="{{ image_url }}"/>
2159
+ <#
2160
+ }
2161
+ }
2162
+ else if ( 'text' === item.icon_type) {
2163
+ #>
2164
+ <div class="premium-icon-list-icon-text">
2165
+ <p {{{ view.getRenderAttributeString( textIcon ) }}}>{{{item.list_text_icon}}}</p>
2166
+ </div>
2167
+ <#
2168
+ }
2169
+ else {
2170
+ #>
2171
+ <div {{{ view.getRenderAttributeString( lottieKey) }}}></div>
2172
+ <#
2173
+ }
2174
+ #>
2175
+ </div>
2176
+ <#
2177
+ }
2178
+ #>
2179
+ <span class="{{{ gradient_effect_class }}}" data-text="{{{ item.list_title }}}" >{{{ item.list_title }}}</span>
2180
+ </div>
2181
+ <# if ( 'yes' === item.show_badge ){ #>
2182
+ <div class="premium-icon-list-badge">
2183
+ <span {{{ view.getRenderAttributeString( textBadge ) }}} >{{{ item.badge_title }}}</span>
2184
+ </div>
2185
+ <# } #>
2186
+ <#
2187
+ if ( 'yes' === item.show_list_link ) {
2188
+ linkType=item.link_select;
2189
+
2190
+ url = 'url' === linkType ? item.link.url : item.existing_page;
2191
+ #>
2192
+ <a class="premium-icon-list-link" {{{ view.getRenderAttributeString( itemLink ) }}} ></a>
2193
+ <# } #>
2194
+ </li>
2195
+ <#
2196
+ if( 'yes' === settings.show_divider ) {
2197
+ var dividerClass ='premium-icon-list-divider';
2198
+ if( 'row' === settings.layout_type ){
2199
+ dividerClass += '-inline';
2200
+ }
2201
+ #>
2202
+ <div class=" {{dividerClass}}"></div>
2203
+ <# }
2204
+ });
2205
+ #>
2206
+ </ul>
2207
+
2208
+ <?php
2209
+ }
2210
+
2211
+ }