Version Description
- Fixed: Sanitized options in the editor to enforce better security policies
Download this release
Release Info
Developer | wpvibes |
Plugin | Elementor Addon Elements |
Version | 1.11.2 |
Comparing to | |
See all releases |
Code changes from version 1.11.1 to 1.11.2
- assets/css/eae.css +225 -190
- assets/css/eae.min.css +1 -1
- assets/js/eae.js +82 -2
- assets/js/eae.min.js +1 -1
- assets/js/tsparticles.js +11778 -0
- assets/js/tsparticles.min.js +9 -0
- base/eae-widget-base.php +2 -2
- base/module-base.php +2 -2
- classes/helper.php +517 -498
- classes/post-helper.php +53 -60
- controls/group/grid-control.php +12 -14
- controls/group/icon.php +28 -40
- controls/group/icon_timeline.php +8 -25
- controls/hover-transition.php +16 -16
- elementor-addon-elements.php +38 -40
- inc/admin/Settings.php +45 -52
- inc/admin/admin-notice.php +74 -84
- inc/admin/controls.php +32 -31
- inc/admin/settings-page.php +7 -78
- inc/bootstrap.php +224 -308
- managers/module-manager.php +7 -10
- modules/animated-gradient/module.php +161 -174
- modules/animated-text/module.php +3 -3
- modules/animated-text/widgets/animated-text.php +132 -144
- modules/bg-slider/module.php +138 -176
- modules/chart/classes/map-data.php +242 -248
- modules/chart/module.php +13 -17
- modules/chart/skins/skin-bar-chart.php +12 -15
- modules/chart/skins/skin-base.php +39 -42
- modules/chart/skins/skin-doughnut-chart.php +13 -13
- modules/chart/skins/skin-horizontal-bar-chart.php +14 -14
- modules/chart/skins/skin-line-chart.php +13 -13
- modules/chart/skins/skin-pie-chart.php +13 -13
- modules/chart/skins/skin-polar-area-chart.php +13 -13
- modules/chart/skins/skin-radar-chart.php +13 -13
- modules/chart/widgets/chart.php +794 -314
assets/css/eae.css
CHANGED
@@ -840,6 +840,22 @@ body:not(.elementor-editor-active)
|
|
840 |
Â
position: absolute;
|
841 |
Â
z-index: 0;
|
842 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
843 |
Â
|
844 |
Â
/**
|
845 |
Â
BG Slider
|
@@ -5133,7 +5149,7 @@ body:not(.rtl).elementor-editor-preview
|
|
5133 |
Â
line-height: 1em;
|
5134 |
Â
margin-top: 15px;
|
5135 |
Â
color: #73b9dc;
|
5136 |
-
font-size
|
5137 |
Â
}
|
5138 |
Â
.eae-overlay-icon {
|
5139 |
Â
line-height: 1em;
|
@@ -5530,94 +5546,89 @@ body.elementor-editor-preview
|
|
5530 |
Â
border-width: 0px !important;
|
5531 |
Â
}
|
5532 |
Â
|
5533 |
-
|
5534 |
-
|
5535 |
Â
/*EAE-Content Switch*/
|
5536 |
-
.eae-content-switcher-wrapper{
|
5537 |
Â
display: block;
|
5538 |
Â
text-align: center;
|
5539 |
Â
}
|
5540 |
Â
|
5541 |
-
.eae-cs-layout-skin1 .eae-cs-switch-wrapper{
|
5542 |
-
display
|
5543 |
-
flex-wrap
|
5544 |
Â
padding: 8px 12px;
|
5545 |
-
background
|
5546 |
-
border-radius
|
5547 |
Â
}
|
5548 |
Â
|
5549 |
-
|
5550 |
Â
/*Skin1 Head*/
|
5551 |
-
.eae-cs-switch-container{
|
5552 |
Â
display: block;
|
5553 |
Â
text-align: center;
|
5554 |
Â
}
|
5555 |
-
.eae-cs-layout-skin1 .eae-cs-label-wrapper{
|
5556 |
Â
display: inline-block;
|
5557 |
Â
overflow: hidden;
|
5558 |
-
|
5559 |
Â
}
|
5560 |
-
.eae-cs-layout-skin1 .eae-content-switch-button{
|
5561 |
Â
border-radius: 50px;
|
5562 |
-
padding
|
5563 |
-
background-color: #
|
5564 |
-
color
|
5565 |
Â
overflow: hidden;
|
5566 |
-
display
|
5567 |
Â
min-width: 150px;
|
5568 |
-
position
|
5569 |
-
text-align
|
5570 |
-
margin
|
5571 |
Â
}
|
5572 |
-
.eae-cs-layout-skin1 .eae-content-switch-button:before{
|
5573 |
Â
height: 100%;
|
5574 |
Â
top: 0;
|
5575 |
-
left
|
5576 |
Â
z-index: 0;
|
5577 |
-
content:
|
5578 |
Â
width: 0;
|
5579 |
Â
position: absolute;
|
5580 |
Â
right: 0;
|
5581 |
Â
transition: all 300ms ease-out;
|
5582 |
Â
}
|
5583 |
-
.eae-cs-layout-skin1 .eae-content-switch-button.active:before{
|
5584 |
-
width
|
5585 |
-
left
|
5586 |
-
right
|
5587 |
-
background-color
|
5588 |
Â
}
|
5589 |
-
.eae-cs-layout-skin1 .eae-content-switch-label{
|
5590 |
Â
position: relative;
|
5591 |
Â
}
|
5592 |
Â
/*COntent Switcher Content CSS
|
5593 |
Â
*/
|
5594 |
-
.eae-cs-content-section{
|
5595 |
-
display
|
5596 |
Â
}
|
5597 |
-
.eae-cs-content-section.active{
|
5598 |
Â
display: block;
|
5599 |
Â
}
|
5600 |
Â
|
5601 |
-
@media only screen and (max-width: 768px){
|
5602 |
Â
.eae-cs-switch-wrapper {
|
5603 |
Â
display: inline-block !important;
|
5604 |
-
|
5605 |
Â
}
|
5606 |
Â
}
|
5607 |
Â
|
5608 |
Â
/*SKin 2*/
|
5609 |
-
.eae-cs-layout-skin2 .eae-cs-switch-wrapper{
|
5610 |
Â
display: inline-flex;
|
5611 |
Â
flex-wrap: wrap;
|
5612 |
Â
padding: 0px;
|
5613 |
Â
background: none;
|
5614 |
Â
}
|
5615 |
-
.eae-cs-layout-skin2 .eae-cs-label-wrapper{
|
5616 |
Â
display: inline-block;
|
5617 |
Â
}
|
5618 |
Â
|
5619 |
-
.eae-cs-layout-skin2 .eae-content-switch-button{
|
5620 |
-
width
|
5621 |
Â
margin: 3px 8px;
|
5622 |
Â
padding: 10px 12px;
|
5623 |
Â
background-color: #e2e2e2;
|
@@ -5625,37 +5636,35 @@ body.elementor-editor-preview
|
|
5625 |
Â
display: block;
|
5626 |
Â
position: relative;
|
5627 |
Â
text-align: center;
|
5628 |
-
border-radius
|
5629 |
-
border
|
5630 |
-
color
|
5631 |
Â
}
|
5632 |
Â
|
5633 |
-
.eae-cs-layout-skin2 .eae-content-switch-button.active{
|
5634 |
-
box-shadow: 0px 10px 34px -9px rgba(0,0,0,0.38);
|
5635 |
-
background-color
|
5636 |
-
color
|
5637 |
-
border-color
|
5638 |
Â
}
|
5639 |
-
h5.eae-cs-label{
|
5640 |
-
margin
|
5641 |
Â
}
|
5642 |
Â
|
5643 |
Â
/*SKin 3*/
|
5644 |
-
.eae-cs-layout-skin3 .eae-cs-switch-wrapper{
|
5645 |
Â
display: block;
|
5646 |
Â
justify-content: center;
|
5647 |
Â
align-items: center;
|
5648 |
Â
}
|
5649 |
-
.eae-content-switch-label.primary-label{
|
5650 |
-
margin-right
|
5651 |
Â
}
|
5652 |
-
.eae-content-switch-label.secondary-label{
|
5653 |
-
margin-left
|
5654 |
Â
}
|
5655 |
Â
|
5656 |
-
|
5657 |
-
|
5658 |
-
.eae-cs-layout-skin3 .eae-cs-switch-label{
|
5659 |
Â
position: relative;
|
5660 |
Â
display: inline-block;
|
5661 |
Â
width: 4.5em;
|
@@ -5663,35 +5672,41 @@ h5.eae-cs-label{
|
|
5663 |
Â
vertical-align: middle;
|
5664 |
Â
}
|
5665 |
Â
|
5666 |
-
.eae-cs-layout-skin3 .eae-content-switch-label{
|
5667 |
-
margin
|
5668 |
-
display
|
5669 |
Â
}
|
5670 |
Â
.eae-cs-layout-skin3 .eae-cs-switch-button {
|
5671 |
-
display
|
5672 |
Â
}
|
5673 |
-
.eae-cs-layout-skin3 .eae-cs-label{
|
5674 |
-
display
|
5675 |
Â
}
|
5676 |
-
.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch{
|
5677 |
Â
display: none;
|
5678 |
Â
}
|
5679 |
Â
|
5680 |
-
.eae-cs-layout-skin3
|
Â
|
|
Â
|
|
Â
|
|
5681 |
Â
position: absolute;
|
5682 |
Â
cursor: pointer;
|
5683 |
Â
top: 0;
|
5684 |
Â
left: 0;
|
5685 |
Â
right: 0;
|
5686 |
Â
bottom: 0;
|
5687 |
-
-webkit-transition: .4s;
|
5688 |
-
transition: .4s;
|
5689 |
Â
-webkit-border-radius: 1.5em;
|
5690 |
Â
border-radius: 1.5em;
|
5691 |
Â
background: #2e394d;
|
5692 |
Â
border: 2px solid #2e394d;
|
5693 |
Â
}
|
5694 |
-
.eae-cs-layout-skin3
|
Â
|
|
Â
|
|
Â
|
|
5695 |
Â
position: absolute;
|
5696 |
Â
content: "";
|
5697 |
Â
height: 28px;
|
@@ -5699,127 +5714,140 @@ h5.eae-cs-label{
|
|
5699 |
Â
left: 4px;
|
5700 |
Â
transform: translateY(-52%);
|
5701 |
Â
top: 50%;
|
5702 |
-
transition: .4s;
|
5703 |
-
transition: .4s;
|
5704 |
Â
-webkit-border-radius: 50%;
|
5705 |
Â
border-radius: 50%;
|
5706 |
Â
background: #88cf8f;
|
5707 |
Â
border: 2px solid #88cf8f;
|
5708 |
Â
}
|
5709 |
-
body.rtl
|
5710 |
-
|
5711 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
5712 |
Â
}
|
5713 |
Â
|
5714 |
-
.eae-cs-layout-skin3
|
5715 |
-
|
Â
|
|
Â
|
|
Â
|
|
5716 |
Â
}
|
5717 |
-
body.rtl
|
5718 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
5719 |
Â
}
|
5720 |
Â
|
5721 |
-
|
5722 |
-
|
5723 |
-
color : #61CE70;
|
5724 |
Â
}
|
5725 |
Â
|
5726 |
Â
/*Skin 4 Cs*/
|
5727 |
-
.eae-cs-layout-skin4 .eae-cs-switch-wrapper{
|
5728 |
Â
display: block;
|
5729 |
Â
/*justify-content: center;*/
|
5730 |
Â
/*align-items: center;*/
|
5731 |
Â
}
|
5732 |
-
.eae-cs-layout-skin4 .eae-content-switch-label.primary-label{
|
5733 |
-
margin-right
|
5734 |
Â
}
|
5735 |
-
.eae-cs-layout-skin4 .eae-content-switch-label.secondary-label{
|
5736 |
-
margin-left
|
5737 |
Â
}
|
5738 |
Â
|
5739 |
-
.eae-cs-layout-skin4 .eae-content-switch-label{
|
5740 |
Â
display: inline-block;
|
5741 |
Â
}
|
5742 |
-
.eae-cs-layout-skin4 .eae-cs-switch-label{
|
5743 |
Â
position: relative;
|
5744 |
Â
display: inline-block;
|
5745 |
Â
width: 70px;
|
5746 |
Â
height: 20px;
|
5747 |
Â
vertical-align: middle;
|
5748 |
Â
}
|
5749 |
-
.eae-cs-layout-skin4 .eae-cs-label{
|
5750 |
-
display
|
5751 |
Â
}
|
5752 |
-
.eae-cs-layout-skin4 .eae-content-toggle-switch{
|
5753 |
-
display
|
5754 |
Â
}
|
5755 |
-
.eae-cs-layout-skin4 .eae-content-toggle-switcher{
|
5756 |
Â
position: absolute;
|
5757 |
Â
cursor: pointer;
|
5758 |
Â
top: 0;
|
5759 |
Â
left: 0;
|
5760 |
Â
right: 0;
|
5761 |
Â
bottom: 0;
|
5762 |
-
-webkit-transition: .4s;
|
5763 |
-
transition: .4s;
|
5764 |
Â
-webkit-border-radius: 1.5em;
|
5765 |
Â
border-radius: 1.5em;
|
5766 |
Â
background: #2e394d;
|
5767 |
Â
border: 2px solid #2e394d;
|
5768 |
Â
}
|
5769 |
-
.eae-cs-layout-skin4 .eae-cs-switch-button{
|
5770 |
-
display
|
5771 |
Â
}
|
5772 |
-
.eae-cs-layout-skin4 .eae-content-toggle-switcher:before{
|
5773 |
Â
position: absolute;
|
5774 |
Â
content: "";
|
5775 |
Â
height: 34px;
|
5776 |
Â
width: 34px;
|
5777 |
Â
left: -12px;
|
5778 |
-
top
|
5779 |
Â
transform: translateY(-50%);
|
5780 |
Â
border-radius: 50%;
|
5781 |
-
border
|
5782 |
Â
background: #88cf8f;
|
5783 |
-
-webkit-transition: .4s;
|
5784 |
-
transition: .4s;
|
5785 |
-
-webkit-box-shadow: 3px 3px 6px 1px rgba(0,0,0
|
5786 |
-
box-shadow: 3px 3px 6px 1px rgba(0,0,0
|
5787 |
Â
}
|
5788 |
-
.eae-cs-layout-skin4 .eae-cs-switch-container{
|
5789 |
-
padding
|
5790 |
Â
}
|
5791 |
-
body.rtl
|
5792 |
-
right
|
5793 |
Â
}
|
5794 |
-
.eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:before{
|
5795 |
-
transform
|
5796 |
Â
}
|
5797 |
Â
|
5798 |
-
body.rtl
|
5799 |
-
|
Â
|
|
Â
|
|
Â
|
|
5800 |
Â
}
|
5801 |
Â
|
5802 |
Â
/* Thumb Gallery */
|
5803 |
Â
|
5804 |
-
.eae-swiper-outer-wrapper{
|
5805 |
Â
position: relative;
|
5806 |
Â
}
|
5807 |
-
.eae-swiper-container{
|
5808 |
Â
position: relative;
|
5809 |
Â
}
|
5810 |
-
.eae-thumb-container{
|
5811 |
Â
position: absolute;
|
5812 |
Â
}
|
5813 |
Â
|
5814 |
-
.eae-swiper-outer-wrapper .eae-swiper-slide{
|
5815 |
Â
height: 400px;
|
5816 |
Â
background-size: cover;
|
5817 |
Â
background-repeat: no-repeat;
|
5818 |
-
background-position: right;
|
5819 |
Â
}
|
5820 |
Â
|
5821 |
-
.eae-swiper-outer-wrapper .eae-swiper-slide .eae-slide-inner{
|
5822 |
-
color: #
|
5823 |
Â
/* color: #000000; */
|
5824 |
Â
display: flex;
|
5825 |
Â
position: absolute;
|
@@ -5829,24 +5857,24 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
5829 |
Â
right: 0;
|
5830 |
Â
padding: 20px;
|
5831 |
Â
}
|
5832 |
-
.eae-slide-inner .eae-slide-content{
|
5833 |
-
padding
|
5834 |
Â
}
|
5835 |
-
.eae-slide-inner .eae-slide-heading{
|
5836 |
Â
font-size: 35px;
|
5837 |
Â
font-weight: bold;
|
5838 |
Â
line-height: 1;
|
5839 |
Â
}
|
5840 |
-
.eae-slide-inner .eae-slide-text{
|
5841 |
Â
font-size: 17px;
|
5842 |
Â
line-height: 1.4;
|
5843 |
Â
}
|
5844 |
Â
|
5845 |
-
.eae-slide-inner .eae-slide-button{
|
5846 |
Â
display: inline-block;
|
5847 |
Â
}
|
5848 |
Â
|
5849 |
-
.eae-slide-inner .eae-slide-btn{
|
5850 |
Â
display: inline-block;
|
5851 |
Â
font-size: 15px;
|
5852 |
Â
padding: 12px 24px;
|
@@ -5855,61 +5883,62 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
5855 |
Â
transition: all 0.3s;
|
5856 |
Â
}
|
5857 |
Â
|
5858 |
-
.eae-slide-inner .eae-slide-heading:not(:last-child),
|
Â
|
|
5859 |
Â
margin-bottom: 30px;
|
5860 |
Â
}
|
5861 |
Â
|
5862 |
-
.eae--hr-position-left .eae-slide-inner{
|
5863 |
Â
-webkit-box-pack: start;
|
5864 |
Â
justify-content: flex-start;
|
5865 |
Â
}
|
5866 |
Â
|
5867 |
-
.eae--hr-position-right .eae-slide-inner{
|
5868 |
Â
-webkit-box-pack: end;
|
5869 |
Â
justify-content: flex-end;
|
5870 |
Â
}
|
5871 |
Â
|
5872 |
-
.eae--hr-position-center .eae-slide-inner{
|
5873 |
Â
-webkit-box-pack: center;
|
5874 |
Â
justify-content: center;
|
5875 |
Â
}
|
5876 |
Â
|
5877 |
-
.eae--vr-position-top .eae-slide-inner{
|
5878 |
Â
-webkit-box-pack: start;
|
5879 |
Â
align-items: flex-start;
|
5880 |
Â
}
|
5881 |
Â
|
5882 |
-
.eae--vr-position-middle .eae-slide-inner{
|
5883 |
Â
-webkit-box-align: center;
|
5884 |
Â
align-items: center;
|
5885 |
Â
}
|
5886 |
Â
|
5887 |
-
.eae--vr-position-bottom .eae-slide-inner{
|
5888 |
Â
-webkit-box-pack: end;
|
5889 |
Â
align-items: flex-end;
|
5890 |
Â
}
|
5891 |
Â
|
5892 |
-
.eae-swiper-button-prev{
|
5893 |
Â
left: 10px;
|
5894 |
Â
}
|
5895 |
-
.eae-swiper-button-next{
|
5896 |
Â
right: 10px;
|
5897 |
Â
}
|
5898 |
-
.eae-swiper-button{
|
5899 |
-
position:absolute;
|
5900 |
Â
display: inline-flex;
|
5901 |
Â
z-index: 1;
|
5902 |
Â
cursor: pointer;
|
5903 |
-
color
|
5904 |
Â
top: 50%;
|
5905 |
Â
transform: translateY(-50%);
|
5906 |
Â
}
|
5907 |
Â
|
5908 |
-
.
|
5909 |
Â
margin-bottom: 5px !important;
|
5910 |
Â
}
|
5911 |
Â
|
5912 |
-
.eae-swiper-outer-wrapper .eae-swiper-slide .eae-background-overlay{
|
5913 |
Â
width: 100%;
|
5914 |
Â
height: 100%;
|
5915 |
Â
/* top: 0;
|
@@ -5965,19 +5994,17 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
5965 |
Â
|
5966 |
Â
/* Chart */
|
5967 |
Â
|
5968 |
-
.eae-chart-outer-container{
|
5969 |
Â
position: relative;
|
5970 |
Â
}
|
5971 |
-
.eae-chart-overlay{
|
5972 |
Â
width: 100%;
|
5973 |
-
height: 100%;
|
5974 |
Â
position: absolute;
|
5975 |
Â
}
|
5976 |
Â
|
5977 |
-
|
5978 |
-
|
5979 |
Â
/* Data Table */
|
5980 |
-
.eae-table{
|
5981 |
Â
width: 100%;
|
5982 |
Â
height: auto;
|
5983 |
Â
margin: 0;
|
@@ -5985,76 +6012,75 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
5985 |
Â
border: none;
|
5986 |
Â
border-collapse: collapse;
|
5987 |
Â
}
|
5988 |
-
.eae-table tr{
|
5989 |
Â
border-style: none;
|
5990 |
Â
}
|
5991 |
-
.eae-table__body_row_column{
|
5992 |
Â
border: none;
|
5993 |
Â
overflow: hidden;
|
5994 |
Â
}
|
5995 |
-
.eae-table__head_column{
|
5996 |
-
transition: all .3s ease-in-out;
|
5997 |
Â
}
|
5998 |
-
.eae-table__body_row_column{
|
5999 |
-
transition: all .3s ease-in-out;
|
6000 |
Â
}
|
6001 |
Â
|
6002 |
Â
/* thead icon */
|
6003 |
-
.eae-head-icon{
|
6004 |
Â
vertical-align: middle;
|
6005 |
Â
}
|
6006 |
-
.eae-table__head-column-wrapper .eae-head-img{
|
6007 |
Â
width: 50px;
|
6008 |
Â
display: inline-block;
|
6009 |
Â
}
|
6010 |
-
.eae-table__head-column-wrapper .eae-lottie-animation svg{
|
6011 |
Â
width: 70px !important;
|
6012 |
Â
line-height: 0;
|
6013 |
Â
}
|
6014 |
-
.eae-head-icon-before{
|
6015 |
Â
margin-right: 5px;
|
6016 |
Â
}
|
6017 |
-
.eae-head-icon-after{
|
6018 |
Â
margin-left: 5px;
|
6019 |
Â
}
|
6020 |
Â
|
6021 |
Â
/* tbody icon */
|
6022 |
-
.eae-table__col-inner{
|
6023 |
Â
display: block;
|
6024 |
Â
}
|
6025 |
-
.eae-body-icon{
|
6026 |
Â
vertical-align: middle;
|
6027 |
Â
}
|
6028 |
-
.eae-table__body-column-wrapper .eae-body-image{
|
6029 |
Â
width: 70px;
|
6030 |
Â
display: inline-block;
|
6031 |
Â
}
|
6032 |
-
.eae-table__body-column-wrapper .eae-table-lottie-animation svg{
|
6033 |
Â
width: 70px !important;
|
6034 |
Â
line-height: 0;
|
6035 |
Â
}
|
6036 |
-
.eae-body-icon-before{
|
6037 |
Â
margin-right: 5px;
|
6038 |
Â
}
|
6039 |
-
.eae-body-icon-after{
|
6040 |
Â
margin-left: 5px;
|
6041 |
Â
}
|
6042 |
-
.eae-table-body__text{
|
6043 |
Â
vertical-align: middle;
|
6044 |
Â
}
|
6045 |
Â
|
6046 |
-
|
6047 |
Â
/* Table Search */
|
6048 |
-
.eae-table .eae-table-search-hide{
|
6049 |
Â
display: none;
|
6050 |
Â
}
|
6051 |
-
.eae-table-search-wrap{
|
6052 |
Â
padding: 0;
|
6053 |
Â
margin: 0;
|
6054 |
Â
margin-bottom: 10px;
|
6055 |
Â
}
|
6056 |
Â
|
6057 |
-
.eae-search-wrap{
|
6058 |
Â
padding: 0;
|
6059 |
Â
margin: 0;
|
6060 |
Â
width: 50%;
|
@@ -6065,7 +6091,7 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
6065 |
Â
align-items: center;
|
6066 |
Â
}
|
6067 |
Â
|
6068 |
-
.eae-table-search-wrap .eae-table-search-field{
|
6069 |
Â
margin: 0;
|
6070 |
Â
padding: 0;
|
6071 |
Â
border: 0;
|
@@ -6073,27 +6099,27 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
6073 |
Â
background-color: #eceeef;
|
6074 |
Â
width: 100%;
|
6075 |
Â
font-size: 15px;
|
6076 |
-
color: #
|
6077 |
Â
padding: 10px;
|
6078 |
-
line-height: 0;
|
6079 |
Â
display: inline-block;
|
6080 |
Â
box-sizing: border-box;
|
6081 |
Â
}
|
6082 |
Â
|
6083 |
-
.eae-table-search-wrap .eae-table-search-field:focus{
|
6084 |
Â
background-color: #eceeef;
|
6085 |
Â
}
|
6086 |
-
::placeholder{
|
6087 |
Â
opacity: 0.5;
|
6088 |
Â
}
|
6089 |
-
.
|
6090 |
Â
background-color: #eceeef;
|
6091 |
Â
padding: 0;
|
6092 |
Â
margin: 0;
|
6093 |
Â
padding: 10px;
|
6094 |
Â
}
|
6095 |
-
.
|
6096 |
-
color: #
|
6097 |
Â
display: flex;
|
6098 |
Â
align-items: center;
|
6099 |
Â
left: 0px;
|
@@ -6101,50 +6127,59 @@ body.rtl .eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:befor
|
|
6101 |
Â
}
|
6102 |
Â
|
6103 |
Â
/* Sorting icon */
|
6104 |
-
.eae-table__sortable .eae-table__sortable-head{
|
6105 |
Â
cursor: pointer;
|
6106 |
Â
}
|
6107 |
Â
|
6108 |
-
.eae-table__head__wrapper{
|
6109 |
Â
display: flex;
|
6110 |
Â
justify-content: center;
|
6111 |
Â
align-items: center;
|
6112 |
Â
}
|
6113 |
Â
|
6114 |
-
|
6115 |
Â
padding: 0;
|
6116 |
Â
margin: 0;
|
6117 |
Â
align-self: center;
|
6118 |
Â
}
|
6119 |
-
.eae-table__head-column-wrapper{
|
6120 |
Â
flex-grow: 3;
|
6121 |
Â
display: inline-block;
|
6122 |
Â
width: 100%;
|
6123 |
Â
}
|
6124 |
-
.eae-icon-sort-icon{
|
6125 |
Â
vertical-align: middle;
|
6126 |
Â
display: inline-block;
|
6127 |
Â
}
|
6128 |
-
.eae-icon{
|
6129 |
Â
padding: 0;
|
6130 |
Â
margin: 0;
|
6131 |
Â
}
|
6132 |
-
.eae-table__head__wrapper .eae-sort-icon .eae-icon{
|
6133 |
Â
font-size: 25px;
|
6134 |
-
}
|
6135 |
Â
|
6136 |
Â
.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-down,
|
6137 |
-
.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-up{
|
6138 |
Â
display: none;
|
6139 |
Â
}
|
6140 |
-
.eae-table__sortable
|
6141 |
-
.eae-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
6142 |
Â
display: none;
|
6143 |
Â
}
|
6144 |
-
.eae-table__sortable
|
6145 |
-
.eae-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
6146 |
Â
display: block;
|
6147 |
Â
}
|
6148 |
-
|
6149 |
-
|
6150 |
-
|
840 |
Â
position: absolute;
|
841 |
Â
z-index: 0;
|
842 |
Â
}
|
843 |
+
body:not(.elementor-editor-active)
|
844 |
+
.eae-particle-wrapper
|
845 |
+
.tsparticles-canvas-el {
|
846 |
+
height: 100%;
|
847 |
+
position: absolute !important;
|
848 |
+
z-index: 0 !important;
|
849 |
+
}
|
850 |
+
body.elementor-editor-active .eae-particle-areas .tsparticles-canvas-el {
|
851 |
+
z-index: 0 !important;
|
852 |
+
height: 100%;
|
853 |
+
width: 100%;
|
854 |
+
position: absolute !important;
|
855 |
+
}
|
856 |
+
/* body.elementor-editor-active .eae-particle-areas {
|
857 |
+
|
858 |
+
} */
|
859 |
Â
|
860 |
Â
/**
|
861 |
Â
BG Slider
|
5149 |
Â
line-height: 1em;
|
5150 |
Â
margin-top: 15px;
|
5151 |
Â
color: #73b9dc;
|
5152 |
+
font-size: 20px;
|
5153 |
Â
}
|
5154 |
Â
.eae-overlay-icon {
|
5155 |
Â
line-height: 1em;
|
5546 |
Â
border-width: 0px !important;
|
5547 |
Â
}
|
5548 |
Â
|
Â
|
|
Â
|
|
5549 |
Â
/*EAE-Content Switch*/
|
5550 |
+
.eae-content-switcher-wrapper {
|
5551 |
Â
display: block;
|
5552 |
Â
text-align: center;
|
5553 |
Â
}
|
5554 |
Â
|
5555 |
+
.eae-cs-layout-skin1 .eae-cs-switch-wrapper {
|
5556 |
+
display: inline-flex;
|
5557 |
+
flex-wrap: wrap;
|
5558 |
Â
padding: 8px 12px;
|
5559 |
+
background: #54595f;
|
5560 |
+
border-radius: 50px;
|
5561 |
Â
}
|
5562 |
Â
|
Â
|
|
5563 |
Â
/*Skin1 Head*/
|
5564 |
+
.eae-cs-switch-container {
|
5565 |
Â
display: block;
|
5566 |
Â
text-align: center;
|
5567 |
Â
}
|
5568 |
+
.eae-cs-layout-skin1 .eae-cs-label-wrapper {
|
5569 |
Â
display: inline-block;
|
5570 |
Â
overflow: hidden;
|
Â
|
|
5571 |
Â
}
|
5572 |
+
.eae-cs-layout-skin1 .eae-content-switch-button {
|
5573 |
Â
border-radius: 50px;
|
5574 |
+
padding: 8px 12px;
|
5575 |
+
background-color: #7a7a7a;
|
5576 |
+
color: #ffffff;
|
5577 |
Â
overflow: hidden;
|
5578 |
+
display: block;
|
5579 |
Â
min-width: 150px;
|
5580 |
+
position: relative;
|
5581 |
+
text-align: center;
|
5582 |
+
margin: 3px;
|
5583 |
Â
}
|
5584 |
+
.eae-cs-layout-skin1 .eae-content-switch-button:before {
|
5585 |
Â
height: 100%;
|
5586 |
Â
top: 0;
|
5587 |
+
left: 0;
|
5588 |
Â
z-index: 0;
|
5589 |
+
content: "";
|
5590 |
Â
width: 0;
|
5591 |
Â
position: absolute;
|
5592 |
Â
right: 0;
|
5593 |
Â
transition: all 300ms ease-out;
|
5594 |
Â
}
|
5595 |
+
.eae-cs-layout-skin1 .eae-content-switch-button.active:before {
|
5596 |
+
width: 100%;
|
5597 |
+
left: 0;
|
5598 |
+
right: auto;
|
5599 |
+
background-color: #61ce70;
|
5600 |
Â
}
|
5601 |
+
.eae-cs-layout-skin1 .eae-content-switch-label {
|
5602 |
Â
position: relative;
|
5603 |
Â
}
|
5604 |
Â
/*COntent Switcher Content CSS
|
5605 |
Â
*/
|
5606 |
+
.eae-cs-content-section {
|
5607 |
+
display: none;
|
5608 |
Â
}
|
5609 |
+
.eae-cs-content-section.active {
|
5610 |
Â
display: block;
|
5611 |
Â
}
|
5612 |
Â
|
5613 |
+
@media only screen and (max-width: 768px) {
|
5614 |
Â
.eae-cs-switch-wrapper {
|
5615 |
Â
display: inline-block !important;
|
Â
|
|
5616 |
Â
}
|
5617 |
Â
}
|
5618 |
Â
|
5619 |
Â
/*SKin 2*/
|
5620 |
+
.eae-cs-layout-skin2 .eae-cs-switch-wrapper {
|
5621 |
Â
display: inline-flex;
|
5622 |
Â
flex-wrap: wrap;
|
5623 |
Â
padding: 0px;
|
5624 |
Â
background: none;
|
5625 |
Â
}
|
5626 |
+
.eae-cs-layout-skin2 .eae-cs-label-wrapper {
|
5627 |
Â
display: inline-block;
|
5628 |
Â
}
|
5629 |
Â
|
5630 |
+
.eae-cs-layout-skin2 .eae-content-switch-button {
|
5631 |
+
width: auto;
|
5632 |
Â
margin: 3px 8px;
|
5633 |
Â
padding: 10px 12px;
|
5634 |
Â
background-color: #e2e2e2;
|
5636 |
Â
display: block;
|
5637 |
Â
position: relative;
|
5638 |
Â
text-align: center;
|
5639 |
+
border-radius: 5px;
|
5640 |
+
border: 1px solid rgba(130, 130, 130, 0.26);
|
5641 |
+
color: rgba(71, 71, 71, 0.44);
|
5642 |
Â
}
|
5643 |
Â
|
5644 |
+
.eae-cs-layout-skin2 .eae-content-switch-button.active {
|
5645 |
+
box-shadow: 0px 10px 34px -9px rgba(0, 0, 0, 0.38);
|
5646 |
+
background-color: white;
|
5647 |
+
color: #575757;
|
5648 |
+
border-color: white;
|
5649 |
Â
}
|
5650 |
+
h5.eae-cs-label {
|
5651 |
+
margin: 0px;
|
5652 |
Â
}
|
5653 |
Â
|
5654 |
Â
/*SKin 3*/
|
5655 |
+
.eae-cs-layout-skin3 .eae-cs-switch-wrapper {
|
5656 |
Â
display: block;
|
5657 |
Â
justify-content: center;
|
5658 |
Â
align-items: center;
|
5659 |
Â
}
|
5660 |
+
.eae-content-switch-label.primary-label {
|
5661 |
+
margin-right: 30px;
|
5662 |
Â
}
|
5663 |
+
.eae-content-switch-label.secondary-label {
|
5664 |
+
margin-left: 30px;
|
5665 |
Â
}
|
5666 |
Â
|
5667 |
+
.eae-cs-layout-skin3 .eae-cs-switch-label {
|
Â
|
|
Â
|
|
5668 |
Â
position: relative;
|
5669 |
Â
display: inline-block;
|
5670 |
Â
width: 4.5em;
|
5672 |
Â
vertical-align: middle;
|
5673 |
Â
}
|
5674 |
Â
|
5675 |
+
.eae-cs-layout-skin3 .eae-content-switch-label {
|
5676 |
+
margin: 0px;
|
5677 |
+
display: inline-block;
|
5678 |
Â
}
|
5679 |
Â
.eae-cs-layout-skin3 .eae-cs-switch-button {
|
5680 |
+
display: inline-block;
|
5681 |
Â
}
|
5682 |
+
.eae-cs-layout-skin3 .eae-cs-label {
|
5683 |
+
display: inline-block;
|
5684 |
Â
}
|
5685 |
+
.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch {
|
5686 |
Â
display: none;
|
5687 |
Â
}
|
5688 |
Â
|
5689 |
+
.eae-cs-layout-skin3
|
5690 |
+
.eae-cs-switch-label
|
5691 |
+
input.eae-content-toggle-switch
|
5692 |
+
+ span {
|
5693 |
Â
position: absolute;
|
5694 |
Â
cursor: pointer;
|
5695 |
Â
top: 0;
|
5696 |
Â
left: 0;
|
5697 |
Â
right: 0;
|
5698 |
Â
bottom: 0;
|
5699 |
+
-webkit-transition: 0.4s;
|
5700 |
+
transition: 0.4s;
|
5701 |
Â
-webkit-border-radius: 1.5em;
|
5702 |
Â
border-radius: 1.5em;
|
5703 |
Â
background: #2e394d;
|
5704 |
Â
border: 2px solid #2e394d;
|
5705 |
Â
}
|
5706 |
+
.eae-cs-layout-skin3
|
5707 |
+
.eae-cs-switch-label
|
5708 |
+
input.eae-content-toggle-switch
|
5709 |
+
+ span:before {
|
5710 |
Â
position: absolute;
|
5711 |
Â
content: "";
|
5712 |
Â
height: 28px;
|
5714 |
Â
left: 4px;
|
5715 |
Â
transform: translateY(-52%);
|
5716 |
Â
top: 50%;
|
5717 |
+
transition: 0.4s;
|
5718 |
+
transition: 0.4s;
|
5719 |
Â
-webkit-border-radius: 50%;
|
5720 |
Â
border-radius: 50%;
|
5721 |
Â
background: #88cf8f;
|
5722 |
Â
border: 2px solid #88cf8f;
|
5723 |
Â
}
|
5724 |
+
body.rtl
|
5725 |
+
.eae-cs-layout-skin3
|
5726 |
+
.eae-cs-switch-label
|
5727 |
+
input.eae-content-toggle-switch
|
5728 |
+
+ span:before {
|
5729 |
+
left: unset;
|
5730 |
+
right: 4px;
|
5731 |
Â
}
|
5732 |
Â
|
5733 |
+
.eae-cs-layout-skin3
|
5734 |
+
.eae-cs-switch-label
|
5735 |
+
input:checked.eae-content-toggle-switch
|
5736 |
+
+ span:before {
|
5737 |
+
transform: translate(36px, -52%);
|
5738 |
Â
}
|
5739 |
+
body.rtl
|
5740 |
+
.eae-cs-layout-skin3
|
5741 |
+
.eae-cs-switch-label
|
5742 |
+
input:checked.eae-content-toggle-switch
|
5743 |
+
+ span:before {
|
5744 |
+
transform: translate(-36px, -52%);
|
5745 |
Â
}
|
5746 |
Â
|
5747 |
+
.eae-content-switch-label.active {
|
5748 |
+
color: #61ce70;
|
Â
|
|
5749 |
Â
}
|
5750 |
Â
|
5751 |
Â
/*Skin 4 Cs*/
|
5752 |
+
.eae-cs-layout-skin4 .eae-cs-switch-wrapper {
|
5753 |
Â
display: block;
|
5754 |
Â
/*justify-content: center;*/
|
5755 |
Â
/*align-items: center;*/
|
5756 |
Â
}
|
5757 |
+
.eae-cs-layout-skin4 .eae-content-switch-label.primary-label {
|
5758 |
+
margin-right: 30px;
|
5759 |
Â
}
|
5760 |
+
.eae-cs-layout-skin4 .eae-content-switch-label.secondary-label {
|
5761 |
+
margin-left: 30px;
|
5762 |
Â
}
|
5763 |
Â
|
5764 |
+
.eae-cs-layout-skin4 .eae-content-switch-label {
|
5765 |
Â
display: inline-block;
|
5766 |
Â
}
|
5767 |
+
.eae-cs-layout-skin4 .eae-cs-switch-label {
|
5768 |
Â
position: relative;
|
5769 |
Â
display: inline-block;
|
5770 |
Â
width: 70px;
|
5771 |
Â
height: 20px;
|
5772 |
Â
vertical-align: middle;
|
5773 |
Â
}
|
5774 |
+
.eae-cs-layout-skin4 .eae-cs-label {
|
5775 |
+
display: inline-block;
|
5776 |
Â
}
|
5777 |
+
.eae-cs-layout-skin4 .eae-content-toggle-switch {
|
5778 |
+
display: none;
|
5779 |
Â
}
|
5780 |
+
.eae-cs-layout-skin4 .eae-content-toggle-switcher {
|
5781 |
Â
position: absolute;
|
5782 |
Â
cursor: pointer;
|
5783 |
Â
top: 0;
|
5784 |
Â
left: 0;
|
5785 |
Â
right: 0;
|
5786 |
Â
bottom: 0;
|
5787 |
+
-webkit-transition: 0.4s;
|
5788 |
+
transition: 0.4s;
|
5789 |
Â
-webkit-border-radius: 1.5em;
|
5790 |
Â
border-radius: 1.5em;
|
5791 |
Â
background: #2e394d;
|
5792 |
Â
border: 2px solid #2e394d;
|
5793 |
Â
}
|
5794 |
+
.eae-cs-layout-skin4 .eae-cs-switch-button {
|
5795 |
+
display: inline-block;
|
5796 |
Â
}
|
5797 |
+
.eae-cs-layout-skin4 .eae-content-toggle-switcher:before {
|
5798 |
Â
position: absolute;
|
5799 |
Â
content: "";
|
5800 |
Â
height: 34px;
|
5801 |
Â
width: 34px;
|
5802 |
Â
left: -12px;
|
5803 |
+
top: 50%;
|
5804 |
Â
transform: translateY(-50%);
|
5805 |
Â
border-radius: 50%;
|
5806 |
+
border: 2px solid #88cf8f;
|
5807 |
Â
background: #88cf8f;
|
5808 |
+
-webkit-transition: 0.4s;
|
5809 |
+
transition: 0.4s;
|
5810 |
+
-webkit-box-shadow: 3px 3px 6px 1px rgba(0, 0, 0, 0.2);
|
5811 |
+
box-shadow: 3px 3px 6px 1px rgba(0, 0, 0, 0.2);
|
5812 |
Â
}
|
5813 |
+
.eae-cs-layout-skin4 .eae-cs-switch-container {
|
5814 |
+
padding: 15px 0px;
|
5815 |
Â
}
|
5816 |
+
body.rtl .eae-cs-layout-skin4 .eae-content-toggle-switcher:before {
|
5817 |
+
right: -12px !important;
|
5818 |
Â
}
|
5819 |
+
.eae-cs-layout-skin4 input:checked + .eae-content-toggle-switcher:before {
|
5820 |
+
transform: translate(55px, -50%);
|
5821 |
Â
}
|
5822 |
Â
|
5823 |
+
body.rtl
|
5824 |
+
.eae-cs-layout-skin4
|
5825 |
+
input:checked
|
5826 |
+
+ .eae-content-toggle-switcher:before {
|
5827 |
+
transform: translate(-55px, -50%);
|
5828 |
Â
}
|
5829 |
Â
|
5830 |
Â
/* Thumb Gallery */
|
5831 |
Â
|
5832 |
+
.eae-swiper-outer-wrapper {
|
5833 |
Â
position: relative;
|
5834 |
Â
}
|
5835 |
+
.eae-swiper-container {
|
5836 |
Â
position: relative;
|
5837 |
Â
}
|
5838 |
+
.eae-thumb-container {
|
5839 |
Â
position: absolute;
|
5840 |
Â
}
|
5841 |
Â
|
5842 |
+
.eae-swiper-outer-wrapper .eae-swiper-slide {
|
5843 |
Â
height: 400px;
|
5844 |
Â
background-size: cover;
|
5845 |
Â
background-repeat: no-repeat;
|
5846 |
+
background-position: right;
|
5847 |
Â
}
|
5848 |
Â
|
5849 |
+
.eae-swiper-outer-wrapper .eae-swiper-slide .eae-slide-inner {
|
5850 |
+
color: #7a7a7a;
|
5851 |
Â
/* color: #000000; */
|
5852 |
Â
display: flex;
|
5853 |
Â
position: absolute;
|
5857 |
Â
right: 0;
|
5858 |
Â
padding: 20px;
|
5859 |
Â
}
|
5860 |
+
.eae-slide-inner .eae-slide-content {
|
5861 |
+
padding: 20px 30px;
|
5862 |
Â
}
|
5863 |
+
.eae-slide-inner .eae-slide-heading {
|
5864 |
Â
font-size: 35px;
|
5865 |
Â
font-weight: bold;
|
5866 |
Â
line-height: 1;
|
5867 |
Â
}
|
5868 |
+
.eae-slide-inner .eae-slide-text {
|
5869 |
Â
font-size: 17px;
|
5870 |
Â
line-height: 1.4;
|
5871 |
Â
}
|
5872 |
Â
|
5873 |
+
.eae-slide-inner .eae-slide-button {
|
5874 |
Â
display: inline-block;
|
5875 |
Â
}
|
5876 |
Â
|
5877 |
+
.eae-slide-inner .eae-slide-btn {
|
5878 |
Â
display: inline-block;
|
5879 |
Â
font-size: 15px;
|
5880 |
Â
padding: 12px 24px;
|
5883 |
Â
transition: all 0.3s;
|
5884 |
Â
}
|
5885 |
Â
|
5886 |
+
.eae-slide-inner .eae-slide-heading:not(:last-child),
|
5887 |
+
.eae-slide-inner .eae-slide-text:not(:last-child) {
|
5888 |
Â
margin-bottom: 30px;
|
5889 |
Â
}
|
5890 |
Â
|
5891 |
+
.eae--hr-position-left .eae-slide-inner {
|
5892 |
Â
-webkit-box-pack: start;
|
5893 |
Â
justify-content: flex-start;
|
5894 |
Â
}
|
5895 |
Â
|
5896 |
+
.eae--hr-position-right .eae-slide-inner {
|
5897 |
Â
-webkit-box-pack: end;
|
5898 |
Â
justify-content: flex-end;
|
5899 |
Â
}
|
5900 |
Â
|
5901 |
+
.eae--hr-position-center .eae-slide-inner {
|
5902 |
Â
-webkit-box-pack: center;
|
5903 |
Â
justify-content: center;
|
5904 |
Â
}
|
5905 |
Â
|
5906 |
+
.eae--vr-position-top .eae-slide-inner {
|
5907 |
Â
-webkit-box-pack: start;
|
5908 |
Â
align-items: flex-start;
|
5909 |
Â
}
|
5910 |
Â
|
5911 |
+
.eae--vr-position-middle .eae-slide-inner {
|
5912 |
Â
-webkit-box-align: center;
|
5913 |
Â
align-items: center;
|
5914 |
Â
}
|
5915 |
Â
|
5916 |
+
.eae--vr-position-bottom .eae-slide-inner {
|
5917 |
Â
-webkit-box-pack: end;
|
5918 |
Â
align-items: flex-end;
|
5919 |
Â
}
|
5920 |
Â
|
5921 |
+
.eae-swiper-button-prev {
|
5922 |
Â
left: 10px;
|
5923 |
Â
}
|
5924 |
+
.eae-swiper-button-next {
|
5925 |
Â
right: 10px;
|
5926 |
Â
}
|
5927 |
+
.eae-swiper-button {
|
5928 |
+
position: absolute;
|
5929 |
Â
display: inline-flex;
|
5930 |
Â
z-index: 1;
|
5931 |
Â
cursor: pointer;
|
5932 |
+
color: #7a7a7a;
|
5933 |
Â
top: 50%;
|
5934 |
Â
transform: translateY(-50%);
|
5935 |
Â
}
|
5936 |
Â
|
5937 |
+
.swiper-pagination-bullet {
|
5938 |
Â
margin-bottom: 5px !important;
|
5939 |
Â
}
|
5940 |
Â
|
5941 |
+
.eae-swiper-outer-wrapper .eae-swiper-slide .eae-background-overlay {
|
5942 |
Â
width: 100%;
|
5943 |
Â
height: 100%;
|
5944 |
Â
/* top: 0;
|
5994 |
Â
|
5995 |
Â
/* Chart */
|
5996 |
Â
|
5997 |
+
.eae-chart-outer-container {
|
5998 |
Â
position: relative;
|
5999 |
Â
}
|
6000 |
+
.eae-chart-overlay {
|
6001 |
Â
width: 100%;
|
6002 |
+
height: 100%;
|
6003 |
Â
position: absolute;
|
6004 |
Â
}
|
6005 |
Â
|
Â
|
|
Â
|
|
6006 |
Â
/* Data Table */
|
6007 |
+
.eae-table {
|
6008 |
Â
width: 100%;
|
6009 |
Â
height: auto;
|
6010 |
Â
margin: 0;
|
6012 |
Â
border: none;
|
6013 |
Â
border-collapse: collapse;
|
6014 |
Â
}
|
6015 |
+
.eae-table tr {
|
6016 |
Â
border-style: none;
|
6017 |
Â
}
|
6018 |
+
.eae-table__body_row_column {
|
6019 |
Â
border: none;
|
6020 |
Â
overflow: hidden;
|
6021 |
Â
}
|
6022 |
+
.eae-table__head_column {
|
6023 |
+
transition: all 0.3s ease-in-out;
|
6024 |
Â
}
|
6025 |
+
.eae-table__body_row_column {
|
6026 |
+
transition: all 0.3s ease-in-out;
|
6027 |
Â
}
|
6028 |
Â
|
6029 |
Â
/* thead icon */
|
6030 |
+
.eae-head-icon {
|
6031 |
Â
vertical-align: middle;
|
6032 |
Â
}
|
6033 |
+
.eae-table__head-column-wrapper .eae-head-img {
|
6034 |
Â
width: 50px;
|
6035 |
Â
display: inline-block;
|
6036 |
Â
}
|
6037 |
+
.eae-table__head-column-wrapper .eae-lottie-animation svg {
|
6038 |
Â
width: 70px !important;
|
6039 |
Â
line-height: 0;
|
6040 |
Â
}
|
6041 |
+
.eae-head-icon-before {
|
6042 |
Â
margin-right: 5px;
|
6043 |
Â
}
|
6044 |
+
.eae-head-icon-after {
|
6045 |
Â
margin-left: 5px;
|
6046 |
Â
}
|
6047 |
Â
|
6048 |
Â
/* tbody icon */
|
6049 |
+
.eae-table__col-inner {
|
6050 |
Â
display: block;
|
6051 |
Â
}
|
6052 |
+
.eae-body-icon {
|
6053 |
Â
vertical-align: middle;
|
6054 |
Â
}
|
6055 |
+
.eae-table__body-column-wrapper .eae-body-image {
|
6056 |
Â
width: 70px;
|
6057 |
Â
display: inline-block;
|
6058 |
Â
}
|
6059 |
+
.eae-table__body-column-wrapper .eae-table-lottie-animation svg {
|
6060 |
Â
width: 70px !important;
|
6061 |
Â
line-height: 0;
|
6062 |
Â
}
|
6063 |
+
.eae-body-icon-before {
|
6064 |
Â
margin-right: 5px;
|
6065 |
Â
}
|
6066 |
+
.eae-body-icon-after {
|
6067 |
Â
margin-left: 5px;
|
6068 |
Â
}
|
6069 |
+
.eae-table-body__text {
|
6070 |
Â
vertical-align: middle;
|
6071 |
Â
}
|
6072 |
Â
|
Â
|
|
6073 |
Â
/* Table Search */
|
6074 |
+
.eae-table .eae-table-search-hide {
|
6075 |
Â
display: none;
|
6076 |
Â
}
|
6077 |
+
.eae-table-search-wrap {
|
6078 |
Â
padding: 0;
|
6079 |
Â
margin: 0;
|
6080 |
Â
margin-bottom: 10px;
|
6081 |
Â
}
|
6082 |
Â
|
6083 |
+
.eae-search-wrap {
|
6084 |
Â
padding: 0;
|
6085 |
Â
margin: 0;
|
6086 |
Â
width: 50%;
|
6091 |
Â
align-items: center;
|
6092 |
Â
}
|
6093 |
Â
|
6094 |
+
.eae-table-search-wrap .eae-table-search-field {
|
6095 |
Â
margin: 0;
|
6096 |
Â
padding: 0;
|
6097 |
Â
border: 0;
|
6099 |
Â
background-color: #eceeef;
|
6100 |
Â
width: 100%;
|
6101 |
Â
font-size: 15px;
|
6102 |
+
color: #7a7a7a;
|
6103 |
Â
padding: 10px;
|
6104 |
+
line-height: 0;
|
6105 |
Â
display: inline-block;
|
6106 |
Â
box-sizing: border-box;
|
6107 |
Â
}
|
6108 |
Â
|
6109 |
+
.eae-table-search-wrap .eae-table-search-field:focus {
|
6110 |
Â
background-color: #eceeef;
|
6111 |
Â
}
|
6112 |
+
::placeholder {
|
6113 |
Â
opacity: 0.5;
|
6114 |
Â
}
|
6115 |
+
.search-icon {
|
6116 |
Â
background-color: #eceeef;
|
6117 |
Â
padding: 0;
|
6118 |
Â
margin: 0;
|
6119 |
Â
padding: 10px;
|
6120 |
Â
}
|
6121 |
+
.search-icon i {
|
6122 |
+
color: #7a7a7a73;
|
6123 |
Â
display: flex;
|
6124 |
Â
align-items: center;
|
6125 |
Â
left: 0px;
|
6127 |
Â
}
|
6128 |
Â
|
6129 |
Â
/* Sorting icon */
|
6130 |
+
.eae-table__sortable .eae-table__sortable-head {
|
6131 |
Â
cursor: pointer;
|
6132 |
Â
}
|
6133 |
Â
|
6134 |
+
.eae-table__head__wrapper {
|
6135 |
Â
display: flex;
|
6136 |
Â
justify-content: center;
|
6137 |
Â
align-items: center;
|
6138 |
Â
}
|
6139 |
Â
|
6140 |
+
.eae-sort-icon {
|
6141 |
Â
padding: 0;
|
6142 |
Â
margin: 0;
|
6143 |
Â
align-self: center;
|
6144 |
Â
}
|
6145 |
+
.eae-table__head-column-wrapper {
|
6146 |
Â
flex-grow: 3;
|
6147 |
Â
display: inline-block;
|
6148 |
Â
width: 100%;
|
6149 |
Â
}
|
6150 |
+
.eae-icon-sort-icon {
|
6151 |
Â
vertical-align: middle;
|
6152 |
Â
display: inline-block;
|
6153 |
Â
}
|
6154 |
+
.eae-icon {
|
6155 |
Â
padding: 0;
|
6156 |
Â
margin: 0;
|
6157 |
Â
}
|
6158 |
+
.eae-table__head__wrapper .eae-sort-icon .eae-icon {
|
6159 |
Â
font-size: 25px;
|
6160 |
+
}
|
6161 |
Â
|
6162 |
Â
.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-down,
|
6163 |
+
.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-up {
|
6164 |
Â
display: none;
|
6165 |
Â
}
|
6166 |
+
.eae-table__sortable
|
6167 |
+
.eae-table__sort-Desc
|
6168 |
+
.eae-table__head__wrapper
|
6169 |
+
.eae-icon-sort-icon,
|
6170 |
+
.eae-table__sortable
|
6171 |
+
.eae-table__sort-Asc
|
6172 |
+
.eae-table__head__wrapper
|
6173 |
+
.eae-icon-sort-icon {
|
6174 |
Â
display: none;
|
6175 |
Â
}
|
6176 |
+
.eae-table__sortable
|
6177 |
+
.eae-table__sort-Desc
|
6178 |
+
.eae-table__head__wrapper
|
6179 |
+
.eae-sort-icon-down,
|
6180 |
+
.eae-table__sortable
|
6181 |
+
.eae-table__sort-Asc
|
6182 |
+
.eae-table__head__wrapper
|
6183 |
+
.eae-sort-icon-up {
|
6184 |
Â
display: block;
|
6185 |
Â
}
|
Â
|
|
Â
|
|
Â
|
assets/css/eae.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.elementor-widget-wts-textseparator .elementor-widget-container{overflow:hidden}.wts-eae-textseparator{align-items:center;display:flex;flex-flow:row nowrap;margin:auto}body.rtl .wts-eae-textseparator{flex-direction:row-reverse}.eae-separator-icon-inner i{height:1em;width:1em;text-align:center;position:relative;display:block}.eae-separator-icon-inner i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.wts-eae-textseparator .eae-sep-holder{flex:1 1 auto;height:1px;min-width:10%;position:relative}.wts-eae-textseparator .eae-sep-holder .eae-sep-lines{border-top-width:1px;display:block;height:1px;position:relative;top:1px;width:100%}.eae-separator-title{margin:0;-moz-box-flex:0;flex:0 1 auto;line-height:1em;margin:0;overflow-wrap:break-word}.sep-align-right .sep-right{display:none}.sep-align-left .sep-left{display:none}.eae-icon-view-stacked i{color:#fff}.eae-icon-view-framed .eae-separator-icon-inner{border:1px solid}.eae-icon-shape-circle .eae-separator-icon-inner{border-radius:50%}.eae-separator-icon-wrapper,.eae-separator-title{margin:0 5px!important}.eae-separator-icon-inner{line-height:1}.wts-price-box-wrapper .eae-pt-heading,.wts-price-box-wrapper .eae-pt-sub-heading{margin:5px 0;text-align:center}.plan-price-shape{display:table;height:6em;margin:auto;width:6em}.eae-pt-price-box-shape-circle .plan-price-shape,.eae-pt-price-box-shape-square .plan-price-shape{border:1px solid}.eae-pt-price-box-shape-circle .plan-price-shape{border-radius:50%}.plan-price-block{padding:10px 0}.plan-price-shape-inner{display:table-cell;vertical-align:middle;padding:10px}.plan-price-shape-inner>span{display:block;font-size:1em;text-align:center}.eae-pt-feature-list{list-style:outside none none;text-align:center;margin:10px 0}.eae-pt-button-wrapper>a{text-align:center;display:inline-block;line-height:1}.eae-pt-button-wrapper{text-align:center}.wts-price-box-wrapper .heading-wrapper,.wts-price-box-wrapper .plan-features-wrapper{padding:10px 5px}.eae-pt-button-wrapper{padding:15px 0}.eae-pt-button-wrapper a{padding:5px 15px;border-radius:3px}.eae-pt-align-icon-right{float:right}.strike-feature{text-decoration:line-through}.eae-flip-box{width:100%;text-align:center}.eae-flip-box-wrapper{display:inline-block;width:100%}.eae-flip-box-inner{width:100%;height:200px;position:relative;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.eae-flip-box-inner .eae-flip-box-back,.eae-flip-box-inner .eae-flip-box-front{width:100%;height:100%;position:absolute;top:0;left:0;text-align:center;padding:10px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .6s ease 0s;-moz-transition:all .6s ease 0s;-ms-transition:all .6s ease 0s;-o-transition:all .6s ease 0s;transition:all .6s ease 0s}.eae-flip-box-front{z-index:2}.eae-flip-box-back{z-index:1}.eae-fb-animate-vertical .eae-flip-box-inner .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateX(0);-ms-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}.eae-fb-animate-vertical .eae-flip-box-inner .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateX(180deg);transform:perspective(1000px) rotateX(180deg);-ms-transform:perspective(1000px) rotateX(180deg)}.eae-fb-animate-vertical .eae-flip-box-inner:hover .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateX(180deg);transform:perspective(1000px) rotateX(180deg);-ms-transform:perspective(1000px) rotateX(180deg)}.eae-fb-animate-vertical .eae-flip-box-inner:hover .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0);-ms-transform:perspective(1000px) rotateX(0)}.eae-fb-animate-horizontal .eae-flip-box-inner .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0);-ms-transform:perspective(1000px) rotateY(0)}.eae-fb-animate-horizontal .eae-flip-box-inner .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateY(180deg);transform:perspective(1000px) rotateY(180deg);-ms-transform:perspective(1000px) rotateY(180deg)}.eae-fb-animate-horizontal .eae-flip-box-inner:hover .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateY(180deg);transform:perspective(1000px) rotateY(180deg);-ms-transform:perspective(1000px) rotateY(180deg)}.eae-fb-animate-horizontal .eae-flip-box-inner:hover .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0);-ms-transform:perspective(1000px) rotateY(0)}.eae-fb-animate-fade .eae-flip-box-inner .eae-flip-box-front{opacity:1}.eae-fb-animate-fade .eae-flip-box-inner .eae-flip-box-back{opacity:0}.eae-fb-animate-fade .eae-flip-box-inner:hover .eae-flip-box-front{opacity:0}.eae-fb-animate-fade .eae-flip-box-inner:hover .eae-flip-box-back{opacity:1}.eae-flip-box-wrapper:focus .eae-flip-box-back,.eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:2}.eae-flip-box-wrapper:focus .eae-flip-box-front,.eae-flip-box-wrapper:hover .eae-flip-box-front{z-index:1}.fade .eae-flip-box-wrapper .eae-flip-box-front{opacity:1;transition:1s}.fade .eae-flip-box-wrapper .eae-flip-box-back{opacity:0;transition:1s}.fade .eae-flip-box-wrapper:focus .eae-flip-box-front,.fade .eae-flip-box-wrapper:hover .eae-flip-box-front{opacity:0}.fade .eae-flip-box-wrapper:focus .eae-flip-box-back,.fade .eae-flip-box-wrapper:hover .eae-flip-box-back{opacity:1}.eae-fb-animate-flip .eae-flip-box-wrapper{perspective:800px}.eae-fb-animate-flip .eae-flip-box-inner{transform-style:preserve-3d;transform:rotateX(0) rotateY(0) rotateZ(0);transition:1s}.eae-fb-animate-flip .eae-flip-box-front{transform:translate3d(0,0,1px)}.eae-fb-animate-flip .eae-flip-box-back{transform:rotateY(180deg) translate3d(0,0,0)}.eae-fb-animate-flip .eae-flip-box-wrapper:focus .eae-flip-box-inner,.eae-fb-animate-flip .eae-flip-box-wrapper:hover .eae-flip-box-inner{transform:rotateY(180deg)}.up .eae-flip-box-front{transform:translate3d(0,0,1px)}.up .eae-flip-box-back{transform:rotateX(180deg) translate3d(0,0,0)}.up .eae-flip-box-wrapper:focus .eae-flip-box-inner,.up .eae-flip-box-wrapper:hover .eae-flip-box-inner{transform:rotateX(180deg)}.box .eae-flip-box-front{transform:translate3d(0,0,100px) scale(.85,.85)}.box .eae-flip-box-back{transform:rotateY(180deg) translate3d(0,0,100px) scale(.85,.85)}.box.up .eae-flip-box-back{transform:rotateX(180deg) translate3d(0,0,100px) scale(.85,.85)}.hideback .eae-flip-box-back,.hideback .eae-flip-box-front{backface-visibility:hidden}.eae-fb-animate-nananana .eae-flip-box-wrapper:focus .eae-flip-box-front,.eae-fb-animate-nananana .eae-flip-box-wrapper:hover .eae-flip-box-front{z-index:10;animation:batman 1s 2 alternate linear}.eae-fb-animate-flipcard .eae-flip-box-back,.eae-fb-animate-flipcard .eae-flip-box-front{transition:transform .4s ease;transform-origin:center center -150px;-webkit-transform-origin:center center -150px}.flipcard-rotate-top-down .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-top-down .eae-flip-box-back{transform:perspective(0) rotateX(90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-top-down .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(-90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-top-down .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-down-top .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-down-top .eae-flip-box-back{transform:perspective(0) rotateX(-90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-down-top .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-down-top .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-left-right .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-left-right .eae-flip-box-back{transform:perspective(0) rotateX(0) rotateY(-90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-left-right .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-left-right .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-right-left .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-right-left .eae-flip-box-back{transform:perspective(0) rotateX(0) rotateY(90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-right-left .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(-90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-right-left .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}@keyframes batman{0%{transform:scale(1,1) rotateZ(0)}100%{transform:scale(0,0) rotateZ(720deg);opacity:0}}.eae-flip-box-back i,.eae-flip-box-front i{font-size:32px;height:1em;width:1em;position:relative;display:block}.eae-flip-box-back i:before,.eae-flip-box-front i:before{position:absolute;left:50%;-webkit-transform:translate(-50%);-moz-transform:translate(-50%);-ms-transform:translate(-50%);-o-transform:translate(-50%);transform:translate(-50%)}.eae-fb-icon-view-framed{border:1px solid #92be43}.eae-fb-icon-shape-circle{border-radius:50%}.eae-flip-box-wrapper .icon-wrapper{display:inline-block;padding:10px;line-height:1}.eae-flip-box-wrapper .back-icon-title,.eae-flip-box-wrapper .front-icon-title{margin:10px auto;color:#fff}.eae-flip-box-wrapper .flipbox-content{display:block;position:relative;top:50%;transform:translateY(-50%);-ms-transform:translateY(-50%)}.flipbox-content p{margin-bottom:10px}.eae-fb-button{display:inline-block;padding:5px 10px}.eae-flip-box-front{background:#a0ce4e}.eae-flip-box-back{background:#73b9dc}@media only screen and (max-width:768px){.eae-flip-box-back,.eae-flip-box-front,.flipbox-content{cursor:pointer;overflow:visible!important;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}}.elementor-widget-wts-shape-separator svg{display:block}.wts-eae-pl-wrapper ul{margin:0}.wts-eae-pl-wrapper ul li{list-style:none;overflow:hidden;margin-bottom:10px}.eae-pl-img-align-none .eae-pl-image-wrapper a{text-align:center}.eae-pl-title{margin:0}.eae-pl-title a{display:block}.eae-pl-readmore a{display:inline-block;border-radius:2px;color:#fff;padding:4px 8px}.eae-at-animation-text-wrapper{display:inline-block;position:relative;text-align:left}.eae-at-animation-text-wrapper .eae-at-animation-text{display:inline-block;position:absolute;white-space:nowrap;left:0;top:0}[data-elementor-device-mode=mobile] .eae-at-animation-text{white-space:normal}.eae-at-animation-text-wrapper .eae-at-animation-text.is-visible{position:relative}.no-js .eae-at-animation-text-wrapper .eae-at-animation-text{opacity:0}.no-js .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible{opacity:1}.eae-animtext-wrapper{font-size:40px}.eae-st-rest-text{display:inline-block}.eae-st-split-text{display:inline-block}body.rtl .eae-st-transform-text-title{display:flex;flex-direction:row-reverse}body.rtl .eae-text-align-left .eae-st-transform-text-title{justify-content:flex-start}body.rtl .eae-text-align-right .eae-st-transform-text-title{justify-content:flex-end}body.rtl .eae-text-align-center .eae-st-transform-text-title{justify-content:center}.eae-at-animation.type .eae-at-animation-text-wrapper{vertical-align:bottom;overflow:hidden}.eae-at-animation.type .eae-at-animation-text-wrapper::after{content:"";position:absolute;right:0;top:50%;bottom:auto;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px}.eae-at-animation.type .eae-at-animation-text-wrapper.waiting::after{-webkit-animation:cd-pulse 1s infinite;-moz-animation:cd-pulse 1s infinite;animation:cd-pulse 1s infinite}.eae-at-animation.type .eae-at-animation-text-wrapper.selected::after{visibility:hidden}.eae-at-animation.type .eae-at-animation-text{visibility:hidden}.eae-at-animation.type .eae-at-animation-text.is-visible{visibility:visible}.eae-at-animation.type i{position:absolute;visibility:hidden}.eae-at-animation.type i.in{position:relative;visibility:visible}@-webkit-keyframes cd-pulse{0%{-webkit-transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);opacity:0}100%{-webkit-transform:translateY(-50%) scale(0);opacity:0}}@-moz-keyframes cd-pulse{0%{-moz-transform:translateY(-50%) scale(1);opacity:1}40%{-moz-transform:translateY(-50%) scale(.9);opacity:0}100%{-moz-transform:translateY(-50%) scale(0);opacity:0}}@keyframes cd-pulse{0%{-webkit-transform:translateY(-50%) scale(1);-moz-transform:translateY(-50%) scale(1);-ms-transform:translateY(-50%) scale(1);-o-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);-moz-transform:translateY(-50%) scale(.9);-ms-transform:translateY(-50%) scale(.9);-o-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}100%{-webkit-transform:translateY(-50%) scale(0);-moz-transform:translateY(-50%) scale(0);-ms-transform:translateY(-50%) scale(0);-o-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.eae-img-comp-container{width:100%;position:relative;text-align:center}.eae-img-comp-container img{vertical-align:middle}.eae-img-comp-img{position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;transform:translateZ(0);backface-visibility:hidden}.eae-img-comp-img img{display:block;max-width:100%;width:100%}.eae-img-comp-slider{position:absolute;z-index:9;width:40px;height:40px;background-color:#2196f3;opacity:1;border-radius:50%}.icon-horizontal{cursor:ew-resize}.icon-vertical{cursor:n-resize}.mode-horizontal .eae-img-comp-overlay img{position:absolute;left:0;top:0;display:block;width:auto;height:100%!important;max-width:none!important}.mode-vertical .eae-img-comp-overlay img{position:absolute;left:0;top:0;display:block;width:100%;height:auto!important;max-width:none!important}.eae-img-comp-slider svg,.eae-slider-icon{top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;color:#fff}.elementor-widget-wts-ab-image{text-align:center}.elementor-widget-wts-ab-image .elementor-widget-container{display:inline-block;margin:0 auto!important;overflow:hidden}.eae-text-before{position:absolute!important;padding:10px;transition:transform .3s .7s,opacity .3s .7s;color:#d36118;z-index:0;background:rgba(255,255,255,.5);margin:20px}.eae-text-after{position:absolute!important;padding:10px;transition:transform .3s .7s,opacity .3s .7s;color:#d36118;z-index:0;background:rgba(255,255,255,.5);margin:20px}.divTest{display:inline-block;background-color:#00a0d2;padding:20px}.eae-particle-wrapper{position:absolute;left:0;top:0}.eae-particle-wrapper.eae-particle-area{width:100%;height:100%}body:not(.elementor-editor-active) .eae-particle-wrapper{width:100%;height:100%}body:not(.elementor-editor-active) .eae-particle-wrapper .particles-js-canvas-el{height:100%;position:absolute;z-index:0}.eae-section-bs{position:absolute;width:100%;height:100%;top:0}.eae-section-bs-inner{width:100%;height:100%!important}.eae-popup.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.eae-popup-link{padding:12px 24px;color:#fff;display:inline-flex;line-height:1}.eae-popup-link svg{fill:#fff}.eae-popup-link:hover{color:#fff}.eae-popup.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.eae-popup .mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.eae-popup .mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.eae-popup .mfp-align-top .mfp-container:before{display:none}.eae-popup .mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.eae-modal-content{padding:20px}.eae-pop-btn-align-left .eae-popup-wrapper{text-align:left}.eae-pop-btn-align-right .eae-popup-wrapper{text-align:right}.eae-pop-btn-align-center .eae-popup-wrapper{text-align:center}.eae-pop-btn-align-justify .eae-popup-wrapper{text-align:center}.eae-pop-btn-align-justify .eae-popup-wrapper a{display:block}.eae-popup .mfp-ajax-holder .mfp-content,.eae-popup .mfp-inline-holder .mfp-content{width:50%;background-color:#fff;cursor:auto;overflow:hidden}.eae-popup .mfp-ajax-cur{cursor:progress}.eae-popup .mfp-zoom-out-cur,.eae-popup .mfp-zoom-out-cur .mfp-image-holder .eae-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.eae-popup .mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.eae-popup.mfp-auto-cursor .mfp-content{cursor:auto}.eae-popup .eae-close,.eae-popup .mfp-arrow,.eae-popup .mfp-counter,.eae-popup .mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.eae-popup .mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.eae-popup .mfp-preloader a{color:#ccc}.eae-popup .mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.eae-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.eae-popup .eae-close{width:28px;height:28px;line-height:1em;position:absolute;right:10px;top:10px;text-decoration:none;text-align:center;opacity:1;color:#fff;font-size:28px;z-index:1500}.eae-close:focus,.eae-close:hover{opacity:1;cursor:pointer}.eae-close:active{top:1px}.eae-close:before{top:50%;left:50%;position:absolute;transform:translate(-50%,-50%)}.eae-popup.eae-close-btn-in .eae-close{color:#fff}.mfp-iframe-holder .eae-close,.mfp-image-holder .eae-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow:after,.mfp-arrow:before{content:"";display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .eae-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.eae-popup .mfp-figure{line-height:0}.eae-popup .mfp-figure:after{content:"";position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.eae-popup .mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.eae-popup .mfp-figure figure{margin:0}.eae-popup .mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.eae-popup .mfp-title{text-align:left;line-height:1;word-wrap:break-word;color:#fff;background-color:#4054b2;padding:20px 20px 20px 20px}.eae-popup .mfp-image-holder .mfp-content{max-width:100%}.eae-popup .mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .eae-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}.elementor-element.eae-animated-gradient-yes,.elementor-element.eae-animated-gradient-yes .animated-gradient{background-size:400% 400%!important;-webkit-animation:AnimateGradient 15s ease-in-out infinite;-moz-animation:AnimateGradient 15s ease-in-out infinite;animation:AnimateGradient 15s ease-in-out infinite}.animated-gradient{position:absolute;top:0;left:0;height:100%;width:100%}@-webkit-keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}@-moz-keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}.eae-swiper-outer-wrapper .swiper-slide{height:auto;overflow:inherit}.eae-swiper-outer-wrapper .swiper-slide-wrapper,.eae-swiper-outer-wrapper .testimonial-wrapper{height:100%}.eae-grid{display:flex;flex-wrap:wrap;flex-direction:row}.eae-masonry- .eae-grid-item{position:relative;height:100%}.eae-masonry- .eae-grid-item .testimonial-wrapper{height:100%}.eae-grid-container{transition:.1s all ease}.eae-grid-container{display:inline-block}.wrapper .content{margin:10px 0}.skin-2.testimonial-wrapper{display:flex;flex-direction:column;background-color:#9c989821;min-height:300px;padding:10px 20px;box-shadow:0 0 5px rgba(0,0,0,.15);color:#696969}.skin-2 .content-wrapper{padding:10px;position:relative;background-color:#fff;border-radius:10px;color:#77778e}.skin-2 i.after-content,.skin-2 i.before-content{position:absolute}.skin-2 i.before-content{top:10px;left:20px}.skin-2 i.after-content{bottom:10px;right:20px}.skin-2 blockquote{position:relative;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-2 blockquote::after,.skin-2 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-2 blockquote::before{top:10px;left:20px}.skin-2 blockquote::after{content:"\201D";right:20px}.skin-2 .image-wrapper{position:relative;max-width:100%;text-align:center}.skin-2 img{width:100px;border-radius:25%}.skin-2 .detail-wrapper{text-align:center}.skin-2 .company,.skin-2 .designation,.skin-2 .rating-wrapper,.skin-2 .title{padding:5px 0}.skin-2 .rating-wrapper{color:navy}.skin-2 .title{font-weight:800;color:#000}.skin-2 blockquote p{margin:10px 0!important}.skin-1.testimonial-wrapper{display:flex;flex-direction:column;background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.15);color:#000}.skin-1 .content-wrapper{order:0}.skin-1 .image-wrapper{order:1;text-align:center;margin:15px 0}.skin-1 .detail-wrapper{order:2}.skin-1 .content-wrapper{padding:10px;position:relative}.skin-1 i.after-content,.skin-1 i.before-content{position:absolute}.skin-1 i.before-content{top:10px;left:20px}.skin-1 i.after-content{bottom:10px;right:20px}.skin-1 blockquote{position:relative;background-color:#fff;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-1 blockquote::after,.skin-1 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-1 blockquote::before{top:10px;left:20px}.skin-1 blockquote::after{content:"\201D";right:20px}.skin-1 .image-wrapper{position:relative;max-width:100%}.skin-1 img{width:100px;height:auto;border-radius:50%}.skin-1 .detail-wrapper{display:flex;flex-direction:row-reverse;justify-content:space-between;padding:10px;background-color:rgba(157,163,156,.18)}.skin-1 .designation,.skin-1 .rating-wrapper,.skin-1 .title{margin:0 5px}.skin-1 .title-wrapper{display:flex;flex-direction:row}.skin-1 .rating-wrapper{color:#fecc1f}.skin-4.testimonial-wrapper{flex-direction:column;display:flex;background-color:#bfbfb6bd;min-height:300px;padding:10px 0;box-shadow:0 0 5px rgba(0,0,0,.15);color:#77778e}.skin-4 .content-wrapper{padding:10px;position:relative}.skin-4 .content-wrapper{order:2;color:#3c3c3c}.skin-4 i.after-content,.skin-4 i.before-content{position:absolute}.skin-4 i.before-content{top:10px;left:20px}.skin-4 i.after-content{bottom:10px;right:20px}.skin-4 blockquote{position:relative;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-4 blockquote::after,.skin-4 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-4 blockquote::before{top:10px;left:20px}.skin-4 blockquote::after{content:"\201D";right:20px}.skin-4 .image-wrapper{position:relative;max-width:100%;text-align:center}.skin-4 img{width:100px;border-radius:50%}.skin-4 .detail-wrapper{text-align:center}.skin-2 .designation,.skin-2 .title,.skin-4 .rating-wrapper{padding:5px 0}.skin-4 .rating-wrapper{color:#690a69}.skin-4 .title{font-weight:800;color:#000}.skin-3.testimonial-wrapper{display:flex;flex-direction:row;background-color:#9c989821;box-shadow:0 0 5px rgba(0,0,0,.15);color:#000;overflow:hidden}.skin-3 .content-section{display:flex;flex-direction:column;align-self:center}.skin-3 .content-wrapper{padding:10px;position:relative}.skin-2 i.after-content,.skin-3 i.before-content{position:absolute}.skin-3 i.before-content{top:10px;left:20px}.skin-3 i.after-content{bottom:10px;right:20px}.skin-3 blockquote{position:relative;font-size:18px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-3 blockquote::after,.skin-3 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-3 blockquote::before{top:10px;left:20px}.skin-3 blockquote::after{content:"\201D";right:20px}.skin-3 .image-wrapper{position:relative;max-width:30%;max-height:250px;text-align:center;align-self:center}.skin-3 img{width:100%}.testimonial-wrapper .skin-3 .eae-person-avatar{border-radius:50%}.skin-3 .detail-wrapper{text-align:left;padding-left:20px}.skin-3 .designation,.skin-3 .rating-wrapper,.skin-3 .title{padding:3px 0}.skin-3 .rating-wrapper{color:#800040}.skin-3 .title{font-weight:800}.eae-swiper-outer-wrapper .swiper-button-prev{-webkit-mask:url(arrow-left.svg) no-repeat 100% 100%;mask:url(arrow-left.svg) no-repeat 100% 100%;-webkit-mask-size:cover;mask-size:cover;background-image:none;background-color:#007aff;transform:translateY(-50%);margin-top:0}.eae-swiper-outer-wrapper .swiper-container-rtl .swiper-button-prev{-webkit-mask:url(arrow-right.svg) no-repeat 100% 100%;mask:url(arrow-right.svg) no-repeat 100% 100%}.eae-swiper-outer-wrapper .swiper-button-next{-webkit-mask:url(arrow-right.svg) no-repeat 100% 100%;mask:url(arrow-right.svg) no-repeat 100% 100%;-webkit-mask-size:cover;mask-size:cover;background-image:none;background-color:#007aff;transform:translateY(-50%);margin-top:0}.eae-swiper-outer-wrapper .swiper-container-rtl .swiper-button-next{-webkit-mask:url(arrow-left.svg) no-repeat 100% 100%;mask:url(arrow-left.svg) no-repeat 100% 100%}.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .swiper-button-next,.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .swiper-button-prev{-webkit-mask:none;mask:none;-webkit-mask-size:unset;mask-size:unset;background-image:none;background-color:unset;width:auto;height:auto;transform:translateY(-50%);margin-top:0}.swiper-container .swiper-button-next i,.swiper-container .swiper-button-prev i{width:1em;height:1em;text-align:center;position:relative}.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .eae-swiper-button-wrapper{position:absolute;height:auto;line-height:0}.eae-hpos-right.eae-vpos-top .eae-swiper-button-wrapper{bottom:auto;top:0;width:auto;right:0}.eae-vpos-top.eae-hpos-left .eae-swiper-button-wrapper{bottom:auto;top:0;width:auto;left:0}.eeae-hpos-right.eae-vpos-bottom .eae-swiper-button-wrapper{bottom:0;top:auto;width:auto;right:0}.eae-vpos-bottom.eae-hpos-left .eae-swiper-button-wrapper{bottom:0;top:auto;width:auto;left:0}.eae-hpos-right.eae-vpos-middle .eae-swiper-button-wrapper{bottom:auto;top:50%;width:auto;right:0}.eae-hpos-left.eae-vpos-middle .eae-swiper-button-wrapper{bottom:auto;top:50%;width:auto;left:0}.eae-hpos-left .swiper-button-next,.eae-hpos-left .swiper-button-prev,.eae-hpos-right .swiper-button-next,.eae-hpos-right .swiper-button-prev{position:relative;display:inline-block;right:auto;left:auto}.eae-hpos-right.eae-vpos-bottom .swiper-button-next,.eae-hpos-right.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-right.eae-vpos-top .swiper-button-next,.eae-hpos-right.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}.eae-hpos-left.eae-vpos-top .swiper-button-next,.eae-hpos-left.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}.eae-hpos-left.eae-vpos-bottom .swiper-button-next,.eae-hpos-left.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-center.eae-vpos-bottom .swiper-button-next,.eae-hpos-center.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-center.eae-vpos-top .swiper-button-next,.eae-hpos-center.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.eae-info-circle{position:relative;width:90%;margin:0 auto;border-radius:50%;display:block}.eae-info-circle:before{content:"";display:block;position:absolute;top:4%;left:4%;width:92%;height:92%;border-radius:50%;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;pointer-events:none}.eae-info-circle:after{content:"";display:block;padding-top:100%}.eae-info-circle .eae-ic-icon-wrap{position:absolute;display:inline-block;top:50%;left:50%;z-index:2;line-height:1em;vertical-align:middle;overflow:hidden;max-width:100%}.eae-info-circle .eae-info-circle-item{top:0;left:0;width:100%;height:100%;display:block}.eae-info-circle .eae-info-circle-item.eae-active .eae-info-circle-item__content-wrap{visibility:visible;opacity:1;display:flex}.eae-info-circle .eae-info-circle-item__content-wrap{visibility:visible;display:none;height:91%;width:91%;opacity:0;top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;border-radius:50%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.eae-info-circle .eae-info-circle-item__content-wrap:before{content:"";display:inline-block;height:100%;vertical-align:middle}.eae-info-circle .eae-info-circle-item__content{display:inline-block;top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;vertical-align:middle;z-index:1;max-height:100%;overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-align:center;width:75%}@media screen and (max-width:767px){.eae-info-circle.eae-info-circle .eae-info-circle-item__content-wrap:before{display:none}.eae-info-circle:after,.eae-info-circle:before{display:none}.eae-info-circle{width:100%!important}.eae-info-circle-wrapper:after,.eae-info-circle-wrapper:before{display:none}.eae-info-circle .eae-ic-icon-wrap{display:block;text-align:center;position:relative!important;left:unset!important;margin-left:0!important;margin-top:0!important;margin-bottom:10px}.eae-info-circle-item{position:relative!important;border-radius:0!important;padding:0;margin:10px 0}.eae-info-circle .eae-info-circle-item__content-wrap{visibility:visible;opacity:1!important;display:flex!important;border-radius:0!important;border:none!important;margin:0!important;padding-right:0!important;padding-left:0!important;padding-bottom:0!important;width:100%;height:auto;line-height:1.5em;position:relative;top:unset;left:unset;transform:unset}.eae-info-circle .eae-info-circle-item__content{position:relative;top:unset;left:unset;transform:unset;width:100%;padding:10px}}.eae-icon-wrap i{height:1.25em;width:1.25em;line-height:1.25em;display:block}.eae-icon-wrap i img{top:50%;left:50%;transform:translateX(-50%) translateY(-50%);position:absolute}.eae-icon{display:inline-block;text-align:center;vertical-align:middle;max-width:100%;overflow:hidden;padding:10px}.eae-icon-shape-circle:not(.elementor-element){border-radius:50%}.eae-icon-view-framed:not(.elementor-element){border-width:1px;border-style:solid}.eae-icon-wrapper{display:flex}.eae-icon-wrapper .eae-icon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1}.eae-timeline{position:relative;display:inline-block;width:100%}.eae-timline-progress-bar{width:4px;background-color:#f45b69;top:0;bottom:50px;position:absolute;transform:translateX(-50%)}.eae-timeline-item{position:relative;display:flex;flex-direction:row;padding-bottom:50px}.eae-timeline-item:last-child{padding-bottom:0!important}.eae-tl-top .eae-timeline-item{align-items:flex-start}.eae-tl-top .eae-tl-item-content::before{top:10px}.eae-timeline-item.image-position-row .eae-tl-item-image,.eae-timeline-item.image-position-row-reverse .eae-tl-item-image{margin-top:0;margin-bottom:0}.eae-tl-item-meta-wrapper-inner{display:none}.eae-tl-bottom .eae-timeline-item{align-items:flex-end}.eae-tl-bottom .eae-tl-item-content::before{bottom:10px}.eae-tl-center .eae-timeline-item{align-items:center}.eae-tl-center .eae-tl-item-content::before{bottom:calc(50% - 5px)}.eae-layout-center .eae-timline-progress-bar{left:50%}.eae-layout-center .eae-timeline-item:nth-child(odd){flex-direction:row-reverse}.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-meta-wrapper{margin-right:0;margin-left:0;justify-content:flex-start}body.rtl[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper,body:not(.rtl)[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper{padding-right:20px;padding-left:0}body.rtl[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper,body:not(.rtl)[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper{padding-right:0;padding-left:20px}body:not(.rtl) .eae-layout-left .eae-tl-content-wrapper{padding-right:10px;padding-left:20px}body.rtl .eae-layout-left .eae-tl-content-wrapper{padding-right:20px;padding-left:10px}.eae-layout-left .eae-timline-progress-bar{display:none}.eae-layout-left .eae-tl-item-meta-wrapper{display:none}.eae-layout-left .eae-tl-item-meta-wrapper-inner{display:block}.eae-layout-right .eae-timline-progress-bar{display:none}body:not(.rtl) .eae-layout-right .eae-tl-content-wrapper{padding-right:20px;padding-left:10px}body.rtl .eae-layout-right .eae-tl-content-wrapper{padding-right:10px;padding-left:20px}.eae-layout-right .eae-tl-icon-wrapper{order:3}.eae-layout-right .eae-tl-item-meta-wrapper{display:none}.eae-layout-right .eae-tl-item-meta-wrapper-inner{display:block}.eae-tl-item-meta-wrapper{flex-grow:1;order:0;flex-basis:50%;flex-direction:initial;justify-content:flex-end;display:flex;align-items:center;margin-right:0}.eae-tl-item-meta{padding:0 20px}.eae-tl-icon-wrapper{height:auto;width:auto;flex-grow:0;flex-shrink:0;order:1;margin-left:0;margin-right:0;min-width:10px;min-height:10px;border-radius:999px;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.eae-tl-content-wrapper{flex-grow:1;order:2;flex-basis:50%;position:relative;padding-right:0;padding-left:20px}.eae-tl-item-content{background:#f4f4f4;padding:25px;overflow:hidden;text-align:center;display:flex;flex-direction:row}.eae-tl-content{display:inline-block;position:relative;padding:10px;width:100%;color:#000}.eae-timeline-item.custom-image-style-yes.image-position-row .eae-content-inner,.eae-timeline-item.custom-image-style-yes.image-position-row-reverse .eae-content-inner,.image-position-row .eae-timeline .eae-timeline-item:not(.custom-image-style-yes) .eae-content-inner,.image-position-row-reverse .eae-timeline .eae-timeline-item:not(.custom-image-style-yes) .eae-content-inner{position:relative;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1;width:100%}.custom-image-style-.image-position-row .eae-content-inner,.custom-image-style-.image-position-row-reverse .eae-content-inner,.custom-image-style-no.image-position-row .eae-content-inner,.custom-image-style-no.image-position-row-reverse .eae-content-inner{left:unset;top:unset;transform:unset}.eae-tl-item-image{display:inline-block}.image-position-row .eae-tl-item-image img,.image-position-row-reverse .eae-tl-item-image img{object-fit:cover;height:100%!important}.image-position-row .eae-tl-item-image,.image-position-row-reverse .eae-tl-item-image{margin:0}.image-position-column .eae-tl-item-image{margin:auto}.custom-image-style-.image-position-column .eae-tl-item-image,.custom-image-style-no.image-position-column .eae-tl-item-image{margin:0 auto}.eae-pb-inner-line{width:100%;background-color:#3d5ac3}.eae-tl-item-content::before{content:"";position:absolute;width:0;height:0;border-style:solid;border-width:8px 16px 8px 0;border-color:transparent #f4f4f4 transparent transparent}.eae-icon-wrapper{display:flex}.elementor-widget-bpel-timeline .eae-icon-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1}.eae-tl-read-more{display:inline-block;padding:5px;border:2px solid #000}.image-position-row .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row-reverse!important}.image-position-row-reverse .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row!important}@media screen and (min-width:1024px){.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper,body.rtl .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper{padding-right:20px;padding-left:0}.eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper,body.rtl .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper{padding-right:0;padding-left:20px}.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,.eae-layout-right .eae-tl-item-content::before,body.rtl .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-tl-item-content::before{right:4px;left:unset;border-width:8px 0 8px 16px;border-color:transparent transparent transparent #f4f4f4}.eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,.eae-layout-left .eae-tl-item-content::before,body.rtl .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-tl-item-content::before{left:4px;right:unset;border-width:8px 16px 8px 0;border-color:transparent #f4f4f4 transparent transparent}}@media screen and (max-width:1023px) and (min-width:768px){.image-position-row .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row-reverse!important}.image-position-row-reverse .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row!important}.eae-tl-res-style-mobile-tablet .eae-tl-item-meta-wrapper{display:none}.eae-tl-res-style-mobile-tablet .eae-tl-item-meta-wrapper-inner{display:block}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item{flex-direction:row!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item{flex-direction:row-reverse!important}.eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,.eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body.rtl .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-tl-item-content::before{left:4px!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before{left:4px!important;right:unset!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}.eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body:not(.rtl) .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before{right:4px!important;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper{padding-right:0!important;padding-left:20px!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper{padding-right:20px!important;padding-left:0!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar{left:13px}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar{left:calc(100% - 13px)}}@media screen and (max-width:767px){.eae-tl-item-meta-wrapper{display:none}.eae-tl-item-meta-wrapper-inner{display:block}.elementor-widget-bpel-timeline:not(.image-position-column) .eae-timeline .eae-tl-item-content{flex-direction:column-reverse!important}.eae-tl-item-image,.elementor-widget-bpel-timeline:not(.image-position-column) .eae-tl-content{width:100%!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item,.eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item{flex-direction:row!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item,.eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item{flex-direction:row-reverse!important}.eae-timeline.eae-layout-center.eae-tl-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,.eae-timeline.eae-layout-center.eae-tl-center.eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-timeline.eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before{left:4px!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}body.rtl .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before{right:4px!important;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}.eae-timeline.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper body.rtl .eae-timeline.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper{padding-right:0!important;padding-left:20px!important}body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper{padding-right:20px!important;padding-left:0!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar,.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar{left:13px}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar,.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar{left:calc(100% - 13px)}body.rtl .eae-layout-center.eae-timeline.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper .eae-tl-item-content::before{left:4px;right:unset}body.rtl .eae-layout-center.eae-timeline.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper .eae-tl-item-content::before{left:unset;right:4px;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}}[data-element_type="eae-evergreen-timer.skin1"] .eae-evergreen-wrapper{display:block;text-align:center}[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv{font-family:sans-serif;color:#fff;display:inline-block;font-weight:100;text-align:center;font-size:30px}[data-element_type="eae-evergreen-timer.skin1"] .eae-time-wrapper{padding:10px;border-radius:3px;background:#00bf96;display:inline-block;overflow:hidden}[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv div>span{padding:15px;width:100%;background:#00816a;display:inline-block}[data-element_type="eae-evergreen-timer.skin1"] .smalltext{padding:7px;font-size:16px}[data-element_type="eae-evergreen-timer.skin1"] .eae-egt-hide{display:none}.eae-egt-message{display:none}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv div>span{padding:5px}[data-element_type="eae-evergreen-timer.skin1"] .eae-time-wrapper{padding:5px}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden}[data-element_type="eae-evergreen-timer.skin2"] .eae-evergreen-wrapper{display:inline-block;width:100%;text-align:center;margin:auto}[data-element_type="eae-evergreen-timer.skin2"] .timer-container{display:inline-block}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper a{cursor:pointer;text-decoration:none;color:#ccc}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper a:hover{color:#fff}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{list-style:none}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:after,[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:before{content:" ";display:table}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:after{clear:both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper{font:normal 11px "Helvetica Neue",Helvetica,sans-serif;-webkit-user-select:none}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-meridium{background:0 0!important;box-shadow:0 0 0!important;font-size:36px!important}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-meridium a{color:#313333}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper{text-align:center;position:relative;width:100%;margin:1em}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:after,[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:before{content:" ";display:table}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:after{clear:both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{position:relative;float:left;margin:5px;width:60px;height:90px;font-size:80px;font-weight:700;line-height:87px;border-radius:6px;background:#000}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li{z-index:1;position:absolute;left:0;top:0;width:100%;height:100%;line-height:87px;text-decoration:none!important}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li:first-child{z-index:2}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a{display:block;height:100%;-webkit-perspective:200px;-moz-perspective:200px;perspective:200px;margin:0!important;overflow:visible!important;cursor:default!important}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div{z-index:1;position:absolute;left:0;width:100%;height:50%;font-size:80px;overflow:hidden;outline:1px solid transparent}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div .shadow{position:absolute;width:100%;height:100%;z-index:2}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%;top:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up:after{content:"";position:absolute;top:44px;left:0;z-index:5;width:100%;height:3px;background-color:#000;background-color:rgba(0,0,0,.4)}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.down{-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;-o-transform-origin:50% 0;transform-origin:50% 0;bottom:0;border-bottom-left-radius:6px;border-bottom-right-radius:6px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div div.inn{position:absolute;left:0;z-index:1;width:100%;height:200%;color:#ccc;text-shadow:0 1px 2px #000;text-align:center;background-color:#333;border-radius:6px;font-size:70px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up div.inn{top:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.down div.inn{bottom:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before{z-index:3}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper .flip{box-shadow:0 2px 5px rgba(0,0,0,.7)}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active{-webkit-animation:asd 10ms .49s linear both;-moz-animation:asd 10ms .49s linear both;animation:asd 10ms .49s linear both;z-index:5}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{float:left;display:inline-block;position:relative;width:20px;height:100px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider:first-child{width:0}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot{display:block;background:#323434;width:10px;height:10px;position:absolute;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);left:5px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider .flip-clock-label{position:absolute;top:-1.5em;right:-86px;color:#000;text-shadow:none}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.minutes .flip-clock-label{right:-88px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.seconds .flip-clock-label{right:-91px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot.top{top:30%}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot.bottom{bottom:30%}@-webkit-keyframes asd{0%{z-index:2}100%{z-index:4}}@-moz-keyframes asd{0%{z-index:2}100%{z-index:4}}@-o-keyframes asd{0%{z-index:2}100%{z-index:4}}@keyframes asd{0%{z-index:2}100%{z-index:4}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .down{z-index:2;-webkit-animation:turn .5s .5s linear both;-moz-animation:turn .5s .5s linear both;animation:turn .5s .5s linear both}@-webkit-keyframes turn{0%{-webkit-transform:rotateX(90deg)}100%{-webkit-transform:rotateX(0)}}@-moz-keyframes turn{0%{-moz-transform:rotateX(90deg)}100%{-moz-transform:rotateX(0)}}@-o-keyframes turn{0%{-o-transform:rotateX(90deg)}100%{-o-transform:rotateX(0)}}@keyframes turn{0%{transform:rotateX(90deg)}100%{transform:rotateX(0)}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .up{z-index:2;-webkit-animation:turn2 .5s linear both;-moz-animation:turn2 .5s linear both;animation:turn2 .5s linear both}@-webkit-keyframes turn2{0%{-webkit-transform:rotateX(0)}100%{-webkit-transform:rotateX(-90deg)}}@-moz-keyframes turn2{0%{-moz-transform:rotateX(0)}100%{-moz-transform:rotateX(-90deg)}}@-o-keyframes turn2{0%{-o-transform:rotateX(0)}100%{-o-transform:rotateX(-90deg)}}@keyframes turn2{0%{transform:rotateX(0)}100%{transform:rotateX(-90deg)}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li.flip-clock-active{z-index:3}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,#000));background:linear,top,rgba(0,0,0,.1) 0,#000 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,#000 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,#000));background:linear,top,rgba(0,0,0,.1) 0,#000 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,#000 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .3s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .down .shadow{background:-moz-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#000),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,#000 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,#000 0,rgba(0,0,0,.1) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .down .shadow{background:-moz-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#000),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,#000 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,#000 0,rgba(0,0,0,.1) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .2s linear both}@-webkit-keyframes show{0%{opacity:0}100%{opacity:1}}@-moz-keyframes show{0%{opacity:0}100%{opacity:1}}@-o-keyframes show{0%{opacity:0}100%{opacity:1}}@keyframes show{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes hide{0%{opacity:1}100%{opacity:0}}@-moz-keyframes hide{0%{opacity:1}100%{opacity:0}}@-o-keyframes hide{0%{opacity:1}100%{opacity:0}}@keyframes hide{0%{opacity:1}100%{opacity:0}}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{width:15px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot{height:5px;width:5px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{height:40px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{height:50px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li{line-height:37px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div div.inn{font-size:24px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{margin:2px}}[data-element_type="eae-evergreen-timer.skin3"] #timer{font-family:sans-serif;color:#fff;display:inline-block;font-weight:100;text-align:center;font-size:30px}[data-element_type="eae-evergreen-timer.skin3"] .desc{display:flex;justify-content:center}[data-element_type="eae-evergreen-timer.skin3"].eae-egt-content-align-right .desc{justify-content:flex-end}[data-element_type="eae-evergreen-timer.skin3"].eae-egt-content-align-left .desc{justify-content:flex-start}[data-element_type="eae-evergreen-timer.skin3"] .desc .egt-time-text{display:inline-block;padding:0 50px 0 50px}[data-element_type="eae-evergreen-timer.skin3"] .eae-time-wrapper{padding:50px;border-radius:3px;background:#00bf96;display:inline-block;overflow:hidden;margin:5px;line-height:1em}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(1){background:khaki}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(2){background:#cd5c5c}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(3){background:#5f9ea0}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(4){background:#6495ed}[data-element_type="eae-evergreen-timer.skin3"] .fade{animation:flip .7s ease forwards}@keyframes flip{0%{transform:rotateY(0) scaleY(1.1);opacity:.5}50%{transform:rotateY(180deg) scaleY(1.3);opacity:0}100%{transform:rotateY(0);opacity:1}}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin3"] #timer span{font-size:22px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider .flip-clock-label{top:-1.5em;right:-42px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.minutes .flip-clock-label{right:-48px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.seconds .flip-clock-label{right:-51px}}[data-element_type="eae-evergreen-timer.skin4"] .eae-evergreen-wrapper{width:100%}[data-element_type="eae-evergreen-timer.skin4"] .container{margin:0 auto}[data-element_type="eae-evergreen-timer.skin4"] .special{position:relative;width:840px;height:47px}[data-element_type="eae-evergreen-timer.skin4"] #counter{position:absolute;z-index:4000}[data-element_type="eae-evergreen-timer.skin4"] .digit-separator{position:relative;float:left;width:17px;height:44px;overflow:hidden;background-image:url(../digit-sep-svg.svg);background-repeat:no-repeat;background-position:0 0;background-color:#4054b2}[data-element_type="eae-evergreen-timer.skin4"] .digit{background-image:url(../digits-svg-alpha.svg);background-color:#4054b2}.eae-ct-wrapper *{box-sizing:border-box;margin:0;outline:0}article.eae-ct-wrapper{width:100%;max-width:1000px;margin:0 auto;position:relative}.eae-ct-wrapper tbody tr.eae-ct-header td,.eae-ct-wrapper th{position:relative}.eae-ct-wrapper ul{display:none;top:0;z-index:10;padding-bottom:14px}.eae-ct-wrapper li{list-style:none;flex:1;position:relative}.eae-ct-wrapper li:hover{cursor:pointer}.eae-ct-wrapper .eae-ct-heading{width:100%;padding:10px;background:#fff;font-size:20px;font-weight:700;height:60px;color:#999;text-align:center}.eae-ct-wrapper li.eae-ct-heading .eae-ct-heading-inner{position:absolute;align-self:center;top:50%;left:50%;transform:translate(-50%,-50%);width:100%}.eae-ct-wrapper li.eae-ct-heading.active{background:#f5f5f5}.eae-ct-wrapper table{border-collapse:collapse;table-layout:fixed;width:100%}.eae-ct-wrapper th{background:#f5f5f5;display:none}.eae-ct-wrapper td,.eae-ct-wrapper th{height:53px;vertical-align:middle}.eae-ct-wrapper table{border:none}.eae-ct-wrapper table td,.eae-ct-wrapper table th{border:none}.eae-ct-wrapper table tr td:first-child,.eae-ct-wrapper table tr td:last-child,.eae-ct-wrapper td,.eae-ct-wrapper th{padding:10px;empty-cells:show}.eae-ct-wrapper td,.eae-ct-wrapper th{text-align:center}.eae-ct-wrapper td+td,.eae-ct-wrapper th+th{text-align:center}.eae-ct-wrapper tr:first-child{background:0 0!important}.eae-ct-wrapper ul li:nth-child(1){display:table-cell}.eae-ct-wrapper tr td:nth-child(2){display:table-cell}.eae-ct-wrapper td:nth-child(1){display:table-cell}.eae-ct-wrapper td{display:none}.eae-ct-wrapper .sep{background:#f5f5f5;font-weight:700}.eae-ct-price-wrapper{display:flex;justify-content:center}.eae-ct-tt-type-icon .eae-ct-feature .tooltip{float:right}.eae-ct-wrapper .tooltiptext::before{content:"";border-width:5px 5px 0 5px;border-color:#fff;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent;bottom:-10px;width:0;height:0;border-style:solid;position:absolute;margin:5px;left:42%}.eae-ct-wrapper .eae-ct-price{font-size:28px;font-weight:700;line-height:1em}.eae-ct-wrapper .eae-ct-currency{align-self:flex-start;margin-right:3px}.eae-ct-wrapper .eae-ct-fractional-price{align-self:flex-start;margin-left:3px}.eae-ct-wrapper .eae-ct-duration{align-self:flex-start}.eae-ct-wrapper .eae-ct-original-price{margin-right:5px;text-decoration:line-through;align-self:flex-end}.eae-ct-wrapper .tick{font-size:18px;color:#2ca01c}.feature-heading-blank.eae-ct-wrapper .hide{border:unset!important;background:unset!important}.eae-ct-wrapper .hide.eae-ct-hide.eae-fbox-heading{border:0 solid #000}.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{position:absolute;top:0;width:100px;overflow:hidden;height:100px;z-index:998;padding:8px 12px}.eae-ct-ribbons-h-top.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{position:absolute;top:0;width:100%;overflow:hidden;height:50px;z-index:999;padding:8px 12px}.eae-ct-ribbons-h-top.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper-top{background-color:rgba(63,195,135,.8);color:#fff;transform:translateY(-100%);position:absolute;width:100%;top:0;left:0}.eae-ct-ribbons-h-left.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.eae-ct-ribbons-h-right.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(90deg);left:auto;right:0}.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper span.eae-ct-ribbons-inner{position:absolute;text-align:center;left:0;top:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:rgba(63,195,135,.8);padding:8px 12px;color:#fff}.eae-ct-wrapper .tooltip{position:relative;display:inline-block}.eae-ct-wrapper .tooltip .tooltiptext{visibility:hidden;min-width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1;bottom:120%;left:50%;margin-left:-60px}.eae-ct-wrapper .tooltip:hover .tooltiptext{visibility:visible}.eae-ct-heading-tooltip{text-decoration-line:underline;text-decoration-style:dotted}.eae-ct-btn{padding:10px 15px 10px 15px;color:#fff;display:inline-block;line-height:1em}.eae-ct-btn:hover{color:#fff}.eae-ct-wrapper i.fa.fa-check,.eae-ct-wrapper i.fas.fa-check{color:#38f146}.eae-ct-wrapper i.fa.fa-close,.eae-ct-wrapper i.fas.fa-times{color:red}.button-heading-blank.eae-ct-wrapper tr:last-child td:first-child{background:0 0!important;border:none!important}.eae-ct-wrapper tr:last-child{background:0 0!important}.eae-ct-wrapper tbody tr:nth-child(2){background:0 0!important}@media (min-width:767px){.eae-ct-wrapper .eae-ct-header,.eae-ct-wrapper td{width:330px}.eae-ct-wrapper td+td,.eae-ct-wrapper th+th{width:auto}}.eae-tab-format-all .eae-ct-wrapper ul{display:flex}.hide.eae-ct-hide{display:table-cell}@media (min-width:1023px){.eae-tab-format-all tbody tr.eae-ct-header{display:none}.eae-tab-format-mobile .eae-ct-wrapper td,.eae-tab-format-mobile .eae-ct-wrapper th,.eae-tab-format-tab-mob .eae-ct-wrapper td,.eae-tab-format-tab-mob .eae-ct-wrapper th{display:table-cell!important}.eae-tab-format-all .hide.eae-ct-hide{display:table-cell}.eae-tab-format-mobile .hide.eae-ct-hide,.eae-tab-format-tab-mob .hide.eae-ct-hide{display:none!important}}@media (max-width:1023px){.eae-tab-format-tab-mob .eae-ct-wrapper ul{display:flex}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-tab-mob tbody tr.eae-ct-header{display:none}.eae-tab-format-all .hide.eae-ct-hide{display:table-cell}.eae-tab-format-tab-mob .hide.eae-ct-hide{display:table-cell}}@media (max-width:1023px) and (min-width:768px){.eae-tab-format-mobile .eae-ct-wrapper td,.eae-tab-format-mobile .eae-ct-wrapper th{display:table-cell!important}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-tab-mob tbody tr.eae-ct-header{display:none}.eae-tab-format-tab-mob .hide.eae-ct-hide{display:table-cell}}@media (max-width:767px){.eae-tab-format-mobile .eae-ct-wrapper ul{display:flex}.eae-tab-format-mobile tbody tr.eae-ct-header{display:none}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-mobile tbody tr.eae-ct-header{display:none}.eae-tab-format-mobile .hide.eae-ct-hide{display:table-cell}}.eae-progress-bar-wrapper{display:flex;flex-direction:column;align-items:flex-start;margin:15px 0}.eae-progress-bar-wrapper.eae-progress-bar{width:100%;position:relative;box-sizing:border-box}.eae-pb-bar,.eae-pb-bar-inner,.eae-pb-bar-skill,.eae-pb-bar-value{box-sizing:border-box}.eae-pb-bar{position:relative;height:100%;width:100%;overflow:hidden}.eae-pb-bar--no-overflow{overflow:visible}.eae-pb-bar-inner{position:absolute;top:0;left:0;height:100%;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left center;transform-origin:left center}body.rtl .eae-pb-bar .eae-pb-bar-inner{position:absolute;top:0;right:0!important;height:100%;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:right center;transform-origin:right center}.eae-pb-bar-inner.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}body.rtl .eae-pb-bar .eae-pb-bar-inner.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-pb-bar-skill,.eae-pb-bar-value{font-size:14px;letter-spacing:1px}body:not(.rtl) .eae-pb-bar-value--aligned-value{-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.rtl .eae-pb-bar-value--aligned-value{-webkit-transform:translateX(50%);transform:translateX(50%)}.eae-progress-bar-skin1{height:20px;padding:4px;border:1px solid #ddd;border-radius:20px}.eae-pb-bar-skin1{border-radius:20px}.eae-pb-bar-inner-skin1{background-color:#00bfb3;background-size:200%;background-position:0 0;border-radius:20px}.eae-pb-bar-skill-skin1{position:absolute;bottom:20px;left:0;opacity:0}body.rtl .eae-pb-bar-skill-skin1{right:0}.eae-pb-bar-skill-skin1.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;left:0;opacity:1}body.rtl .eae-pb-bar-skill-skin1.js-animated{right:0!important}.eae-pb-bar-value-skin1{position:absolute;bottom:20px;opacity:1}body:not(.rtl) .eae-pb-bar-value-skin1{right:0}body.rtl .eae-pb-bar-value-skin1{left:0!important}.eae-pb-bar-value-skin1.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-value-skin1.js-animated{right:0}.eae-progress-bar-skin2{height:15px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2);border-radius:3px}@-webkit-keyframes progress-2-bg-animation-rtl{100%{background-position:0 0,0 0}0%{background-position:0 0,42px 0}}@keyframes progress-2-bg-animation-rtl{100%{background-position:0 0,0 0}0%{background-position:0 0,42px 0}}@-webkit-keyframes progress-2-bg-animation{0%{background-position:0 0,0 0}1000%{background-position:0 0,42px 0}}@keyframes progress-2-bg-animation{0%{background-position:0 0,0 0}100%{background-position:0 0,42px 0}}.eae-pb-bar-inner-skin2{background-image:linear-gradient(to top,rgba(255,255,255,.15),rgba(0,0,0,.2)),linear-gradient(135deg,#5eeb5b,#5eeb5b 33%,#358600 33%,#358600 66%,#5eeb5b 66%);background-size:100% 100%,42px 100%;background-position:0 0,0 0;border-radius:3px}body:not(.rtl) .eae-pb-bar-inner-skin2.js-animated{-webkit-animation:progress-2-bg-animation 1.5s linear 0s infinite;animation:progress-2-bg-animation 1.5s linear 0s infinite}body.rtl .eae-pb-bar-inner-skin2.js-animated{-webkit-animation:progress-2-bg-animation-rtl 1.5s linear 0s infinite;animation:progress-2-bg-animation-rtl 1.5s linear 0s infinite}.eae-pb-bar-skill-skin2{position:absolute;opacity:0}body:not(.rtl) .eae-pb-bar-skill-skin2{left:0}body.rtl .eae-pb-bar-skill-skin2{right:0}.eae-pb-bar-skill-skin2.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;bottom:20px;opacity:1}.eae-pb-bar-value-skin2{position:absolute;opacity:0}body:not(.rtl) .eae-pb-bar-value-skin2{right:0}body.rtl .eae-pb-bar-value-skin2{left:0}.eae-pb-bar-value-skin2.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;bottom:20px;opacity:1}.eae-progress-bar-skin3{height:5px;background-color:#efefef}.eae-pb-bar-inner-skin3,.eae-pb-bar-value-skin3{background-color:#f40076}.eae-pb-bar-inner:after,.eae-pb-bar-value-skin3:after{border-top-color:#f40076}.eae-pb-bar-skill-skin3{position:absolute;bottom:10px;left:-10px;opacity:0}.eae-pb-bar-skill-skin3.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-skill-skin3.js-animated{left:0}body.rtl .eae-pb-bar-skill-skin3.js-animated{right:0}.eae-pb-bar-value-skin3{position:absolute;display:inline-block;padding:0 8px;font-size:14px;color:#fff;opacity:0}.eae-pb-bar-value-skin3:after{position:absolute;left:50%;bottom:-10px;display:block;width:0;height:0;content:"";-webkit-transform:translateX(-50%);transform:translateX(-50%);border-width:5px;border-style:solid;border-color:#f40076 transparent transparent transparent}.eae-pb-bar-inner-skin3.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-pb-bar-value-skin3.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:2s;bottom:14px;opacity:1}.eae-progress-bar-skin4{height:3px;background-color:#efefef}.eae-pb-bar-inner-skin4{background-color:#000}.eae-pb-bar-inner-skin4:after{position:absolute;top:50%;display:block;width:8px;height:8px;content:"";-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#000;border-radius:50%}body:not(.rtl) .eae-pb-bar-inner-skin4:after{right:0}body.rtl .eae-pb-bar-inner-skin4:after{left:0}.eae-pb-bar-value-skin4{position:absolute;bottom:2px;font-size:14px;opacity:0}.eae-pb-bar-value-skin4.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:linear;transition-delay:1.5s;opacity:1}.eae-pb-bar-skill-skin4{position:absolute;bottom:2px;left:-20px;opacity:0}.eae-pb-bar-skill-skin4.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-skill-skin4.js-animated{left:0}body.rtl .eae-pb-bar-skill-skin4.js-animated{right:0}.eae-progress-bar-skin5{height:30px;background-color:#f7f7f7}.eae-pb-bar-inner-skin5{background-color:#57b8ff}.eae-pb-bar-skill-skin5{position:absolute;top:50%;color:#fff;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0}body:not(.rtl) .eae-pb-bar-skill-skin5{left:10px}body:not(.rtl) .eae-pb-bar-skill-skin5{right:10px}.eae-pb-bar-skill-skin5.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}.eae-pb-bar-value-skin5{position:absolute;top:50%;color:#fff;opacity:0;z-index:10}body:not(.rtl) .eae-pb-bar-value-skin5{-webkit-transform:translateX(-100%) translateX(-10px) translateY(-50%);transform:translateX(-100%) translateX(-10px) translateY(-50%)}body.rtl .eae-pb-bar-value-skin5{-webkit-transform:translateX(100%) translateX(10px) translateY(-50%);transform:translateX(100%) translateX(10px) translateY(-50%)}.eae-pb-bar-value-skin5.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:linear;transition-delay:1.5s;opacity:1}.eae-dual-button-wrapper .eae-button-1-wrapper,.eae-dual-button-wrapper .eae-button-2-wrapper{overflow:hidden}.eae-dual-button-wrapper.button-style-horizontal{display:flex;flex-direction:row;position:relative}.eae-dual-button-main-wrapper{display:flex;flex-direction:row;justify-content:center}.eae-dual-button-wrapper a{min-width:0}.eae-dual-button-wrapper.button-style-vertical{display:inline-flex;flex-direction:column;position:relative}.eae-button-1.icon-before,.eae-button-2.icon-before{display:flex;flex-direction:row}body.rtl .eae-button-1.icon-before,body.rtl .eae-button-2.icon-before{display:flex;flex-direction:row-reverse}.eae-button-1.icon-after,.eae-button-2.icon-after{display:flex;flex-direction:row-reverse}body.rtl .eae-button-1.icon-after,body.rtl .eae-button-2.icon-after{display:flex;flex-direction:row}.eae-button-1-wrapper .eae-button-1,.eae-button-2-wrapper .eae-button-2{color:#000;align-items:center}.eae-button-1-wrapper:hover .eae-button-1,.eae-button-2-wrapper:hover .eae-button-2{color:#000}.eae-dual-button-wrapper.button-style-vertical .eae-button-1.icon-after,.eae-dual-button-wrapper.button-style-vertical .eae-button-1.icon-before,.eae-dual-button-wrapper.button-style-vertical .eae-button-2.icon-after,.eae-dual-button-wrapper.button-style-vertical .eae-button-2.icon-before{justify-content:center}.eae-button-1.icon-up,.eae-button-2.icon-up{display:flex;flex-direction:column;text-align:center}.eae-button-1.icon-down,.eae-button-2.icon-down{display:flex;flex-direction:column-reverse;text-align:center}.eae-button-1-wrapper{background:#ffb6c1;display:flex;justify-content:center;width:100%;line-height:1}.eae-button-2-wrapper{background:orange;display:flex;justify-content:center;width:100%;line-height:1}.eae-button-1.icon-up .icon-wrapper,.eae-button-2.icon-down .icon-wrapper,.eae-button-2.icon-up .icon-wrapper{text-align:center}.eae-button-1.icon-up .eae-button-text,.eae-button-2.icon-down .eae-button-text,.eae-button-2.icon-up .eae-button-text{text-align:center}.eae-button-1.icon-before i,.eae-button-2.icon-after i,.eae-button-2.icon-before i{align-self:center;margin:0 10px 0 0}.eae-button-1.icon-after i,.eae-button-2.icon-after i{align-self:center;margin:0 0 0 10px}.eae-button-1.icon-down i,.eae-button-1.icon-up i,.eae-button-2.icon-down i,.eae-button-2.icon-up i{align-self:center;margin:5px 0}.eae-dual-button-wrapper.button-style-horizontal .eae-button-1-wrapper,.eae-dual-button-wrapper.button-style-horizontal .eae-button-2-wrapper{padding:12px 30px}.eae-dual-button-wrapper.button-style-vertical .eae-button-1-wrapper,.eae-dual-button-wrapper.button-style-vertical .eae-button-2-wrapper{padding:20px 30px}.eae-button1,.eae-button2{position:relative;display:flex}.eae-dual-button-wrapper.button-style-horizontal .eae-button1,.eae-dual-button-wrapper.button-style-horizontal .eae-button2{min-width:150px}.eae-dual-button-wrapper.button-style-vertical .eae-button1{display:flex;flex-direction:column}.eae-button-separator-wrapper .eae-button-separator{width:40px;height:40px;line-height:40px;border-radius:50%;z-index:1;box-shadow:0 0 0 6px rgba(255,255,255,.2);background:#fafaf8;color:#444;text-transform:uppercase;text-align:center;vertical-align:middle;font-weight:400;font-size:14px;position:absolute;transform:translateY(-50%)}.eae-button-separator span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}body.rtl.elementor-editor-active .eae-dual-button-main-wrapper .button-style-horizontal .eae-button1 .eae-button-separator-wrapper.not-rtl .eae-button-separator{display:none!important}body:not(.rtl).elementor-editor-active .eae-dual-button-main-wrapper .button-style-horizontal .eae-button2 .eae-button-separator-wrapper.rtl .eae-button-separator,body:not(.rtl).elementor-editor-preview .eae-dual-button-main-wrapper .button-style-horizontal .eae-button2 .eae-button-separator-wrapper.rtl .eae-button-separator{display:none!important}.eae-sweep-right{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-right:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-right:active,.eae-sweep-right:focus,.eae-sweep-right:hover{color:#fff}.eae-sweep-right:active:before,.eae-sweep-right:focus:before,.eae-sweep-right:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-sweep-left{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-left:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-left:active,.eae-sweep-left:focus,.eae-sweep-left:hover{color:#fff}.eae-sweep-left:active:before,.eae-sweep-left:focus:before,.eae-sweep-left:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-sweep-bottom{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-bottom:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-bottom:active,.eae-sweep-bottom:focus,.eae-sweep-bottom:hover{color:#fff}.eae-sweep-bottom:active:before,.eae-sweep-bottom:focus:before,.eae-sweep-bottom:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1)}.eae-sweep-top{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-top:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-top:active,.eae-sweep-top:focus,.eae-sweep-top:hover{color:#fff}.eae-sweep-top:active:before,.eae-sweep-top:focus:before,.eae-sweep-top:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1)}.eae-bounce-right{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-right:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-right:active,.eae-bounce-right:focus,.eae-bounce-right:hover{color:#fff}.eae-bounce-right:active:before,.eae-bounce-right:focus:before,.eae-bounce-right:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-left{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-left:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-left:active,.eae-bounce-left:focus,.eae-bounce-left:hover{color:#fff}.eae-bounce-left:active:before,.eae-bounce-left:focus:before,.eae-bounce-left:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-bottom{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-bottom:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-bottom:active,.eae-bounce-bottom:focus,.eae-bounce-bottom:hover{color:#fff}.eae-bounce-bottom:active:before,.eae-bounce-bottom:focus:before,.eae-bounce-bottom:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-top{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-top:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-top:active,.eae-bounce-top:focus,.eae-bounce-top:hover{color:#fff}.eae-bounce-top:active:before,.eae-bounce-top:focus:before,.eae-bounce-top:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-markers .marker{display:none}.eae-markers p{margin-bottom:0}.eae-fg-wrapper{display:flex;flex-direction:column;overflow:hidden}.eae-gallery-filter{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.eae-filter-label{padding:5px 10px;background-color:#a0ce4e;color:#fff;margin:0 3px 0 3px}.eae-filter-label.current{background-color:#73b9dc}.eae-fg-image{display:flex;flex-wrap:wrap;flex-direction:row}.eae-fg-wrapper .eae-gallery-item-inner img{width:100%;height:auto;display:block!important;transition:all .5s ease;-webkit-transition:all .5s ease}.eae-gallery-item{height:auto}.eae-gallery-filter a{color:#fff;text-decoration:none}.eae-gallery-filter a.current{font-weight:700}.eae-gallery-item-inner{position:relative;overflow:hidden}.eae-overlay-always .eae-gallery-item .eae-grid-overlay{display:block}.eae-overlay-hover .eae-gallery-item-inner:hover .eae-grid-overlay{display:block}.eae-overlay-hide-on-hover .eae-gallery-item-inner:hover .eae-grid-overlay{display:none}.eae-overlay-hide-on-hover .eae-grid-overlay{display:block}.eae-grid-overlay{position:absolute;top:0;left:0;display:none;z-index:99;background:rgba(0,0,0,.5);height:100%;width:100%}.eae-grid-overlay-inner{display:block;position:relative;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.eae-fg-wrapper .eae-icon-wrapper{display:flex;justify-content:center}.eae-overlay-caption{display:block;line-height:1em;margin-top:15px;color:#73b9dc;font-size:20px}.eae-overlay-icon{line-height:1em;padding:.5em;display:inline-block}.eae-overlay-icon svg{height:auto}.eae-icon-view-framed .eae-overlay-icon{padding:.5em;color:#73b9dc;border:3px solid #73b9dc;background-color:transparent}.eae-icon-view-stacked .eae-overlay-icon{padding:.5em;color:#fff;background-color:#818a91}.eae-hover-direction-effect .eae-grid-overlay{position:absolute;z-index:99;background:rgba(0,0,0,.5);height:100%;width:100%}.eae-fg-wrapper.eae-image-ratio-yes .eae-gallery-item-inner .eae-fg-img-wrapper{position:relative;top:0;overflow:hidden;left:0;right:0;border:0}.eae-fg-wrapper.eae-image-ratio-yes .eae-gallery-item-inner .eae-fg-img-wrapper img{height:100%;width:100%;display:block;position:absolute;top:0;left:0;object-fit:cover}.wts-eae-ribbons-badges-wrapper{display:none}.wts-eae-enable-ribbons-badges-yes .elementor-column-wrap>.wts-eae-ribbons-badges-wrapper{display:block}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{position:absolute;top:0;left:auto;right:0;-ms-transform:rotate(90deg);width:150px;overflow:hidden;height:150px;z-index:999;padding:8px 12px}.wts-eae-badge-h-left.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.wts-eae-badge-h-right.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(90deg);left:auto;right:0}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{position:absolute;text-align:center;left:0;top:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:rgba(63,195,135,.8);padding:8px 12px}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-badge>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{min-height:3.236em;min-width:3.236em;padding:0;font-size:1em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;z-index:9}.wts-eae-badge-h-left.wts-eae-badge-v-bottom.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:20px;right:auto;top:auto;bottom:20px}.wts-eae-badge-h-left.wts-eae-badge-v-top.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:20px;right:auto;top:20px;bottom:auto}.wts-eae-badge-h-right.wts-eae-badge-v-bottom.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:auto;right:20px;top:auto;bottom:20px}.wts-eae-badge-h-right.wts-eae-badge-v-top.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:auto;right:20px;top:20px;bottom:auto}.eae-flip-box-back svg,.eae-flip-box-front svg{width:25px;height:auto}.wts-eae-textseparator svg{width:25px;height:auto}.eae-img-comp-slider svg{width:22px;height:auto}.eae-popup-link svg{display:inline-block;width:1em}.eae-popup svg:focus,.eae-popup svg:hover{opacity:1;cursor:pointer}.eae-popup svg:active{top:1px}.eae-popup svg.eae-close{width:28px;height:28px;line-height:1em;text-decoration:none;text-align:center;opacity:1;background-color:#fff}.eae-dual-button-wrapper svg{width:1em;height:auto;display:block}eae-button-separator i{position:relative;display:block}.eae-button-1.icon-before svg,.eae-button-2.icon-after svg,.eae-button-2.icon-before svg{align-self:center;margin:0 10px 0 0}.eae-button-1.icon-after svg,.eae-button-2.icon-after svg{align-self:center;margin:0 0 0 10px}.eae-button-1.icon-down svg,.eae-button-1.icon-up svg,.eae-button-2.icon-down svg,.eae-button-2.icon-up svg{align-self:center;margin:5px 0}.eae-pt-button-wrapper a svg{width:1em}.eae-pt-action-button .eae-pt-align-icon-left{float:left}.eae-pt-action-button .eae-pt-align-icon-right{float:right}.eae-icon-wrap svg{width:20px;height:auto;font-size:20px;display:block}.eae-info-circle .eae-icon-wrap svg{width:20px;height:auto;font-size:20px}.eae-icon-view-stacked svg{fill:#fff}.ae-link-yes{cursor:pointer}.eae-element-unfold-content{padding:10px 0;background-color:#d3d3d3c4;width:100%;position:absolute;left:0;bottom:0;z-index:999}a.eae-unfold-link{background-color:#61ce70;color:#fff;display:inline-block;overflow:hidden}a.eae-unfold-link svg{background-color:#fff}.eae-unfold-button-icon{vertical-align:middle}.eae-fold-yes .elementor-column-wrap,.eae-fold-yes.elementor-section .elementor-container,.eae-fold-yes.elementor-widget{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section.eae-widget-unfold-yes .elementor-container,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-section.eae-widget-unfold-yes .elementor-container{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-column.eae-widget-unfold-yes .elementor-column-wrap,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-column.eae-widget-unfold-yes .elementor-column-wrap{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-widget.eae-widget-unfold-yes,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-widget.eae-widget-unfold-yes{overflow:hidden}.eae-widget-unfold-yes .elementor-widget-container .eae-fold-yes.eae-rc{display:none!important}.eae-unfold-button-icon svg{line-height:1em;text-decoration:none;-webkit-mask-repeat:no-repeat!important;text-align:center;opacity:1}.eae-fold-icon-type-svg .eae-unfold-button-icon,.eae-unfold-icon-type-svg .eae-unfold-button-icon{-webkit-mask-size:cover!important;background-image:none;transform:translateY(-50%)}.elementor-section.elementor-section-items-bottom.eae-widget-unfold-yes>.elementor-container,.elementor-section.elementor-section-items-middle.eae-widget-unfold-yes>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:start}.elementor-section.elementor-section-content-bottom.eae-widget-unfold-yes>.elementor-container,.elementor-section.elementor-section-content-middle.eae-widget-unfold-yes>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:start}.elementor-widget-wts-modal-popup.eae-pop-btn-type-image .eae-popup-link{padding:0;background-color:transparent;overflow:hidden}[data-elementor-device-mode=tablet] .eae-tab-format-mobile .eae-ct-hide.eae-fbox-heading{display:none!important}.eae-timeline-item .eae-icon-view-stacked{border-width:0!important}.eae-content-switcher-wrapper{display:block;text-align:center}.eae-cs-layout-skin1 .eae-cs-switch-wrapper{display:inline-flex;flex-wrap:wrap;padding:8px 12px;background:#54595f;border-radius:50px}.eae-cs-switch-container{display:block;text-align:center}.eae-cs-layout-skin1 .eae-cs-label-wrapper{display:inline-block;overflow:hidden}.eae-cs-layout-skin1 .eae-content-switch-button{border-radius:50px;padding:8px 12px;background-color:#7a7a7a;color:#fff;overflow:hidden;display:block;min-width:150px;position:relative;text-align:center;margin:3px}.eae-cs-layout-skin1 .eae-content-switch-button:before{height:100%;top:0;left:0;z-index:0;content:'';width:0;position:absolute;right:0;transition:all .3s ease-out}.eae-cs-layout-skin1 .eae-content-switch-button.active:before{width:100%;left:0;right:auto;background-color:#61ce70}.eae-cs-layout-skin1 .eae-content-switch-label{position:relative}.eae-cs-content-section{display:none}.eae-cs-content-section.active{display:block}@media only screen and (max-width:768px){.eae-cs-switch-wrapper{display:inline-block!important}}.eae-cs-layout-skin2 .eae-cs-switch-wrapper{display:inline-flex;flex-wrap:wrap;padding:0;background:0 0}.eae-cs-layout-skin2 .eae-cs-label-wrapper{display:inline-block}.eae-cs-layout-skin2 .eae-content-switch-button{width:auto;margin:3px 8px;padding:10px 12px;background-color:#e2e2e2;overflow:hidden;display:block;position:relative;text-align:center;border-radius:5px;border:1px solid rgba(130,130,130,.26);color:rgba(71,71,71,.44)}.eae-cs-layout-skin2 .eae-content-switch-button.active{box-shadow:0 10px 34px -9px rgba(0,0,0,.38);background-color:#fff;color:#575757;border-color:#fff}h5.eae-cs-label{margin:0}.eae-cs-layout-skin3 .eae-cs-switch-wrapper{display:block;justify-content:center;align-items:center}.eae-content-switch-label.primary-label{margin-right:30px}.eae-content-switch-label.secondary-label{margin-left:30px}.eae-cs-layout-skin3 .eae-cs-switch-label{position:relative;display:inline-block;width:4.5em;height:2.3em;vertical-align:middle}.eae-cs-layout-skin3 .eae-content-switch-label{margin:0;display:inline-block}.eae-cs-layout-skin3 .eae-cs-switch-button{display:inline-block}.eae-cs-layout-skin3 .eae-cs-label{display:inline-block}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch{display:none}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;-webkit-transition:.4s;transition:.4s;-webkit-border-radius:1.5em;border-radius:1.5em;background:#2e394d;border:2px solid #2e394d}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span:before{position:absolute;content:"";height:28px;width:28px;left:4px;transform:translateY(-52%);top:50%;transition:.4s;transition:.4s;-webkit-border-radius:50%;border-radius:50%;background:#88cf8f;border:2px solid #88cf8f}body.rtl .eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span:before{left:unset;right:4px}.eae-cs-layout-skin3 .eae-cs-switch-label input:checked.eae-content-toggle-switch+span:before{transform:translate(36px,-52%)}body.rtl .eae-cs-layout-skin3 .eae-cs-switch-label input:checked.eae-content-toggle-switch+span:before{transform:translate(-36px,-52%)}.eae-content-switch-label.active{color:#61ce70}.eae-cs-layout-skin4 .eae-cs-switch-wrapper{display:block}.eae-cs-layout-skin4 .eae-content-switch-label.primary-label{margin-right:30px}.eae-cs-layout-skin4 .eae-content-switch-label.secondary-label{margin-left:30px}.eae-cs-layout-skin4 .eae-content-switch-label{display:inline-block}.eae-cs-layout-skin4 .eae-cs-switch-label{position:relative;display:inline-block;width:70px;height:20px;vertical-align:middle}.eae-cs-layout-skin4 .eae-cs-label{display:inline-block}.eae-cs-layout-skin4 .eae-content-toggle-switch{display:none}.eae-cs-layout-skin4 .eae-content-toggle-switcher{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;-webkit-transition:.4s;transition:.4s;-webkit-border-radius:1.5em;border-radius:1.5em;background:#2e394d;border:2px solid #2e394d}.eae-cs-layout-skin4 .eae-cs-switch-button{display:inline-block}.eae-cs-layout-skin4 .eae-content-toggle-switcher:before{position:absolute;content:"";height:34px;width:34px;left:-12px;top:50%;transform:translateY(-50%);border-radius:50%;border:2px solid #88cf8f;background:#88cf8f;-webkit-transition:.4s;transition:.4s;-webkit-box-shadow:3px 3px 6px 1px rgba(0,0,0,.2);box-shadow:3px 3px 6px 1px rgba(0,0,0,.2)}.eae-cs-layout-skin4 .eae-cs-switch-container{padding:15px 0}body.rtl .eae-cs-layout-skin4 .eae-content-toggle-switcher:before{right:-12px!important}.eae-cs-layout-skin4 input:checked+.eae-content-toggle-switcher:before{transform:translate(55px,-50%)}body.rtl .eae-cs-layout-skin4 input:checked+.eae-content-toggle-switcher:before{transform:translate(-55px,-50%)}.eae-swiper-outer-wrapper{position:relative}.eae-swiper-container{position:relative}.eae-thumb-container{position:absolute}.eae-swiper-outer-wrapper .eae-swiper-slide{height:400px;background-size:cover;background-repeat:no-repeat;background-position:right}.eae-swiper-outer-wrapper .eae-swiper-slide .eae-slide-inner{color:#7a7a7a;display:flex;position:absolute;top:0;left:0;bottom:0;right:0;padding:20px}.eae-slide-inner .eae-slide-content{padding:20px 30px}.eae-slide-inner .eae-slide-heading{font-size:35px;font-weight:700;line-height:1}.eae-slide-inner .eae-slide-text{font-size:17px;line-height:1.4}.eae-slide-inner .eae-slide-button{display:inline-block}.eae-slide-inner .eae-slide-btn{display:inline-block;font-size:15px;padding:12px 24px;border-radius:3px;cursor:pointer;transition:all .3s}.eae-slide-inner .eae-slide-heading:not(:last-child),.eae-slide-inner .eae-slide-text:not(:last-child){margin-bottom:30px}.eae--hr-position-left .eae-slide-inner{-webkit-box-pack:start;justify-content:flex-start}.eae--hr-position-right .eae-slide-inner{-webkit-box-pack:end;justify-content:flex-end}.eae--hr-position-center .eae-slide-inner{-webkit-box-pack:center;justify-content:center}.eae--vr-position-top .eae-slide-inner{-webkit-box-pack:start;align-items:flex-start}.eae--vr-position-middle .eae-slide-inner{-webkit-box-align:center;align-items:center}.eae--vr-position-bottom .eae-slide-inner{-webkit-box-pack:end;align-items:flex-end}.eae-swiper-button-prev{left:10px}.eae-swiper-button-next{right:10px}.eae-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;color:#7a7a7a;top:50%;transform:translateY(-50%)}.eae-swiper-pagination .swiper-pagination-bullet{margin-bottom:5px!important}.eae-swiper-outer-wrapper .eae-swiper-slide .eae-background-overlay{width:100%;height:100%;position:absolute}.eae-swiper-outer-wrapper .eae-gallery-thumbs{box-sizing:border-box;text-align:center}.eae-swiper-outer-wrapper .eae-gallery-thumbs .eae-thumb-slide{background-size:cover;background-position:center;height:100%;opacity:.7}.eae-swiper-outer-wrapper .eae-gallery-thumbs .swiper-slide-thumb-active{opacity:1}.eae-chart-outer-container{position:relative}.eae-chart-overlay{width:100%;height:100%;position:absolute}.eae-table{width:100%;height:auto;margin:0;padding:0;border:none;border-collapse:collapse}.eae-table tr{border-style:none}.eae-table__body_row_column{border:none;overflow:hidden}.eae-table__head_column{transition:all .3s ease-in-out}.eae-table__body_row_column{transition:all .3s ease-in-out}.eae-head-icon{vertical-align:middle}.eae-table__head-column-wrapper .eae-head-img{width:50px;display:inline-block}.eae-table__head-column-wrapper .eae-lottie-animation svg{width:70px!important;line-height:0}.eae-head-icon-before{margin-right:5px}.eae-head-icon-after{margin-left:5px}.eae-table__col-inner{display:block}.eae-body-icon{vertical-align:middle}.eae-table__body-column-wrapper .eae-body-image{width:70px;display:inline-block}.eae-table__body-column-wrapper .eae-table-lottie-animation svg{width:70px!important;line-height:0}.eae-body-icon-before{margin-right:5px}.eae-body-icon-after{margin-left:5px}.eae-table-body__text{vertical-align:middle}.eae-table .eae-table-search-hide{display:none}.eae-table-search-wrap{padding:0;margin:0;margin-bottom:10px}.eae-search-wrap{padding:0;margin:0;width:50%;display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;align-items:center}.eae-table-search-wrap .eae-table-search-field{margin:0;padding:0;border:0;outline:0;background-color:#eceeef;width:100%;font-size:15px;color:#7a7a7a;padding:10px;line-height:0;display:inline-block;box-sizing:border-box}.eae-table-search-wrap .eae-table-search-field:focus{background-color:#eceeef}::placeholder{opacity:.5}.eae-search-wrap .eae-search-icon{background-color:#eceeef;padding:0;margin:0;padding:10px}.eae-search-wrap .eae-search-icon i{color:#7a7A7A73;display:flex;align-items:center;left:0;font-size:20px}.eae-table__sortable .eae-table__sortable-head{cursor:pointer}.eae-table__head__wrapper{display:flex;justify-content:center;align-items:center}.eae-sort-icon{padding:0;margin:0;align-self:center}.eae-table__head-column-wrapper{flex-grow:3;display:inline-block;width:100%}.eae-icon-sort-icon{vertical-align:middle;display:inline-block}.eae-icon{padding:0;margin:0}.eae-table__head__wrapper .eae-sort-icon .eae-icon{font-size:25px}.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-down,.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-up{display:none}.eae-table__sortable .eae-table__sort-Asc .eae-table__head__wrapper .eae-icon-sort-icon,.eae-table__sortable .eae-table__sort-Desc .eae-table__head__wrapper .eae-icon-sort-icon{display:none}.eae-table__sortable .eae-table__sort-Asc .eae-table__head__wrapper .eae-sort-icon-up,.eae-table__sortable .eae-table__sort-Desc .eae-table__head__wrapper .eae-sort-icon-down{display:block}
|
1 |
+
.elementor-widget-wts-textseparator .elementor-widget-container{overflow:hidden}.wts-eae-textseparator{align-items:center;display:flex;flex-flow:row nowrap;margin:auto}body.rtl .wts-eae-textseparator{flex-direction:row-reverse}.eae-separator-icon-inner i{height:1em;width:1em;text-align:center;position:relative;display:block}.eae-separator-icon-inner i:before{position:absolute;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.wts-eae-textseparator .eae-sep-holder{flex:1 1 auto;height:1px;min-width:10%;position:relative}.wts-eae-textseparator .eae-sep-holder .eae-sep-lines{border-top-width:1px;display:block;height:1px;position:relative;top:1px;width:100%}.eae-separator-title{margin:0;-moz-box-flex:0;flex:0 1 auto;line-height:1em;margin:0;overflow-wrap:break-word}.sep-align-right .sep-right{display:none}.sep-align-left .sep-left{display:none}.eae-icon-view-stacked i{color:#fff}.eae-icon-view-framed .eae-separator-icon-inner{border:1px solid}.eae-icon-shape-circle .eae-separator-icon-inner{border-radius:50%}.eae-separator-icon-wrapper,.eae-separator-title{margin:0 5px!important}.eae-separator-icon-inner{line-height:1}.wts-price-box-wrapper .eae-pt-heading,.wts-price-box-wrapper .eae-pt-sub-heading{margin:5px 0;text-align:center}.plan-price-shape{display:table;height:6em;margin:auto;width:6em}.eae-pt-price-box-shape-circle .plan-price-shape,.eae-pt-price-box-shape-square .plan-price-shape{border:1px solid}.eae-pt-price-box-shape-circle .plan-price-shape{border-radius:50%}.plan-price-block{padding:10px 0}.plan-price-shape-inner{display:table-cell;vertical-align:middle;padding:10px}.plan-price-shape-inner>span{display:block;font-size:1em;text-align:center}.eae-pt-feature-list{list-style:outside none none;text-align:center;margin:10px 0}.eae-pt-button-wrapper>a{text-align:center;display:inline-block;line-height:1}.eae-pt-button-wrapper{text-align:center}.wts-price-box-wrapper .heading-wrapper,.wts-price-box-wrapper .plan-features-wrapper{padding:10px 5px}.eae-pt-button-wrapper{padding:15px 0}.eae-pt-button-wrapper a{padding:5px 15px;border-radius:3px}.eae-pt-align-icon-right{float:right}.strike-feature{text-decoration:line-through}.eae-flip-box{width:100%;text-align:center}.eae-flip-box-wrapper{display:inline-block;width:100%}.eae-flip-box-inner{width:100%;height:200px;position:relative;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.eae-flip-box-inner .eae-flip-box-back,.eae-flip-box-inner .eae-flip-box-front{width:100%;height:100%;position:absolute;top:0;left:0;text-align:center;padding:10px;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:all .6s ease 0s;-moz-transition:all .6s ease 0s;-ms-transition:all .6s ease 0s;-o-transition:all .6s ease 0s;transition:all .6s ease 0s}.eae-flip-box-front{z-index:2}.eae-flip-box-back{z-index:1}.eae-fb-animate-vertical .eae-flip-box-inner .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateX(0);-ms-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0)}.eae-fb-animate-vertical .eae-flip-box-inner .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateX(180deg);transform:perspective(1000px) rotateX(180deg);-ms-transform:perspective(1000px) rotateX(180deg)}.eae-fb-animate-vertical .eae-flip-box-inner:hover .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateX(180deg);transform:perspective(1000px) rotateX(180deg);-ms-transform:perspective(1000px) rotateX(180deg)}.eae-fb-animate-vertical .eae-flip-box-inner:hover .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateX(0);transform:perspective(1000px) rotateX(0);-ms-transform:perspective(1000px) rotateX(0)}.eae-fb-animate-horizontal .eae-flip-box-inner .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0);-ms-transform:perspective(1000px) rotateY(0)}.eae-fb-animate-horizontal .eae-flip-box-inner .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateY(180deg);transform:perspective(1000px) rotateY(180deg);-ms-transform:perspective(1000px) rotateY(180deg)}.eae-fb-animate-horizontal .eae-flip-box-inner:hover .eae-flip-box-front{-webkit-transform:perspective(1000px) rotateY(180deg);transform:perspective(1000px) rotateY(180deg);-ms-transform:perspective(1000px) rotateY(180deg)}.eae-fb-animate-horizontal .eae-flip-box-inner:hover .eae-flip-box-back{-webkit-transform:perspective(1000px) rotateY(0);transform:perspective(1000px) rotateY(0);-ms-transform:perspective(1000px) rotateY(0)}.eae-fb-animate-fade .eae-flip-box-inner .eae-flip-box-front{opacity:1}.eae-fb-animate-fade .eae-flip-box-inner .eae-flip-box-back{opacity:0}.eae-fb-animate-fade .eae-flip-box-inner:hover .eae-flip-box-front{opacity:0}.eae-fb-animate-fade .eae-flip-box-inner:hover .eae-flip-box-back{opacity:1}.eae-flip-box-wrapper:focus .eae-flip-box-back,.eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:2}.eae-flip-box-wrapper:focus .eae-flip-box-front,.eae-flip-box-wrapper:hover .eae-flip-box-front{z-index:1}.fade .eae-flip-box-wrapper .eae-flip-box-front{opacity:1;transition:1s}.fade .eae-flip-box-wrapper .eae-flip-box-back{opacity:0;transition:1s}.fade .eae-flip-box-wrapper:focus .eae-flip-box-front,.fade .eae-flip-box-wrapper:hover .eae-flip-box-front{opacity:0}.fade .eae-flip-box-wrapper:focus .eae-flip-box-back,.fade .eae-flip-box-wrapper:hover .eae-flip-box-back{opacity:1}.eae-fb-animate-flip .eae-flip-box-wrapper{perspective:800px}.eae-fb-animate-flip .eae-flip-box-inner{transform-style:preserve-3d;transform:rotateX(0) rotateY(0) rotateZ(0);transition:1s}.eae-fb-animate-flip .eae-flip-box-front{transform:translate3d(0,0,1px)}.eae-fb-animate-flip .eae-flip-box-back{transform:rotateY(180deg) translate3d(0,0,0)}.eae-fb-animate-flip .eae-flip-box-wrapper:focus .eae-flip-box-inner,.eae-fb-animate-flip .eae-flip-box-wrapper:hover .eae-flip-box-inner{transform:rotateY(180deg)}.up .eae-flip-box-front{transform:translate3d(0,0,1px)}.up .eae-flip-box-back{transform:rotateX(180deg) translate3d(0,0,0)}.up .eae-flip-box-wrapper:focus .eae-flip-box-inner,.up .eae-flip-box-wrapper:hover .eae-flip-box-inner{transform:rotateX(180deg)}.box .eae-flip-box-front{transform:translate3d(0,0,100px) scale(.85,.85)}.box .eae-flip-box-back{transform:rotateY(180deg) translate3d(0,0,100px) scale(.85,.85)}.box.up .eae-flip-box-back{transform:rotateX(180deg) translate3d(0,0,100px) scale(.85,.85)}.hideback .eae-flip-box-back,.hideback .eae-flip-box-front{backface-visibility:hidden}.eae-fb-animate-nananana .eae-flip-box-wrapper:focus .eae-flip-box-front,.eae-fb-animate-nananana .eae-flip-box-wrapper:hover .eae-flip-box-front{z-index:10;animation:batman 1s 2 alternate linear}.eae-fb-animate-flipcard .eae-flip-box-back,.eae-fb-animate-flipcard .eae-flip-box-front{transition:transform .4s ease;transform-origin:center center -150px;-webkit-transform-origin:center center -150px}.flipcard-rotate-top-down .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-top-down .eae-flip-box-back{transform:perspective(0) rotateX(90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-top-down .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(-90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-top-down .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-down-top .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-down-top .eae-flip-box-back{transform:perspective(0) rotateX(-90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-down-top .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(90deg) rotateY(0) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-down-top .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-left-right .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-left-right .eae-flip-box-back{transform:perspective(0) rotateX(0) rotateY(-90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-left-right .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-left-right .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-right-left .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}.flipcard-rotate-right-left .eae-flip-box-back{transform:perspective(0) rotateX(0) rotateY(90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-right-left .eae-flip-box-wrapper:hover .eae-flip-box-front{transform:perspective(0) rotateX(0) rotateY(-90deg) rotateZ(0)}.eae-fb-animate-flipcard.flipcard-rotate-right-left .eae-flip-box-wrapper:hover .eae-flip-box-back{z-index:99999;transform:perspective(0) rotateX(0) rotateY(0) rotateZ(0)}@keyframes batman{0%{transform:scale(1,1) rotateZ(0)}100%{transform:scale(0,0) rotateZ(720deg);opacity:0}}.eae-flip-box-back i,.eae-flip-box-front i{font-size:32px;height:1em;width:1em;position:relative;display:block}.eae-flip-box-back i:before,.eae-flip-box-front i:before{position:absolute;left:50%;-webkit-transform:translate(-50%);-moz-transform:translate(-50%);-ms-transform:translate(-50%);-o-transform:translate(-50%);transform:translate(-50%)}.eae-fb-icon-view-framed{border:1px solid #92be43}.eae-fb-icon-shape-circle{border-radius:50%}.eae-flip-box-wrapper .icon-wrapper{display:inline-block;padding:10px;line-height:1}.eae-flip-box-wrapper .back-icon-title,.eae-flip-box-wrapper .front-icon-title{margin:10px auto;color:#fff}.eae-flip-box-wrapper .flipbox-content{display:block;position:relative;top:50%;transform:translateY(-50%);-ms-transform:translateY(-50%)}.flipbox-content p{margin-bottom:10px}.eae-fb-button{display:inline-block;padding:5px 10px}.eae-flip-box-front{background:#a0ce4e}.eae-flip-box-back{background:#73b9dc}@media only screen and (max-width:768px){.eae-flip-box-back,.eae-flip-box-front,.flipbox-content{cursor:pointer;overflow:visible!important;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}}.elementor-widget-wts-shape-separator svg{display:block}.wts-eae-pl-wrapper ul{margin:0}.wts-eae-pl-wrapper ul li{list-style:none;overflow:hidden;margin-bottom:10px}.eae-pl-img-align-none .eae-pl-image-wrapper a{text-align:center}.eae-pl-title{margin:0}.eae-pl-title a{display:block}.eae-pl-readmore a{display:inline-block;border-radius:2px;color:#fff;padding:4px 8px}.eae-at-animation-text-wrapper{display:inline-block;position:relative;text-align:left}.eae-at-animation-text-wrapper .eae-at-animation-text{display:inline-block;position:absolute;white-space:nowrap;left:0;top:0}[data-elementor-device-mode=mobile] .eae-at-animation-text{white-space:normal}.eae-at-animation-text-wrapper .eae-at-animation-text.is-visible{position:relative}.no-js .eae-at-animation-text-wrapper .eae-at-animation-text{opacity:0}.no-js .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible{opacity:1}.eae-animtext-wrapper{font-size:40px}.eae-st-rest-text{display:inline-block}.eae-st-split-text{display:inline-block}body.rtl .eae-st-transform-text-title{display:flex;flex-direction:row-reverse}body.rtl .eae-text-align-left .eae-st-transform-text-title{justify-content:flex-start}body.rtl .eae-text-align-right .eae-st-transform-text-title{justify-content:flex-end}body.rtl .eae-text-align-center .eae-st-transform-text-title{justify-content:center}.eae-at-animation.type .eae-at-animation-text-wrapper{vertical-align:bottom;overflow:hidden}.eae-at-animation.type .eae-at-animation-text-wrapper::after{content:"";position:absolute;right:0;top:50%;bottom:auto;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px}.eae-at-animation.type .eae-at-animation-text-wrapper.waiting::after{-webkit-animation:cd-pulse 1s infinite;-moz-animation:cd-pulse 1s infinite;animation:cd-pulse 1s infinite}.eae-at-animation.type .eae-at-animation-text-wrapper.selected::after{visibility:hidden}.eae-at-animation.type .eae-at-animation-text{visibility:hidden}.eae-at-animation.type .eae-at-animation-text.is-visible{visibility:visible}.eae-at-animation.type i{position:absolute;visibility:hidden}.eae-at-animation.type i.in{position:relative;visibility:visible}@-webkit-keyframes cd-pulse{0%{-webkit-transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);opacity:0}100%{-webkit-transform:translateY(-50%) scale(0);opacity:0}}@-moz-keyframes cd-pulse{0%{-moz-transform:translateY(-50%) scale(1);opacity:1}40%{-moz-transform:translateY(-50%) scale(.9);opacity:0}100%{-moz-transform:translateY(-50%) scale(0);opacity:0}}@keyframes cd-pulse{0%{-webkit-transform:translateY(-50%) scale(1);-moz-transform:translateY(-50%) scale(1);-ms-transform:translateY(-50%) scale(1);-o-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);-moz-transform:translateY(-50%) scale(.9);-ms-transform:translateY(-50%) scale(.9);-o-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}100%{-webkit-transform:translateY(-50%) scale(0);-moz-transform:translateY(-50%) scale(0);-ms-transform:translateY(-50%) scale(0);-o-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.eae-img-comp-container{width:100%;position:relative;text-align:center}.eae-img-comp-container img{vertical-align:middle}.eae-img-comp-img{position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;transform:translateZ(0);backface-visibility:hidden}.eae-img-comp-img img{display:block;max-width:100%;width:100%}.eae-img-comp-slider{position:absolute;z-index:9;width:40px;height:40px;background-color:#2196f3;opacity:1;border-radius:50%}.icon-horizontal{cursor:ew-resize}.icon-vertical{cursor:n-resize}.mode-horizontal .eae-img-comp-overlay img{position:absolute;left:0;top:0;display:block;width:auto;height:100%!important;max-width:none!important}.mode-vertical .eae-img-comp-overlay img{position:absolute;left:0;top:0;display:block;width:100%;height:auto!important;max-width:none!important}.eae-img-comp-slider svg,.eae-slider-icon{top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;color:#fff}.elementor-widget-wts-ab-image{text-align:center}.elementor-widget-wts-ab-image .elementor-widget-container{display:inline-block;margin:0 auto!important;overflow:hidden}.eae-text-before{position:absolute!important;padding:10px;transition:transform .3s .7s,opacity .3s .7s;color:#d36118;z-index:0;background:rgba(255,255,255,.5);margin:20px}.eae-text-after{position:absolute!important;padding:10px;transition:transform .3s .7s,opacity .3s .7s;color:#d36118;z-index:0;background:rgba(255,255,255,.5);margin:20px}.divTest{display:inline-block;background-color:#00a0d2;padding:20px}.eae-particle-wrapper{position:absolute;left:0;top:0}.eae-particle-wrapper.eae-particle-area{width:100%;height:100%}body:not(.elementor-editor-active) .eae-particle-wrapper{width:100%;height:100%}body:not(.elementor-editor-active) .eae-particle-wrapper .particles-js-canvas-el{height:100%;position:absolute;z-index:0}body:not(.elementor-editor-active) .eae-particle-wrapper .tsparticles-canvas-el{height:100%;position:absolute!important;z-index:0!important}body.elementor-editor-active .eae-particle-areas .tsparticles-canvas-el{z-index:0!important;height:100%;width:100%;position:absolute!important}.eae-section-bs{position:absolute;width:100%;height:100%;top:0}.eae-section-bs-inner{width:100%;height:100%!important}.eae-popup.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.eae-popup-link{padding:12px 24px;color:#fff;display:inline-flex;line-height:1}.eae-popup-link svg{fill:#fff}.eae-popup-link:hover{color:#fff}.eae-popup.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.eae-popup .mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.eae-popup .mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.eae-popup .mfp-align-top .mfp-container:before{display:none}.eae-popup .mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.eae-modal-content{padding:20px}.eae-pop-btn-align-left .eae-popup-wrapper{text-align:left}.eae-pop-btn-align-right .eae-popup-wrapper{text-align:right}.eae-pop-btn-align-center .eae-popup-wrapper{text-align:center}.eae-pop-btn-align-justify .eae-popup-wrapper{text-align:center}.eae-pop-btn-align-justify .eae-popup-wrapper a{display:block}.eae-popup .mfp-ajax-holder .mfp-content,.eae-popup .mfp-inline-holder .mfp-content{width:50%;background-color:#fff;cursor:auto;overflow:hidden}.eae-popup .mfp-ajax-cur{cursor:progress}.eae-popup .mfp-zoom-out-cur,.eae-popup .mfp-zoom-out-cur .mfp-image-holder .eae-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.eae-popup .mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.eae-popup.mfp-auto-cursor .mfp-content{cursor:auto}.eae-popup .eae-close,.eae-popup .mfp-arrow,.eae-popup .mfp-counter,.eae-popup .mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.eae-popup .mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.eae-popup .mfp-preloader a{color:#ccc}.eae-popup .mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.eae-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.eae-popup .eae-close{width:28px;height:28px;line-height:1em;position:absolute;right:10px;top:10px;text-decoration:none;text-align:center;opacity:1;color:#fff;font-size:28px;z-index:1500}.eae-close:focus,.eae-close:hover{opacity:1;cursor:pointer}.eae-close:active{top:1px}.eae-close:before{top:50%;left:50%;position:absolute;transform:translate(-50%,-50%)}.eae-popup.eae-close-btn-in .eae-close{color:#fff}.mfp-iframe-holder .eae-close,.mfp-image-holder .eae-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow:after,.mfp-arrow:before{content:"";display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .eae-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.eae-popup .mfp-figure{line-height:0}.eae-popup .mfp-figure:after{content:"";position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.eae-popup .mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.eae-popup .mfp-figure figure{margin:0}.eae-popup .mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.eae-popup .mfp-title{text-align:left;line-height:1;word-wrap:break-word;color:#fff;background-color:#4054b2;padding:20px 20px 20px 20px}.eae-popup .mfp-image-holder .mfp-content{max-width:100%}.eae-popup .mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .eae-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}.elementor-element.eae-animated-gradient-yes,.elementor-element.eae-animated-gradient-yes .animated-gradient{background-size:400% 400%!important;-webkit-animation:AnimateGradient 15s ease-in-out infinite;-moz-animation:AnimateGradient 15s ease-in-out infinite;animation:AnimateGradient 15s ease-in-out infinite}.animated-gradient{position:absolute;top:0;left:0;height:100%;width:100%}@-webkit-keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}@-moz-keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes AnimateGradient{0%{background-position:0 50%}50%{background-position:100% 50%}100%{background-position:0 50%}}.eae-swiper-outer-wrapper .swiper-slide{height:auto;overflow:inherit}.eae-swiper-outer-wrapper .swiper-slide-wrapper,.eae-swiper-outer-wrapper .testimonial-wrapper{height:100%}.eae-grid{display:flex;flex-wrap:wrap;flex-direction:row}.eae-masonry- .eae-grid-item{position:relative;height:100%}.eae-masonry- .eae-grid-item .testimonial-wrapper{height:100%}.eae-grid-container{transition:.1s all ease}.eae-grid-container{display:inline-block}.wrapper .content{margin:10px 0}.skin-2.testimonial-wrapper{display:flex;flex-direction:column;background-color:#9c989821;min-height:300px;padding:10px 20px;box-shadow:0 0 5px rgba(0,0,0,.15);color:#696969}.skin-2 .content-wrapper{padding:10px;position:relative;background-color:#fff;border-radius:10px;color:#77778e}.skin-2 i.after-content,.skin-2 i.before-content{position:absolute}.skin-2 i.before-content{top:10px;left:20px}.skin-2 i.after-content{bottom:10px;right:20px}.skin-2 blockquote{position:relative;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-2 blockquote::after,.skin-2 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-2 blockquote::before{top:10px;left:20px}.skin-2 blockquote::after{content:"\201D";right:20px}.skin-2 .image-wrapper{position:relative;max-width:100%;text-align:center}.skin-2 img{width:100px;border-radius:25%}.skin-2 .detail-wrapper{text-align:center}.skin-2 .company,.skin-2 .designation,.skin-2 .rating-wrapper,.skin-2 .title{padding:5px 0}.skin-2 .rating-wrapper{color:navy}.skin-2 .title{font-weight:800;color:#000}.skin-2 blockquote p{margin:10px 0!important}.skin-1.testimonial-wrapper{display:flex;flex-direction:column;background-color:#fff;box-shadow:0 0 5px rgba(0,0,0,.15);color:#000}.skin-1 .content-wrapper{order:0}.skin-1 .image-wrapper{order:1;text-align:center;margin:15px 0}.skin-1 .detail-wrapper{order:2}.skin-1 .content-wrapper{padding:10px;position:relative}.skin-1 i.after-content,.skin-1 i.before-content{position:absolute}.skin-1 i.before-content{top:10px;left:20px}.skin-1 i.after-content{bottom:10px;right:20px}.skin-1 blockquote{position:relative;background-color:#fff;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-1 blockquote::after,.skin-1 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-1 blockquote::before{top:10px;left:20px}.skin-1 blockquote::after{content:"\201D";right:20px}.skin-1 .image-wrapper{position:relative;max-width:100%}.skin-1 img{width:100px;height:auto;border-radius:50%}.skin-1 .detail-wrapper{display:flex;flex-direction:row-reverse;justify-content:space-between;padding:10px;background-color:rgba(157,163,156,.18)}.skin-1 .designation,.skin-1 .rating-wrapper,.skin-1 .title{margin:0 5px}.skin-1 .title-wrapper{display:flex;flex-direction:row}.skin-1 .rating-wrapper{color:#fecc1f}.skin-4.testimonial-wrapper{flex-direction:column;display:flex;background-color:#bfbfb6bd;min-height:300px;padding:10px 0;box-shadow:0 0 5px rgba(0,0,0,.15);color:#77778e}.skin-4 .content-wrapper{padding:10px;position:relative}.skin-4 .content-wrapper{order:2;color:#3c3c3c}.skin-4 i.after-content,.skin-4 i.before-content{position:absolute}.skin-4 i.before-content{top:10px;left:20px}.skin-4 i.after-content{bottom:10px;right:20px}.skin-4 blockquote{position:relative;font-size:14px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-4 blockquote::after,.skin-4 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-4 blockquote::before{top:10px;left:20px}.skin-4 blockquote::after{content:"\201D";right:20px}.skin-4 .image-wrapper{position:relative;max-width:100%;text-align:center}.skin-4 img{width:100px;border-radius:50%}.skin-4 .detail-wrapper{text-align:center}.skin-2 .designation,.skin-2 .title,.skin-4 .rating-wrapper{padding:5px 0}.skin-4 .rating-wrapper{color:#690a69}.skin-4 .title{font-weight:800;color:#000}.skin-3.testimonial-wrapper{display:flex;flex-direction:row;background-color:#9c989821;box-shadow:0 0 5px rgba(0,0,0,.15);color:#000;overflow:hidden}.skin-3 .content-section{display:flex;flex-direction:column;align-self:center}.skin-3 .content-wrapper{padding:10px;position:relative}.skin-2 i.after-content,.skin-3 i.before-content{position:absolute}.skin-3 i.before-content{top:10px;left:20px}.skin-3 i.after-content{bottom:10px;right:20px}.skin-3 blockquote{position:relative;font-size:18px;padding:10px;font-weight:500;text-align:left;margin:0;line-height:1.6em;font-style:italic}.skin-3 blockquote::after,.skin-3 blockquote::before{font-family:FontAwesome;content:"\201C";position:absolute;font-size:50px;opacity:.3;font-style:normal}.skin-3 blockquote::before{top:10px;left:20px}.skin-3 blockquote::after{content:"\201D";right:20px}.skin-3 .image-wrapper{position:relative;max-width:30%;max-height:250px;text-align:center;align-self:center}.skin-3 img{width:100%}.testimonial-wrapper .skin-3 .eae-person-avatar{border-radius:50%}.skin-3 .detail-wrapper{text-align:left;padding-left:20px}.skin-3 .designation,.skin-3 .rating-wrapper,.skin-3 .title{padding:3px 0}.skin-3 .rating-wrapper{color:#800040}.skin-3 .title{font-weight:800}.eae-swiper-outer-wrapper .swiper-button-prev{-webkit-mask:url(arrow-left.svg) no-repeat 100% 100%;mask:url(arrow-left.svg) no-repeat 100% 100%;-webkit-mask-size:cover;mask-size:cover;background-image:none;background-color:#007aff;transform:translateY(-50%);margin-top:0}.eae-swiper-outer-wrapper .swiper-container-rtl .swiper-button-prev{-webkit-mask:url(arrow-right.svg) no-repeat 100% 100%;mask:url(arrow-right.svg) no-repeat 100% 100%}.eae-swiper-outer-wrapper .swiper-button-next{-webkit-mask:url(arrow-right.svg) no-repeat 100% 100%;mask:url(arrow-right.svg) no-repeat 100% 100%;-webkit-mask-size:cover;mask-size:cover;background-image:none;background-color:#007aff;transform:translateY(-50%);margin-top:0}.eae-swiper-outer-wrapper .swiper-container-rtl .swiper-button-next{-webkit-mask:url(arrow-left.svg) no-repeat 100% 100%;mask:url(arrow-left.svg) no-repeat 100% 100%}.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .swiper-button-next,.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .swiper-button-prev{-webkit-mask:none;mask:none;-webkit-mask-size:unset;mask-size:unset;background-image:none;background-color:unset;width:auto;height:auto;transform:translateY(-50%);margin-top:0}.swiper-container .swiper-button-next i,.swiper-container .swiper-button-prev i{width:1em;height:1em;text-align:center;position:relative}.elementor-widget-wts-testimonial-slider .eae-swiper-outer-wrapper .eae-swiper-button-wrapper{position:absolute;height:auto;line-height:0}.eae-hpos-right.eae-vpos-top .eae-swiper-button-wrapper{bottom:auto;top:0;width:auto;right:0}.eae-vpos-top.eae-hpos-left .eae-swiper-button-wrapper{bottom:auto;top:0;width:auto;left:0}.eeae-hpos-right.eae-vpos-bottom .eae-swiper-button-wrapper{bottom:0;top:auto;width:auto;right:0}.eae-vpos-bottom.eae-hpos-left .eae-swiper-button-wrapper{bottom:0;top:auto;width:auto;left:0}.eae-hpos-right.eae-vpos-middle .eae-swiper-button-wrapper{bottom:auto;top:50%;width:auto;right:0}.eae-hpos-left.eae-vpos-middle .eae-swiper-button-wrapper{bottom:auto;top:50%;width:auto;left:0}.eae-hpos-left .swiper-button-next,.eae-hpos-left .swiper-button-prev,.eae-hpos-right .swiper-button-next,.eae-hpos-right .swiper-button-prev{position:relative;display:inline-block;right:auto;left:auto}.eae-hpos-right.eae-vpos-bottom .swiper-button-next,.eae-hpos-right.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-right.eae-vpos-top .swiper-button-next,.eae-hpos-right.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}.eae-hpos-left.eae-vpos-top .swiper-button-next,.eae-hpos-left.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}.eae-hpos-left.eae-vpos-bottom .swiper-button-next,.eae-hpos-left.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-center.eae-vpos-bottom .swiper-button-next,.eae-hpos-center.eae-vpos-bottom .swiper-button-prev{top:auto;bottom:0;transform:unset}.eae-hpos-center.eae-vpos-top .swiper-button-next,.eae-hpos-center.eae-vpos-top .swiper-button-prev{top:0;bottom:auto;transform:unset}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.eae-info-circle{position:relative;width:90%;margin:0 auto;border-radius:50%;display:block}.eae-info-circle:before{content:"";display:block;position:absolute;top:4%;left:4%;width:92%;height:92%;border-radius:50%;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;pointer-events:none}.eae-info-circle:after{content:"";display:block;padding-top:100%}.eae-info-circle .eae-ic-icon-wrap{position:absolute;display:inline-block;top:50%;left:50%;z-index:2;line-height:1em;vertical-align:middle;overflow:hidden;max-width:100%}.eae-info-circle .eae-info-circle-item{top:0;left:0;width:100%;height:100%;display:block}.eae-info-circle .eae-info-circle-item.eae-active .eae-info-circle-item__content-wrap{visibility:visible;opacity:1;display:flex}.eae-info-circle .eae-info-circle-item__content-wrap{visibility:visible;display:none;height:91%;width:91%;opacity:0;top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;border-radius:50%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.eae-info-circle .eae-info-circle-item__content-wrap:before{content:"";display:inline-block;height:100%;vertical-align:middle}.eae-info-circle .eae-info-circle-item__content{display:inline-block;top:50%;transform:translateY(-50%) translateX(-50%);position:absolute;left:50%;vertical-align:middle;z-index:1;max-height:100%;overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;text-align:center;width:75%}@media screen and (max-width:767px){.eae-info-circle.eae-info-circle .eae-info-circle-item__content-wrap:before{display:none}.eae-info-circle:after,.eae-info-circle:before{display:none}.eae-info-circle{width:100%!important}.eae-info-circle-wrapper:after,.eae-info-circle-wrapper:before{display:none}.eae-info-circle .eae-ic-icon-wrap{display:block;text-align:center;position:relative!important;left:unset!important;margin-left:0!important;margin-top:0!important;margin-bottom:10px}.eae-info-circle-item{position:relative!important;border-radius:0!important;padding:0;margin:10px 0}.eae-info-circle .eae-info-circle-item__content-wrap{visibility:visible;opacity:1!important;display:flex!important;border-radius:0!important;border:none!important;margin:0!important;padding-right:0!important;padding-left:0!important;padding-bottom:0!important;width:100%;height:auto;line-height:1.5em;position:relative;top:unset;left:unset;transform:unset}.eae-info-circle .eae-info-circle-item__content{position:relative;top:unset;left:unset;transform:unset;width:100%;padding:10px}}.eae-icon-wrap i{height:1.25em;width:1.25em;line-height:1.25em;display:block}.eae-icon-wrap i img{top:50%;left:50%;transform:translateX(-50%) translateY(-50%);position:absolute}.eae-icon{display:inline-block;text-align:center;vertical-align:middle;max-width:100%;overflow:hidden;padding:10px}.eae-icon-shape-circle:not(.elementor-element){border-radius:50%}.eae-icon-view-framed:not(.elementor-element){border-width:1px;border-style:solid}.eae-icon-wrapper{display:flex}.eae-icon-wrapper .eae-icon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1}.eae-timeline{position:relative;display:inline-block;width:100%}.eae-timline-progress-bar{width:4px;background-color:#f45b69;top:0;bottom:50px;position:absolute;transform:translateX(-50%)}.eae-timeline-item{position:relative;display:flex;flex-direction:row;padding-bottom:50px}.eae-timeline-item:last-child{padding-bottom:0!important}.eae-tl-top .eae-timeline-item{align-items:flex-start}.eae-tl-top .eae-tl-item-content::before{top:10px}.eae-timeline-item.image-position-row .eae-tl-item-image,.eae-timeline-item.image-position-row-reverse .eae-tl-item-image{margin-top:0;margin-bottom:0}.eae-tl-item-meta-wrapper-inner{display:none}.eae-tl-bottom .eae-timeline-item{align-items:flex-end}.eae-tl-bottom .eae-tl-item-content::before{bottom:10px}.eae-tl-center .eae-timeline-item{align-items:center}.eae-tl-center .eae-tl-item-content::before{bottom:calc(50% - 5px)}.eae-layout-center .eae-timline-progress-bar{left:50%}.eae-layout-center .eae-timeline-item:nth-child(odd){flex-direction:row-reverse}.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-meta-wrapper{margin-right:0;margin-left:0;justify-content:flex-start}body.rtl[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper,body:not(.rtl)[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper{padding-right:20px;padding-left:0}body.rtl[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper,body:not(.rtl)[data-elementor-device-mode=tablet] .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper{padding-right:0;padding-left:20px}body:not(.rtl) .eae-layout-left .eae-tl-content-wrapper{padding-right:10px;padding-left:20px}body.rtl .eae-layout-left .eae-tl-content-wrapper{padding-right:20px;padding-left:10px}.eae-layout-left .eae-timline-progress-bar{display:none}.eae-layout-left .eae-tl-item-meta-wrapper{display:none}.eae-layout-left .eae-tl-item-meta-wrapper-inner{display:block}.eae-layout-right .eae-timline-progress-bar{display:none}body:not(.rtl) .eae-layout-right .eae-tl-content-wrapper{padding-right:20px;padding-left:10px}body.rtl .eae-layout-right .eae-tl-content-wrapper{padding-right:10px;padding-left:20px}.eae-layout-right .eae-tl-icon-wrapper{order:3}.eae-layout-right .eae-tl-item-meta-wrapper{display:none}.eae-layout-right .eae-tl-item-meta-wrapper-inner{display:block}.eae-tl-item-meta-wrapper{flex-grow:1;order:0;flex-basis:50%;flex-direction:initial;justify-content:flex-end;display:flex;align-items:center;margin-right:0}.eae-tl-item-meta{padding:0 20px}.eae-tl-icon-wrapper{height:auto;width:auto;flex-grow:0;flex-shrink:0;order:1;margin-left:0;margin-right:0;min-width:10px;min-height:10px;border-radius:999px;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.eae-tl-content-wrapper{flex-grow:1;order:2;flex-basis:50%;position:relative;padding-right:0;padding-left:20px}.eae-tl-item-content{background:#f4f4f4;padding:25px;overflow:hidden;text-align:center;display:flex;flex-direction:row}.eae-tl-content{display:inline-block;position:relative;padding:10px;width:100%;color:#000}.eae-timeline-item.custom-image-style-yes.image-position-row .eae-content-inner,.eae-timeline-item.custom-image-style-yes.image-position-row-reverse .eae-content-inner,.image-position-row .eae-timeline .eae-timeline-item:not(.custom-image-style-yes) .eae-content-inner,.image-position-row-reverse .eae-timeline .eae-timeline-item:not(.custom-image-style-yes) .eae-content-inner{position:relative;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1;width:100%}.custom-image-style-.image-position-row .eae-content-inner,.custom-image-style-.image-position-row-reverse .eae-content-inner,.custom-image-style-no.image-position-row .eae-content-inner,.custom-image-style-no.image-position-row-reverse .eae-content-inner{left:unset;top:unset;transform:unset}.eae-tl-item-image{display:inline-block}.image-position-row .eae-tl-item-image img,.image-position-row-reverse .eae-tl-item-image img{object-fit:cover;height:100%!important}.image-position-row .eae-tl-item-image,.image-position-row-reverse .eae-tl-item-image{margin:0}.image-position-column .eae-tl-item-image{margin:auto}.custom-image-style-.image-position-column .eae-tl-item-image,.custom-image-style-no.image-position-column .eae-tl-item-image{margin:0 auto}.eae-pb-inner-line{width:100%;background-color:#3d5ac3}.eae-tl-item-content::before{content:"";position:absolute;width:0;height:0;border-style:solid;border-width:8px 16px 8px 0;border-color:transparent #f4f4f4 transparent transparent}.eae-icon-wrapper{display:flex}.elementor-widget-bpel-timeline .eae-icon-wrapper{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1}.eae-tl-read-more{display:inline-block;padding:5px;border:2px solid #000}.image-position-row .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row-reverse!important}.image-position-row-reverse .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row!important}@media screen and (min-width:1024px){.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper,body.rtl .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper{padding-right:20px;padding-left:0}.eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-content-wrapper,body.rtl .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-content-wrapper{padding-right:0;padding-left:20px}.eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,.eae-layout-right .eae-tl-item-content::before,body.rtl .eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-tl-item-content::before{right:4px;left:unset;border-width:8px 0 8px 16px;border-color:transparent transparent transparent #f4f4f4}.eae-layout-center .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,.eae-layout-left .eae-tl-item-content::before,body.rtl .eae-layout-center .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-tl-item-content::before{left:4px;right:unset;border-width:8px 16px 8px 0;border-color:transparent #f4f4f4 transparent transparent}}@media screen and (max-width:1023px) and (min-width:768px){.image-position-row .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row-reverse!important}.image-position-row-reverse .eae-timeline.eae-timeline-alternate-yes .eae-timeline-item:nth-child(odd):not(.custom-image-style-yes) .eae-tl-item-content{flex-direction:row!important}.eae-tl-res-style-mobile-tablet .eae-tl-item-meta-wrapper{display:none}.eae-tl-res-style-mobile-tablet .eae-tl-item-meta-wrapper-inner{display:block}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item{flex-direction:row!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item{flex-direction:row-reverse!important}.eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,.eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body.rtl .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-right .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-tl-item-content::before{left:4px!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before{left:4px!important;right:unset!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}.eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-layout-left .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-center.eae-tl-res-style-mobile .eae-timeline-item:nth-child(even) .eae-tl-item-content::before,body:not(.rtl) .eae-layout-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before{right:4px!important;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper{padding-right:0!important;padding-left:20px!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper{padding-right:20px!important;padding-left:0!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar{left:13px}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar{left:calc(100% - 13px)}}@media screen and (max-width:767px){.eae-tl-item-meta-wrapper{display:none}.eae-tl-item-meta-wrapper-inner{display:block}.elementor-widget-bpel-timeline:not(.image-position-column) .eae-timeline .eae-tl-item-content{flex-direction:column-reverse!important}.eae-tl-item-image,.elementor-widget-bpel-timeline:not(.image-position-column) .eae-tl-content{width:100%!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item,.eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item{flex-direction:row!important}.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item,.eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item{flex-direction:row-reverse!important}.eae-timeline.eae-layout-center.eae-tl-center.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,.eae-timeline.eae-layout-center.eae-tl-center.eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item:nth-child(odd) .eae-tl-item-content::before,body.rtl .eae-timeline.eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-timeline.eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before{left:4px!important;border-width:8px 16px 8px 0!important;border-color:transparent #f4f4f4 transparent transparent!important}body.rtl .eae-layout-left .eae-timeline-item .eae-tl-item-content::before,body.rtl .eae-tl-res-style-mobile.eae-tl-res-layout-left .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before,body:not(.rtl) .eae-tl-res-style-mobile.eae-tl-res-layout-right .eae-timeline-item .eae-tl-item-content::before{right:4px!important;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}.eae-timeline.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper body.rtl .eae-timeline.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper{padding-right:0!important;padding-left:20px!important}body.rtl .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body.rtl .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper,body:not(.rtl) .eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper{padding-right:20px!important;padding-left:0!important}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar,.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-left .eae-timline-progress-bar{left:13px}.eae-tl-res-style-mobile-tablet.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar,.eae-tl-res-style-mobile.eae-layout-center.eae-tl-res-layout-right .eae-timline-progress-bar{left:calc(100% - 13px)}body.rtl .eae-layout-center.eae-timeline.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-right .eae-timeline-item .eae-tl-content-wrapper .eae-tl-item-content::before{left:4px;right:unset}body.rtl .eae-layout-center.eae-timeline.eae-tl-res-style-mobile-tablet.eae-tl-res-layout-left .eae-timeline-item .eae-tl-content-wrapper .eae-tl-item-content::before{left:unset;right:4px;border-width:8px 0 8px 16px!important;border-color:transparent transparent transparent #f4f4f4!important}}[data-element_type="eae-evergreen-timer.skin1"] .eae-evergreen-wrapper{display:block;text-align:center}[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv{font-family:sans-serif;color:#fff;display:inline-block;font-weight:100;text-align:center;font-size:30px}[data-element_type="eae-evergreen-timer.skin1"] .eae-time-wrapper{padding:10px;border-radius:3px;background:#00bf96;display:inline-block;overflow:hidden}[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv div>span{padding:15px;width:100%;background:#00816a;display:inline-block}[data-element_type="eae-evergreen-timer.skin1"] .smalltext{padding:7px;font-size:16px}[data-element_type="eae-evergreen-timer.skin1"] .eae-egt-hide{display:none}.eae-egt-message{display:none}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin1"] #eaeclockdiv div>span{padding:5px}[data-element_type="eae-evergreen-timer.skin1"] .eae-time-wrapper{padding:5px}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden}[data-element_type="eae-evergreen-timer.skin2"] .eae-evergreen-wrapper{display:inline-block;width:100%;text-align:center;margin:auto}[data-element_type="eae-evergreen-timer.skin2"] .timer-container{display:inline-block}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper a{cursor:pointer;text-decoration:none;color:#ccc}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper a:hover{color:#fff}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{list-style:none}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:after,[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:before{content:" ";display:table}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper.clearfix:after{clear:both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper{font:normal 11px "Helvetica Neue",Helvetica,sans-serif;-webkit-user-select:none}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-meridium{background:0 0!important;box-shadow:0 0 0!important;font-size:36px!important}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-meridium a{color:#313333}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper{text-align:center;position:relative;width:100%;margin:1em}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:after,[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:before{content:" ";display:table}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper:after{clear:both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{position:relative;float:left;margin:5px;width:60px;height:90px;font-size:80px;font-weight:700;line-height:87px;border-radius:6px;background:#000}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li{z-index:1;position:absolute;left:0;top:0;width:100%;height:100%;line-height:87px;text-decoration:none!important}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li:first-child{z-index:2}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a{display:block;height:100%;-webkit-perspective:200px;-moz-perspective:200px;perspective:200px;margin:0!important;overflow:visible!important;cursor:default!important}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div{z-index:1;position:absolute;left:0;width:100%;height:50%;font-size:80px;overflow:hidden;outline:1px solid transparent}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div .shadow{position:absolute;width:100%;height:100%;z-index:2}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up{-webkit-transform-origin:50% 100%;-moz-transform-origin:50% 100%;-ms-transform-origin:50% 100%;-o-transform-origin:50% 100%;transform-origin:50% 100%;top:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up:after{content:"";position:absolute;top:44px;left:0;z-index:5;width:100%;height:3px;background-color:#000;background-color:rgba(0,0,0,.4)}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.down{-webkit-transform-origin:50% 0;-moz-transform-origin:50% 0;-ms-transform-origin:50% 0;-o-transform-origin:50% 0;transform-origin:50% 0;bottom:0;border-bottom-left-radius:6px;border-bottom-right-radius:6px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div div.inn{position:absolute;left:0;z-index:1;width:100%;height:200%;color:#ccc;text-shadow:0 1px 2px #000;text-align:center;background-color:#333;border-radius:6px;font-size:70px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.up div.inn{top:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div.down div.inn{bottom:0}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before{z-index:3}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper .flip{box-shadow:0 2px 5px rgba(0,0,0,.7)}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active{-webkit-animation:asd 10ms .49s linear both;-moz-animation:asd 10ms .49s linear both;animation:asd 10ms .49s linear both;z-index:5}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{float:left;display:inline-block;position:relative;width:20px;height:100px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider:first-child{width:0}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot{display:block;background:#323434;width:10px;height:10px;position:absolute;border-radius:50%;box-shadow:0 0 5px rgba(0,0,0,.5);left:5px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider .flip-clock-label{position:absolute;top:-1.5em;right:-86px;color:#000;text-shadow:none}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.minutes .flip-clock-label{right:-88px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.seconds .flip-clock-label{right:-91px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot.top{top:30%}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot.bottom{bottom:30%}@-webkit-keyframes asd{0%{z-index:2}100%{z-index:4}}@-moz-keyframes asd{0%{z-index:2}100%{z-index:4}}@-o-keyframes asd{0%{z-index:2}100%{z-index:4}}@keyframes asd{0%{z-index:2}100%{z-index:4}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .down{z-index:2;-webkit-animation:turn .5s .5s linear both;-moz-animation:turn .5s .5s linear both;animation:turn .5s .5s linear both}@-webkit-keyframes turn{0%{-webkit-transform:rotateX(90deg)}100%{-webkit-transform:rotateX(0)}}@-moz-keyframes turn{0%{-moz-transform:rotateX(90deg)}100%{-moz-transform:rotateX(0)}}@-o-keyframes turn{0%{-o-transform:rotateX(90deg)}100%{-o-transform:rotateX(0)}}@keyframes turn{0%{transform:rotateX(90deg)}100%{transform:rotateX(0)}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .up{z-index:2;-webkit-animation:turn2 .5s linear both;-moz-animation:turn2 .5s linear both;animation:turn2 .5s linear both}@-webkit-keyframes turn2{0%{-webkit-transform:rotateX(0)}100%{-webkit-transform:rotateX(-90deg)}}@-moz-keyframes turn2{0%{-moz-transform:rotateX(0)}100%{-moz-transform:rotateX(-90deg)}}@-o-keyframes turn2{0%{-o-transform:rotateX(0)}100%{-o-transform:rotateX(-90deg)}}@keyframes turn2{0%{transform:rotateX(0)}100%{transform:rotateX(-90deg)}}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li.flip-clock-active{z-index:3}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,#000));background:linear,top,rgba(0,0,0,.1) 0,#000 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,#000 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .up .shadow{background:-moz-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,rgba(0,0,0,.1)),color-stop(100%,#000));background:linear,top,rgba(0,0,0,.1) 0,#000 100%;background:-o-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:-ms-linear-gradient(top,rgba(0,0,0,.1) 0,#000 100%);background:linear,to bottom,rgba(0,0,0,.1) 0,#000 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .3s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-before .down .shadow{background:-moz-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#000),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,#000 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,#000 0,rgba(0,0,0,.1) 100%;-webkit-animation:show .5s linear both;-moz-animation:show .5s linear both;animation:show .5s linear both}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul.play li.flip-clock-active .down .shadow{background:-moz-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#000),color-stop(100%,rgba(0,0,0,.1)));background:linear,top,#000 0,rgba(0,0,0,.1) 100%;background:-o-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:-ms-linear-gradient(top,#000 0,rgba(0,0,0,.1) 100%);background:linear,to bottom,#000 0,rgba(0,0,0,.1) 100%;-webkit-animation:hide .5s .3s linear both;-moz-animation:hide .5s .3s linear both;animation:hide .5s .2s linear both}@-webkit-keyframes show{0%{opacity:0}100%{opacity:1}}@-moz-keyframes show{0%{opacity:0}100%{opacity:1}}@-o-keyframes show{0%{opacity:0}100%{opacity:1}}@keyframes show{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes hide{0%{opacity:1}100%{opacity:0}}@-moz-keyframes hide{0%{opacity:1}100%{opacity:0}}@-o-keyframes hide{0%{opacity:1}100%{opacity:0}}@keyframes hide{0%{opacity:1}100%{opacity:0}}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{width:15px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-dot{height:5px;width:5px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{height:40px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider{height:50px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li{line-height:37px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul li a div div.inn{font-size:24px}[data-element_type="eae-evergreen-timer.skin2"] .eae-flip-clock-wrapper ul{margin:2px}}[data-element_type="eae-evergreen-timer.skin3"] #timer{font-family:sans-serif;color:#fff;display:inline-block;font-weight:100;text-align:center;font-size:30px}[data-element_type="eae-evergreen-timer.skin3"] .desc{display:flex;justify-content:center}[data-element_type="eae-evergreen-timer.skin3"].eae-egt-content-align-right .desc{justify-content:flex-end}[data-element_type="eae-evergreen-timer.skin3"].eae-egt-content-align-left .desc{justify-content:flex-start}[data-element_type="eae-evergreen-timer.skin3"] .desc .egt-time-text{display:inline-block;padding:0 50px 0 50px}[data-element_type="eae-evergreen-timer.skin3"] .eae-time-wrapper{padding:50px;border-radius:3px;background:#00bf96;display:inline-block;overflow:hidden;margin:5px;line-height:1em}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(1){background:khaki}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(2){background:#cd5c5c}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(3){background:#5f9ea0}[data-element_type="eae-evergreen-timer.skin3"] #timer span:nth-child(4){background:#6495ed}[data-element_type="eae-evergreen-timer.skin3"] .fade{animation:flip .7s ease forwards}@keyframes flip{0%{transform:rotateY(0) scaleY(1.1);opacity:.5}50%{transform:rotateY(180deg) scaleY(1.3);opacity:0}100%{transform:rotateY(0);opacity:1}}@media screen and (max-width:767px){[data-element_type="eae-evergreen-timer.skin3"] #timer span{font-size:22px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider .flip-clock-label{top:-1.5em;right:-42px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.minutes .flip-clock-label{right:-48px}[data-element_type="eae-evergreen-timer.skin2"] .flip-clock-divider.seconds .flip-clock-label{right:-51px}}[data-element_type="eae-evergreen-timer.skin4"] .eae-evergreen-wrapper{width:100%}[data-element_type="eae-evergreen-timer.skin4"] .container{margin:0 auto}[data-element_type="eae-evergreen-timer.skin4"] .special{position:relative;width:840px;height:47px}[data-element_type="eae-evergreen-timer.skin4"] #counter{position:absolute;z-index:4000}[data-element_type="eae-evergreen-timer.skin4"] .digit-separator{position:relative;float:left;width:17px;height:44px;overflow:hidden;background-image:url(../digit-sep-svg.svg);background-repeat:no-repeat;background-position:0 0;background-color:#4054b2}[data-element_type="eae-evergreen-timer.skin4"] .digit{background-image:url(../digits-svg-alpha.svg);background-color:#4054b2}.eae-ct-wrapper *{box-sizing:border-box;margin:0;outline:0}article.eae-ct-wrapper{width:100%;max-width:1000px;margin:0 auto;position:relative}.eae-ct-wrapper tbody tr.eae-ct-header td,.eae-ct-wrapper th{position:relative}.eae-ct-wrapper ul{display:none;top:0;z-index:10;padding-bottom:14px}.eae-ct-wrapper li{list-style:none;flex:1;position:relative}.eae-ct-wrapper li:hover{cursor:pointer}.eae-ct-wrapper .eae-ct-heading{width:100%;padding:10px;background:#fff;font-size:20px;font-weight:700;height:60px;color:#999;text-align:center}.eae-ct-wrapper li.eae-ct-heading .eae-ct-heading-inner{position:absolute;align-self:center;top:50%;left:50%;transform:translate(-50%,-50%);width:100%}.eae-ct-wrapper li.eae-ct-heading.active{background:#f5f5f5}.eae-ct-wrapper table{border-collapse:collapse;table-layout:fixed;width:100%}.eae-ct-wrapper th{background:#f5f5f5;display:none}.eae-ct-wrapper td,.eae-ct-wrapper th{height:53px;vertical-align:middle}.eae-ct-wrapper table{border:none}.eae-ct-wrapper table td,.eae-ct-wrapper table th{border:none}.eae-ct-wrapper table tr td:first-child,.eae-ct-wrapper table tr td:last-child,.eae-ct-wrapper td,.eae-ct-wrapper th{padding:10px;empty-cells:show}.eae-ct-wrapper td,.eae-ct-wrapper th{text-align:center}.eae-ct-wrapper td+td,.eae-ct-wrapper th+th{text-align:center}.eae-ct-wrapper tr:first-child{background:0 0!important}.eae-ct-wrapper ul li:nth-child(1){display:table-cell}.eae-ct-wrapper tr td:nth-child(2){display:table-cell}.eae-ct-wrapper td:nth-child(1){display:table-cell}.eae-ct-wrapper td{display:none}.eae-ct-wrapper .sep{background:#f5f5f5;font-weight:700}.eae-ct-price-wrapper{display:flex;justify-content:center}.eae-ct-tt-type-icon .eae-ct-feature .tooltip{float:right}.eae-ct-wrapper .tooltiptext::before{content:"";border-width:5px 5px 0 5px;border-color:#fff;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent;bottom:-10px;width:0;height:0;border-style:solid;position:absolute;margin:5px;left:42%}.eae-ct-wrapper .eae-ct-price{font-size:28px;font-weight:700;line-height:1em}.eae-ct-wrapper .eae-ct-currency{align-self:flex-start;margin-right:3px}.eae-ct-wrapper .eae-ct-fractional-price{align-self:flex-start;margin-left:3px}.eae-ct-wrapper .eae-ct-duration{align-self:flex-start}.eae-ct-wrapper .eae-ct-original-price{margin-right:5px;text-decoration:line-through;align-self:flex-end}.eae-ct-wrapper .tick{font-size:18px;color:#2ca01c}.feature-heading-blank.eae-ct-wrapper .hide{border:unset!important;background:unset!important}.eae-ct-wrapper .hide.eae-ct-hide.eae-fbox-heading{border:0 solid #000}.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{position:absolute;top:0;width:100px;overflow:hidden;height:100px;z-index:998;padding:8px 12px}.eae-ct-ribbons-h-top.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{position:absolute;top:0;width:100%;overflow:hidden;height:50px;z-index:999;padding:8px 12px}.eae-ct-ribbons-h-top.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper-top{background-color:rgba(63,195,135,.8);color:#fff;transform:translateY(-100%);position:absolute;width:100%;top:0;left:0}.eae-ct-ribbons-h-left.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.eae-ct-ribbons-h-right.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(90deg);left:auto;right:0}.eae-ct-ribbons-yes .eae-ct-ribbons-wrapper span.eae-ct-ribbons-inner{position:absolute;text-align:center;left:0;top:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:rgba(63,195,135,.8);padding:8px 12px;color:#fff}.eae-ct-wrapper .tooltip{position:relative;display:inline-block}.eae-ct-wrapper .tooltip .tooltiptext{visibility:hidden;min-width:120px;background-color:#000;color:#fff;text-align:center;border-radius:6px;padding:5px 0;position:absolute;z-index:1;bottom:120%;left:50%;margin-left:-60px}.eae-ct-wrapper .tooltip:hover .tooltiptext{visibility:visible}.eae-ct-heading-tooltip{text-decoration-line:underline;text-decoration-style:dotted}.eae-ct-btn{padding:10px 15px 10px 15px;color:#fff;display:inline-block;line-height:1em}.eae-ct-btn:hover{color:#fff}.eae-ct-wrapper i.fa.fa-check,.eae-ct-wrapper i.fas.fa-check{color:#38f146}.eae-ct-wrapper i.fa.fa-close,.eae-ct-wrapper i.fas.fa-times{color:red}.button-heading-blank.eae-ct-wrapper tr:last-child td:first-child{background:0 0!important;border:none!important}.eae-ct-wrapper tr:last-child{background:0 0!important}.eae-ct-wrapper tbody tr:nth-child(2){background:0 0!important}@media (min-width:767px){.eae-ct-wrapper .eae-ct-header,.eae-ct-wrapper td{width:330px}.eae-ct-wrapper td+td,.eae-ct-wrapper th+th{width:auto}}.eae-tab-format-all .eae-ct-wrapper ul{display:flex}.hide.eae-ct-hide{display:table-cell}@media (min-width:1023px){.eae-tab-format-all tbody tr.eae-ct-header{display:none}.eae-tab-format-mobile .eae-ct-wrapper td,.eae-tab-format-mobile .eae-ct-wrapper th,.eae-tab-format-tab-mob .eae-ct-wrapper td,.eae-tab-format-tab-mob .eae-ct-wrapper th{display:table-cell!important}.eae-tab-format-all .hide.eae-ct-hide{display:table-cell}.eae-tab-format-mobile .hide.eae-ct-hide,.eae-tab-format-tab-mob .hide.eae-ct-hide{display:none!important}}@media (max-width:1023px){.eae-tab-format-tab-mob .eae-ct-wrapper ul{display:flex}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-tab-mob tbody tr.eae-ct-header{display:none}.eae-tab-format-all .hide.eae-ct-hide{display:table-cell}.eae-tab-format-tab-mob .hide.eae-ct-hide{display:table-cell}}@media (max-width:1023px) and (min-width:768px){.eae-tab-format-mobile .eae-ct-wrapper td,.eae-tab-format-mobile .eae-ct-wrapper th{display:table-cell!important}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-tab-mob tbody tr.eae-ct-header{display:none}.eae-tab-format-tab-mob .hide.eae-ct-hide{display:table-cell}}@media (max-width:767px){.eae-tab-format-mobile .eae-ct-wrapper ul{display:flex}.eae-tab-format-mobile tbody tr.eae-ct-header{display:none}.eae-tab-format-all tbody tr.eae-ct-header,.eae-tab-format-mobile tbody tr.eae-ct-header{display:none}.eae-tab-format-mobile .hide.eae-ct-hide{display:table-cell}}.eae-progress-bar-wrapper{display:flex;flex-direction:column;align-items:flex-start;margin:15px 0}.eae-progress-bar-wrapper.eae-progress-bar{width:100%;position:relative;box-sizing:border-box}.eae-pb-bar,.eae-pb-bar-inner,.eae-pb-bar-skill,.eae-pb-bar-value{box-sizing:border-box}.eae-pb-bar{position:relative;height:100%;width:100%;overflow:hidden}.eae-pb-bar--no-overflow{overflow:visible}.eae-pb-bar-inner{position:absolute;top:0;left:0;height:100%;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left center;transform-origin:left center}body.rtl .eae-pb-bar .eae-pb-bar-inner{position:absolute;top:0;right:0!important;height:100%;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:right center;transform-origin:right center}.eae-pb-bar-inner.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}body.rtl .eae-pb-bar .eae-pb-bar-inner.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-pb-bar-skill,.eae-pb-bar-value{font-size:14px;letter-spacing:1px}body:not(.rtl) .eae-pb-bar-value--aligned-value{-webkit-transform:translateX(-50%);transform:translateX(-50%)}body.rtl .eae-pb-bar-value--aligned-value{-webkit-transform:translateX(50%);transform:translateX(50%)}.eae-progress-bar-skin1{height:20px;padding:4px;border:1px solid #ddd;border-radius:20px}.eae-pb-bar-skin1{border-radius:20px}.eae-pb-bar-inner-skin1{background-color:#00bfb3;background-size:200%;background-position:0 0;border-radius:20px}.eae-pb-bar-skill-skin1{position:absolute;bottom:20px;left:0;opacity:0}body.rtl .eae-pb-bar-skill-skin1{right:0}.eae-pb-bar-skill-skin1.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;left:0;opacity:1}body.rtl .eae-pb-bar-skill-skin1.js-animated{right:0!important}.eae-pb-bar-value-skin1{position:absolute;bottom:20px;opacity:1}body:not(.rtl) .eae-pb-bar-value-skin1{right:0}body.rtl .eae-pb-bar-value-skin1{left:0!important}.eae-pb-bar-value-skin1.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-value-skin1.js-animated{right:0}.eae-progress-bar-skin2{height:15px;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2);border-radius:3px}@-webkit-keyframes progress-2-bg-animation-rtl{100%{background-position:0 0,0 0}0%{background-position:0 0,42px 0}}@keyframes progress-2-bg-animation-rtl{100%{background-position:0 0,0 0}0%{background-position:0 0,42px 0}}@-webkit-keyframes progress-2-bg-animation{0%{background-position:0 0,0 0}1000%{background-position:0 0,42px 0}}@keyframes progress-2-bg-animation{0%{background-position:0 0,0 0}100%{background-position:0 0,42px 0}}.eae-pb-bar-inner-skin2{background-image:linear-gradient(to top,rgba(255,255,255,.15),rgba(0,0,0,.2)),linear-gradient(135deg,#5eeb5b,#5eeb5b 33%,#358600 33%,#358600 66%,#5eeb5b 66%);background-size:100% 100%,42px 100%;background-position:0 0,0 0;border-radius:3px}body:not(.rtl) .eae-pb-bar-inner-skin2.js-animated{-webkit-animation:progress-2-bg-animation 1.5s linear 0s infinite;animation:progress-2-bg-animation 1.5s linear 0s infinite}body.rtl .eae-pb-bar-inner-skin2.js-animated{-webkit-animation:progress-2-bg-animation-rtl 1.5s linear 0s infinite;animation:progress-2-bg-animation-rtl 1.5s linear 0s infinite}.eae-pb-bar-skill-skin2{position:absolute;opacity:0}body:not(.rtl) .eae-pb-bar-skill-skin2{left:0}body.rtl .eae-pb-bar-skill-skin2{right:0}.eae-pb-bar-skill-skin2.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;bottom:20px;opacity:1}.eae-pb-bar-value-skin2{position:absolute;opacity:0}body:not(.rtl) .eae-pb-bar-value-skin2{right:0}body.rtl .eae-pb-bar-value-skin2{left:0}.eae-pb-bar-value-skin2.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;bottom:20px;opacity:1}.eae-progress-bar-skin3{height:5px;background-color:#efefef}.eae-pb-bar-inner-skin3,.eae-pb-bar-value-skin3{background-color:#f40076}.eae-pb-bar-inner:after,.eae-pb-bar-value-skin3:after{border-top-color:#f40076}.eae-pb-bar-skill-skin3{position:absolute;bottom:10px;left:-10px;opacity:0}.eae-pb-bar-skill-skin3.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-skill-skin3.js-animated{left:0}body.rtl .eae-pb-bar-skill-skin3.js-animated{right:0}.eae-pb-bar-value-skin3{position:absolute;display:inline-block;padding:0 8px;font-size:14px;color:#fff;opacity:0}.eae-pb-bar-value-skin3:after{position:absolute;left:50%;bottom:-10px;display:block;width:0;height:0;content:"";-webkit-transform:translateX(-50%);transform:translateX(-50%);border-width:5px;border-style:solid;border-color:#f40076 transparent transparent transparent}.eae-pb-bar-inner-skin3.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:1.5s;-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-pb-bar-value-skin3.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:cubic-bezier(.1,1.14,.31,1.06);transition-delay:2s;bottom:14px;opacity:1}.eae-progress-bar-skin4{height:3px;background-color:#efefef}.eae-pb-bar-inner-skin4{background-color:#000}.eae-pb-bar-inner-skin4:after{position:absolute;top:50%;display:block;width:8px;height:8px;content:"";-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#000;border-radius:50%}body:not(.rtl) .eae-pb-bar-inner-skin4:after{right:0}body.rtl .eae-pb-bar-inner-skin4:after{left:0}.eae-pb-bar-value-skin4{position:absolute;bottom:2px;font-size:14px;opacity:0}.eae-pb-bar-value-skin4.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:linear;transition-delay:1.5s;opacity:1}.eae-pb-bar-skill-skin4{position:absolute;bottom:2px;left:-20px;opacity:0}.eae-pb-bar-skill-skin4.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}body:not(.rtl) .eae-pb-bar-skill-skin4.js-animated{left:0}body.rtl .eae-pb-bar-skill-skin4.js-animated{right:0}.eae-progress-bar-skin5{height:30px;background-color:#f7f7f7}.eae-pb-bar-inner-skin5{background-color:#57b8ff}.eae-pb-bar-skill-skin5{position:absolute;top:50%;color:#fff;-webkit-transform:translateY(-50%);transform:translateY(-50%);opacity:0}body:not(.rtl) .eae-pb-bar-skill-skin5{left:10px}body:not(.rtl) .eae-pb-bar-skill-skin5{right:10px}.eae-pb-bar-skill-skin5.js-animated{transition-property:all;transition-duration:.5s;transition-timing-function:linear;transition-delay:.5s;opacity:1}.eae-pb-bar-value-skin5{position:absolute;top:50%;color:#fff;opacity:0;z-index:10}body:not(.rtl) .eae-pb-bar-value-skin5{-webkit-transform:translateX(-100%) translateX(-10px) translateY(-50%);transform:translateX(-100%) translateX(-10px) translateY(-50%)}body.rtl .eae-pb-bar-value-skin5{-webkit-transform:translateX(100%) translateX(10px) translateY(-50%);transform:translateX(100%) translateX(10px) translateY(-50%)}.eae-pb-bar-value-skin5.js-animated{transition-property:all;transition-duration:1.5s;transition-timing-function:linear;transition-delay:1.5s;opacity:1}.eae-dual-button-wrapper .eae-button-1-wrapper,.eae-dual-button-wrapper .eae-button-2-wrapper{overflow:hidden}.eae-dual-button-wrapper.button-style-horizontal{display:flex;flex-direction:row;position:relative}.eae-dual-button-main-wrapper{display:flex;flex-direction:row;justify-content:center}.eae-dual-button-wrapper a{min-width:0}.eae-dual-button-wrapper.button-style-vertical{display:inline-flex;flex-direction:column;position:relative}.eae-button-1.icon-before,.eae-button-2.icon-before{display:flex;flex-direction:row}body.rtl .eae-button-1.icon-before,body.rtl .eae-button-2.icon-before{display:flex;flex-direction:row-reverse}.eae-button-1.icon-after,.eae-button-2.icon-after{display:flex;flex-direction:row-reverse}body.rtl .eae-button-1.icon-after,body.rtl .eae-button-2.icon-after{display:flex;flex-direction:row}.eae-button-1-wrapper .eae-button-1,.eae-button-2-wrapper .eae-button-2{color:#000;align-items:center}.eae-button-1-wrapper:hover .eae-button-1,.eae-button-2-wrapper:hover .eae-button-2{color:#000}.eae-dual-button-wrapper.button-style-vertical .eae-button-1.icon-after,.eae-dual-button-wrapper.button-style-vertical .eae-button-1.icon-before,.eae-dual-button-wrapper.button-style-vertical .eae-button-2.icon-after,.eae-dual-button-wrapper.button-style-vertical .eae-button-2.icon-before{justify-content:center}.eae-button-1.icon-up,.eae-button-2.icon-up{display:flex;flex-direction:column;text-align:center}.eae-button-1.icon-down,.eae-button-2.icon-down{display:flex;flex-direction:column-reverse;text-align:center}.eae-button-1-wrapper{background:#ffb6c1;display:flex;justify-content:center;width:100%;line-height:1}.eae-button-2-wrapper{background:orange;display:flex;justify-content:center;width:100%;line-height:1}.eae-button-1.icon-up .icon-wrapper,.eae-button-2.icon-down .icon-wrapper,.eae-button-2.icon-up .icon-wrapper{text-align:center}.eae-button-1.icon-up .eae-button-text,.eae-button-2.icon-down .eae-button-text,.eae-button-2.icon-up .eae-button-text{text-align:center}.eae-button-1.icon-before i,.eae-button-2.icon-after i,.eae-button-2.icon-before i{align-self:center;margin:0 10px 0 0}.eae-button-1.icon-after i,.eae-button-2.icon-after i{align-self:center;margin:0 0 0 10px}.eae-button-1.icon-down i,.eae-button-1.icon-up i,.eae-button-2.icon-down i,.eae-button-2.icon-up i{align-self:center;margin:5px 0}.eae-dual-button-wrapper.button-style-horizontal .eae-button-1-wrapper,.eae-dual-button-wrapper.button-style-horizontal .eae-button-2-wrapper{padding:12px 30px}.eae-dual-button-wrapper.button-style-vertical .eae-button-1-wrapper,.eae-dual-button-wrapper.button-style-vertical .eae-button-2-wrapper{padding:20px 30px}.eae-button1,.eae-button2{position:relative;display:flex}.eae-dual-button-wrapper.button-style-horizontal .eae-button1,.eae-dual-button-wrapper.button-style-horizontal .eae-button2{min-width:150px}.eae-dual-button-wrapper.button-style-vertical .eae-button1{display:flex;flex-direction:column}.eae-button-separator-wrapper .eae-button-separator{width:40px;height:40px;line-height:40px;border-radius:50%;z-index:1;box-shadow:0 0 0 6px rgba(255,255,255,.2);background:#fafaf8;color:#444;text-transform:uppercase;text-align:center;vertical-align:middle;font-weight:400;font-size:14px;position:absolute;transform:translateY(-50%)}.eae-button-separator span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}body.rtl.elementor-editor-active .eae-dual-button-main-wrapper .button-style-horizontal .eae-button1 .eae-button-separator-wrapper.not-rtl .eae-button-separator{display:none!important}body:not(.rtl).elementor-editor-active .eae-dual-button-main-wrapper .button-style-horizontal .eae-button2 .eae-button-separator-wrapper.rtl .eae-button-separator,body:not(.rtl).elementor-editor-preview .eae-dual-button-main-wrapper .button-style-horizontal .eae-button2 .eae-button-separator-wrapper.rtl .eae-button-separator{display:none!important}.eae-sweep-right{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-right:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-right:active,.eae-sweep-right:focus,.eae-sweep-right:hover{color:#fff}.eae-sweep-right:active:before,.eae-sweep-right:focus:before,.eae-sweep-right:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-sweep-left{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-left:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-left:active,.eae-sweep-left:focus,.eae-sweep-left:hover{color:#fff}.eae-sweep-left:active:before,.eae-sweep-left:focus:before,.eae-sweep-left:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1)}.eae-sweep-bottom{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-bottom:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-bottom:active,.eae-sweep-bottom:focus,.eae-sweep-bottom:hover{color:#fff}.eae-sweep-bottom:active:before,.eae-sweep-bottom:focus:before,.eae-sweep-bottom:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1)}.eae-sweep-top{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.3s;transition-duration:.3s}.eae-sweep-top:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-sweep-top:active,.eae-sweep-top:focus,.eae-sweep-top:hover{color:#fff}.eae-sweep-top:active:before,.eae-sweep-top:focus:before,.eae-sweep-top:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1)}.eae-bounce-right{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-right:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-right:active,.eae-bounce-right:focus,.eae-bounce-right:hover{color:#fff}.eae-bounce-right:active:before,.eae-bounce-right:focus:before,.eae-bounce-right:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-left{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-left:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-left:active,.eae-bounce-left:focus,.eae-bounce-left:hover{color:#fff}.eae-bounce-left:active:before,.eae-bounce-left:focus:before,.eae-bounce-left:hover:before{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-bottom{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-bottom:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-bottom:active,.eae-bounce-bottom:focus,.eae-bounce-bottom:hover{color:#fff}.eae-bounce-bottom:active:before,.eae-bounce-bottom:focus:before,.eae-bounce-bottom:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-bounce-top{vertical-align:middle;-webkit-transform:perspective(1px) translateZ(0);transform:perspective(1px) translateZ(0);box-shadow:0 0 1px transparent;position:relative;-webkit-transition-property:color;transition-property:color;-webkit-transition-duration:.5s;transition-duration:.5s}.eae-bounce-top:before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background:#2098d1;-webkit-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transition-property:transform;transition-property:transform;-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out}.eae-bounce-top:active,.eae-bounce-top:focus,.eae-bounce-top:hover{color:#fff}.eae-bounce-top:active:before,.eae-bounce-top:focus:before,.eae-bounce-top:hover:before{-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition-timing-function:cubic-bezier(.52,1.64,.37,.66);transition-timing-function:cubic-bezier(.52,1.64,.37,.66)}.eae-markers .marker{display:none}.eae-markers p{margin-bottom:0}.eae-fg-wrapper{display:flex;flex-direction:column;overflow:hidden}.eae-gallery-filter{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.eae-filter-label{padding:5px 10px;background-color:#a0ce4e;color:#fff;margin:0 3px 0 3px}.eae-filter-label.current{background-color:#73b9dc}.eae-fg-image{display:flex;flex-wrap:wrap;flex-direction:row}.eae-fg-wrapper .eae-gallery-item-inner img{width:100%;height:auto;display:block!important;transition:all .5s ease;-webkit-transition:all .5s ease}.eae-gallery-item{height:auto}.eae-gallery-filter a{color:#fff;text-decoration:none}.eae-gallery-filter a.current{font-weight:700}.eae-gallery-item-inner{position:relative;overflow:hidden}.eae-overlay-always .eae-gallery-item .eae-grid-overlay{display:block}.eae-overlay-hover .eae-gallery-item-inner:hover .eae-grid-overlay{display:block}.eae-overlay-hide-on-hover .eae-gallery-item-inner:hover .eae-grid-overlay{display:none}.eae-overlay-hide-on-hover .eae-grid-overlay{display:block}.eae-grid-overlay{position:absolute;top:0;left:0;display:none;z-index:99;background:rgba(0,0,0,.5);height:100%;width:100%}.eae-grid-overlay-inner{display:block;position:relative;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.eae-fg-wrapper .eae-icon-wrapper{display:flex;justify-content:center}.eae-overlay-caption{display:block;line-height:1em;margin-top:15px;color:#73b9dc;font-size:20px}.eae-overlay-icon{line-height:1em;padding:.5em;display:inline-block}.eae-overlay-icon svg{height:auto}.eae-icon-view-framed .eae-overlay-icon{padding:.5em;color:#73b9dc;border:3px solid #73b9dc;background-color:transparent}.eae-icon-view-stacked .eae-overlay-icon{padding:.5em;color:#fff;background-color:#818a91}.eae-hover-direction-effect .eae-grid-overlay{position:absolute;z-index:99;background:rgba(0,0,0,.5);height:100%;width:100%}.eae-fg-wrapper.eae-image-ratio-yes .eae-gallery-item-inner .eae-fg-img-wrapper{position:relative;top:0;overflow:hidden;left:0;right:0;border:0}.eae-fg-wrapper.eae-image-ratio-yes .eae-gallery-item-inner .eae-fg-img-wrapper img{height:100%;width:100%;display:block;position:absolute;top:0;left:0;object-fit:cover}.wts-eae-ribbons-badges-wrapper{display:none}.wts-eae-enable-ribbons-badges-yes .elementor-column-wrap>.wts-eae-ribbons-badges-wrapper{display:block}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{position:absolute;top:0;left:auto;right:0;-ms-transform:rotate(90deg);width:150px;overflow:hidden;height:150px;z-index:999;padding:8px 12px}.wts-eae-badge-h-left.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.wts-eae-badge-h-right.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(90deg);left:auto;right:0}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-ribbon>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{position:absolute;text-align:center;left:0;top:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:rgba(63,195,135,.8);padding:8px 12px}.wts-eae-enable-ribbons-badges-yes.wts-eae-badge-type-badge>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{min-height:3.236em;min-width:3.236em;padding:0;font-size:1em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;z-index:9}.wts-eae-badge-h-left.wts-eae-badge-v-bottom.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:20px;right:auto;top:auto;bottom:20px}.wts-eae-badge-h-left.wts-eae-badge-v-top.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:20px;right:auto;top:20px;bottom:auto}.wts-eae-badge-h-right.wts-eae-badge-v-bottom.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:auto;right:20px;top:auto;bottom:20px}.wts-eae-badge-h-right.wts-eae-badge-v-top.wts-eae-enable-ribbons-badges-yes>.wts-eae-ribbons-badges-wrapper span.wts-eae-ribbons-badges-inner{left:auto;right:20px;top:20px;bottom:auto}.eae-flip-box-back svg,.eae-flip-box-front svg{width:25px;height:auto}.wts-eae-textseparator svg{width:25px;height:auto}.eae-img-comp-slider svg{width:22px;height:auto}.eae-popup-link svg{display:inline-block;width:1em}.eae-popup svg:focus,.eae-popup svg:hover{opacity:1;cursor:pointer}.eae-popup svg:active{top:1px}.eae-popup svg.eae-close{width:28px;height:28px;line-height:1em;text-decoration:none;text-align:center;opacity:1;background-color:#fff}.eae-dual-button-wrapper svg{width:1em;height:auto;display:block}eae-button-separator i{position:relative;display:block}.eae-button-1.icon-before svg,.eae-button-2.icon-after svg,.eae-button-2.icon-before svg{align-self:center;margin:0 10px 0 0}.eae-button-1.icon-after svg,.eae-button-2.icon-after svg{align-self:center;margin:0 0 0 10px}.eae-button-1.icon-down svg,.eae-button-1.icon-up svg,.eae-button-2.icon-down svg,.eae-button-2.icon-up svg{align-self:center;margin:5px 0}.eae-pt-button-wrapper a svg{width:1em}.eae-pt-action-button .eae-pt-align-icon-left{float:left}.eae-pt-action-button .eae-pt-align-icon-right{float:right}.eae-icon-wrap svg{width:20px;height:auto;font-size:20px;display:block}.eae-info-circle .eae-icon-wrap svg{width:20px;height:auto;font-size:20px}.eae-icon-view-stacked svg{fill:#fff}.ae-link-yes{cursor:pointer}.eae-element-unfold-content{padding:10px 0;background-color:#d3d3d3c4;width:100%;position:absolute;left:0;bottom:0;z-index:999}a.eae-unfold-link{background-color:#61ce70;color:#fff;display:inline-block;overflow:hidden}a.eae-unfold-link svg{background-color:#fff}.eae-unfold-button-icon{vertical-align:middle}.eae-fold-yes .elementor-column-wrap,.eae-fold-yes.elementor-section .elementor-container,.eae-fold-yes.elementor-widget{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-section.eae-widget-unfold-yes .elementor-container,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-section.eae-widget-unfold-yes .elementor-container{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-column.eae-widget-unfold-yes .elementor-column-wrap,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-column.eae-widget-unfold-yes .elementor-column-wrap{overflow:hidden}body.elementor-editor-active .elementor.elementor-edit-mode .elementor-element.elementor-widget.eae-widget-unfold-yes,body.elementor-editor-preview .elementor.elementor-edit-mode .elementor-element.elementor-widget.eae-widget-unfold-yes{overflow:hidden}.eae-widget-unfold-yes .elementor-widget-container .eae-fold-yes.eae-rc{display:none!important}.eae-unfold-button-icon svg{line-height:1em;text-decoration:none;-webkit-mask-repeat:no-repeat!important;text-align:center;opacity:1}.eae-fold-icon-type-svg .eae-unfold-button-icon,.eae-unfold-icon-type-svg .eae-unfold-button-icon{-webkit-mask-size:cover!important;background-image:none;transform:translateY(-50%)}.elementor-section.elementor-section-items-bottom.eae-widget-unfold-yes>.elementor-container,.elementor-section.elementor-section-items-middle.eae-widget-unfold-yes>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:start}.elementor-section.elementor-section-content-bottom.eae-widget-unfold-yes>.elementor-container,.elementor-section.elementor-section-content-middle.eae-widget-unfold-yes>.elementor-container{-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:start}.elementor-widget-wts-modal-popup.eae-pop-btn-type-image .eae-popup-link{padding:0;background-color:transparent;overflow:hidden}[data-elementor-device-mode=tablet] .eae-tab-format-mobile .eae-ct-hide.eae-fbox-heading{display:none!important}.eae-timeline-item .eae-icon-view-stacked{border-width:0!important}.eae-content-switcher-wrapper{display:block;text-align:center}.eae-cs-layout-skin1 .eae-cs-switch-wrapper{display:inline-flex;flex-wrap:wrap;padding:8px 12px;background:#54595f;border-radius:50px}.eae-cs-switch-container{display:block;text-align:center}.eae-cs-layout-skin1 .eae-cs-label-wrapper{display:inline-block;overflow:hidden}.eae-cs-layout-skin1 .eae-content-switch-button{border-radius:50px;padding:8px 12px;background-color:#7a7a7a;color:#fff;overflow:hidden;display:block;min-width:150px;position:relative;text-align:center;margin:3px}.eae-cs-layout-skin1 .eae-content-switch-button:before{height:100%;top:0;left:0;z-index:0;content:"";width:0;position:absolute;right:0;transition:all .3s ease-out}.eae-cs-layout-skin1 .eae-content-switch-button.active:before{width:100%;left:0;right:auto;background-color:#61ce70}.eae-cs-layout-skin1 .eae-content-switch-label{position:relative}.eae-cs-content-section{display:none}.eae-cs-content-section.active{display:block}@media only screen and (max-width:768px){.eae-cs-switch-wrapper{display:inline-block!important}}.eae-cs-layout-skin2 .eae-cs-switch-wrapper{display:inline-flex;flex-wrap:wrap;padding:0;background:0 0}.eae-cs-layout-skin2 .eae-cs-label-wrapper{display:inline-block}.eae-cs-layout-skin2 .eae-content-switch-button{width:auto;margin:3px 8px;padding:10px 12px;background-color:#e2e2e2;overflow:hidden;display:block;position:relative;text-align:center;border-radius:5px;border:1px solid rgba(130,130,130,.26);color:rgba(71,71,71,.44)}.eae-cs-layout-skin2 .eae-content-switch-button.active{box-shadow:0 10px 34px -9px rgba(0,0,0,.38);background-color:#fff;color:#575757;border-color:#fff}h5.eae-cs-label{margin:0}.eae-cs-layout-skin3 .eae-cs-switch-wrapper{display:block;justify-content:center;align-items:center}.eae-content-switch-label.primary-label{margin-right:30px}.eae-content-switch-label.secondary-label{margin-left:30px}.eae-cs-layout-skin3 .eae-cs-switch-label{position:relative;display:inline-block;width:4.5em;height:2.3em;vertical-align:middle}.eae-cs-layout-skin3 .eae-content-switch-label{margin:0;display:inline-block}.eae-cs-layout-skin3 .eae-cs-switch-button{display:inline-block}.eae-cs-layout-skin3 .eae-cs-label{display:inline-block}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch{display:none}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;-webkit-transition:.4s;transition:.4s;-webkit-border-radius:1.5em;border-radius:1.5em;background:#2e394d;border:2px solid #2e394d}.eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span:before{position:absolute;content:"";height:28px;width:28px;left:4px;transform:translateY(-52%);top:50%;transition:.4s;transition:.4s;-webkit-border-radius:50%;border-radius:50%;background:#88cf8f;border:2px solid #88cf8f}body.rtl .eae-cs-layout-skin3 .eae-cs-switch-label input.eae-content-toggle-switch+span:before{left:unset;right:4px}.eae-cs-layout-skin3 .eae-cs-switch-label input:checked.eae-content-toggle-switch+span:before{transform:translate(36px,-52%)}body.rtl .eae-cs-layout-skin3 .eae-cs-switch-label input:checked.eae-content-toggle-switch+span:before{transform:translate(-36px,-52%)}.eae-content-switch-label.active{color:#61ce70}.eae-cs-layout-skin4 .eae-cs-switch-wrapper{display:block}.eae-cs-layout-skin4 .eae-content-switch-label.primary-label{margin-right:30px}.eae-cs-layout-skin4 .eae-content-switch-label.secondary-label{margin-left:30px}.eae-cs-layout-skin4 .eae-content-switch-label{display:inline-block}.eae-cs-layout-skin4 .eae-cs-switch-label{position:relative;display:inline-block;width:70px;height:20px;vertical-align:middle}.eae-cs-layout-skin4 .eae-cs-label{display:inline-block}.eae-cs-layout-skin4 .eae-content-toggle-switch{display:none}.eae-cs-layout-skin4 .eae-content-toggle-switcher{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;-webkit-transition:.4s;transition:.4s;-webkit-border-radius:1.5em;border-radius:1.5em;background:#2e394d;border:2px solid #2e394d}.eae-cs-layout-skin4 .eae-cs-switch-button{display:inline-block}.eae-cs-layout-skin4 .eae-content-toggle-switcher:before{position:absolute;content:"";height:34px;width:34px;left:-12px;top:50%;transform:translateY(-50%);border-radius:50%;border:2px solid #88cf8f;background:#88cf8f;-webkit-transition:.4s;transition:.4s;-webkit-box-shadow:3px 3px 6px 1px rgba(0,0,0,.2);box-shadow:3px 3px 6px 1px rgba(0,0,0,.2)}.eae-cs-layout-skin4 .eae-cs-switch-container{padding:15px 0}body.rtl .eae-cs-layout-skin4 .eae-content-toggle-switcher:before{right:-12px!important}.eae-cs-layout-skin4 input:checked+.eae-content-toggle-switcher:before{transform:translate(55px,-50%)}body.rtl .eae-cs-layout-skin4 input:checked+.eae-content-toggle-switcher:before{transform:translate(-55px,-50%)}.eae-swiper-outer-wrapper{position:relative}.eae-swiper-container{position:relative}.eae-thumb-container{position:absolute}.eae-swiper-outer-wrapper .eae-swiper-slide{height:400px;background-size:cover;background-repeat:no-repeat;background-position:right}.eae-swiper-outer-wrapper .eae-swiper-slide .eae-slide-inner{color:#7a7a7a;display:flex;position:absolute;top:0;left:0;bottom:0;right:0;padding:20px}.eae-slide-inner .eae-slide-content{padding:20px 30px}.eae-slide-inner .eae-slide-heading{font-size:35px;font-weight:700;line-height:1}.eae-slide-inner .eae-slide-text{font-size:17px;line-height:1.4}.eae-slide-inner .eae-slide-button{display:inline-block}.eae-slide-inner .eae-slide-btn{display:inline-block;font-size:15px;padding:12px 24px;border-radius:3px;cursor:pointer;transition:all .3s}.eae-slide-inner .eae-slide-heading:not(:last-child),.eae-slide-inner .eae-slide-text:not(:last-child){margin-bottom:30px}.eae--hr-position-left .eae-slide-inner{-webkit-box-pack:start;justify-content:flex-start}.eae--hr-position-right .eae-slide-inner{-webkit-box-pack:end;justify-content:flex-end}.eae--hr-position-center .eae-slide-inner{-webkit-box-pack:center;justify-content:center}.eae--vr-position-top .eae-slide-inner{-webkit-box-pack:start;align-items:flex-start}.eae--vr-position-middle .eae-slide-inner{-webkit-box-align:center;align-items:center}.eae--vr-position-bottom .eae-slide-inner{-webkit-box-pack:end;align-items:flex-end}.eae-swiper-button-prev{left:10px}.eae-swiper-button-next{right:10px}.eae-swiper-button{position:absolute;display:inline-flex;z-index:1;cursor:pointer;color:#7a7a7a;top:50%;transform:translateY(-50%)}.swiper-pagination-bullet{margin-bottom:5px!important}.eae-swiper-outer-wrapper .eae-swiper-slide .eae-background-overlay{width:100%;height:100%;position:absolute}.eae-swiper-outer-wrapper .eae-gallery-thumbs{box-sizing:border-box;text-align:center}.eae-swiper-outer-wrapper .eae-gallery-thumbs .eae-thumb-slide{background-size:cover;background-position:center;height:100%;opacity:.7}.eae-swiper-outer-wrapper .eae-gallery-thumbs .swiper-slide-thumb-active{opacity:1}.eae-chart-outer-container{position:relative}.eae-chart-overlay{width:100%;height:100%;position:absolute}.eae-table{width:100%;height:auto;margin:0;padding:0;border:none;border-collapse:collapse}.eae-table tr{border-style:none}.eae-table__body_row_column{border:none;overflow:hidden}.eae-table__head_column{transition:all .3s ease-in-out}.eae-table__body_row_column{transition:all .3s ease-in-out}.eae-head-icon{vertical-align:middle}.eae-table__head-column-wrapper .eae-head-img{width:50px;display:inline-block}.eae-table__head-column-wrapper .eae-lottie-animation svg{width:70px!important;line-height:0}.eae-head-icon-before{margin-right:5px}.eae-head-icon-after{margin-left:5px}.eae-table__col-inner{display:block}.eae-body-icon{vertical-align:middle}.eae-table__body-column-wrapper .eae-body-image{width:70px;display:inline-block}.eae-table__body-column-wrapper .eae-table-lottie-animation svg{width:70px!important;line-height:0}.eae-body-icon-before{margin-right:5px}.eae-body-icon-after{margin-left:5px}.eae-table-body__text{vertical-align:middle}.eae-table .eae-table-search-hide{display:none}.eae-table-search-wrap{padding:0;margin:0;margin-bottom:10px}.eae-search-wrap{padding:0;margin:0;width:50%;display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;align-items:center}.eae-table-search-wrap .eae-table-search-field{margin:0;padding:0;border:0;outline:0;background-color:#eceeef;width:100%;font-size:15px;color:#7a7a7a;padding:10px;line-height:0;display:inline-block;box-sizing:border-box}.eae-table-search-wrap .eae-table-search-field:focus{background-color:#eceeef}::placeholder{opacity:.5}.search-icon{background-color:#eceeef;padding:0;margin:0;padding:10px}.search-icon i{color:#7a7a7a73;display:flex;align-items:center;left:0;font-size:20px}.eae-table__sortable .eae-table__sortable-head{cursor:pointer}.eae-table__head__wrapper{display:flex;justify-content:center;align-items:center}.eae-sort-icon{padding:0;margin:0;align-self:center}.eae-table__head-column-wrapper{flex-grow:3;display:inline-block;width:100%}.eae-icon-sort-icon{vertical-align:middle;display:inline-block}.eae-icon{padding:0;margin:0}.eae-table__head__wrapper .eae-sort-icon .eae-icon{font-size:25px}.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-down,.eae-table__sortable .eae-table__head__wrapper .eae-sort-icon-up{display:none}.eae-table__sortable .eae-table__sort-Asc .eae-table__head__wrapper .eae-icon-sort-icon,.eae-table__sortable .eae-table__sort-Desc .eae-table__head__wrapper .eae-icon-sort-icon{display:none}.eae-table__sortable .eae-table__sort-Asc .eae-table__head__wrapper .eae-sort-icon-up,.eae-table__sortable .eae-table__sort-Desc .eae-table__head__wrapper .eae-sort-icon-down{display:block}
|
assets/js/eae.js
CHANGED
@@ -432,7 +432,7 @@ var breakpoints = eae.breakpoints;
|
|
432 |
Â
};
|
433 |
Â
|
434 |
Â
var ParticlesBG = function ($scope, $) {
|
435 |
-
|
436 |
Â
if ($scope.hasClass('eae-particle-yes')) {
|
437 |
Â
id = $scope.data('id');
|
438 |
Â
element_type = $scope.data('element_type');
|
@@ -449,7 +449,6 @@ var breakpoints = eae.breakpoints;
|
|
449 |
Â
} else {
|
450 |
Â
$scope.prepend('<div class="eae-particle-wrapper " id="eae-particle-' + id + '"></div>');
|
451 |
Â
}
|
452 |
-
|
453 |
Â
particlesJS('eae-particle-' + id, pdata);
|
454 |
Â
}
|
455 |
Â
|
@@ -472,6 +471,87 @@ var breakpoints = eae.breakpoints;
|
|
472 |
Â
|
473 |
Â
};
|
474 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
475 |
Â
|
476 |
Â
/*EAE Animated Gradient Background*/
|
477 |
Â
|
432 |
Â
};
|
433 |
Â
|
434 |
Â
var ParticlesBG = function ($scope, $) {
|
435 |
+
console.log("Called");
|
436 |
Â
if ($scope.hasClass('eae-particle-yes')) {
|
437 |
Â
id = $scope.data('id');
|
438 |
Â
element_type = $scope.data('element_type');
|
449 |
Â
} else {
|
450 |
Â
$scope.prepend('<div class="eae-particle-wrapper " id="eae-particle-' + id + '"></div>');
|
451 |
Â
}
|
Â
|
|
452 |
Â
particlesJS('eae-particle-' + id, pdata);
|
453 |
Â
}
|
454 |
Â
|
471 |
Â
|
472 |
Â
};
|
473 |
Â
|
474 |
+
// var ParticlesBG = function ($scope, $) {
|
475 |
+
|
476 |
+
// if ($scope.hasClass('eae-particle-yes')) {
|
477 |
+
// const wId = $scope.data('id');
|
478 |
+
// const wrapper = document.querySelector('.elementor-element-'+wId);
|
479 |
+
// //outerWrapper = wrapper.querySelector('.fv-dp-outer-wrapper');
|
480 |
+
// id = $scope.data('id');
|
481 |
+
|
482 |
+
// element_type = wrapper.getAttribute('data-element_type');
|
483 |
+
// is_edit_mode = wrapper.classList.contains('elementor-element-edit-mode');
|
484 |
+
// console.log(is_edit_mode);
|
485 |
+
// pdata = wrapper.getAttribute('data-eae-particle');
|
486 |
+
// if(is_edit_mode){
|
487 |
+
// pdata_wrapper = wrapper.querySelector('.eae-particle-wrapper').getAttribute('data-eae-pdata');
|
488 |
+
// pdata_wrapper = JSON.parse(pdata_wrapper);
|
489 |
+
// }
|
490 |
+
|
491 |
+
// if (typeof pdata != 'undefined' && pdata != null) {
|
492 |
+
// var bsElement = wrapper.querySelector('.eae-section-bs');
|
493 |
+
// if (bsElement) {
|
494 |
+
// console.log("BS Inner");
|
495 |
+
// var particleDiv = document.createElement("div");
|
496 |
+
// particleDiv.setAttribute('class' , 'eae-particle-wrapper');
|
497 |
+
// particleDiv.setAttribute('id' , "eae-particle-" + id);
|
498 |
+
// var bsElement = wrapper.querySelector('.eae-section-bs');
|
499 |
+
// bsElement.after(particleDiv);
|
500 |
+
// tsParticles.load("eae-particle-" + id, JSON.parse(pdata));
|
501 |
+
// } else {
|
502 |
+
// if (element_type == 'column') {
|
503 |
+
// var particleDiv = document.createElement("div");
|
504 |
+
// particleDiv.setAttribute('class' , 'eae-particle-wrapper');
|
505 |
+
// particleDiv.setAttribute('id' , "eae-particle-" + id);
|
506 |
+
// wrapper.prepend(particleDiv);
|
507 |
+
// } else {
|
508 |
+
// var particleDiv = document.createElement("div");
|
509 |
+
// particleDiv.setAttribute('class' , 'eae-particle-wrapper');
|
510 |
+
// particleDiv.setAttribute('id' , "eae-particle-" + id);
|
511 |
+
// wrapper.prepend(particleDiv);
|
512 |
+
// }
|
513 |
+
// //console.log(tsParticles.load('particles' , {}));
|
514 |
+
// // pdata = JSON.parse(pdata);
|
515 |
+
// tsParticles.load("eae-particle-" + id, JSON.parse(pdata));
|
516 |
+
// //particlesJS('eae-particle-' + id, pdata);
|
517 |
+
// }
|
518 |
+
// } else if (typeof pdata_wrapper != 'undefined' && pdata_wrapper != null) {
|
519 |
+
// console.log('Editor');
|
520 |
+
// console.log(element_type);
|
521 |
+
// // $scope.prepend('<div class="eae-particle-wrapper" id="eae-particle-'+ id +'"></div>');
|
522 |
+
// //console.log('calling particle js else', JSON.parse(pdata_wrapper));
|
523 |
+
// var bsElement = wrapper.querySelector('.eae-section-bs');
|
524 |
+
// if (bsElement) {
|
525 |
+
// console.log("BS Inner");
|
526 |
+
// var particleDiv = document.createElement("div");
|
527 |
+
// particleDiv.setAttribute('class' , 'eae-particle-areas');
|
528 |
+
// particleDiv.setAttribute('id' , "eae-particle-" + id);
|
529 |
+
// var bsElement = wrapper.querySelector('.eae-section-bs');
|
530 |
+
// bsElement.after(particleDiv);
|
531 |
+
// tsParticles.load("eae-particle-" + id, pdata_wrapper);
|
532 |
+
// }else{
|
533 |
+
// if (element_type == 'column') {
|
534 |
+
// $scope.prepend('<div class="eae-particle-wrapper eae-particle-area" id="eae-particle-' + id + '"></div>');
|
535 |
+
// }
|
536 |
+
// else{
|
537 |
+
// console.log('Editor Section');
|
538 |
+
// console.log(pdata_wrapper);
|
539 |
+
// var particleDiv = document.createElement("div");
|
540 |
+
// particleDiv.setAttribute('class' , 'eae-particle-areas');
|
541 |
+
// particleDiv.setAttribute('id' , "eae-particle-" + id);
|
542 |
+
// wrapper.prepend(particleDiv);
|
543 |
+
// // $scope.prepend('<div class="eae-particle-wrapper eae-particle-area" id="eae-particle-' + id + '"></div>');
|
544 |
+
// }
|
545 |
+
// tsParticles.load("eae-particle-" + id, pdata_wrapper);
|
546 |
+
// }
|
547 |
+
|
548 |
+
// //particlesJS('eae-particle-' + id, JSON.parse(pdata_wrapper));
|
549 |
+
// }
|
550 |
+
|
551 |
+
// }
|
552 |
+
|
553 |
+
// };
|
554 |
+
|
555 |
Â
|
556 |
Â
/*EAE Animated Gradient Background*/
|
557 |
Â
|
assets/js/eae.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(window).on("elementor/frontend/init",(function(){elementorFrontend.hooks.addAction("frontend/element_ready/wts-gmap.default",(function(e){map=function(a){$wrapper=e.find(".eae-markers");var t=$wrapper.data("zoom"),i=a.find(".marker"),n=$wrapper.data("style"),r=($wrapper.data("scroll"),{zoom:t,center:new google.maps.LatLng(0,0),mapTypeId:google.maps.MapTypeId.ROADMAP,styles:n}),d=new google.maps.Map(a[0],r);return d.markers=[],i.each((function(){!function(a,t){var i=$wrapper.data("animate");$wrapper.data("show-info-window-onload");$wrapper=e.find(".eae-markers");var n=new google.maps.LatLng(a.attr("data-lat"),a.attr("data-lng"));if(icon_img=a.attr("data-icon"),""!=icon_img)var r={url:a.attr("data-icon"),scaledSize:new google.maps.Size(a.attr("data-icon-size"),a.attr("data-icon-size"))};var d=new google.maps.Marker({position:n,map:t,icon:r,animation:google.maps.Animation.DROP});"animate-yes"==i&&"yes"!=a.data("info-window")&&d.setAnimation(google.maps.Animation.BOUNCE);"animate-yes"==i&&google.maps.event.addListener(d,"click",(function(){d.setAnimation(null)}));if(t.markers.push(d),a.html()){var s=new google.maps.InfoWindow({content:a.html()});"yes"==a.data("info-window")&&s.open(t,d),google.maps.event.addListener(d,"click",(function(){s.open(t,d)}))}"animate-yes"==i&&google.maps.event.addListener(s,"closeclick",(function(){d.setAnimation(google.maps.Animation.BOUNCE)}))}(jQuery(this),d)})),function(e,a){var t=new google.maps.LatLngBounds;jQuery.each(e.markers,(function(e,a){var i=new google.maps.LatLng(a.position.lat(),a.position.lng());t.extend(i)})),1==e.markers.length?(e.setCenter(t.getCenter()),e.setZoom(a)):e.fitBounds(t)}(d,t),d}(e.find(".eae-markers"))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e){var a,t,i,n,r,d,s,o=[],l=[],c=e.children(".eae-section-bs").children(".eae-section-bs-inner");c&&c.data("eae-bg-slider")&&(slider_images=c.data("eae-bg-slider"),a=c.data("eae-bg-slider-transition"),t=c.data("eae-bg-slider-animation"),n=("yes"==(i=c.data("eae-bg-custom-overlay"))||c.data("eae-bg-slider-overlay"),eae_editor.plugin_url+"assets/lib/vegas/overlays/"+c.data("eae-bg-slider-overlay")),r=c.data("eae-bg-slider-cover"),d=c.data("eae-bs-slider-delay"),s=c.data("eae-bs-slider-timer"),"undefined"!=typeof slider_images&&(o=slider_images.split(","),jQuery.each(o,(function(e,a){var t=[];t.src=a,l.push(t)})),c.vegas({slides:l,transition:a,animation:t,overlay:n,cover:r,delay:d,timer:s,init:function(){"yes"==i&&c.children(".vegas-overlay").css("background-image","")}})))}))}));var isEditMode=!1,breakpoints=eae.breakpoints;!function(e){e(window).on("elementor/frontend/init",(function(){var a=function(e,a){function t(e){$icons=a(document).find(e).find(".eae-ic-icon-wrap"),window.innerWidth<767?$icons.each((function(e,t){a(t).css("top",a(t).height()/2+8+"px"),a(t).next(".eae-info-circle-item__content-wrap").css("padding-top",a(t).height()/2+8+"px")})):$icons.each((function(e,t){a(t).css("margin-left",-.5*a(t).outerWidth()),a(t).css("margin-top",-.5*a(t).outerHeight()),$a=function(e){return e=(e-90)*Math.PI/180,{x:50+45*Math.cos(e),y:50+45*Math.sin(e)}}($angle),$b=360/$icons.length,a(t).css("left",$a.x+"%"),a(t).css("top",$a.y+"%"),$angle+=$b}))}$wrap_class=".elementor-element-"+e.data("id"),$angle=0,t(e);var i=null;function n(){"yes"==e.find(".eae-info-circle").data("autoplay")&&(i=setInterval(r,$autoplayDuration))}function r(){e.find(".eae-active").next().length>0?e.find(".eae-active").next().addClass("eae-active").siblings().removeClass("eae-active"):e.find(".eae-info-circle-item").eq(0).addClass("eae-active").siblings().removeClass("eae-active")}$autoplayDuration=e.find(".eae-info-circle").data("delay"),n(),e.find(".eae-ic-icon-wrap").hover((function(){clearInterval(i)}),(function(){n()})),e.find(".eae-info-circle-item").length>0&&a(e.find(".eae-info-circle-item")[0]).addClass("eae-active"),e.find(".eae-ic-icon-wrap").on("click",(function(){e.find(".eae-info-circle-item").removeClass("eae-active"),a(this).parent().addClass("eae-active")})),e.hasClass("eae-mouseenter-yes")&&e.find(".eae-ic-icon-wrap").on("mouseenter",(function(){e.find(".eae-info-circle-item").removeClass("eae-active"),a(this).parent().addClass("eae-active")})),window.addEventListener("resize",t.bind(this,$wrap_class))},t=function(e,a){function t(){var t=e.find(".eae-timline-progress-bar"),i=e.find(".eae-timeline-item"),n=e.find(".eae-timeline");const r=n.data("top-offset");var d=a(n).height(),s=a(i).last().find(".eae-tl-icon-wrapper").offset().top-a(i[0]).parent().offset().top,o=e.find(".eae-tl-icon-wrapper");a(t).css("top",a(i[0]).find(".eae-tl-icon-wrapper").offset().top-a(i[0]).parent().offset().top),a(t).css("bottom",d-s),a(t).css("left",o.eq(0)[0].offsetLeft+o.eq(0).width()/2),a(t).css("display","block"),i.each((function(e,t){new Waypoint({element:a(t),handler:function(e){"down"==e?a(t).addClass("eae-tl-item-focused"):a(t).removeClass("eae-tl-item-focused")},offset:r})}))}t(),window.addEventListener("resize",t),window.addEventListener("scroll",(function(){e.find(".eae-timline-progress-bar");const t=e.find(".eae-timeline").data("top-offset");e.find(".eae-pb-inner-line").css("height",a(window).scrollTop()-e.find(".eae-timeline").offset().top+t),e.find(".eae-pb-inner-line").css("max-height",e.find(".eae-pb-inner-line").parent().height())}))};function i(e,a,t){var i=new Date;i.setTime(i.getTime()+60*t*60*1e3);var n="expires="+i.toUTCString();document.cookie=e+"="+a+";"+n+";path=/"}function n(e){for(var a=e+"=",t=decodeURIComponent(document.cookie).split(";"),i=0;i<t.length;i++){for(var n=t[i];" "==n.charAt(0);)n=n.substring(1);if(0==n.indexOf(a))return n.substring(a.length,n.length)}return""}var r=function(e,a){$is_rtl=jQuery("body").hasClass("rtl"),$wrapper=e.find(".eae-progress-bar");$wrapper.attr("data-skill");var t=$wrapper.attr("data-value"),i=$wrapper.attr("data-skin"),n=$wrapper.find(".eae-pb-bar-skill"),r=$wrapper.find(".eae-pb-bar-value"),d=$wrapper.find(".eae-pb-bar"),s=$wrapper.find(".eae-pb-bar-inner");"skin1"===i&&a(s).attr("style","width : "+t+"%"),"skin2"===i&&a(s).attr("style","width : "+t+"%"),"skin3"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%")),"skin4"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%"),a(d).addClass("eae-pb-bar--no-overflow")),"skin5"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%")),$wrapper.each((function(e,t){new Waypoint({element:t,skill_value:a(t).find(".eae-pb-bar-skill"),valueElem:a(t).find(".eae-pb-bar-value"),prgBar:a(t).find(".eae-pb-bar-bar"),prgInner:a(t).find(".eae-pb-bar-inner"),handler:function(e){"down"==e&&(a(r).hasClass("js-animated")||a(r).addClass("js-animated"),a(s).hasClass("js-animated")||a(s).addClass("js-animated"),a(n).hasClass("js-animated")||a(n).addClass("js-animated"))},offset:"bottom-in-view"})}))},d=function(e,a){var t=e.find(".eae-content-switcher-wrapper"),i=(e.data("id"),t.find(".eae-content-switch-button"));i.each((function(e,n){a(this).on("click",(function(e){e.preventDefault();let n=a(this).find(".eae-content-switch-label");if(!a(this).hasClass("active")){a(i).removeClass("active");let e=a(n).attr("id");a(this).addClass("active");var r=a(t).find(".eae-cs-content-section");a(r).removeClass("active");let d=a(t).find(".eae-content-section-"+e);a(d).addClass("active")}}))}))},s=function(e,a){let t=e.find(".eae-content-switcher-wrapper"),i=(e.data("id"),t.find(".eae-cs-switch-label")),n=t.find(".eae-content-switch-label.primary-label");const r=a(n).attr("item_id");let d=t.find(".eae-content-switch-label.secondary-label");const s=a(d).attr("item_id");let o=t.find(".eae-cs-content-section.eae-content-section-"+r),l=t.find(".eae-cs-content-section.eae-content-section-"+s);a(i).on("click",(function(e){a(this).find("input.eae-content-toggle-switch").is(":checked")?(d.addClass("active"),l.addClass("active"),n.removeClass("active"),o.removeClass("active")):(n.addClass("active"),o.addClass("active"),d.removeClass("active"),l.removeClass("active"))}))};e.fn.EAEHoverDirection=function(a){var t=e.extend({inaccuracy:30,speed:200},a);this.find(".overlay").css({top:-9999999}),this.mouseenter((function(a){container=e(this),overlay=container.find(".overlay"),parentOffset=container.offset(),relX=a.pageX-parentOffset.left,relY=a.pageY-parentOffset.top,overlay.css({top:0,left:0,width:container.width(),height:container.height()}),relX>container.width()-t.inaccuracy?overlay.css({top:0,left:container.width()}):relX<t.inaccuracy?overlay.css({top:0,left:-container.width()}):relY>container.height()-t.inaccuracy?overlay.css({top:container.width(),left:0}):relY<t.inaccuracy&&overlay.css({top:-container.width(),left:0}),overlay.animate({top:0,left:0},t.speed)})),this.mouseleave((function(a){container=e(this),overlay=container.find(".overlay"),parentOffset=container.offset(),relX=a.pageX-parentOffset.left,relY=a.pageY-parentOffset.top,relX<=0&&overlay.animate({top:0,left:-container.width()},t.speed),relX>=container.width()&&overlay.animate({top:0,left:container.width()},t.speed),relY<=0&&overlay.animate({left:0,top:-container.height()},t.speed),relY>=container.height()&&overlay.animate({left:0,top:container.height()},t.speed)}))};let o=function(e,a){const t=e.find(".eae-chart-outer-container"),i=(e.data("id"),e.find("#eae-chart-canvas"));let n=t.data("settings");new Chart(i,n)};elementorFrontend.hooks.addAction("frontend/element_ready/wts-ab-image.default",(function(e,a){e.find(".eae-img-comp-container").imagesLoaded().done((function(){ab_style=e.find(".eae-img-comp-container").data("ab-style"),slider_pos=e.find(".eae-img-comp-container").data("slider-pos"),"horizontal"===ab_style?(separator_width=parseInt(e.find(".eae-img-comp-overlay").css("border-right-width")),function(e){var a,t;a=e.find(".eae-img-comp-overlay"),t=(t=a.width())*slider_pos/100,function(a){var i,n,r,d=0;function s(e){e.preventDefault(),d=1,window.addEventListener("mousemove",l),i.addEventListener("touchmove",c)}function o(){d=0}function l(e){var t;if(0==d)return!1;(t=function(e){var t;return e=e||window.event,t=a.getBoundingClientRect(),e.pageX-t.left}(e))<0&&(t=0),t>n&&(t=n),f(t)}function c(e){var t;if(0==d)return!1;(t=function(e){var t;return t=a.getBoundingClientRect(),e.changedTouches[0].clientX-t.left}(e))<0&&(t=0),t>n&&(t=n),f(t)}function f(e){a.style.width=e+"px",i.style.left=a.offsetWidth-i.offsetWidth/2-separator_width/2+"px"}n=a.offsetWidth,r=a.offsetHeight,a.style.width=t+"px",(i=(i=e.find(".eae-img-comp-slider"))[0]).style.top=r/2-i.offsetHeight/2+"px",i.style.left=t-i.offsetWidth/2-separator_width/2+"px",e.hasClass("elementor-element-edit-mode")||(i.addEventListener("mousedown",s),window.addEventListener("mouseup",o),i.addEventListener("touchstart",s),window.addEventListener("touchstop",o))}(a[0])}(e)):(separator_width=parseInt(e.find(".eae-img-comp-overlay").css("border-bottom-width")),function(e){var a;a=e.find(".eae-img-comp-overlay"),start_pos=a.height(),start_pos=start_pos*slider_pos/100,function(a){var t,i,n,r=0;function d(e){e.preventDefault(),r=1,window.addEventListener("mousemove",o),t.addEventListener("touchmove",l)}function s(){r=0}function o(e){var t;if(0==r)return!1;(t=function(e){var t,i=0;return e=e||window.event,t=a.getBoundingClientRect(),i=e.pageY-t.top,i-=window.pageYOffset}(e))<0&&(t=0),t>n&&(t=n),c(t)}function l(e){var t;if(0==r)return!1;(t=function(e){var t;return t=a.getBoundingClientRect(),e.changedTouches[0].clientY-t.top}(e))<0&&(t=0),t>n&&(t=n),c(t)}function c(e){a.style.height=e+"px",t.style.top=a.offsetHeight-t.offsetHeight/2-separator_width/2+"px"}i=a.offsetWidth,n=a.offsetHeight,a.style.height=start_pos+"px",(t=(t=e.find(".eae-img-comp-slider"))[0]).style.top=start_pos-t.offsetHeight/2-separator_width/2+"px",t.style.left=i/2-t.offsetWidth/2+"px",e.hasClass("elementor-element-edit-mode")||(t.addEventListener("mousedown",d),window.addEventListener("mouseup",s),t.addEventListener("touchstart",d),window.addEventListener("touchstop",s))}(a[0])}(e))}))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){e.hasClass("eae-particle-yes")&&(id=e.data("id"),element_type=e.data("element_type"),pdata=e.data("eae-particle"),pdata_wrapper=e.find(".eae-particle-wrapper").data("eae-pdata"),"undefined"!=typeof pdata&&""!=pdata?e.find(".eae-section-bs").length>0?(e.find(".eae-section-bs").after('<div class="eae-particle-wrapper" id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,pdata)):("column"==element_type?e.prepend('<div class="eae-particle-wrapper" id="eae-particle-'+id+'"></div>'):e.prepend('<div class="eae-particle-wrapper " id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,pdata)):"undefined"!=typeof pdata_wrapper&&""!=pdata_wrapper&&(element_type,e.prepend('<div class="eae-particle-wrapper eae-particle-area" id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,JSON.parse(pdata_wrapper))))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){if(e.hasClass("eae-animated-gradient-yes")){id=e.data("id"),color=e.data("color"),angle=e.data("angle");var t="linear-gradient("+angle+","+color+")";heading=e.find(".elementor-heading-title"),e.css("background-image",t),e.hasClass("elementor-element-edit-mode")&&(color=e.find(".animated-gradient").data("color"),angle=e.find(".animated-gradient").data("angle"),gradient_color_editor="linear-gradient("+angle+","+color+")",e.prepend('<div class="animated-gradient" style="background-image : '+gradient_color_editor+' "></div>'))}})),elementorFrontend.hooks.addAction("frontend/element_ready/wts-modal-popup.default",(function(e,a){$preview_modal=e.find(".eae-popup-wrapper").data("preview-modal"),$close_btn_type=e.find(".eae-popup-wrapper").data("close-button-type"),$close_btn=e.find(".eae-popup-wrapper").data("close-btn"),"icon"==$close_btn_type?$close_btn_html='<i class="eae-close '+$close_btn+'"> </i>':$close_btn_html='<svg class="eae-close" style="-webkit-mask: url('+$close_btn+"); mask: url("+$close_btn+'); "></svg>',$magnific=e.find(".eae-popup-link").eaePopup({type:"inline",disableOn:0,key:null,midClick:!1,mainClass:"eae-popup eae-popup-"+e.find(".eae-popup-link").data("id")+" eae-wrap-"+e.find(".eae-popup-link").data("ctrl-id"),preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:e.find(".eae-popup-wrapper").data("close-in-out"),showCloseBtn:!0,enableEscapeKey:!1,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:$close_btn_html,tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}),"yes"==$preview_modal&&e.hasClass("elementor-element-edit-mode")&&e.find(".eae-popup-link").click()})),elementorFrontend.hooks.addAction("frontend/element_ready/wts-testimonial-slider.default",(function(e,a){if(e.find(".eae-grid-wrapper").hasClass("eae-masonry-yes")){var t=e.find(".eae-grid").masonry({});t.imagesLoaded().progress((function(){t.masonry("layout")}))}if(e.find(".eae-layout-carousel").length){outer_wrapper=e.find(".eae-swiper-outer-wrapper"),wid=e.data("id"),wclass=".elementor-element-"+wid;var i=outer_wrapper.data("direction"),n=outer_wrapper.data("speed"),r=outer_wrapper.data("autoplay"),d=outer_wrapper.data("duration"),s=outer_wrapper.data("effect"),o=outer_wrapper.data("space"),l=outer_wrapper.data("loop");l="yes"==l;var c=outer_wrapper.data("slides-per-view"),f=outer_wrapper.data("slides-per-group"),p=outer_wrapper.data("ptype"),m=outer_wrapper.data("navigation"),u=outer_wrapper.data("clickable"),g=outer_wrapper.data("keyboard"),v=outer_wrapper.data("scrollbar");adata={direction:i,effect:s,spaceBetween:o.desktop,loop:l,speed:n,slidesPerView:c.desktop,slidesPerGroup:f.desktop,observer:!0,mousewheel:{invert:!0},breakpoints:{1024:{spaceBetween:o.tablet,slidesPerView:c.tablet,slidesPerGroup:f.tablet},767:{spaceBetween:o.mobile,slidesPerView:c.mobile,slidesPerGroup:f.mobile}}},"fade"==s&&(adata.fadeEffect={crossFade:!1}),adata.autoplay="yes"==r&&{delay:d,disableOnInteraction:!1},"yes"==m&&(adata.navigation={nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}),""!=p&&(adata.pagination={el:".swiper-pagination",type:p}),"bullets"==p&&"yes"==u&&(adata.pagination={el:".swiper-pagination",clickable:!0,type:p}),"yes"==v&&(adata.scrollbar={el:".swiper-scrollbar",draggable:!0}),"yes"==g&&(adata.keyboard={enabled:!0,onlyInViewport:!0}),0==l&&(adata.autoplay={delay:d,stopOnLastSlide:!0,disableOnInteraction:!1}),window.mswiper=new Swiper(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .swiper-container",adata),a(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .swiper-container").css("visibility","visible")}})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin1",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin2",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin3",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin4",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin1",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin2",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin3",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin4",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin1",(function(e,a){var t=e.find(".eae-evergreen-wrapper").data("egtime"),r=e.find(".eae-evergreen-wrapper").data("egt-expire"),d=e.find(".eae-evergreen-wrapper").data("element-type"),s="eae-"+e.find(".eae-evergreen-wrapper").data("id"),o="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),l=e.find(".eae-evergreen-wrapper").data("actions"),c=e.find(".eae-evergreen-wrapper").data("unqid"),f=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===d){u=new Date(t),t=u.getTime();var p="expires="+u.toUTCString();document.cookie=o+"="+u.getTime()+";"+p+";path=/"}else{var m=n(s),u="";if(""!==m){(u=new Date(parseInt(m))).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime();var g=new Date(parseInt(m));g.setTime(g.getTime()+60*r*60*1e3);var v="expires="+g.toUTCString();document.cookie=s+"="+m+";"+v+";path=/";var h=new Date(parseInt(m));h.setTime(h.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));p="expires="+h.toUTCString();t-f>0&&(document.cookie=o+"="+m+";"+p+";path=/")}else{temp_date=t,(u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime(),i(s,(new Date).getTime(),r);var w=new Date;w.setTime(w.getTime()+1e3*temp_date);var y="expires="+w.toUTCString();document.cookie=o+"="+(new Date).getTime()+";"+y+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")&&t-f<0)return l.length>0&&l.forEach((function(t){"redirect"===t&&($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url)&&(window.location.href=$url1)),"hide"===t&&(e.hasClass("elementor-element-edit-mode")||(e.find("#eaeclockdiv").css("display","none"),e.find(".egt-title").css("display","none"))),"message"===t&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})),days="00",hours="00",minutes="00",seconds="00",e.find("."+c).find("#eaedivDays").html(days),e.find("."+c).find("#eaedivHours").html(hours.slice(-2)),e.find("."+c).find("#eaedivMinutes").html(minutes.slice(-2)),void e.find("."+c).find("#eaedivSeconds").html(seconds.slice(-2));e.hasClass("elementor-element-edit-mode")&&("countdown"===d?(u=new Date(t),t=u.getTime()):((u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime()));var k=setInterval((function(){var i=(new Date).getTime(),n=t-i,r=0,d=0,s=0,o=0;n>0?(r=Math.floor(n/864e5),d="0"+Math.floor(n%864e5/36e5),s="0"+Math.floor(n%36e5/6e4),o="0"+Math.floor(n%6e4/1e3)):(l.length>0&&(e.hasClass("elementor-element-edit-mode")||l.forEach((function(t){"redirect"===t&&($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url1)&&(window.location.href=$url1)),"hide"===t&&(e.find("#eaeclockdiv").css("display","none"),e.find(".egt-title").css("display","none")),"message"===t&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))}))),clearInterval(k),r="0",d="00",s="00",o="00"),r<10&&(r="0"+r),e.find("."+c).find("#eaedivDays").html(r),e.find("."+c).find("#eaedivHours").html(d.slice(-2)),e.find("."+c).find("#eaedivMinutes").html(s.slice(-2)),e.find("."+c).find("#eaedivSeconds").html(o.slice(-2))}),1e3)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin2",(function(e,a){var t=e.find(".eae-evergreen-wrapper").data("egtime"),r=e.find(".eae-evergreen-wrapper").data("egt-expire"),d=e.find(".eae-evergreen-wrapper").data("element-type"),s="eae-"+e.find(".eae-evergreen-wrapper").data("id"),o="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),l=e.find(".eae-evergreen-wrapper").data("actions"),c=e.find(".eae-evergreen-wrapper").data("unqid"),f=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===d){u=new Date(t),t=u.getTime();var p="expires="+u.toUTCString();document.cookie=o+"="+u.getTime()+";"+p+";path=/"}else{var m=n(s),u="";if(""!==m){(u=new Date(parseInt(m))).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime();var g=new Date(parseInt(m));g.setTime(g.getTime()+60*r*60*1e3);var v="expires="+g.toUTCString();document.cookie=s+"="+m+";"+v+";path=/";var h=new Date(parseInt(m));h.setTime(h.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));p="expires="+h.toUTCString();t-f>0&&(document.cookie=o+"="+m+";"+p+";path=/")}else{temp_date=t,(u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime(),i(s,(new Date).getTime(),r);var w=new Date;w.setTime(w.getTime()+1e3*temp_date);var y="expires="+w.toUTCString();document.cookie=o+"="+(new Date).getTime()+";"+y+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")&&t-f<0)return void(l.length>0&&l.forEach((function(t){"redirect"===t&&($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url)&&(window.location.href=$url)),"hide"===t&&(e.find("."+c).find(".timer-container").css("display","none"),e.find("."+c).find(".egt-title").css("display","none")),"message"===t&&e.find("."+c).find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})));e.hasClass("elementor-element-edit-mode")&&("countdown"===d?(u=new Date(t),t=u.getTime()):((u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime()));var k=setInterval((function(){var i=(new Date).getTime(),n=t-i,r=Math.floor(n/864e5),d=Math.floor(n%864e5/36e5),s=Math.floor(n%36e5/6e4),o=Math.floor(n%6e4/1e3);if(e.find("."+c).find("#eaeulSec1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulSec").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulSec").find(".flip-clock-before").removeClass("flip-clock-before"),n<0)return clearInterval(k),void(l.length>0&&l.forEach((function(t){"redirect"===t&&(e.hasClass("elementor-element-edit-mode")||($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url1)&&(window.location.href=$url1))),"hide"===t&&(e.hasClass("elementor-element-edit-mode")||(e.find("."+c).find(".timer-container").css("display","none"),e.find("."+c).find(".egt-title").css("display","none"))),"message"===t&&(e.hasClass("elementor-element-edit-mode")||e.find("."+c).find(".eae-egt-message").css("display","block")),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})));if(2===a.trim(o).length){var f="#eaeulSec1 li:eq( "+a.trim(o).charAt(1)+" )",p="#eaeulSec li:eq( "+a.trim(o).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec li:first-child").addClass("flip-clock-before"))}else{f="#eaeulSec1 li:eq( "+a.trim(o).charAt(0)+" )",p="#eaeulSec li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulMin1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulMin").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulMin").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(s).length){f="#eaeulMin1 li:eq( "+a.trim(s).charAt(1)+" )",p="#eaeulMin li:eq( "+a.trim(s).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin li:first-child").addClass("flip-clock-before"))}else{f="#eaeulMin1 li:eq( "+a.trim(s).charAt(0)+" )",p="#eaeulMin li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulHour1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulHour1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulHour").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulHour").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(d).length){f="#eaeulHour1 li:eq( "+a.trim(d).charAt(1)+" )",p="#eaeulHour li:eq( "+a.trim(d).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before"))}else{f="#eaeulHour1 li:eq( "+a.trim(d).charAt(0)+" )",p="#eaeulHour li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulDay1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulDay1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulDay").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulDay").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(r).length){f="#eaeulDay1 li:eq( "+a.trim(r).charAt(1)+" )",p="#eaeulDay li:eq( "+a.trim(r).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before"))}else{f="#eaeulDay1 li:eq( "+a.trim(r).charAt(0)+" )",p="#eaeulDay li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before"))}}),1e3)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin3",(function(e,a){var t,r=e.find(".eae-evergreen-wrapper").data("egtime"),d=e.find(".eae-evergreen-wrapper").data("egt-expire"),s=e.find(".eae-evergreen-wrapper").data("element-type"),o="eae-"+e.find(".eae-evergreen-wrapper").data("id"),l="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),c=e.find(".eae-evergreen-wrapper").data("actions"),f=e.find(".eae-evergreen-wrapper").data("days"),p=e.find(".eae-evergreen-wrapper").data("hours"),m=e.find(".eae-evergreen-wrapper").data("mins"),u=e.find(".eae-evergreen-wrapper").data("seconds"),g=e.find(".eae-evergreen-wrapper").data("unqid"),v=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===s){y=new Date(r),r=y.getTime();var h="expires="+y.toUTCString();document.cookie=l+"="+y.getTime()+";"+h+";path=/"}else{var w=n(o),y="";if(""!==w){(y=new Date(parseInt(w))).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime();var k=new Date(parseInt(w));k.setTime(k.getTime()+60*d*60*1e3);var b="expires="+k.toUTCString();document.cookie=o+"="+w+";"+b+";path=/";var C=new Date(parseInt(w));C.setTime(C.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));h="expires="+C.toUTCString();r-v>0&&(document.cookie=l+"="+w+";"+h+";path=/")}else{temp_date=r,(y=new Date).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime(),i(o,(new Date).getTime(),d);var _=new Date;_.setTime(_.getTime()+1e3*temp_date);var x="expires="+_.toUTCString();document.cookie=l+"="+(new Date).getTime()+";"+x+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")){var T=D(r);if(parseInt(T.all)<1){if(c.length>0&&(c.forEach((function(a){"redirect"===a&&(e.hasClass("elementor-element-edit-mode")||($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==$url&&(window.location.href=$url))),"hide_parent"===a&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none"))),"hide"===a&&(e.find("#timer").css("display","none"),e.find(".egt-title").css("display","none"),e.find(".desc").css("display","none")),"message"===a&&e.find(".eae-egt-message").css("display","block")})),1===c.length&&(""===c[0]||"message"===c[0]))){var $=e.find("."+g).find("#timer")[0];"yes"===f&&($.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===p&&("yes"===f?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>")}return}}function D(e){var a=r-new Date;return{days:Math.floor(a/864e5),hours:"0"+Math.floor(a/36e5%24),minutes:"0"+Math.floor(a/6e4%60),seconds:"0"+Math.floor(a/1e3%60),all:a}}function S(e){e.classList.add("fade"),setTimeout((function(){e.classList.remove("fade")}),700)}e.hasClass("elementor-element-edit-mode")&&("countdown"===s?(y=new Date(r),r=y.getTime()):((y=new Date).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime())),D(r).all>1&&(t=setInterval((function(){var i=e.find("."+g).find("#timer")[0],n=D(r);"yes"===f&&(n.days<10&&(n.days="0"+n.days),i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.days+"</div></span>"),"yes"===p&&("yes"===f?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.hours.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.hours.slice(-2)+"</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.minutes.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.minutes.slice(-2)+"</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.seconds.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.seconds.slice(-2)+"</div></span>");var d=i.getElementsByTagName("span");"yes"===f&&59==n.hours&&59==n.minutes&&59==n.seconds&&S(d[0]),"yes"===p&&("yes"===f?59==n.minutes&&59==n.seconds&&S(d[1]):59==n.minutes&&59==n.seconds&&S(d[0])),"yes"===m&&("yes"===f?"yes"===p?59==n.seconds&&S(d[2]):59==n.seconds&&S(d[1]):"yes"===p?59==n.seconds&&S(d[1]):59==n.seconds&&S(d[0])),"yes"===u&&("yes"===f?"yes"===p?"yes"===m&&S(d[3]):S("yes"===m?d[2]:d[1]):"yes"===p?"yes"===m&&S(d[2]):S("yes"===m?d[1]:d[0])),n.all<=1&&(clearInterval(t),"yes"===f&&(i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===p&&("yes"===f?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),e.hasClass("elementor-element-edit-mode")||c.length>0&&c.forEach((function(a){"redirect"===a&&($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==$url1&&(window.location.href=$url1)),"hide"===a&&(e.find("#timer").css("display","none"),e.find(".egt-title").css("display","none"),e.find(".desc").css("display","none")),"message"===a&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===a&&($p_secs=e.closest("section"),$p_secs.css("display","none"))})))}),1e3))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-comparisontable.default",(function(e,a){a(e.find(".eae-ct-heading")[0]).addClass("active"),e.find("ul").on("click","li",(function(){var t=a(this).index()+2;e.find("tr").find("td:not(:eq(0))").hide(),e.find("td:nth-child("+t+")").css("display","table-cell"),e.find("tr").find("th:not(:eq(0))").hide(),e.find("li").removeClass("active"),a(this).addClass("active")}));var t=window.matchMedia("(min-width: 767px)");function i(a){a.matches?e.find(".sep").attr("colspan",5):e.find(".sep").attr("colspan",2)}t.addListener(i),i(t)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin1",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin2",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin3",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin4",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin5",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-filterableGallery.default",(function(e,a){var t=e.find(".eae-fg-wrapper"),i=e.data("id"),n=t.attr("data-maxtilt"),r=t.attr("data-perspective"),d=t.attr("data-speed"),s=t.attr("data-tilt-axis"),o=t.attr("data-glare"),l=parseInt(t.attr("data-overlay-speed"));if(s="x"===s?"y":"y"===s?"x":"both","yes"===o)var c=t.attr("data-max-glare");o="yes"===o;var f=a(".elementor-element-"+i+" .eae-fg-image"),p=t.hasClass("masonry-yes")?"masonry":"fitRows";f.outerHeight();adata={percentPosition:!0,animationOptions:{duration:750,easing:"linear",queue:!1}},"fitRows"===p&&(adata.layoutMode="fitRows"),"masonry"===p&&(adata.masonry={columnWidth:".eae-gallery-item",horizontalOrder:!0}),e.hasClass("eae-show-all-yes")||(e.find(".eae-gallery-filter a").first().addClass("current"),adata.filter=e.find(".eae-gallery-filter a").first().attr("data-filter"));var m=f.isotope(adata);m.imagesLoaded().progress((function(){m.isotope("layout")})),e.find(".eae-tilt-yes")&&(atilt={maxTilt:n,perspective:r,easing:"linear",scale:1,speed:d,disableAxis:s,transition:!0,reset:!0,glare:o,maxGlare:c},e.find(".el-tilt").tilt(atilt)),a(".elementor-element-"+i+" .eae-gallery-filter a").on("click",(function(){e.find(".eae-gallery-filter .current").removeClass("current"),a(this).addClass("current");var t=a(this).attr("data-filter");adata.filter=t;var i=f.isotope(adata);return i.imagesLoaded().progress((function(){if(i.isotope("layout"),isEditMode)return!1;e.find(".eae-tilt-yes")&&(e.find(".el-tilt").tilt(atilt),e.find(".el-tilt").tilt.reset.call(e.find(".el-tilt")))})),!1})),t.hasClass("eae-hover-direction-effect")||e.find(".eae-gallery-item-inner").hover((function(){a(this).find(".eae-grid-overlay").addClass("animated")})),t.hasClass("eae-hover-direction-effect")&&(e.find(".eae-gallery-item-inner").hover((function(){a(this).find(".eae-grid-overlay").addClass("overlay")})),t.find(".eae-gallery-item-inner").EAEHoverDirection({speed:l}))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin1",d),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin2",d),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin3",s),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin4",s),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){isEditMode||e.data("wts-url")&&"yes"==e.data("wts-link")&&e.on("click",(function(a){e.data("wts-url")&&"yes"==e.data("wts-new-window")?window.open(e.data("wts-url")):location.href=e.data("wts-url")}))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-thumbgallery.default",(function(e,a){swiper_outer_wrapper=e.find(".eae-swiper-outer-wrapper"),wid=e.data("id"),wClass=".elementor-element-"+wid,thumb_outer_wrapper=e.find(".eae-gallery-thumbs");let t=swiper_outer_wrapper.data("swiper-settings"),i=swiper_outer_wrapper.data("slides-per-view"),n=swiper_outer_wrapper.data("space");const r=eae.breakpoints;let d={};d[r.lg-1]={slidesPerView:i.desktop,spaceBetween:n.desktop},d[r.md-1]={slidesPerView:i.tablet,spaceBetween:n.tablet};const s=eae.breakpoints;let o={};if(o[s.lg-1]={spaceBetween:t.spaceBetween.desktop},o[s.md-1]={spaceBetween:t.spaceBetween.tablet},sliderData={direction:"horizontal",effect:t.effect,keyboard:{enabled:t.keyboard},spaceBetween:t.spaceBetween.mobile,breakpoints:o,speed:t.speed,loop:"yes"===t.loop,thumbs:{swiper:{el:thumb_outer_wrapper,direction:"horizontal",spaceBetween:n.mobile,slidesPerView:i.mobile,navigation:{nextEl:wClass+" .eae-swiper-button-next",prevEl:wClass+" .eae-swiper-button-prev"},speed:t.speed,loop:"yes"===t.loop,freeMode:!0,watchSlidesVisibility:!0,watchSlidesProgress:!0,breakpoints:d,slideToClickedSlide:!0}}},void 0!==t.autoplay&&(sliderData.thumbs.swiper.autoplay={delay:t.autoplay.duration,disableOnInteraction:t.autoplay.disableOnInteraction,reverseDirection:t.autoplay.reverseDirection}),"yes"==t.navigation&&(sliderData.navigation={nextEl:wClass+" .eae-swiper-button-next",prevEl:wClass+" .eae-swiper-button-prev"}),""!==t.pagination&&(sliderData.pagination={type:t.pagination,el:wClass+" .swiper-pagination",clickable:t.clickable}),void 0!==t.autoplay&&(sliderData.autoplay={delay:t.autoplay.duration,disableOnInteraction:t.autoplay.disableOnInteraction,reverseDirection:t.autoplay.reverseDirection}),"undefined"==typeof Swiper){new(0,elementorFrontend.utils.swiper)(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container",sliderData).then(e=>{sswiper=e})}else window.sswiper=new Swiper(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container",sliderData),a(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container").css("visibility","visible");if(void 0!==t.autoplay){"yes"==t.autoplay.pauseOnHover&&jQuery(wClass+" .eae-swiper-container").hover((function(){sswiper.autoplay.stop(),sswiper.thumbs.swiper.autoplay.stop()}),(function(){sswiper.autoplay.start(),sswiper.thumbs.swiper.autoplay.start()}))}})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.bar",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.horizontalBar",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.line",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-data-table.default",(function(e,a){const t=e.find(".eae-table"),i=e.find(".eae-table-container");lottie_class=e.find(".eae-lottie"),settings=t.data("settings"),lottie_class.each((function(){let e=a(this).data("lottie-settings"),t=lottie.loadAnimation({container:document.getElementById(e.id),path:e.url,renderer:"svg",loop:e.loop});1==e.reverse&&t.setDirection(-1)})),!0===settings.sort?(head_class=a(".eae-table thead tr:not(:last-child)").addClass("eae-sort__ignoreRow"),t.tablesorter({sortReset:!1,sortRestart:!0})):head_class=a(".eae-table thead tr:not(:last-child)").removeClass("eae-sort__ignoreRow"),settings.search&&i.find("#eae-searchable").keyup((function(){_this=this,t.find(".eae-table__body tr").each((function(){-1===a(this).text().toLowerCase().indexOf(a(_this).val().toLowerCase())?a(this).addClass("eae-table-search-hide"):a(this).removeClass("eae-table-search-hide")}))}))}))}))}(jQuery);
|
1 |
+
jQuery(window).on("elementor/frontend/init",(function(){elementorFrontend.hooks.addAction("frontend/element_ready/wts-gmap.default",(function(e){map=function(a){$wrapper=e.find(".eae-markers");var t=$wrapper.data("zoom"),i=a.find(".marker"),n=$wrapper.data("style"),r=($wrapper.data("scroll"),{zoom:t,center:new google.maps.LatLng(0,0),mapTypeId:google.maps.MapTypeId.ROADMAP,styles:n}),d=new google.maps.Map(a[0],r);return d.markers=[],i.each((function(){!function(a,t){var i=$wrapper.data("animate");$wrapper.data("show-info-window-onload");$wrapper=e.find(".eae-markers");var n=new google.maps.LatLng(a.attr("data-lat"),a.attr("data-lng"));if(icon_img=a.attr("data-icon"),""!=icon_img)var r={url:a.attr("data-icon"),scaledSize:new google.maps.Size(a.attr("data-icon-size"),a.attr("data-icon-size"))};var d=new google.maps.Marker({position:n,map:t,icon:r,animation:google.maps.Animation.DROP});"animate-yes"==i&&"yes"!=a.data("info-window")&&d.setAnimation(google.maps.Animation.BOUNCE);"animate-yes"==i&&google.maps.event.addListener(d,"click",(function(){d.setAnimation(null)}));if(t.markers.push(d),a.html()){var s=new google.maps.InfoWindow({content:a.html()});"yes"==a.data("info-window")&&s.open(t,d),google.maps.event.addListener(d,"click",(function(){s.open(t,d)}))}"animate-yes"==i&&google.maps.event.addListener(s,"closeclick",(function(){d.setAnimation(google.maps.Animation.BOUNCE)}))}(jQuery(this),d)})),function(e,a){var t=new google.maps.LatLngBounds;jQuery.each(e.markers,(function(e,a){var i=new google.maps.LatLng(a.position.lat(),a.position.lng());t.extend(i)})),1==e.markers.length?(e.setCenter(t.getCenter()),e.setZoom(a)):e.fitBounds(t)}(d,t),d}(e.find(".eae-markers"))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e){var a,t,i,n,r,d,s,o=[],l=[],c=e.children(".eae-section-bs").children(".eae-section-bs-inner");c&&c.data("eae-bg-slider")&&(slider_images=c.data("eae-bg-slider"),a=c.data("eae-bg-slider-transition"),t=c.data("eae-bg-slider-animation"),n=("yes"==(i=c.data("eae-bg-custom-overlay"))||c.data("eae-bg-slider-overlay"),eae_editor.plugin_url+"assets/lib/vegas/overlays/"+c.data("eae-bg-slider-overlay")),r=c.data("eae-bg-slider-cover"),d=c.data("eae-bs-slider-delay"),s=c.data("eae-bs-slider-timer"),"undefined"!=typeof slider_images&&(o=slider_images.split(","),jQuery.each(o,(function(e,a){var t=[];t.src=a,l.push(t)})),c.vegas({slides:l,transition:a,animation:t,overlay:n,cover:r,delay:d,timer:s,init:function(){"yes"==i&&c.children(".vegas-overlay").css("background-image","")}})))}))}));var isEditMode=!1,breakpoints=eae.breakpoints;!function(e){e(window).on("elementor/frontend/init",(function(){var a=function(e,a){function t(e){$icons=a(document).find(e).find(".eae-ic-icon-wrap"),window.innerWidth<767?$icons.each((function(e,t){a(t).css("top",a(t).height()/2+8+"px"),a(t).next(".eae-info-circle-item__content-wrap").css("padding-top",a(t).height()/2+8+"px")})):$icons.each((function(e,t){a(t).css("margin-left",-.5*a(t).outerWidth()),a(t).css("margin-top",-.5*a(t).outerHeight()),$a=function(e){return e=(e-90)*Math.PI/180,{x:50+45*Math.cos(e),y:50+45*Math.sin(e)}}($angle),$b=360/$icons.length,a(t).css("left",$a.x+"%"),a(t).css("top",$a.y+"%"),$angle+=$b}))}$wrap_class=".elementor-element-"+e.data("id"),$angle=0,t(e);var i=null;function n(){"yes"==e.find(".eae-info-circle").data("autoplay")&&(i=setInterval(r,$autoplayDuration))}function r(){e.find(".eae-active").next().length>0?e.find(".eae-active").next().addClass("eae-active").siblings().removeClass("eae-active"):e.find(".eae-info-circle-item").eq(0).addClass("eae-active").siblings().removeClass("eae-active")}$autoplayDuration=e.find(".eae-info-circle").data("delay"),n(),e.find(".eae-ic-icon-wrap").hover((function(){clearInterval(i)}),(function(){n()})),e.find(".eae-info-circle-item").length>0&&a(e.find(".eae-info-circle-item")[0]).addClass("eae-active"),e.find(".eae-ic-icon-wrap").on("click",(function(){e.find(".eae-info-circle-item").removeClass("eae-active"),a(this).parent().addClass("eae-active")})),e.hasClass("eae-mouseenter-yes")&&e.find(".eae-ic-icon-wrap").on("mouseenter",(function(){e.find(".eae-info-circle-item").removeClass("eae-active"),a(this).parent().addClass("eae-active")})),window.addEventListener("resize",t.bind(this,$wrap_class))},t=function(e,a){function t(){var t=e.find(".eae-timline-progress-bar"),i=e.find(".eae-timeline-item"),n=e.find(".eae-timeline");const r=n.data("top-offset");var d=a(n).height(),s=a(i).last().find(".eae-tl-icon-wrapper").offset().top-a(i[0]).parent().offset().top,o=e.find(".eae-tl-icon-wrapper");a(t).css("top",a(i[0]).find(".eae-tl-icon-wrapper").offset().top-a(i[0]).parent().offset().top),a(t).css("bottom",d-s),a(t).css("left",o.eq(0)[0].offsetLeft+o.eq(0).width()/2),a(t).css("display","block"),i.each((function(e,t){new Waypoint({element:a(t),handler:function(e){"down"==e?a(t).addClass("eae-tl-item-focused"):a(t).removeClass("eae-tl-item-focused")},offset:r})}))}t(),window.addEventListener("resize",t),window.addEventListener("scroll",(function(){e.find(".eae-timline-progress-bar");const t=e.find(".eae-timeline").data("top-offset");e.find(".eae-pb-inner-line").css("height",a(window).scrollTop()-e.find(".eae-timeline").offset().top+t),e.find(".eae-pb-inner-line").css("max-height",e.find(".eae-pb-inner-line").parent().height())}))};function i(e,a,t){var i=new Date;i.setTime(i.getTime()+60*t*60*1e3);var n="expires="+i.toUTCString();document.cookie=e+"="+a+";"+n+";path=/"}function n(e){for(var a=e+"=",t=decodeURIComponent(document.cookie).split(";"),i=0;i<t.length;i++){for(var n=t[i];" "==n.charAt(0);)n=n.substring(1);if(0==n.indexOf(a))return n.substring(a.length,n.length)}return""}var r=function(e,a){$is_rtl=jQuery("body").hasClass("rtl"),$wrapper=e.find(".eae-progress-bar");$wrapper.attr("data-skill");var t=$wrapper.attr("data-value"),i=$wrapper.attr("data-skin"),n=$wrapper.find(".eae-pb-bar-skill"),r=$wrapper.find(".eae-pb-bar-value"),d=$wrapper.find(".eae-pb-bar"),s=$wrapper.find(".eae-pb-bar-inner");"skin1"===i&&a(s).attr("style","width : "+t+"%"),"skin2"===i&&a(s).attr("style","width : "+t+"%"),"skin3"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%")),"skin4"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%"),a(d).addClass("eae-pb-bar--no-overflow")),"skin5"===i&&(a(r).addClass("eae-pb-bar-value--aligned-value"),$is_rtl?a(r).attr("style","right :"+t+"%"):a(r).attr("style","left :"+t+"%"),a(s).attr("style","width :"+t+"%")),$wrapper.each((function(e,t){new Waypoint({element:t,skill_value:a(t).find(".eae-pb-bar-skill"),valueElem:a(t).find(".eae-pb-bar-value"),prgBar:a(t).find(".eae-pb-bar-bar"),prgInner:a(t).find(".eae-pb-bar-inner"),handler:function(e){"down"==e&&(a(r).hasClass("js-animated")||a(r).addClass("js-animated"),a(s).hasClass("js-animated")||a(s).addClass("js-animated"),a(n).hasClass("js-animated")||a(n).addClass("js-animated"))},offset:"bottom-in-view"})}))},d=function(e,a){var t=e.find(".eae-content-switcher-wrapper"),i=(e.data("id"),t.find(".eae-content-switch-button"));i.each((function(e,n){a(this).on("click",(function(e){e.preventDefault();let n=a(this).find(".eae-content-switch-label");if(!a(this).hasClass("active")){a(i).removeClass("active");let e=a(n).attr("id");a(this).addClass("active");var r=a(t).find(".eae-cs-content-section");a(r).removeClass("active");let d=a(t).find(".eae-content-section-"+e);a(d).addClass("active")}}))}))},s=function(e,a){let t=e.find(".eae-content-switcher-wrapper"),i=(e.data("id"),t.find(".eae-cs-switch-label")),n=t.find(".eae-content-switch-label.primary-label");const r=a(n).attr("item_id");let d=t.find(".eae-content-switch-label.secondary-label");const s=a(d).attr("item_id");let o=t.find(".eae-cs-content-section.eae-content-section-"+r),l=t.find(".eae-cs-content-section.eae-content-section-"+s);a(i).on("click",(function(e){a(this).find("input.eae-content-toggle-switch").is(":checked")?(d.addClass("active"),l.addClass("active"),n.removeClass("active"),o.removeClass("active")):(n.addClass("active"),o.addClass("active"),d.removeClass("active"),l.removeClass("active"))}))};e.fn.EAEHoverDirection=function(a){var t=e.extend({inaccuracy:30,speed:200},a);this.find(".overlay").css({top:-9999999}),this.mouseenter((function(a){container=e(this),overlay=container.find(".overlay"),parentOffset=container.offset(),relX=a.pageX-parentOffset.left,relY=a.pageY-parentOffset.top,overlay.css({top:0,left:0,width:container.width(),height:container.height()}),relX>container.width()-t.inaccuracy?overlay.css({top:0,left:container.width()}):relX<t.inaccuracy?overlay.css({top:0,left:-container.width()}):relY>container.height()-t.inaccuracy?overlay.css({top:container.width(),left:0}):relY<t.inaccuracy&&overlay.css({top:-container.width(),left:0}),overlay.animate({top:0,left:0},t.speed)})),this.mouseleave((function(a){container=e(this),overlay=container.find(".overlay"),parentOffset=container.offset(),relX=a.pageX-parentOffset.left,relY=a.pageY-parentOffset.top,relX<=0&&overlay.animate({top:0,left:-container.width()},t.speed),relX>=container.width()&&overlay.animate({top:0,left:container.width()},t.speed),relY<=0&&overlay.animate({left:0,top:-container.height()},t.speed),relY>=container.height()&&overlay.animate({left:0,top:container.height()},t.speed)}))};let o=function(e,a){const t=e.find(".eae-chart-outer-container"),i=(e.data("id"),e.find("#eae-chart-canvas"));let n=t.data("settings");new Chart(i,n)};elementorFrontend.hooks.addAction("frontend/element_ready/wts-ab-image.default",(function(e,a){e.find(".eae-img-comp-container").imagesLoaded().done((function(){ab_style=e.find(".eae-img-comp-container").data("ab-style"),slider_pos=e.find(".eae-img-comp-container").data("slider-pos"),"horizontal"===ab_style?(separator_width=parseInt(e.find(".eae-img-comp-overlay").css("border-right-width")),function(e){var a,t;a=e.find(".eae-img-comp-overlay"),t=(t=a.width())*slider_pos/100,function(a){var i,n,r,d=0;function s(e){e.preventDefault(),d=1,window.addEventListener("mousemove",l),i.addEventListener("touchmove",c)}function o(){d=0}function l(e){var t;if(0==d)return!1;(t=function(e){var t;return e=e||window.event,t=a.getBoundingClientRect(),e.pageX-t.left}(e))<0&&(t=0),t>n&&(t=n),f(t)}function c(e){var t;if(0==d)return!1;(t=function(e){var t;return t=a.getBoundingClientRect(),e.changedTouches[0].clientX-t.left}(e))<0&&(t=0),t>n&&(t=n),f(t)}function f(e){a.style.width=e+"px",i.style.left=a.offsetWidth-i.offsetWidth/2-separator_width/2+"px"}n=a.offsetWidth,r=a.offsetHeight,a.style.width=t+"px",(i=(i=e.find(".eae-img-comp-slider"))[0]).style.top=r/2-i.offsetHeight/2+"px",i.style.left=t-i.offsetWidth/2-separator_width/2+"px",e.hasClass("elementor-element-edit-mode")||(i.addEventListener("mousedown",s),window.addEventListener("mouseup",o),i.addEventListener("touchstart",s),window.addEventListener("touchstop",o))}(a[0])}(e)):(separator_width=parseInt(e.find(".eae-img-comp-overlay").css("border-bottom-width")),function(e){var a;a=e.find(".eae-img-comp-overlay"),start_pos=a.height(),start_pos=start_pos*slider_pos/100,function(a){var t,i,n,r=0;function d(e){e.preventDefault(),r=1,window.addEventListener("mousemove",o),t.addEventListener("touchmove",l)}function s(){r=0}function o(e){var t;if(0==r)return!1;(t=function(e){var t,i=0;return e=e||window.event,t=a.getBoundingClientRect(),i=e.pageY-t.top,i-=window.pageYOffset}(e))<0&&(t=0),t>n&&(t=n),c(t)}function l(e){var t;if(0==r)return!1;(t=function(e){var t;return t=a.getBoundingClientRect(),e.changedTouches[0].clientY-t.top}(e))<0&&(t=0),t>n&&(t=n),c(t)}function c(e){a.style.height=e+"px",t.style.top=a.offsetHeight-t.offsetHeight/2-separator_width/2+"px"}i=a.offsetWidth,n=a.offsetHeight,a.style.height=start_pos+"px",(t=(t=e.find(".eae-img-comp-slider"))[0]).style.top=start_pos-t.offsetHeight/2-separator_width/2+"px",t.style.left=i/2-t.offsetWidth/2+"px",e.hasClass("elementor-element-edit-mode")||(t.addEventListener("mousedown",d),window.addEventListener("mouseup",s),t.addEventListener("touchstart",d),window.addEventListener("touchstop",s))}(a[0])}(e))}))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){console.log("Called"),e.hasClass("eae-particle-yes")&&(id=e.data("id"),element_type=e.data("element_type"),pdata=e.data("eae-particle"),pdata_wrapper=e.find(".eae-particle-wrapper").data("eae-pdata"),"undefined"!=typeof pdata&&""!=pdata?e.find(".eae-section-bs").length>0?(e.find(".eae-section-bs").after('<div class="eae-particle-wrapper" id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,pdata)):("column"==element_type?e.prepend('<div class="eae-particle-wrapper" id="eae-particle-'+id+'"></div>'):e.prepend('<div class="eae-particle-wrapper " id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,pdata)):"undefined"!=typeof pdata_wrapper&&""!=pdata_wrapper&&(element_type,e.prepend('<div class="eae-particle-wrapper eae-particle-area" id="eae-particle-'+id+'"></div>'),particlesJS("eae-particle-"+id,JSON.parse(pdata_wrapper))))})),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){if(e.hasClass("eae-animated-gradient-yes")){id=e.data("id"),color=e.data("color"),angle=e.data("angle");var t="linear-gradient("+angle+","+color+")";heading=e.find(".elementor-heading-title"),e.css("background-image",t),e.hasClass("elementor-element-edit-mode")&&(color=e.find(".animated-gradient").data("color"),angle=e.find(".animated-gradient").data("angle"),gradient_color_editor="linear-gradient("+angle+","+color+")",e.prepend('<div class="animated-gradient" style="background-image : '+gradient_color_editor+' "></div>'))}})),elementorFrontend.hooks.addAction("frontend/element_ready/wts-modal-popup.default",(function(e,a){$preview_modal=e.find(".eae-popup-wrapper").data("preview-modal"),$close_btn_type=e.find(".eae-popup-wrapper").data("close-button-type"),$close_btn=e.find(".eae-popup-wrapper").data("close-btn"),"icon"==$close_btn_type?$close_btn_html='<i class="eae-close '+$close_btn+'"> </i>':$close_btn_html='<svg class="eae-close" style="-webkit-mask: url('+$close_btn+"); mask: url("+$close_btn+'); "></svg>',$magnific=e.find(".eae-popup-link").eaePopup({type:"inline",disableOn:0,key:null,midClick:!1,mainClass:"eae-popup eae-popup-"+e.find(".eae-popup-link").data("id")+" eae-wrap-"+e.find(".eae-popup-link").data("ctrl-id"),preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:e.find(".eae-popup-wrapper").data("close-in-out"),showCloseBtn:!0,enableEscapeKey:!1,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:$close_btn_html,tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}),"yes"==$preview_modal&&e.hasClass("elementor-element-edit-mode")&&e.find(".eae-popup-link").click()})),elementorFrontend.hooks.addAction("frontend/element_ready/wts-testimonial-slider.default",(function(e,a){if(e.find(".eae-grid-wrapper").hasClass("eae-masonry-yes")){var t=e.find(".eae-grid").masonry({});t.imagesLoaded().progress((function(){t.masonry("layout")}))}if(e.find(".eae-layout-carousel").length){outer_wrapper=e.find(".eae-swiper-outer-wrapper"),wid=e.data("id"),wclass=".elementor-element-"+wid;var i=outer_wrapper.data("direction"),n=outer_wrapper.data("speed"),r=outer_wrapper.data("autoplay"),d=outer_wrapper.data("duration"),s=outer_wrapper.data("effect"),o=outer_wrapper.data("space"),l=outer_wrapper.data("loop");l="yes"==l;var c=outer_wrapper.data("slides-per-view"),f=outer_wrapper.data("slides-per-group"),p=outer_wrapper.data("ptype"),m=outer_wrapper.data("navigation"),u=outer_wrapper.data("clickable"),g=outer_wrapper.data("keyboard"),v=outer_wrapper.data("scrollbar");adata={direction:i,effect:s,spaceBetween:o.desktop,loop:l,speed:n,slidesPerView:c.desktop,slidesPerGroup:f.desktop,observer:!0,mousewheel:{invert:!0},breakpoints:{1024:{spaceBetween:o.tablet,slidesPerView:c.tablet,slidesPerGroup:f.tablet},767:{spaceBetween:o.mobile,slidesPerView:c.mobile,slidesPerGroup:f.mobile}}},"fade"==s&&(adata.fadeEffect={crossFade:!1}),adata.autoplay="yes"==r&&{delay:d,disableOnInteraction:!1},"yes"==m&&(adata.navigation={nextEl:".swiper-button-next",prevEl:".swiper-button-prev"}),""!=p&&(adata.pagination={el:".swiper-pagination",type:p}),"bullets"==p&&"yes"==u&&(adata.pagination={el:".swiper-pagination",clickable:!0,type:p}),"yes"==v&&(adata.scrollbar={el:".swiper-scrollbar",draggable:!0}),"yes"==g&&(adata.keyboard={enabled:!0,onlyInViewport:!0}),0==l&&(adata.autoplay={delay:d,stopOnLastSlide:!0,disableOnInteraction:!1}),window.mswiper=new Swiper(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .swiper-container",adata),a(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .swiper-container").css("visibility","visible")}})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin1",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin2",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin3",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-info-circle.skin4",a),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin1",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin2",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin3",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-timeline.skin4",t),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin1",(function(e,a){var t=e.find(".eae-evergreen-wrapper").data("egtime"),r=e.find(".eae-evergreen-wrapper").data("egt-expire"),d=e.find(".eae-evergreen-wrapper").data("element-type"),s="eae-"+e.find(".eae-evergreen-wrapper").data("id"),o="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),l=e.find(".eae-evergreen-wrapper").data("actions"),c=e.find(".eae-evergreen-wrapper").data("unqid"),f=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===d){u=new Date(t),t=u.getTime();var p="expires="+u.toUTCString();document.cookie=o+"="+u.getTime()+";"+p+";path=/"}else{var m=n(s),u="";if(""!==m){(u=new Date(parseInt(m))).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime();var g=new Date(parseInt(m));g.setTime(g.getTime()+60*r*60*1e3);var v="expires="+g.toUTCString();document.cookie=s+"="+m+";"+v+";path=/";var h=new Date(parseInt(m));h.setTime(h.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));p="expires="+h.toUTCString();t-f>0&&(document.cookie=o+"="+m+";"+p+";path=/")}else{temp_date=t,(u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime(),i(s,(new Date).getTime(),r);var w=new Date;w.setTime(w.getTime()+1e3*temp_date);var y="expires="+w.toUTCString();document.cookie=o+"="+(new Date).getTime()+";"+y+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")&&t-f<0)return l.length>0&&l.forEach((function(t){"redirect"===t&&($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url)&&(window.location.href=$url1)),"hide"===t&&(e.hasClass("elementor-element-edit-mode")||(e.find("#eaeclockdiv").css("display","none"),e.find(".egt-title").css("display","none"))),"message"===t&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})),days="00",hours="00",minutes="00",seconds="00",e.find("."+c).find("#eaedivDays").html(days),e.find("."+c).find("#eaedivHours").html(hours.slice(-2)),e.find("."+c).find("#eaedivMinutes").html(minutes.slice(-2)),void e.find("."+c).find("#eaedivSeconds").html(seconds.slice(-2));e.hasClass("elementor-element-edit-mode")&&("countdown"===d?(u=new Date(t),t=u.getTime()):((u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime()));var k=setInterval((function(){var i=(new Date).getTime(),n=t-i,r=0,d=0,s=0,o=0;n>0?(r=Math.floor(n/864e5),d="0"+Math.floor(n%864e5/36e5),s="0"+Math.floor(n%36e5/6e4),o="0"+Math.floor(n%6e4/1e3)):(l.length>0&&(e.hasClass("elementor-element-edit-mode")||l.forEach((function(t){"redirect"===t&&($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url1)&&(window.location.href=$url1)),"hide"===t&&(e.find("#eaeclockdiv").css("display","none"),e.find(".egt-title").css("display","none")),"message"===t&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))}))),clearInterval(k),r="0",d="00",s="00",o="00"),r<10&&(r="0"+r),e.find("."+c).find("#eaedivDays").html(r),e.find("."+c).find("#eaedivHours").html(d.slice(-2)),e.find("."+c).find("#eaedivMinutes").html(s.slice(-2)),e.find("."+c).find("#eaedivSeconds").html(o.slice(-2))}),1e3)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin2",(function(e,a){var t=e.find(".eae-evergreen-wrapper").data("egtime"),r=e.find(".eae-evergreen-wrapper").data("egt-expire"),d=e.find(".eae-evergreen-wrapper").data("element-type"),s="eae-"+e.find(".eae-evergreen-wrapper").data("id"),o="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),l=e.find(".eae-evergreen-wrapper").data("actions"),c=e.find(".eae-evergreen-wrapper").data("unqid"),f=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===d){u=new Date(t),t=u.getTime();var p="expires="+u.toUTCString();document.cookie=o+"="+u.getTime()+";"+p+";path=/"}else{var m=n(s),u="";if(""!==m){(u=new Date(parseInt(m))).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime();var g=new Date(parseInt(m));g.setTime(g.getTime()+60*r*60*1e3);var v="expires="+g.toUTCString();document.cookie=s+"="+m+";"+v+";path=/";var h=new Date(parseInt(m));h.setTime(h.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));p="expires="+h.toUTCString();t-f>0&&(document.cookie=o+"="+m+";"+p+";path=/")}else{temp_date=t,(u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime(),i(s,(new Date).getTime(),r);var w=new Date;w.setTime(w.getTime()+1e3*temp_date);var y="expires="+w.toUTCString();document.cookie=o+"="+(new Date).getTime()+";"+y+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")&&t-f<0)return void(l.length>0&&l.forEach((function(t){"redirect"===t&&($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url)&&(window.location.href=$url)),"hide"===t&&(e.find("."+c).find(".timer-container").css("display","none"),e.find("."+c).find(".egt-title").css("display","none")),"message"===t&&e.find("."+c).find(".eae-egt-message").css("display","block"),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})));e.hasClass("elementor-element-edit-mode")&&("countdown"===d?(u=new Date(t),t=u.getTime()):((u=new Date).setSeconds(u.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),t=u.getTime()));var k=setInterval((function(){var i=(new Date).getTime(),n=t-i,r=Math.floor(n/864e5),d=Math.floor(n%864e5/36e5),s=Math.floor(n%36e5/6e4),o=Math.floor(n%6e4/1e3);if(e.find("."+c).find("#eaeulSec1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulSec").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulSec").find(".flip-clock-before").removeClass("flip-clock-before"),n<0)return clearInterval(k),void(l.length>0&&l.forEach((function(t){"redirect"===t&&(e.hasClass("elementor-element-edit-mode")||($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==a.trim($url1)&&(window.location.href=$url1))),"hide"===t&&(e.hasClass("elementor-element-edit-mode")||(e.find("."+c).find(".timer-container").css("display","none"),e.find("."+c).find(".egt-title").css("display","none"))),"message"===t&&(e.hasClass("elementor-element-edit-mode")||e.find("."+c).find(".eae-egt-message").css("display","block")),"hide_parent"===t&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none")))})));if(2===a.trim(o).length){var f="#eaeulSec1 li:eq( "+a.trim(o).charAt(1)+" )",p="#eaeulSec li:eq( "+a.trim(o).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec li:first-child").addClass("flip-clock-before"))}else{f="#eaeulSec1 li:eq( "+a.trim(o).charAt(0)+" )",p="#eaeulSec li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulSec li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulSec li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulMin1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulMin").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulMin").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(s).length){f="#eaeulMin1 li:eq( "+a.trim(s).charAt(1)+" )",p="#eaeulMin li:eq( "+a.trim(s).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin li:first-child").addClass("flip-clock-before"))}else{f="#eaeulMin1 li:eq( "+a.trim(s).charAt(0)+" )",p="#eaeulMin li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulMin li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulMin li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulHour1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulHour1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulHour").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulHour").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(d).length){f="#eaeulHour1 li:eq( "+a.trim(d).charAt(1)+" )",p="#eaeulHour li:eq( "+a.trim(d).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before"))}else{f="#eaeulHour1 li:eq( "+a.trim(d).charAt(0)+" )",p="#eaeulHour li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulHour li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulHour li:first-child").addClass("flip-clock-before"))}if(e.find("."+c).find("#eaeulDay1").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulDay1").find(".flip-clock-before").removeClass("flip-clock-before"),e.find("."+c).find("#eaeulDay").find(".flip-clock-active").removeClass("flip-clock-active"),e.find("."+c).find("#eaeulDay").find(".flip-clock-before").removeClass("flip-clock-before"),2==a.trim(r).length){f="#eaeulDay1 li:eq( "+a.trim(r).charAt(1)+" )",p="#eaeulDay li:eq( "+a.trim(r).charAt(0)+" )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay1 li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before"))}else{f="#eaeulDay1 li:eq( "+a.trim(r).charAt(0)+" )",p="#eaeulDay li:eq( 0 )";e.find("."+c).find(f).next().length>0?(e.find("."+c).find(f).addClass("flip-clock-active"),e.find("."+c).find(f).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay1 li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before")),e.find("."+c).find(p).next().length>0?(e.find("."+c).find(p).addClass("flip-clock-active"),e.find("."+c).find(p).next().addClass("flip-clock-before")):(e.find("."+c).find("#eaeulDay li:last-child").addClass("flip-clock-active"),e.find("."+c).find("#eaeulDay li:first-child").addClass("flip-clock-before"))}}),1e3)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-evergreen-timer.skin3",(function(e,a){var t,r=e.find(".eae-evergreen-wrapper").data("egtime"),d=e.find(".eae-evergreen-wrapper").data("egt-expire"),s=e.find(".eae-evergreen-wrapper").data("element-type"),o="eae-"+e.find(".eae-evergreen-wrapper").data("id"),l="eae-temp-"+e.find(".eae-evergreen-wrapper").data("id"),c=e.find(".eae-evergreen-wrapper").data("actions"),f=e.find(".eae-evergreen-wrapper").data("days"),p=e.find(".eae-evergreen-wrapper").data("hours"),m=e.find(".eae-evergreen-wrapper").data("mins"),u=e.find(".eae-evergreen-wrapper").data("seconds"),g=e.find(".eae-evergreen-wrapper").data("unqid"),v=(new Date).getTime();if(!e.hasClass("elementor-element-edit-mode"))if("countdown"===s){y=new Date(r),r=y.getTime();var h="expires="+y.toUTCString();document.cookie=l+"="+y.getTime()+";"+h+";path=/"}else{var w=n(o),y="";if(""!==w){(y=new Date(parseInt(w))).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime();var k=new Date(parseInt(w));k.setTime(k.getTime()+60*d*60*1e3);var b="expires="+k.toUTCString();document.cookie=o+"="+w+";"+b+";path=/";var C=new Date(parseInt(w));C.setTime(C.getTime()+1e3*e.find(".eae-evergreen-wrapper").data("egtime"));h="expires="+C.toUTCString();r-v>0&&(document.cookie=l+"="+w+";"+h+";path=/")}else{temp_date=r,(y=new Date).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime(),i(o,(new Date).getTime(),d);var _=new Date;_.setTime(_.getTime()+1e3*temp_date);var x="expires="+_.toUTCString();document.cookie=l+"="+(new Date).getTime()+";"+x+";path=/"}}if(!e.hasClass("elementor-element-edit-mode")){var T=D(r);if(parseInt(T.all)<1){if(c.length>0&&(c.forEach((function(a){"redirect"===a&&(e.hasClass("elementor-element-edit-mode")||($url=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==$url&&(window.location.href=$url))),"hide_parent"===a&&(e.hasClass("elementor-element-edit-mode")||($p_secs=e.closest("section"),$p_secs.css("display","none"))),"hide"===a&&(e.find("#timer").css("display","none"),e.find(".egt-title").css("display","none"),e.find(".desc").css("display","none")),"message"===a&&e.find(".eae-egt-message").css("display","block")})),1===c.length&&(""===c[0]||"message"===c[0]))){var $=e.find("."+g).find("#timer")[0];"yes"===f&&($.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===p&&("yes"===f?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a($).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):$.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>")}return}}function D(e){var a=r-new Date;return{days:Math.floor(a/864e5),hours:"0"+Math.floor(a/36e5%24),minutes:"0"+Math.floor(a/6e4%60),seconds:"0"+Math.floor(a/1e3%60),all:a}}function S(e){e.classList.add("fade"),setTimeout((function(){e.classList.remove("fade")}),700)}e.hasClass("elementor-element-edit-mode")&&("countdown"===s?(y=new Date(r),r=y.getTime()):((y=new Date).setSeconds(y.getSeconds()+e.find(".eae-evergreen-wrapper").data("egtime")),r=y.getTime())),D(r).all>1&&(t=setInterval((function(){var i=e.find("."+g).find("#timer")[0],n=D(r);"yes"===f&&(n.days<10&&(n.days="0"+n.days),i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.days+"</div></span>"),"yes"===p&&("yes"===f?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.hours.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.hours.slice(-2)+"</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.minutes.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.minutes.slice(-2)+"</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a(i).append("<span class='egt-time eae-time-wrapper'><div>"+n.seconds.slice(-2)+"</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>"+n.seconds.slice(-2)+"</div></span>");var d=i.getElementsByTagName("span");"yes"===f&&59==n.hours&&59==n.minutes&&59==n.seconds&&S(d[0]),"yes"===p&&("yes"===f?59==n.minutes&&59==n.seconds&&S(d[1]):59==n.minutes&&59==n.seconds&&S(d[0])),"yes"===m&&("yes"===f?"yes"===p?59==n.seconds&&S(d[2]):59==n.seconds&&S(d[1]):"yes"===p?59==n.seconds&&S(d[1]):59==n.seconds&&S(d[0])),"yes"===u&&("yes"===f?"yes"===p?"yes"===m&&S(d[3]):S("yes"===m?d[2]:d[1]):"yes"===p?"yes"===m&&S(d[2]):S("yes"===m?d[1]:d[0])),n.all<=1&&(clearInterval(t),"yes"===f&&(i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===p&&("yes"===f?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===m&&("yes"===f||"yes"===p?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),"yes"===u&&("yes"===f||"yes"===p||"yes"===m?a(i).append("<span class='egt-time eae-time-wrapper'><div>00</div></span>"):i.innerHTML="<span class='egt-time eae-time-wrapper'><div>00</div></span>"),e.hasClass("elementor-element-edit-mode")||c.length>0&&c.forEach((function(a){"redirect"===a&&($url1=e.find(".eae-evergreen-wrapper").data("redirected-url"),""!==$url1&&(window.location.href=$url1)),"hide"===a&&(e.find("#timer").css("display","none"),e.find(".egt-title").css("display","none"),e.find(".desc").css("display","none")),"message"===a&&e.find(".eae-egt-message").css("display","block"),"hide_parent"===a&&($p_secs=e.closest("section"),$p_secs.css("display","none"))})))}),1e3))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-comparisontable.default",(function(e,a){a(e.find(".eae-ct-heading")[0]).addClass("active"),e.find("ul").on("click","li",(function(){var t=a(this).index()+2;e.find("tr").find("td:not(:eq(0))").hide(),e.find("td:nth-child("+t+")").css("display","table-cell"),e.find("tr").find("th:not(:eq(0))").hide(),e.find("li").removeClass("active"),a(this).addClass("active")}));var t=window.matchMedia("(min-width: 767px)");function i(a){a.matches?e.find(".sep").attr("colspan",5):e.find(".sep").attr("colspan",2)}t.addListener(i),i(t)})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin1",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin2",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin3",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin4",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-progress-bar.skin5",r),elementorFrontend.hooks.addAction("frontend/element_ready/eae-filterableGallery.default",(function(e,a){var t=e.find(".eae-fg-wrapper"),i=e.data("id"),n=t.attr("data-maxtilt"),r=t.attr("data-perspective"),d=t.attr("data-speed"),s=t.attr("data-tilt-axis"),o=t.attr("data-glare"),l=parseInt(t.attr("data-overlay-speed"));if(s="x"===s?"y":"y"===s?"x":"both","yes"===o)var c=t.attr("data-max-glare");o="yes"===o;var f=a(".elementor-element-"+i+" .eae-fg-image"),p=t.hasClass("masonry-yes")?"masonry":"fitRows";f.outerHeight();adata={percentPosition:!0,animationOptions:{duration:750,easing:"linear",queue:!1}},"fitRows"===p&&(adata.layoutMode="fitRows"),"masonry"===p&&(adata.masonry={columnWidth:".eae-gallery-item",horizontalOrder:!0}),e.hasClass("eae-show-all-yes")||(e.find(".eae-gallery-filter a").first().addClass("current"),adata.filter=e.find(".eae-gallery-filter a").first().attr("data-filter"));var m=f.isotope(adata);m.imagesLoaded().progress((function(){m.isotope("layout")})),e.find(".eae-tilt-yes")&&(atilt={maxTilt:n,perspective:r,easing:"linear",scale:1,speed:d,disableAxis:s,transition:!0,reset:!0,glare:o,maxGlare:c},e.find(".el-tilt").tilt(atilt)),a(".elementor-element-"+i+" .eae-gallery-filter a").on("click",(function(){e.find(".eae-gallery-filter .current").removeClass("current"),a(this).addClass("current");var t=a(this).attr("data-filter");adata.filter=t;var i=f.isotope(adata);return i.imagesLoaded().progress((function(){if(i.isotope("layout"),isEditMode)return!1;e.find(".eae-tilt-yes")&&(e.find(".el-tilt").tilt(atilt),e.find(".el-tilt").tilt.reset.call(e.find(".el-tilt")))})),!1})),t.hasClass("eae-hover-direction-effect")||e.find(".eae-gallery-item-inner").hover((function(){a(this).find(".eae-grid-overlay").addClass("animated")})),t.hasClass("eae-hover-direction-effect")&&(e.find(".eae-gallery-item-inner").hover((function(){a(this).find(".eae-grid-overlay").addClass("overlay")})),t.find(".eae-gallery-item-inner").EAEHoverDirection({speed:l}))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin1",d),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin2",d),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin3",s),elementorFrontend.hooks.addAction("frontend/element_ready/eae-content-switcher.skin4",s),elementorFrontend.hooks.addAction("frontend/element_ready/global",(function(e,a){isEditMode||e.data("wts-url")&&"yes"==e.data("wts-link")&&e.on("click",(function(a){e.data("wts-url")&&"yes"==e.data("wts-new-window")?window.open(e.data("wts-url")):location.href=e.data("wts-url")}))})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-thumbgallery.default",(function(e,a){swiper_outer_wrapper=e.find(".eae-swiper-outer-wrapper"),wid=e.data("id"),wClass=".elementor-element-"+wid,thumb_outer_wrapper=e.find(".eae-gallery-thumbs");let t=swiper_outer_wrapper.data("swiper-settings"),i=swiper_outer_wrapper.data("slides-per-view"),n=swiper_outer_wrapper.data("space");const r=eae.breakpoints;let d={};d[r.lg-1]={slidesPerView:i.desktop,spaceBetween:n.desktop},d[r.md-1]={slidesPerView:i.tablet,spaceBetween:n.tablet};const s=eae.breakpoints;let o={};if(o[s.lg-1]={spaceBetween:t.spaceBetween.desktop},o[s.md-1]={spaceBetween:t.spaceBetween.tablet},sliderData={direction:"horizontal",effect:t.effect,keyboard:{enabled:t.keyboard},spaceBetween:t.spaceBetween.mobile,breakpoints:o,speed:t.speed,loop:"yes"===t.loop,thumbs:{swiper:{el:thumb_outer_wrapper,direction:"horizontal",spaceBetween:n.mobile,slidesPerView:i.mobile,navigation:{nextEl:wClass+" .eae-swiper-button-next",prevEl:wClass+" .eae-swiper-button-prev"},speed:t.speed,loop:"yes"===t.loop,freeMode:!0,watchSlidesVisibility:!0,watchSlidesProgress:!0,breakpoints:d,slideToClickedSlide:!0}}},void 0!==t.autoplay&&(sliderData.thumbs.swiper.autoplay={delay:t.autoplay.duration,disableOnInteraction:t.autoplay.disableOnInteraction,reverseDirection:t.autoplay.reverseDirection}),"yes"==t.navigation&&(sliderData.navigation={nextEl:wClass+" .eae-swiper-button-next",prevEl:wClass+" .eae-swiper-button-prev"}),""!==t.pagination&&(sliderData.pagination={type:t.pagination,el:wClass+" .swiper-pagination",clickable:t.clickable}),void 0!==t.autoplay&&(sliderData.autoplay={delay:t.autoplay.duration,disableOnInteraction:t.autoplay.disableOnInteraction,reverseDirection:t.autoplay.reverseDirection}),"undefined"==typeof Swiper){new(0,elementorFrontend.utils.swiper)(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container",sliderData).then(e=>{sswiper=e})}else window.sswiper=new Swiper(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container",sliderData),a(".elementor-element-"+wid+" .eae-swiper-outer-wrapper .eae-swiper-container").css("visibility","visible");if(void 0!==t.autoplay){"yes"==t.autoplay.pauseOnHover&&jQuery(wClass+" .eae-swiper-container").hover((function(){sswiper.autoplay.stop(),sswiper.thumbs.swiper.autoplay.stop()}),(function(){sswiper.autoplay.start(),sswiper.thumbs.swiper.autoplay.start()}))}})),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.bar",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.horizontalBar",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-chart.line",o),elementorFrontend.hooks.addAction("frontend/element_ready/eae-data-table.default",(function(e,a){const t=e.find(".eae-table"),i=e.find(".eae-table-container");lottie_class=e.find(".eae-lottie"),settings=t.data("settings"),lottie_class.each((function(){let e=a(this).data("lottie-settings"),t=lottie.loadAnimation({container:document.getElementById(e.id),path:e.url,renderer:"svg",loop:e.loop});1==e.reverse&&t.setDirection(-1)})),!0===settings.sort?(head_class=a(".eae-table thead tr:not(:last-child)").addClass("eae-sort__ignoreRow"),t.tablesorter({sortReset:!1,sortRestart:!0})):head_class=a(".eae-table thead tr:not(:last-child)").removeClass("eae-sort__ignoreRow"),settings.search&&i.find("#eae-searchable").keyup((function(){_this=this,t.find(".eae-table__body tr").each((function(){-1===a(this).text().toLowerCase().indexOf(a(_this).val().toLowerCase())?a(this).addClass("eae-table-search-hide"):a(this).removeClass("eae-table-search-hide")}))}))}))}))}(jQuery);
|
assets/js/tsparticles.js
ADDED
@@ -0,0 +1,11778 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*!
|
2 |
+
* Author : Matteo Bruni - https://www.matteobruni.it
|
3 |
+
* MIT license: https://opensource.org/licenses/MIT
|
4 |
+
* Demo / Generator : https://particles.js.org/
|
5 |
+
* GitHub : https://www.github.com/matteobruni/tsparticles
|
6 |
+
* How to use? : Check the GitHub README
|
7 |
+
* v1.22.1
|
8 |
+
*/
|
9 |
+
(function webpackUniversalModuleDefinition(root, factory) {
|
10 |
+
if(typeof exports === 'object' && typeof module === 'object')
|
11 |
+
module.exports = factory();
|
12 |
+
else if(typeof define === 'function' && define.amd)
|
13 |
+
define([], factory);
|
14 |
+
else {
|
15 |
+
var a = factory();
|
16 |
+
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
17 |
+
}
|
18 |
+
})(this, function() {
|
19 |
+
return /******/ (() => { // webpackBootstrap
|
20 |
+
/******/ "use strict";
|
21 |
+
/******/ // The require scope
|
22 |
+
/******/ var __webpack_require__ = {};
|
23 |
+
/******/
|
24 |
+
/************************************************************************/
|
25 |
+
/******/ /* webpack/runtime/define property getters */
|
26 |
+
/******/ (() => {
|
27 |
+
/******/ // define getter functions for harmony exports
|
28 |
+
/******/ __webpack_require__.d = (exports, definition) => {
|
29 |
+
/******/ for(var key in definition) {
|
30 |
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
31 |
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
32 |
+
/******/ }
|
33 |
+
/******/ }
|
34 |
+
/******/ };
|
35 |
+
/******/ })();
|
36 |
+
/******/
|
37 |
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
38 |
+
/******/ (() => {
|
39 |
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
40 |
+
/******/ })();
|
41 |
+
/******/
|
42 |
+
/******/ /* webpack/runtime/make namespace object */
|
43 |
+
/******/ (() => {
|
44 |
+
/******/ // define __esModule on exports
|
45 |
+
/******/ __webpack_require__.r = (exports) => {
|
46 |
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
47 |
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
48 |
+
/******/ }
|
49 |
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
50 |
+
/******/ };
|
51 |
+
/******/ })();
|
52 |
+
/******/
|
53 |
+
/************************************************************************/
|
54 |
+
var __webpack_exports__ = {};
|
55 |
+
// ESM COMPAT FLAG
|
56 |
+
__webpack_require__.r(__webpack_exports__);
|
57 |
+
|
58 |
+
// EXPORTS
|
59 |
+
__webpack_require__.d(__webpack_exports__, {
|
60 |
+
"AbsorberClickMode": () => (/* reexport */ AbsorberClickMode),
|
61 |
+
"AnimationStatus": () => (/* reexport */ AnimationStatus),
|
62 |
+
"CanvasUtils": () => (/* reexport */ CanvasUtils),
|
63 |
+
"ClickMode": () => (/* reexport */ ClickMode),
|
64 |
+
"CollisionMode": () => (/* reexport */ CollisionMode),
|
65 |
+
"ColorUtils": () => (/* reexport */ ColorUtils),
|
66 |
+
"Constants": () => (/* reexport */ Constants),
|
67 |
+
"Container": () => (/* reexport */ Container),
|
68 |
+
"DestroyType": () => (/* reexport */ DestroyType),
|
69 |
+
"DivMode": () => (/* reexport */ DivMode),
|
70 |
+
"DivType": () => (/* reexport */ DivType),
|
71 |
+
"EmitterClickMode": () => (/* reexport */ EmitterClickMode),
|
72 |
+
"HoverMode": () => (/* reexport */ HoverMode),
|
73 |
+
"InlineArrangement": () => (/* reexport */ InlineArrangement),
|
74 |
+
"InteractivityDetect": () => (/* reexport */ InteractivityDetect),
|
75 |
+
"Main": () => (/* reexport */ Main),
|
76 |
+
"MoveDirection": () => (/* reexport */ MoveDirection),
|
77 |
+
"MoveType": () => (/* reexport */ MoveType),
|
78 |
+
"OutMode": () => (/* reexport */ OutMode),
|
79 |
+
"ProcessBubbleType": () => (/* reexport */ ProcessBubbleType),
|
80 |
+
"RotateDirection": () => (/* reexport */ RotateDirection),
|
81 |
+
"ShapeType": () => (/* reexport */ ShapeType),
|
82 |
+
"SizeMode": () => (/* reexport */ SizeMode),
|
83 |
+
"StartValueType": () => (/* reexport */ StartValueType),
|
84 |
+
"ThemeMode": () => (/* reexport */ ThemeMode),
|
85 |
+
"Type": () => (/* reexport */ Type),
|
86 |
+
"Utils": () => (/* reexport */ Utils),
|
87 |
+
"pJSDom": () => (/* binding */ pJSDom),
|
88 |
+
"particlesJS": () => (/* binding */ particlesJS),
|
89 |
+
"tsParticles": () => (/* binding */ tsParticles)
|
90 |
+
});
|
91 |
+
|
92 |
+
;// CONCATENATED MODULE: ./dist/browser/pjs.js
|
93 |
+
const initPjs = main => {
|
94 |
+
const particlesJS = (tagId, options) => {
|
95 |
+
return main.load(tagId, options);
|
96 |
+
};
|
97 |
+
|
98 |
+
particlesJS.load = (tagId, pathConfigJson, callback) => {
|
99 |
+
main.loadJSON(tagId, pathConfigJson).then(container => {
|
100 |
+
if (container) {
|
101 |
+
callback(container);
|
102 |
+
}
|
103 |
+
});
|
104 |
+
};
|
105 |
+
|
106 |
+
particlesJS.setOnClickHandler = callback => {
|
107 |
+
main.setOnClickHandler(callback);
|
108 |
+
};
|
109 |
+
|
110 |
+
const pJSDom = main.dom();
|
111 |
+
return {
|
112 |
+
particlesJS,
|
113 |
+
pJSDom
|
114 |
+
};
|
115 |
+
};
|
116 |
+
|
117 |
+
|
118 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/SquareDrawer.js
|
119 |
+
class SquareDrawer {
|
120 |
+
getSidesCount() {
|
121 |
+
return 4;
|
122 |
+
}
|
123 |
+
|
124 |
+
draw(context, particle, radius) {
|
125 |
+
context.rect(-radius, -radius, radius * 2, radius * 2);
|
126 |
+
}
|
127 |
+
|
128 |
+
}
|
129 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Directions/OutModeDirection.js
|
130 |
+
var OutModeDirection;
|
131 |
+
|
132 |
+
(function (OutModeDirection) {
|
133 |
+
OutModeDirection["bottom"] = "bottom";
|
134 |
+
OutModeDirection["left"] = "left";
|
135 |
+
OutModeDirection["right"] = "right";
|
136 |
+
OutModeDirection["top"] = "top";
|
137 |
+
})(OutModeDirection || (OutModeDirection = {}));
|
138 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Directions/MoveDirection.js
|
139 |
+
var MoveDirection;
|
140 |
+
|
141 |
+
(function (MoveDirection) {
|
142 |
+
MoveDirection["bottom"] = "bottom";
|
143 |
+
MoveDirection["bottomLeft"] = "bottom-left";
|
144 |
+
MoveDirection["bottomRight"] = "bottom-right";
|
145 |
+
MoveDirection["left"] = "left";
|
146 |
+
MoveDirection["none"] = "none";
|
147 |
+
MoveDirection["right"] = "right";
|
148 |
+
MoveDirection["top"] = "top";
|
149 |
+
MoveDirection["topLeft"] = "top-left";
|
150 |
+
MoveDirection["topRight"] = "top-right";
|
151 |
+
})(MoveDirection || (MoveDirection = {}));
|
152 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Directions/RotateDirection.js
|
153 |
+
var RotateDirection;
|
154 |
+
|
155 |
+
(function (RotateDirection) {
|
156 |
+
RotateDirection["clockwise"] = "clockwise";
|
157 |
+
RotateDirection["counterClockwise"] = "counter-clockwise";
|
158 |
+
RotateDirection["random"] = "random";
|
159 |
+
})(RotateDirection || (RotateDirection = {}));
|
160 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Directions/index.js
|
161 |
+
|
162 |
+
|
163 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/NumberUtils.js
|
164 |
+
|
165 |
+
class NumberUtils {
|
166 |
+
static clamp(num, min, max) {
|
167 |
+
return Math.min(Math.max(num, min), max);
|
168 |
+
}
|
169 |
+
|
170 |
+
static mix(comp1, comp2, weight1, weight2) {
|
171 |
+
return Math.floor((comp1 * weight1 + comp2 * weight2) / (weight1 + weight2));
|
172 |
+
}
|
173 |
+
|
174 |
+
static randomInRange(r) {
|
175 |
+
const max = NumberUtils.getRangeMax(r);
|
176 |
+
let min = NumberUtils.getRangeMin(r);
|
177 |
+
|
178 |
+
if (max === min) {
|
179 |
+
min = 0;
|
180 |
+
}
|
181 |
+
|
182 |
+
return Math.random() * (max - min) + min;
|
183 |
+
}
|
184 |
+
|
185 |
+
static getRangeValue(value) {
|
186 |
+
return typeof value === "number" ? value : NumberUtils.randomInRange(value);
|
187 |
+
}
|
188 |
+
|
189 |
+
static getRangeMin(value) {
|
190 |
+
return typeof value === "number" ? value : value.min;
|
191 |
+
}
|
192 |
+
|
193 |
+
static getRangeMax(value) {
|
194 |
+
return typeof value === "number" ? value : value.max;
|
195 |
+
}
|
196 |
+
|
197 |
+
static setRangeValue(source, value) {
|
198 |
+
if (source === value || value === undefined && typeof source === "number") {
|
199 |
+
return source;
|
200 |
+
}
|
201 |
+
|
202 |
+
const min = NumberUtils.getRangeMin(source),
|
203 |
+
max = NumberUtils.getRangeMax(source);
|
204 |
+
return value !== undefined ? {
|
205 |
+
min: Math.min(min, value),
|
206 |
+
max: Math.max(max, value)
|
207 |
+
} : NumberUtils.setRangeValue(min, max);
|
208 |
+
}
|
209 |
+
|
210 |
+
static getValue(options) {
|
211 |
+
const random = options.random;
|
212 |
+
const {
|
213 |
+
enable,
|
214 |
+
minimumValue
|
215 |
+
} = typeof random === "boolean" ? {
|
216 |
+
enable: random,
|
217 |
+
minimumValue: 0
|
218 |
+
} : random;
|
219 |
+
return enable ? NumberUtils.randomInRange({
|
220 |
+
min: minimumValue,
|
221 |
+
max: options.value
|
222 |
+
}) : options.value;
|
223 |
+
}
|
224 |
+
|
225 |
+
static getDistances(pointA, pointB) {
|
226 |
+
const dx = pointA.x - pointB.x;
|
227 |
+
const dy = pointA.y - pointB.y;
|
228 |
+
return {
|
229 |
+
dx: dx,
|
230 |
+
dy: dy,
|
231 |
+
distance: Math.sqrt(dx * dx + dy * dy)
|
232 |
+
};
|
233 |
+
}
|
234 |
+
|
235 |
+
static getDistance(pointA, pointB) {
|
236 |
+
return NumberUtils.getDistances(pointA, pointB).distance;
|
237 |
+
}
|
238 |
+
|
239 |
+
static getParticleBaseVelocity(particle) {
|
240 |
+
let velocityBase;
|
241 |
+
|
242 |
+
switch (particle.direction) {
|
243 |
+
case MoveDirection.top:
|
244 |
+
velocityBase = {
|
245 |
+
x: 0,
|
246 |
+
y: -1
|
247 |
+
};
|
248 |
+
break;
|
249 |
+
|
250 |
+
case MoveDirection.topRight:
|
251 |
+
velocityBase = {
|
252 |
+
x: 0.5,
|
253 |
+
y: -0.5
|
254 |
+
};
|
255 |
+
break;
|
256 |
+
|
257 |
+
case MoveDirection.right:
|
258 |
+
velocityBase = {
|
259 |
+
x: 1,
|
260 |
+
y: -0
|
261 |
+
};
|
262 |
+
break;
|
263 |
+
|
264 |
+
case MoveDirection.bottomRight:
|
265 |
+
velocityBase = {
|
266 |
+
x: 0.5,
|
267 |
+
y: 0.5
|
268 |
+
};
|
269 |
+
break;
|
270 |
+
|
271 |
+
case MoveDirection.bottom:
|
272 |
+
velocityBase = {
|
273 |
+
x: 0,
|
274 |
+
y: 1
|
275 |
+
};
|
276 |
+
break;
|
277 |
+
|
278 |
+
case MoveDirection.bottomLeft:
|
279 |
+
velocityBase = {
|
280 |
+
x: -0.5,
|
281 |
+
y: 1
|
282 |
+
};
|
283 |
+
break;
|
284 |
+
|
285 |
+
case MoveDirection.left:
|
286 |
+
velocityBase = {
|
287 |
+
x: -1,
|
288 |
+
y: 0
|
289 |
+
};
|
290 |
+
break;
|
291 |
+
|
292 |
+
case MoveDirection.topLeft:
|
293 |
+
velocityBase = {
|
294 |
+
x: -0.5,
|
295 |
+
y: -0.5
|
296 |
+
};
|
297 |
+
break;
|
298 |
+
|
299 |
+
default:
|
300 |
+
velocityBase = {
|
301 |
+
x: 0,
|
302 |
+
y: 0
|
303 |
+
};
|
304 |
+
break;
|
305 |
+
}
|
306 |
+
|
307 |
+
return velocityBase;
|
308 |
+
}
|
309 |
+
|
310 |
+
static rotateVelocity(velocity, angle) {
|
311 |
+
return {
|
312 |
+
horizontal: velocity.horizontal * Math.cos(angle) - velocity.vertical * Math.sin(angle),
|
313 |
+
vertical: velocity.horizontal * Math.sin(angle) + velocity.vertical * Math.cos(angle)
|
314 |
+
};
|
315 |
+
}
|
316 |
+
|
317 |
+
static collisionVelocity(v1, v2, m1, m2) {
|
318 |
+
return {
|
319 |
+
horizontal: v1.horizontal * (m1 - m2) / (m1 + m2) + v2.horizontal * 2 * m2 / (m1 + m2),
|
320 |
+
vertical: v1.vertical
|
321 |
+
};
|
322 |
+
}
|
323 |
+
|
324 |
+
}
|
325 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Utils.js
|
326 |
+
var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
327 |
+
function adopt(value) {
|
328 |
+
return value instanceof P ? value : new P(function (resolve) {
|
329 |
+
resolve(value);
|
330 |
+
});
|
331 |
+
}
|
332 |
+
|
333 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
334 |
+
function fulfilled(value) {
|
335 |
+
try {
|
336 |
+
step(generator.next(value));
|
337 |
+
} catch (e) {
|
338 |
+
reject(e);
|
339 |
+
}
|
340 |
+
}
|
341 |
+
|
342 |
+
function rejected(value) {
|
343 |
+
try {
|
344 |
+
step(generator["throw"](value));
|
345 |
+
} catch (e) {
|
346 |
+
reject(e);
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
function step(result) {
|
351 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
352 |
+
}
|
353 |
+
|
354 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
355 |
+
});
|
356 |
+
};
|
357 |
+
|
358 |
+
|
359 |
+
|
360 |
+
|
361 |
+
function rectSideBounce(pSide, pOtherSide, rectSide, rectOtherSide, velocity, factor) {
|
362 |
+
const res = {
|
363 |
+
bounced: false
|
364 |
+
};
|
365 |
+
|
366 |
+
if (pOtherSide.min >= rectOtherSide.min && pOtherSide.min <= rectOtherSide.max && pOtherSide.max >= rectOtherSide.min && pOtherSide.max <= rectOtherSide.max) {
|
367 |
+
if (pSide.max >= rectSide.min && pSide.max <= (rectSide.max + rectSide.min) / 2 && velocity > 0 || pSide.min <= rectSide.max && pSide.min > (rectSide.max + rectSide.min) / 2 && velocity < 0) {
|
368 |
+
res.velocity = velocity * -factor;
|
369 |
+
res.bounced = true;
|
370 |
+
}
|
371 |
+
}
|
372 |
+
|
373 |
+
return res;
|
374 |
+
}
|
375 |
+
|
376 |
+
function checkSelector(element, selectors) {
|
377 |
+
if (selectors instanceof Array) {
|
378 |
+
for (const selector of selectors) {
|
379 |
+
if (element.matches(selector)) {
|
380 |
+
return true;
|
381 |
+
}
|
382 |
+
}
|
383 |
+
|
384 |
+
return false;
|
385 |
+
} else {
|
386 |
+
return element.matches(selectors);
|
387 |
+
}
|
388 |
+
}
|
389 |
+
|
390 |
+
class Utils {
|
391 |
+
static isSsr() {
|
392 |
+
return typeof window === "undefined" || !window;
|
393 |
+
}
|
394 |
+
|
395 |
+
static get animate() {
|
396 |
+
return Utils.isSsr() ? callback => setTimeout(callback) : callback => (window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || window.setTimeout)(callback);
|
397 |
+
}
|
398 |
+
|
399 |
+
static get cancelAnimation() {
|
400 |
+
return Utils.isSsr() ? handle => clearTimeout(handle) : handle => (window.cancelAnimationFrame || window.webkitCancelRequestAnimationFrame || window.mozCancelRequestAnimationFrame || window.oCancelRequestAnimationFrame || window.msCancelRequestAnimationFrame || window.clearTimeout)(handle);
|
401 |
+
}
|
402 |
+
|
403 |
+
static isInArray(value, array) {
|
404 |
+
return value === array || array instanceof Array && array.indexOf(value) > -1;
|
405 |
+
}
|
406 |
+
|
407 |
+
static loadFont(character) {
|
408 |
+
return __awaiter(this, void 0, void 0, function* () {
|
409 |
+
try {
|
410 |
+
yield document.fonts.load(`${character.weight} 36px '${character.font}'`);
|
411 |
+
} catch (_a) {}
|
412 |
+
});
|
413 |
+
}
|
414 |
+
|
415 |
+
static arrayRandomIndex(array) {
|
416 |
+
return Math.floor(Math.random() * array.length);
|
417 |
+
}
|
418 |
+
|
419 |
+
static itemFromArray(array, index, useIndex = true) {
|
420 |
+
const fixedIndex = index !== undefined && useIndex ? index % array.length : Utils.arrayRandomIndex(array);
|
421 |
+
return array[fixedIndex];
|
422 |
+
}
|
423 |
+
|
424 |
+
static isPointInside(point, size, radius, direction) {
|
425 |
+
return Utils.areBoundsInside(Utils.calculateBounds(point, radius !== null && radius !== void 0 ? radius : 0), size, direction);
|
426 |
+
}
|
427 |
+
|
428 |
+
static areBoundsInside(bounds, size, direction) {
|
429 |
+
let inside = true;
|
430 |
+
|
431 |
+
if (!direction || direction === OutModeDirection.bottom) {
|
432 |
+
inside = bounds.top < size.height;
|
433 |
+
}
|
434 |
+
|
435 |
+
if (inside && (!direction || direction === OutModeDirection.left)) {
|
436 |
+
inside = bounds.right > 0;
|
437 |
+
}
|
438 |
+
|
439 |
+
if (inside && (!direction || direction === OutModeDirection.right)) {
|
440 |
+
inside = bounds.left < size.width;
|
441 |
+
}
|
442 |
+
|
443 |
+
if (inside && (!direction || direction === OutModeDirection.top)) {
|
444 |
+
inside = bounds.bottom > 0;
|
445 |
+
}
|
446 |
+
|
447 |
+
return inside;
|
448 |
+
}
|
449 |
+
|
450 |
+
static calculateBounds(point, radius) {
|
451 |
+
return {
|
452 |
+
bottom: point.y + radius,
|
453 |
+
left: point.x - radius,
|
454 |
+
right: point.x + radius,
|
455 |
+
top: point.y - radius
|
456 |
+
};
|
457 |
+
}
|
458 |
+
|
459 |
+
static loadImage(source) {
|
460 |
+
return new Promise((resolve, reject) => {
|
461 |
+
if (!source) {
|
462 |
+
reject("Error tsParticles - No image.src");
|
463 |
+
return;
|
464 |
+
}
|
465 |
+
|
466 |
+
const image = {
|
467 |
+
source: source,
|
468 |
+
type: source.substr(source.length - 3)
|
469 |
+
};
|
470 |
+
const img = new Image();
|
471 |
+
img.addEventListener("load", () => {
|
472 |
+
image.element = img;
|
473 |
+
resolve(image);
|
474 |
+
});
|
475 |
+
img.addEventListener("error", () => {
|
476 |
+
reject(`Error tsParticles - loading image: ${source}`);
|
477 |
+
});
|
478 |
+
img.src = source;
|
479 |
+
});
|
480 |
+
}
|
481 |
+
|
482 |
+
static downloadSvgImage(source) {
|
483 |
+
return __awaiter(this, void 0, void 0, function* () {
|
484 |
+
if (!source) {
|
485 |
+
throw new Error("Error tsParticles - No image.src");
|
486 |
+
}
|
487 |
+
|
488 |
+
const image = {
|
489 |
+
source: source,
|
490 |
+
type: source.substr(source.length - 3)
|
491 |
+
};
|
492 |
+
|
493 |
+
if (image.type !== "svg") {
|
494 |
+
return Utils.loadImage(source);
|
495 |
+
}
|
496 |
+
|
497 |
+
const response = yield fetch(image.source);
|
498 |
+
|
499 |
+
if (!response.ok) {
|
500 |
+
throw new Error("Error tsParticles - Image not found");
|
501 |
+
}
|
502 |
+
|
503 |
+
image.svgData = yield response.text();
|
504 |
+
return image;
|
505 |
+
});
|
506 |
+
}
|
507 |
+
|
508 |
+
static deepExtend(destination, ...sources) {
|
509 |
+
for (const source of sources) {
|
510 |
+
if (source === undefined || source === null) {
|
511 |
+
continue;
|
512 |
+
}
|
513 |
+
|
514 |
+
if (typeof source !== "object") {
|
515 |
+
destination = source;
|
516 |
+
continue;
|
517 |
+
}
|
518 |
+
|
519 |
+
const sourceIsArray = Array.isArray(source);
|
520 |
+
|
521 |
+
if (sourceIsArray && (typeof destination !== "object" || !destination || !Array.isArray(destination))) {
|
522 |
+
destination = [];
|
523 |
+
} else if (!sourceIsArray && (typeof destination !== "object" || !destination || Array.isArray(destination))) {
|
524 |
+
destination = {};
|
525 |
+
}
|
526 |
+
|
527 |
+
for (const key in source) {
|
528 |
+
if (key === "__proto__") {
|
529 |
+
continue;
|
530 |
+
}
|
531 |
+
|
532 |
+
const sourceDict = source;
|
533 |
+
const value = sourceDict[key];
|
534 |
+
const isObject = typeof value === "object";
|
535 |
+
const destDict = destination;
|
536 |
+
destDict[key] = isObject && Array.isArray(value) ? value.map(v => Utils.deepExtend(destDict[key], v)) : Utils.deepExtend(destDict[key], value);
|
537 |
+
}
|
538 |
+
}
|
539 |
+
|
540 |
+
return destination;
|
541 |
+
}
|
542 |
+
|
543 |
+
static isDivModeEnabled(mode, divs) {
|
544 |
+
return divs instanceof Array ? !!divs.find(t => t.enable && Utils.isInArray(mode, t.mode)) : Utils.isInArray(mode, divs.mode);
|
545 |
+
}
|
546 |
+
|
547 |
+
static divModeExecute(mode, divs, callback) {
|
548 |
+
if (divs instanceof Array) {
|
549 |
+
for (const div of divs) {
|
550 |
+
const divMode = div.mode;
|
551 |
+
const divEnabled = div.enable;
|
552 |
+
|
553 |
+
if (divEnabled && Utils.isInArray(mode, divMode)) {
|
554 |
+
Utils.singleDivModeExecute(div, callback);
|
555 |
+
}
|
556 |
+
}
|
557 |
+
} else {
|
558 |
+
const divMode = divs.mode;
|
559 |
+
const divEnabled = divs.enable;
|
560 |
+
|
561 |
+
if (divEnabled && Utils.isInArray(mode, divMode)) {
|
562 |
+
Utils.singleDivModeExecute(divs, callback);
|
563 |
+
}
|
564 |
+
}
|
565 |
+
}
|
566 |
+
|
567 |
+
static singleDivModeExecute(div, callback) {
|
568 |
+
const selectors = div.selectors;
|
569 |
+
|
570 |
+
if (selectors instanceof Array) {
|
571 |
+
for (const selector of selectors) {
|
572 |
+
callback(selector, div);
|
573 |
+
}
|
574 |
+
} else {
|
575 |
+
callback(selectors, div);
|
576 |
+
}
|
577 |
+
}
|
578 |
+
|
579 |
+
static divMode(divs, element) {
|
580 |
+
if (!element || !divs) {
|
581 |
+
return;
|
582 |
+
}
|
583 |
+
|
584 |
+
if (divs instanceof Array) {
|
585 |
+
return divs.find(d => checkSelector(element, d.selectors));
|
586 |
+
} else if (checkSelector(element, divs.selectors)) {
|
587 |
+
return divs;
|
588 |
+
}
|
589 |
+
}
|
590 |
+
|
591 |
+
static circleBounceDataFromParticle(p) {
|
592 |
+
return {
|
593 |
+
position: p.getPosition(),
|
594 |
+
radius: p.getRadius(),
|
595 |
+
velocity: p.velocity,
|
596 |
+
factor: {
|
597 |
+
horizontal: NumberUtils.getValue(p.options.bounce.horizontal),
|
598 |
+
vertical: NumberUtils.getValue(p.options.bounce.vertical)
|
599 |
+
}
|
600 |
+
};
|
601 |
+
}
|
602 |
+
|
603 |
+
static circleBounce(p1, p2) {
|
604 |
+
const xVelocityDiff = p1.velocity.horizontal;
|
605 |
+
const yVelocityDiff = p1.velocity.vertical;
|
606 |
+
const pos1 = p1.position;
|
607 |
+
const pos2 = p2.position;
|
608 |
+
const xDist = pos2.x - pos1.x;
|
609 |
+
const yDist = pos2.y - pos1.y;
|
610 |
+
|
611 |
+
if (xVelocityDiff * xDist + yVelocityDiff * yDist >= 0) {
|
612 |
+
const angle = -Math.atan2(pos2.y - pos1.y, pos2.x - pos1.x);
|
613 |
+
const m1 = p1.radius;
|
614 |
+
const m2 = p2.radius;
|
615 |
+
const u1 = NumberUtils.rotateVelocity(p1.velocity, angle);
|
616 |
+
const u2 = NumberUtils.rotateVelocity(p2.velocity, angle);
|
617 |
+
const v1 = NumberUtils.collisionVelocity(u1, u2, m1, m2);
|
618 |
+
const v2 = NumberUtils.collisionVelocity(u2, u1, m1, m2);
|
619 |
+
const vFinal1 = NumberUtils.rotateVelocity(v1, -angle);
|
620 |
+
const vFinal2 = NumberUtils.rotateVelocity(v2, -angle);
|
621 |
+
p1.velocity.horizontal = vFinal1.horizontal * p1.factor.horizontal;
|
622 |
+
p1.velocity.vertical = vFinal1.vertical * p1.factor.vertical;
|
623 |
+
p2.velocity.horizontal = vFinal2.horizontal * p2.factor.horizontal;
|
624 |
+
p2.velocity.vertical = vFinal2.vertical * p2.factor.vertical;
|
625 |
+
}
|
626 |
+
}
|
627 |
+
|
628 |
+
static rectBounce(particle, divBounds) {
|
629 |
+
const pPos = particle.getPosition();
|
630 |
+
const size = particle.getRadius();
|
631 |
+
const bounds = Utils.calculateBounds(pPos, size);
|
632 |
+
const resH = rectSideBounce({
|
633 |
+
min: bounds.left,
|
634 |
+
max: bounds.right
|
635 |
+
}, {
|
636 |
+
min: bounds.top,
|
637 |
+
max: bounds.bottom
|
638 |
+
}, {
|
639 |
+
min: divBounds.left,
|
640 |
+
max: divBounds.right
|
641 |
+
}, {
|
642 |
+
min: divBounds.top,
|
643 |
+
max: divBounds.bottom
|
644 |
+
}, particle.velocity.horizontal, NumberUtils.getValue(particle.options.bounce.horizontal));
|
645 |
+
|
646 |
+
if (resH.bounced) {
|
647 |
+
if (resH.velocity !== undefined) {
|
648 |
+
particle.velocity.horizontal = resH.velocity;
|
649 |
+
}
|
650 |
+
|
651 |
+
if (resH.position !== undefined) {
|
652 |
+
particle.position.x = resH.position;
|
653 |
+
}
|
654 |
+
}
|
655 |
+
|
656 |
+
const resV = rectSideBounce({
|
657 |
+
min: bounds.top,
|
658 |
+
max: bounds.bottom
|
659 |
+
}, {
|
660 |
+
min: bounds.left,
|
661 |
+
max: bounds.right
|
662 |
+
}, {
|
663 |
+
min: divBounds.top,
|
664 |
+
max: divBounds.bottom
|
665 |
+
}, {
|
666 |
+
min: divBounds.left,
|
667 |
+
max: divBounds.right
|
668 |
+
}, particle.velocity.vertical, NumberUtils.getValue(particle.options.bounce.vertical));
|
669 |
+
|
670 |
+
if (resV.bounced) {
|
671 |
+
if (resV.velocity !== undefined) {
|
672 |
+
particle.velocity.vertical = resV.velocity;
|
673 |
+
}
|
674 |
+
|
675 |
+
if (resV.position !== undefined) {
|
676 |
+
particle.position.y = resV.position;
|
677 |
+
}
|
678 |
+
}
|
679 |
+
}
|
680 |
+
|
681 |
+
}
|
682 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Constants.js
|
683 |
+
class Constants {}
|
684 |
+
Constants.canvasClass = "tsparticles-canvas-el";
|
685 |
+
Constants.randomColorValue = "random";
|
686 |
+
Constants.midColorValue = "mid";
|
687 |
+
Constants.touchEndEvent = "touchend";
|
688 |
+
Constants.mouseDownEvent = "mousedown";
|
689 |
+
Constants.mouseUpEvent = "mouseup";
|
690 |
+
Constants.mouseMoveEvent = "mousemove";
|
691 |
+
Constants.touchStartEvent = "touchstart";
|
692 |
+
Constants.touchMoveEvent = "touchmove";
|
693 |
+
Constants.mouseLeaveEvent = "mouseleave";
|
694 |
+
Constants.mouseOutEvent = "mouseout";
|
695 |
+
Constants.touchCancelEvent = "touchcancel";
|
696 |
+
Constants.resizeEvent = "resize";
|
697 |
+
Constants.visibilityChangeEvent = "visibilitychange";
|
698 |
+
Constants.noPolygonDataLoaded = "No polygon data loaded.";
|
699 |
+
Constants.noPolygonFound = "No polygon found, you need to specify SVG url in config.";
|
700 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/ColorUtils.js
|
701 |
+
|
702 |
+
|
703 |
+
|
704 |
+
|
705 |
+
function hue2rgb(p, q, t) {
|
706 |
+
let tCalc = t;
|
707 |
+
|
708 |
+
if (tCalc < 0) {
|
709 |
+
tCalc += 1;
|
710 |
+
}
|
711 |
+
|
712 |
+
if (tCalc > 1) {
|
713 |
+
tCalc -= 1;
|
714 |
+
}
|
715 |
+
|
716 |
+
if (tCalc < 1 / 6) {
|
717 |
+
return p + (q - p) * 6 * tCalc;
|
718 |
+
}
|
719 |
+
|
720 |
+
if (tCalc < 1 / 2) {
|
721 |
+
return q;
|
722 |
+
}
|
723 |
+
|
724 |
+
if (tCalc < 2 / 3) {
|
725 |
+
return p + (q - p) * (2 / 3 - tCalc) * 6;
|
726 |
+
}
|
727 |
+
|
728 |
+
return p;
|
729 |
+
}
|
730 |
+
|
731 |
+
function stringToRgba(input) {
|
732 |
+
if (input.startsWith("rgb")) {
|
733 |
+
const regex = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i;
|
734 |
+
const result = regex.exec(input);
|
735 |
+
return result ? {
|
736 |
+
a: result.length > 4 ? parseFloat(result[5]) : 1,
|
737 |
+
b: parseInt(result[3], 10),
|
738 |
+
g: parseInt(result[2], 10),
|
739 |
+
r: parseInt(result[1], 10)
|
740 |
+
} : undefined;
|
741 |
+
} else if (input.startsWith("hsl")) {
|
742 |
+
const regex = /hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i;
|
743 |
+
const result = regex.exec(input);
|
744 |
+
return result ? ColorUtils.hslaToRgba({
|
745 |
+
a: result.length > 4 ? parseFloat(result[5]) : 1,
|
746 |
+
h: parseInt(result[1], 10),
|
747 |
+
l: parseInt(result[3], 10),
|
748 |
+
s: parseInt(result[2], 10)
|
749 |
+
}) : undefined;
|
750 |
+
} else if (input.startsWith("hsv")) {
|
751 |
+
const regex = /hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i;
|
752 |
+
const result = regex.exec(input);
|
753 |
+
return result ? ColorUtils.hsvaToRgba({
|
754 |
+
a: result.length > 4 ? parseFloat(result[5]) : 1,
|
755 |
+
h: parseInt(result[1], 10),
|
756 |
+
s: parseInt(result[2], 10),
|
757 |
+
v: parseInt(result[3], 10)
|
758 |
+
}) : undefined;
|
759 |
+
} else {
|
760 |
+
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
|
761 |
+
const hexFixed = input.replace(shorthandRegex, (_m, r, g, b, a) => {
|
762 |
+
return r + r + g + g + b + b + (a !== undefined ? a + a : "");
|
763 |
+
});
|
764 |
+
const regex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
|
765 |
+
const result = regex.exec(hexFixed);
|
766 |
+
return result ? {
|
767 |
+
a: result[4] !== undefined ? parseInt(result[4], 16) / 0xff : 1,
|
768 |
+
b: parseInt(result[3], 16),
|
769 |
+
g: parseInt(result[2], 16),
|
770 |
+
r: parseInt(result[1], 16)
|
771 |
+
} : undefined;
|
772 |
+
}
|
773 |
+
}
|
774 |
+
|
775 |
+
class ColorUtils {
|
776 |
+
static colorToRgb(input, index, useIndex = true) {
|
777 |
+
var _a, _b, _c;
|
778 |
+
|
779 |
+
if (input === undefined) {
|
780 |
+
return;
|
781 |
+
}
|
782 |
+
|
783 |
+
const color = typeof input === "string" ? {
|
784 |
+
value: input
|
785 |
+
} : input;
|
786 |
+
let res;
|
787 |
+
|
788 |
+
if (typeof color.value === "string") {
|
789 |
+
if (color.value === Constants.randomColorValue) {
|
790 |
+
res = ColorUtils.getRandomRgbColor();
|
791 |
+
} else {
|
792 |
+
res = ColorUtils.stringToRgb(color.value);
|
793 |
+
}
|
794 |
+
} else {
|
795 |
+
if (color.value instanceof Array) {
|
796 |
+
const colorSelected = Utils.itemFromArray(color.value, index, useIndex);
|
797 |
+
res = ColorUtils.colorToRgb({
|
798 |
+
value: colorSelected
|
799 |
+
});
|
800 |
+
} else {
|
801 |
+
const colorValue = color.value;
|
802 |
+
const rgbColor = (_a = colorValue.rgb) !== null && _a !== void 0 ? _a : color.value;
|
803 |
+
|
804 |
+
if (rgbColor.r !== undefined) {
|
805 |
+
res = rgbColor;
|
806 |
+
} else {
|
807 |
+
const hslColor = (_b = colorValue.hsl) !== null && _b !== void 0 ? _b : color.value;
|
808 |
+
|
809 |
+
if (hslColor.h !== undefined && hslColor.l !== undefined) {
|
810 |
+
res = ColorUtils.hslToRgb(hslColor);
|
811 |
+
} else {
|
812 |
+
const hsvColor = (_c = colorValue.hsv) !== null && _c !== void 0 ? _c : color.value;
|
813 |
+
|
814 |
+
if (hsvColor.h !== undefined && hsvColor.v !== undefined) {
|
815 |
+
res = ColorUtils.hsvToRgb(hsvColor);
|
816 |
+
}
|
817 |
+
}
|
818 |
+
}
|
819 |
+
}
|
820 |
+
}
|
821 |
+
|
822 |
+
return res;
|
823 |
+
}
|
824 |
+
|
825 |
+
static colorToHsl(color, index, useIndex = true) {
|
826 |
+
const rgb = ColorUtils.colorToRgb(color, index, useIndex);
|
827 |
+
return rgb !== undefined ? ColorUtils.rgbToHsl(rgb) : undefined;
|
828 |
+
}
|
829 |
+
|
830 |
+
static rgbToHsl(color) {
|
831 |
+
const r1 = color.r / 255;
|
832 |
+
const g1 = color.g / 255;
|
833 |
+
const b1 = color.b / 255;
|
834 |
+
const max = Math.max(r1, g1, b1);
|
835 |
+
const min = Math.min(r1, g1, b1);
|
836 |
+
const res = {
|
837 |
+
h: 0,
|
838 |
+
l: (max + min) / 2,
|
839 |
+
s: 0
|
840 |
+
};
|
841 |
+
|
842 |
+
if (max != min) {
|
843 |
+
res.s = res.l < 0.5 ? (max - min) / (max + min) : (max - min) / (2.0 - max - min);
|
844 |
+
res.h = r1 === max ? (g1 - b1) / (max - min) : res.h = g1 === max ? 2.0 + (b1 - r1) / (max - min) : 4.0 + (r1 - g1) / (max - min);
|
845 |
+
}
|
846 |
+
|
847 |
+
res.l *= 100;
|
848 |
+
res.s *= 100;
|
849 |
+
res.h *= 60;
|
850 |
+
|
851 |
+
if (res.h < 0) {
|
852 |
+
res.h += 360;
|
853 |
+
}
|
854 |
+
|
855 |
+
return res;
|
856 |
+
}
|
857 |
+
|
858 |
+
static stringToAlpha(input) {
|
859 |
+
var _a;
|
860 |
+
|
861 |
+
return (_a = stringToRgba(input)) === null || _a === void 0 ? void 0 : _a.a;
|
862 |
+
}
|
863 |
+
|
864 |
+
static stringToRgb(input) {
|
865 |
+
return stringToRgba(input);
|
866 |
+
}
|
867 |
+
|
868 |
+
static hslToRgb(hsl) {
|
869 |
+
const result = {
|
870 |
+
b: 0,
|
871 |
+
g: 0,
|
872 |
+
r: 0
|
873 |
+
};
|
874 |
+
const hslPercent = {
|
875 |
+
h: hsl.h / 360,
|
876 |
+
l: hsl.l / 100,
|
877 |
+
s: hsl.s / 100
|
878 |
+
};
|
879 |
+
|
880 |
+
if (hslPercent.s === 0) {
|
881 |
+
result.b = hslPercent.l;
|
882 |
+
result.g = hslPercent.l;
|
883 |
+
result.r = hslPercent.l;
|
884 |
+
} else {
|
885 |
+
const q = hslPercent.l < 0.5 ? hslPercent.l * (1 + hslPercent.s) : hslPercent.l + hslPercent.s - hslPercent.l * hslPercent.s;
|
886 |
+
const p = 2 * hslPercent.l - q;
|
887 |
+
result.r = hue2rgb(p, q, hslPercent.h + 1 / 3);
|
888 |
+
result.g = hue2rgb(p, q, hslPercent.h);
|
889 |
+
result.b = hue2rgb(p, q, hslPercent.h - 1 / 3);
|
890 |
+
}
|
891 |
+
|
892 |
+
result.r = Math.floor(result.r * 255);
|
893 |
+
result.g = Math.floor(result.g * 255);
|
894 |
+
result.b = Math.floor(result.b * 255);
|
895 |
+
return result;
|
896 |
+
}
|
897 |
+
|
898 |
+
static hslaToRgba(hsla) {
|
899 |
+
const rgbResult = ColorUtils.hslToRgb(hsla);
|
900 |
+
return {
|
901 |
+
a: hsla.a,
|
902 |
+
b: rgbResult.b,
|
903 |
+
g: rgbResult.g,
|
904 |
+
r: rgbResult.r
|
905 |
+
};
|
906 |
+
}
|
907 |
+
|
908 |
+
static hslToHsv(hsl) {
|
909 |
+
const l = hsl.l / 100,
|
910 |
+
sl = hsl.s / 100;
|
911 |
+
const v = l + sl * Math.min(l, 1 - l),
|
912 |
+
sv = !v ? 0 : 2 * (1 - l / v);
|
913 |
+
return {
|
914 |
+
h: hsl.h,
|
915 |
+
s: sv * 100,
|
916 |
+
v: v * 100
|
917 |
+
};
|
918 |
+
}
|
919 |
+
|
920 |
+
static hslaToHsva(hsla) {
|
921 |
+
const hsvResult = ColorUtils.hslToHsv(hsla);
|
922 |
+
return {
|
923 |
+
a: hsla.a,
|
924 |
+
h: hsvResult.h,
|
925 |
+
s: hsvResult.s,
|
926 |
+
v: hsvResult.v
|
927 |
+
};
|
928 |
+
}
|
929 |
+
|
930 |
+
static hsvToHsl(hsv) {
|
931 |
+
const v = hsv.v / 100,
|
932 |
+
sv = hsv.s / 100;
|
933 |
+
const l = v * (1 - sv / 2),
|
934 |
+
sl = l === 0 || l === 1 ? 0 : (v - l) / Math.min(l, 1 - l);
|
935 |
+
return {
|
936 |
+
h: hsv.h,
|
937 |
+
l: l * 100,
|
938 |
+
s: sl * 100
|
939 |
+
};
|
940 |
+
}
|
941 |
+
|
942 |
+
static hsvaToHsla(hsva) {
|
943 |
+
const hslResult = ColorUtils.hsvToHsl(hsva);
|
944 |
+
return {
|
945 |
+
a: hsva.a,
|
946 |
+
h: hslResult.h,
|
947 |
+
l: hslResult.l,
|
948 |
+
s: hslResult.s
|
949 |
+
};
|
950 |
+
}
|
951 |
+
|
952 |
+
static hsvToRgb(hsv) {
|
953 |
+
const result = {
|
954 |
+
b: 0,
|
955 |
+
g: 0,
|
956 |
+
r: 0
|
957 |
+
};
|
958 |
+
const hsvPercent = {
|
959 |
+
h: hsv.h / 60,
|
960 |
+
s: hsv.s / 100,
|
961 |
+
v: hsv.v / 100
|
962 |
+
};
|
963 |
+
const c = hsvPercent.v * hsvPercent.s,
|
964 |
+
x = c * (1 - Math.abs(hsvPercent.h % 2 - 1));
|
965 |
+
let tempRgb;
|
966 |
+
|
967 |
+
if (hsvPercent.h >= 0 && hsvPercent.h <= 1) {
|
968 |
+
tempRgb = {
|
969 |
+
r: c,
|
970 |
+
g: x,
|
971 |
+
b: 0
|
972 |
+
};
|
973 |
+
} else if (hsvPercent.h > 1 && hsvPercent.h <= 2) {
|
974 |
+
tempRgb = {
|
975 |
+
r: x,
|
976 |
+
g: c,
|
977 |
+
b: 0
|
978 |
+
};
|
979 |
+
} else if (hsvPercent.h > 2 && hsvPercent.h <= 3) {
|
980 |
+
tempRgb = {
|
981 |
+
r: 0,
|
982 |
+
g: c,
|
983 |
+
b: x
|
984 |
+
};
|
985 |
+
} else if (hsvPercent.h > 3 && hsvPercent.h <= 4) {
|
986 |
+
tempRgb = {
|
987 |
+
r: 0,
|
988 |
+
g: x,
|
989 |
+
b: c
|
990 |
+
};
|
991 |
+
} else if (hsvPercent.h > 4 && hsvPercent.h <= 5) {
|
992 |
+
tempRgb = {
|
993 |
+
r: x,
|
994 |
+
g: 0,
|
995 |
+
b: c
|
996 |
+
};
|
997 |
+
} else if (hsvPercent.h > 5 && hsvPercent.h <= 6) {
|
998 |
+
tempRgb = {
|
999 |
+
r: c,
|
1000 |
+
g: 0,
|
1001 |
+
b: x
|
1002 |
+
};
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
if (tempRgb) {
|
1006 |
+
const m = hsvPercent.v - c;
|
1007 |
+
result.r = Math.floor((tempRgb.r + m) * 255);
|
1008 |
+
result.g = Math.floor((tempRgb.g + m) * 255);
|
1009 |
+
result.b = Math.floor((tempRgb.b + m) * 255);
|
1010 |
+
}
|
1011 |
+
|
1012 |
+
return result;
|
1013 |
+
}
|
1014 |
+
|
1015 |
+
static hsvaToRgba(hsva) {
|
1016 |
+
const rgbResult = ColorUtils.hsvToRgb(hsva);
|
1017 |
+
return {
|
1018 |
+
a: hsva.a,
|
1019 |
+
b: rgbResult.b,
|
1020 |
+
g: rgbResult.g,
|
1021 |
+
r: rgbResult.r
|
1022 |
+
};
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
static rgbToHsv(rgb) {
|
1026 |
+
const rgbPercent = {
|
1027 |
+
r: rgb.r / 255,
|
1028 |
+
g: rgb.g / 255,
|
1029 |
+
b: rgb.b / 255
|
1030 |
+
},
|
1031 |
+
xMax = Math.max(rgbPercent.r, rgbPercent.g, rgbPercent.b),
|
1032 |
+
xMin = Math.min(rgbPercent.r, rgbPercent.g, rgbPercent.b),
|
1033 |
+
v = xMax,
|
1034 |
+
c = xMax - xMin;
|
1035 |
+
let h = 0;
|
1036 |
+
|
1037 |
+
if (v === rgbPercent.r) {
|
1038 |
+
h = 60 * ((rgbPercent.g - rgbPercent.b) / c);
|
1039 |
+
} else if (v === rgbPercent.g) {
|
1040 |
+
h = 60 * (2 + (rgbPercent.b - rgbPercent.r) / c);
|
1041 |
+
} else if (v === rgbPercent.b) {
|
1042 |
+
h = 60 * (4 + (rgbPercent.r - rgbPercent.g) / c);
|
1043 |
+
}
|
1044 |
+
|
1045 |
+
const s = !v ? 0 : c / v;
|
1046 |
+
return {
|
1047 |
+
h,
|
1048 |
+
s: s * 100,
|
1049 |
+
v: v * 100
|
1050 |
+
};
|
1051 |
+
}
|
1052 |
+
|
1053 |
+
static rgbaToHsva(rgba) {
|
1054 |
+
const hsvResult = ColorUtils.rgbToHsv(rgba);
|
1055 |
+
return {
|
1056 |
+
a: rgba.a,
|
1057 |
+
h: hsvResult.h,
|
1058 |
+
s: hsvResult.s,
|
1059 |
+
v: hsvResult.v
|
1060 |
+
};
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
static getRandomRgbColor(min) {
|
1064 |
+
const fixedMin = min !== null && min !== void 0 ? min : 0;
|
1065 |
+
return {
|
1066 |
+
b: Math.floor(NumberUtils.randomInRange(NumberUtils.setRangeValue(fixedMin, 256))),
|
1067 |
+
g: Math.floor(NumberUtils.randomInRange(NumberUtils.setRangeValue(fixedMin, 256))),
|
1068 |
+
r: Math.floor(NumberUtils.randomInRange(NumberUtils.setRangeValue(fixedMin, 256)))
|
1069 |
+
};
|
1070 |
+
}
|
1071 |
+
|
1072 |
+
static getStyleFromRgb(color, opacity) {
|
1073 |
+
return `rgba(${color.r}, ${color.g}, ${color.b}, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;
|
1074 |
+
}
|
1075 |
+
|
1076 |
+
static getStyleFromHsl(color, opacity) {
|
1077 |
+
return `hsla(${color.h}, ${color.s}%, ${color.l}%, ${opacity !== null && opacity !== void 0 ? opacity : 1})`;
|
1078 |
+
}
|
1079 |
+
|
1080 |
+
static getStyleFromHsv(color, opacity) {
|
1081 |
+
return ColorUtils.getStyleFromHsl(ColorUtils.hsvToHsl(color), opacity);
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
static mix(color1, color2, size1, size2) {
|
1085 |
+
let rgb1 = color1;
|
1086 |
+
let rgb2 = color2;
|
1087 |
+
|
1088 |
+
if (rgb1.r === undefined) {
|
1089 |
+
rgb1 = ColorUtils.hslToRgb(color1);
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
if (rgb2.r === undefined) {
|
1093 |
+
rgb2 = ColorUtils.hslToRgb(color2);
|
1094 |
+
}
|
1095 |
+
|
1096 |
+
return {
|
1097 |
+
b: NumberUtils.mix(rgb1.b, rgb2.b, size1, size2),
|
1098 |
+
g: NumberUtils.mix(rgb1.g, rgb2.g, size1, size2),
|
1099 |
+
r: NumberUtils.mix(rgb1.r, rgb2.r, size1, size2)
|
1100 |
+
};
|
1101 |
+
}
|
1102 |
+
|
1103 |
+
static replaceColorSvg(image, color, opacity) {
|
1104 |
+
if (!image.svgData) {
|
1105 |
+
return "";
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
const svgXml = image.svgData;
|
1109 |
+
const rgbHex = /#([0-9A-F]{3,6})/gi;
|
1110 |
+
return svgXml.replace(rgbHex, () => ColorUtils.getStyleFromHsl(color, opacity));
|
1111 |
+
}
|
1112 |
+
|
1113 |
+
static getLinkColor(p1, p2, linkColor) {
|
1114 |
+
var _a, _b;
|
1115 |
+
|
1116 |
+
if (linkColor === Constants.randomColorValue) {
|
1117 |
+
return ColorUtils.getRandomRgbColor();
|
1118 |
+
} else if (linkColor === "mid") {
|
1119 |
+
const sourceColor = (_a = p1.getFillColor()) !== null && _a !== void 0 ? _a : p1.getStrokeColor();
|
1120 |
+
const destColor = (_b = p2 === null || p2 === void 0 ? void 0 : p2.getFillColor()) !== null && _b !== void 0 ? _b : p2 === null || p2 === void 0 ? void 0 : p2.getStrokeColor();
|
1121 |
+
|
1122 |
+
if (sourceColor && destColor && p2) {
|
1123 |
+
return ColorUtils.mix(sourceColor, destColor, p1.getRadius(), p2.getRadius());
|
1124 |
+
} else {
|
1125 |
+
const hslColor = sourceColor !== null && sourceColor !== void 0 ? sourceColor : destColor;
|
1126 |
+
|
1127 |
+
if (hslColor) {
|
1128 |
+
return ColorUtils.hslToRgb(hslColor);
|
1129 |
+
}
|
1130 |
+
}
|
1131 |
+
} else {
|
1132 |
+
return linkColor;
|
1133 |
+
}
|
1134 |
+
}
|
1135 |
+
|
1136 |
+
static getLinkRandomColor(optColor, blink, consent) {
|
1137 |
+
const color = typeof optColor === "string" ? optColor : optColor.value;
|
1138 |
+
|
1139 |
+
if (color === Constants.randomColorValue) {
|
1140 |
+
if (consent) {
|
1141 |
+
return ColorUtils.colorToRgb({
|
1142 |
+
value: color
|
1143 |
+
});
|
1144 |
+
} else if (blink) {
|
1145 |
+
return Constants.randomColorValue;
|
1146 |
+
} else {
|
1147 |
+
return Constants.midColorValue;
|
1148 |
+
}
|
1149 |
+
} else {
|
1150 |
+
return ColorUtils.colorToRgb({
|
1151 |
+
value: color
|
1152 |
+
});
|
1153 |
+
}
|
1154 |
+
}
|
1155 |
+
|
1156 |
+
static getHslFromAnimation(animation) {
|
1157 |
+
return animation !== undefined ? {
|
1158 |
+
h: animation.h.value,
|
1159 |
+
s: animation.s.value,
|
1160 |
+
l: animation.l.value
|
1161 |
+
} : undefined;
|
1162 |
+
}
|
1163 |
+
|
1164 |
+
}
|
1165 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/CanvasUtils.js
|
1166 |
+
|
1167 |
+
|
1168 |
+
|
1169 |
+
function drawLine(context, begin, end) {
|
1170 |
+
context.beginPath();
|
1171 |
+
context.moveTo(begin.x, begin.y);
|
1172 |
+
context.lineTo(end.x, end.y);
|
1173 |
+
context.closePath();
|
1174 |
+
}
|
1175 |
+
|
1176 |
+
function drawTriangle(context, p1, p2, p3) {
|
1177 |
+
context.beginPath();
|
1178 |
+
context.moveTo(p1.x, p1.y);
|
1179 |
+
context.lineTo(p2.x, p2.y);
|
1180 |
+
context.lineTo(p3.x, p3.y);
|
1181 |
+
context.closePath();
|
1182 |
+
}
|
1183 |
+
|
1184 |
+
class CanvasUtils {
|
1185 |
+
static paintBase(context, dimension, baseColor) {
|
1186 |
+
context.save();
|
1187 |
+
context.fillStyle = baseColor !== null && baseColor !== void 0 ? baseColor : "rgba(0,0,0,0)";
|
1188 |
+
context.fillRect(0, 0, dimension.width, dimension.height);
|
1189 |
+
context.restore();
|
1190 |
+
}
|
1191 |
+
|
1192 |
+
static clear(context, dimension) {
|
1193 |
+
context.clearRect(0, 0, dimension.width, dimension.height);
|
1194 |
+
}
|
1195 |
+
|
1196 |
+
static drawLinkLine(context, width, begin, end, maxDistance, canvasSize, warp, backgroundMask, composite, colorLine, opacity, shadow) {
|
1197 |
+
let drawn = false;
|
1198 |
+
|
1199 |
+
if (NumberUtils.getDistance(begin, end) <= maxDistance) {
|
1200 |
+
drawLine(context, begin, end);
|
1201 |
+
drawn = true;
|
1202 |
+
} else if (warp) {
|
1203 |
+
let pi1;
|
1204 |
+
let pi2;
|
1205 |
+
const endNE = {
|
1206 |
+
x: end.x - canvasSize.width,
|
1207 |
+
y: end.y
|
1208 |
+
};
|
1209 |
+
const d1 = NumberUtils.getDistances(begin, endNE);
|
1210 |
+
|
1211 |
+
if (d1.distance <= maxDistance) {
|
1212 |
+
const yi = begin.y - d1.dy / d1.dx * begin.x;
|
1213 |
+
pi1 = {
|
1214 |
+
x: 0,
|
1215 |
+
y: yi
|
1216 |
+
};
|
1217 |
+
pi2 = {
|
1218 |
+
x: canvasSize.width,
|
1219 |
+
y: yi
|
1220 |
+
};
|
1221 |
+
} else {
|
1222 |
+
const endSW = {
|
1223 |
+
x: end.x,
|
1224 |
+
y: end.y - canvasSize.height
|
1225 |
+
};
|
1226 |
+
const d2 = NumberUtils.getDistances(begin, endSW);
|
1227 |
+
|
1228 |
+
if (d2.distance <= maxDistance) {
|
1229 |
+
const yi = begin.y - d2.dy / d2.dx * begin.x;
|
1230 |
+
const xi = -yi / (d2.dy / d2.dx);
|
1231 |
+
pi1 = {
|
1232 |
+
x: xi,
|
1233 |
+
y: 0
|
1234 |
+
};
|
1235 |
+
pi2 = {
|
1236 |
+
x: xi,
|
1237 |
+
y: canvasSize.height
|
1238 |
+
};
|
1239 |
+
} else {
|
1240 |
+
const endSE = {
|
1241 |
+
x: end.x - canvasSize.width,
|
1242 |
+
y: end.y - canvasSize.height
|
1243 |
+
};
|
1244 |
+
const d3 = NumberUtils.getDistances(begin, endSE);
|
1245 |
+
|
1246 |
+
if (d3.distance <= maxDistance) {
|
1247 |
+
const yi = begin.y - d3.dy / d3.dx * begin.x;
|
1248 |
+
const xi = -yi / (d3.dy / d3.dx);
|
1249 |
+
pi1 = {
|
1250 |
+
x: xi,
|
1251 |
+
y: yi
|
1252 |
+
};
|
1253 |
+
pi2 = {
|
1254 |
+
x: pi1.x + canvasSize.width,
|
1255 |
+
y: pi1.y + canvasSize.height
|
1256 |
+
};
|
1257 |
+
}
|
1258 |
+
}
|
1259 |
+
}
|
1260 |
+
|
1261 |
+
if (pi1 && pi2) {
|
1262 |
+
drawLine(context, begin, pi1);
|
1263 |
+
drawLine(context, end, pi2);
|
1264 |
+
drawn = true;
|
1265 |
+
}
|
1266 |
+
}
|
1267 |
+
|
1268 |
+
if (!drawn) {
|
1269 |
+
return;
|
1270 |
+
}
|
1271 |
+
|
1272 |
+
context.lineWidth = width;
|
1273 |
+
|
1274 |
+
if (backgroundMask) {
|
1275 |
+
context.globalCompositeOperation = composite;
|
1276 |
+
}
|
1277 |
+
|
1278 |
+
context.strokeStyle = ColorUtils.getStyleFromRgb(colorLine, opacity);
|
1279 |
+
|
1280 |
+
if (shadow.enable) {
|
1281 |
+
const shadowColor = ColorUtils.colorToRgb(shadow.color);
|
1282 |
+
|
1283 |
+
if (shadowColor) {
|
1284 |
+
context.shadowBlur = shadow.blur;
|
1285 |
+
context.shadowColor = ColorUtils.getStyleFromRgb(shadowColor);
|
1286 |
+
}
|
1287 |
+
}
|
1288 |
+
|
1289 |
+
context.stroke();
|
1290 |
+
}
|
1291 |
+
|
1292 |
+
static drawLinkTriangle(context, pos1, pos2, pos3, backgroundMask, composite, colorTriangle, opacityTriangle) {
|
1293 |
+
drawTriangle(context, pos1, pos2, pos3);
|
1294 |
+
|
1295 |
+
if (backgroundMask) {
|
1296 |
+
context.globalCompositeOperation = composite;
|
1297 |
+
}
|
1298 |
+
|
1299 |
+
context.fillStyle = ColorUtils.getStyleFromRgb(colorTriangle, opacityTriangle);
|
1300 |
+
context.fill();
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
static drawConnectLine(context, width, lineStyle, begin, end) {
|
1304 |
+
context.save();
|
1305 |
+
drawLine(context, begin, end);
|
1306 |
+
context.lineWidth = width;
|
1307 |
+
context.strokeStyle = lineStyle;
|
1308 |
+
context.stroke();
|
1309 |
+
context.restore();
|
1310 |
+
}
|
1311 |
+
|
1312 |
+
static gradient(context, p1, p2, opacity) {
|
1313 |
+
const gradStop = Math.floor(p2.getRadius() / p1.getRadius());
|
1314 |
+
const color1 = p1.getFillColor();
|
1315 |
+
const color2 = p2.getFillColor();
|
1316 |
+
|
1317 |
+
if (!color1 || !color2) {
|
1318 |
+
return;
|
1319 |
+
}
|
1320 |
+
|
1321 |
+
const sourcePos = p1.getPosition();
|
1322 |
+
const destPos = p2.getPosition();
|
1323 |
+
const midRgb = ColorUtils.mix(color1, color2, p1.getRadius(), p2.getRadius());
|
1324 |
+
const grad = context.createLinearGradient(sourcePos.x, sourcePos.y, destPos.x, destPos.y);
|
1325 |
+
grad.addColorStop(0, ColorUtils.getStyleFromHsl(color1, opacity));
|
1326 |
+
grad.addColorStop(gradStop > 1 ? 1 : gradStop, ColorUtils.getStyleFromRgb(midRgb, opacity));
|
1327 |
+
grad.addColorStop(1, ColorUtils.getStyleFromHsl(color2, opacity));
|
1328 |
+
return grad;
|
1329 |
+
}
|
1330 |
+
|
1331 |
+
static drawGrabLine(context, width, begin, end, colorLine, opacity) {
|
1332 |
+
context.save();
|
1333 |
+
drawLine(context, begin, end);
|
1334 |
+
context.strokeStyle = ColorUtils.getStyleFromRgb(colorLine, opacity);
|
1335 |
+
context.lineWidth = width;
|
1336 |
+
context.stroke();
|
1337 |
+
context.restore();
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
static drawLight(container, context, mousePos) {
|
1341 |
+
const lightOptions = container.actualOptions.interactivity.modes.light.area;
|
1342 |
+
context.beginPath();
|
1343 |
+
context.arc(mousePos.x, mousePos.y, lightOptions.radius, 0, 2 * Math.PI);
|
1344 |
+
const gradientAmbientLight = context.createRadialGradient(mousePos.x, mousePos.y, 0, mousePos.x, mousePos.y, lightOptions.radius);
|
1345 |
+
const gradient = lightOptions.gradient;
|
1346 |
+
const gradientRgb = {
|
1347 |
+
start: ColorUtils.colorToRgb(gradient.start),
|
1348 |
+
stop: ColorUtils.colorToRgb(gradient.stop)
|
1349 |
+
};
|
1350 |
+
|
1351 |
+
if (!gradientRgb.start || !gradientRgb.stop) {
|
1352 |
+
return;
|
1353 |
+
}
|
1354 |
+
|
1355 |
+
gradientAmbientLight.addColorStop(0, ColorUtils.getStyleFromRgb(gradientRgb.start));
|
1356 |
+
gradientAmbientLight.addColorStop(1, ColorUtils.getStyleFromRgb(gradientRgb.stop));
|
1357 |
+
context.fillStyle = gradientAmbientLight;
|
1358 |
+
context.fill();
|
1359 |
+
}
|
1360 |
+
|
1361 |
+
static drawParticleShadow(container, context, particle, mousePos) {
|
1362 |
+
const pos = particle.getPosition();
|
1363 |
+
const shadowOptions = container.actualOptions.interactivity.modes.light.shadow;
|
1364 |
+
context.save();
|
1365 |
+
const radius = particle.getRadius();
|
1366 |
+
const sides = particle.sides;
|
1367 |
+
const full = Math.PI * 2 / sides;
|
1368 |
+
const angle = -particle.rotate.value + Math.PI / 4;
|
1369 |
+
const factor = 1;
|
1370 |
+
const dots = [];
|
1371 |
+
|
1372 |
+
for (let i = 0; i < sides; i++) {
|
1373 |
+
dots.push({
|
1374 |
+
x: pos.x + radius * Math.sin(angle + full * i) * factor,
|
1375 |
+
y: pos.y + radius * Math.cos(angle + full * i) * factor
|
1376 |
+
});
|
1377 |
+
}
|
1378 |
+
|
1379 |
+
const points = [];
|
1380 |
+
const shadowLength = shadowOptions.length;
|
1381 |
+
|
1382 |
+
for (const dot of dots) {
|
1383 |
+
const dotAngle = Math.atan2(mousePos.y - dot.y, mousePos.x - dot.x);
|
1384 |
+
const endX = dot.x + shadowLength * Math.sin(-dotAngle - Math.PI / 2);
|
1385 |
+
const endY = dot.y + shadowLength * Math.cos(-dotAngle - Math.PI / 2);
|
1386 |
+
points.push({
|
1387 |
+
endX: endX,
|
1388 |
+
endY: endY,
|
1389 |
+
startX: dot.x,
|
1390 |
+
startY: dot.y
|
1391 |
+
});
|
1392 |
+
}
|
1393 |
+
|
1394 |
+
const shadowRgb = ColorUtils.colorToRgb(shadowOptions.color);
|
1395 |
+
|
1396 |
+
if (!shadowRgb) {
|
1397 |
+
return;
|
1398 |
+
}
|
1399 |
+
|
1400 |
+
const shadowColor = ColorUtils.getStyleFromRgb(shadowRgb);
|
1401 |
+
|
1402 |
+
for (let i = points.length - 1; i >= 0; i--) {
|
1403 |
+
const n = i == points.length - 1 ? 0 : i + 1;
|
1404 |
+
context.beginPath();
|
1405 |
+
context.moveTo(points[i].startX, points[i].startY);
|
1406 |
+
context.lineTo(points[n].startX, points[n].startY);
|
1407 |
+
context.lineTo(points[n].endX, points[n].endY);
|
1408 |
+
context.lineTo(points[i].endX, points[i].endY);
|
1409 |
+
context.fillStyle = shadowColor;
|
1410 |
+
context.fill();
|
1411 |
+
}
|
1412 |
+
|
1413 |
+
context.restore();
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
static drawParticle(container, context, particle, delta, fillColorValue, strokeColorValue, backgroundMask, composite, radius, opacity, shadow) {
|
1417 |
+
const pos = particle.getPosition();
|
1418 |
+
context.save();
|
1419 |
+
context.translate(pos.x, pos.y);
|
1420 |
+
context.beginPath();
|
1421 |
+
const angle = particle.rotate.value + (particle.options.rotate.path ? particle.pathAngle : 0);
|
1422 |
+
|
1423 |
+
if (angle !== 0) {
|
1424 |
+
context.rotate(angle);
|
1425 |
+
}
|
1426 |
+
|
1427 |
+
if (backgroundMask) {
|
1428 |
+
context.globalCompositeOperation = composite;
|
1429 |
+
}
|
1430 |
+
|
1431 |
+
const shadowColor = particle.shadowColor;
|
1432 |
+
|
1433 |
+
if (shadow.enable && shadowColor) {
|
1434 |
+
context.shadowBlur = shadow.blur;
|
1435 |
+
context.shadowColor = ColorUtils.getStyleFromRgb(shadowColor);
|
1436 |
+
context.shadowOffsetX = shadow.offset.x;
|
1437 |
+
context.shadowOffsetY = shadow.offset.y;
|
1438 |
+
}
|
1439 |
+
|
1440 |
+
if (fillColorValue) {
|
1441 |
+
context.fillStyle = fillColorValue;
|
1442 |
+
}
|
1443 |
+
|
1444 |
+
const stroke = particle.stroke;
|
1445 |
+
context.lineWidth = particle.strokeWidth;
|
1446 |
+
|
1447 |
+
if (strokeColorValue) {
|
1448 |
+
context.strokeStyle = strokeColorValue;
|
1449 |
+
}
|
1450 |
+
|
1451 |
+
CanvasUtils.drawShape(container, context, particle, radius, opacity, delta);
|
1452 |
+
|
1453 |
+
if (stroke.width > 0) {
|
1454 |
+
context.stroke();
|
1455 |
+
}
|
1456 |
+
|
1457 |
+
if (particle.close) {
|
1458 |
+
context.closePath();
|
1459 |
+
}
|
1460 |
+
|
1461 |
+
if (particle.fill) {
|
1462 |
+
context.fill();
|
1463 |
+
}
|
1464 |
+
|
1465 |
+
context.restore();
|
1466 |
+
context.save();
|
1467 |
+
context.translate(pos.x, pos.y);
|
1468 |
+
|
1469 |
+
if (angle !== 0) {
|
1470 |
+
context.rotate(angle);
|
1471 |
+
}
|
1472 |
+
|
1473 |
+
if (backgroundMask) {
|
1474 |
+
context.globalCompositeOperation = composite;
|
1475 |
+
}
|
1476 |
+
|
1477 |
+
CanvasUtils.drawShapeAfterEffect(container, context, particle, radius, opacity, delta);
|
1478 |
+
context.restore();
|
1479 |
+
}
|
1480 |
+
|
1481 |
+
static drawShape(container, context, particle, radius, opacity, delta) {
|
1482 |
+
if (!particle.shape) {
|
1483 |
+
return;
|
1484 |
+
}
|
1485 |
+
|
1486 |
+
const drawer = container.drawers.get(particle.shape);
|
1487 |
+
|
1488 |
+
if (!drawer) {
|
1489 |
+
return;
|
1490 |
+
}
|
1491 |
+
|
1492 |
+
drawer.draw(context, particle, radius, opacity, delta.value, container.retina.pixelRatio);
|
1493 |
+
}
|
1494 |
+
|
1495 |
+
static drawShapeAfterEffect(container, context, particle, radius, opacity, delta) {
|
1496 |
+
if (!particle.shape) {
|
1497 |
+
return;
|
1498 |
+
}
|
1499 |
+
|
1500 |
+
const drawer = container.drawers.get(particle.shape);
|
1501 |
+
|
1502 |
+
if (!(drawer === null || drawer === void 0 ? void 0 : drawer.afterEffect)) {
|
1503 |
+
return;
|
1504 |
+
}
|
1505 |
+
|
1506 |
+
drawer.afterEffect(context, particle, radius, opacity, delta.value, container.retina.pixelRatio);
|
1507 |
+
}
|
1508 |
+
|
1509 |
+
static drawPlugin(context, plugin, delta) {
|
1510 |
+
if (plugin.draw !== undefined) {
|
1511 |
+
context.save();
|
1512 |
+
plugin.draw(context, delta);
|
1513 |
+
context.restore();
|
1514 |
+
}
|
1515 |
+
}
|
1516 |
+
|
1517 |
+
}
|
1518 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Range.js
|
1519 |
+
class Range {
|
1520 |
+
constructor(x, y) {
|
1521 |
+
this.position = {
|
1522 |
+
x: x,
|
1523 |
+
y: y
|
1524 |
+
};
|
1525 |
+
}
|
1526 |
+
|
1527 |
+
}
|
1528 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Circle.js
|
1529 |
+
|
1530 |
+
class Circle extends Range {
|
1531 |
+
constructor(x, y, radius) {
|
1532 |
+
super(x, y);
|
1533 |
+
this.radius = radius;
|
1534 |
+
}
|
1535 |
+
|
1536 |
+
contains(point) {
|
1537 |
+
const d = Math.pow(point.x - this.position.x, 2) + Math.pow(point.y - this.position.y, 2);
|
1538 |
+
return d <= this.radius * this.radius;
|
1539 |
+
}
|
1540 |
+
|
1541 |
+
intersects(range) {
|
1542 |
+
const rect = range;
|
1543 |
+
const circle = range;
|
1544 |
+
const pos1 = this.position;
|
1545 |
+
const pos2 = range.position;
|
1546 |
+
const xDist = Math.abs(pos2.x - pos1.x);
|
1547 |
+
const yDist = Math.abs(pos2.y - pos1.y);
|
1548 |
+
const r = this.radius;
|
1549 |
+
|
1550 |
+
if (circle.radius !== undefined) {
|
1551 |
+
const rSum = r + circle.radius;
|
1552 |
+
const dist = Math.sqrt(xDist * xDist + yDist + yDist);
|
1553 |
+
return rSum > dist;
|
1554 |
+
} else if (rect.size !== undefined) {
|
1555 |
+
const w = rect.size.width;
|
1556 |
+
const h = rect.size.height;
|
1557 |
+
const edges = Math.pow(xDist - w, 2) + Math.pow(yDist - h, 2);
|
1558 |
+
|
1559 |
+
if (xDist > r + w || yDist > r + h) {
|
1560 |
+
return false;
|
1561 |
+
}
|
1562 |
+
|
1563 |
+
if (xDist <= w || yDist <= h) {
|
1564 |
+
return true;
|
1565 |
+
}
|
1566 |
+
|
1567 |
+
return edges <= r * r;
|
1568 |
+
}
|
1569 |
+
|
1570 |
+
return false;
|
1571 |
+
}
|
1572 |
+
|
1573 |
+
}
|
1574 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Rectangle.js
|
1575 |
+
|
1576 |
+
class Rectangle extends Range {
|
1577 |
+
constructor(x, y, width, height) {
|
1578 |
+
super(x, y);
|
1579 |
+
this.size = {
|
1580 |
+
height: height,
|
1581 |
+
width: width
|
1582 |
+
};
|
1583 |
+
}
|
1584 |
+
|
1585 |
+
contains(point) {
|
1586 |
+
const w = this.size.width;
|
1587 |
+
const h = this.size.height;
|
1588 |
+
const pos = this.position;
|
1589 |
+
return point.x >= pos.x && point.x <= pos.x + w && point.y >= pos.y && point.y <= pos.y + h;
|
1590 |
+
}
|
1591 |
+
|
1592 |
+
intersects(range) {
|
1593 |
+
const rect = range;
|
1594 |
+
const circle = range;
|
1595 |
+
const w = this.size.width;
|
1596 |
+
const h = this.size.height;
|
1597 |
+
const pos1 = this.position;
|
1598 |
+
const pos2 = range.position;
|
1599 |
+
|
1600 |
+
if (circle.radius !== undefined) {
|
1601 |
+
return circle.intersects(this);
|
1602 |
+
} else if (rect.size !== undefined) {
|
1603 |
+
const size2 = rect.size;
|
1604 |
+
const w2 = size2.width;
|
1605 |
+
const h2 = size2.height;
|
1606 |
+
return pos2.x < pos1.x + w && pos2.x + w2 > pos1.x && pos2.y < pos1.y + h && pos2.y + h2 > pos1.y;
|
1607 |
+
}
|
1608 |
+
|
1609 |
+
return false;
|
1610 |
+
}
|
1611 |
+
|
1612 |
+
}
|
1613 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/CircleWarp.js
|
1614 |
+
|
1615 |
+
|
1616 |
+
class CircleWarp extends Circle {
|
1617 |
+
constructor(x, y, radius, canvasSize) {
|
1618 |
+
super(x, y, radius);
|
1619 |
+
this.canvasSize = canvasSize;
|
1620 |
+
this.canvasSize = {
|
1621 |
+
height: canvasSize.height,
|
1622 |
+
width: canvasSize.width
|
1623 |
+
};
|
1624 |
+
}
|
1625 |
+
|
1626 |
+
contains(point) {
|
1627 |
+
if (super.contains(point)) {
|
1628 |
+
return true;
|
1629 |
+
}
|
1630 |
+
|
1631 |
+
const posNE = {
|
1632 |
+
x: point.x - this.canvasSize.width,
|
1633 |
+
y: point.y
|
1634 |
+
};
|
1635 |
+
|
1636 |
+
if (super.contains(posNE)) {
|
1637 |
+
return true;
|
1638 |
+
}
|
1639 |
+
|
1640 |
+
const posSE = {
|
1641 |
+
x: point.x - this.canvasSize.width,
|
1642 |
+
y: point.y - this.canvasSize.height
|
1643 |
+
};
|
1644 |
+
|
1645 |
+
if (super.contains(posSE)) {
|
1646 |
+
return true;
|
1647 |
+
}
|
1648 |
+
|
1649 |
+
const posSW = {
|
1650 |
+
x: point.x,
|
1651 |
+
y: point.y - this.canvasSize.height
|
1652 |
+
};
|
1653 |
+
return super.contains(posSW);
|
1654 |
+
}
|
1655 |
+
|
1656 |
+
intersects(range) {
|
1657 |
+
if (super.intersects(range)) {
|
1658 |
+
return true;
|
1659 |
+
}
|
1660 |
+
|
1661 |
+
const rect = range;
|
1662 |
+
const circle = range;
|
1663 |
+
const newPos = {
|
1664 |
+
x: range.position.x - this.canvasSize.width,
|
1665 |
+
y: range.position.y - this.canvasSize.height
|
1666 |
+
};
|
1667 |
+
|
1668 |
+
if (circle.radius !== undefined) {
|
1669 |
+
const biggerCircle = new Circle(newPos.x, newPos.y, circle.radius * 2);
|
1670 |
+
return super.intersects(biggerCircle);
|
1671 |
+
} else if (rect.size !== undefined) {
|
1672 |
+
const rectSW = new Rectangle(newPos.x, newPos.y, rect.size.width * 2, rect.size.height * 2);
|
1673 |
+
return super.intersects(rectSW);
|
1674 |
+
}
|
1675 |
+
|
1676 |
+
return false;
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
}
|
1680 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/ClickMode.js
|
1681 |
+
var ClickMode;
|
1682 |
+
|
1683 |
+
(function (ClickMode) {
|
1684 |
+
ClickMode["attract"] = "attract";
|
1685 |
+
ClickMode["bubble"] = "bubble";
|
1686 |
+
ClickMode["push"] = "push";
|
1687 |
+
ClickMode["remove"] = "remove";
|
1688 |
+
ClickMode["repulse"] = "repulse";
|
1689 |
+
ClickMode["pause"] = "pause";
|
1690 |
+
ClickMode["trail"] = "trail";
|
1691 |
+
})(ClickMode || (ClickMode = {}));
|
1692 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/DivMode.js
|
1693 |
+
var DivMode;
|
1694 |
+
|
1695 |
+
(function (DivMode) {
|
1696 |
+
DivMode["bounce"] = "bounce";
|
1697 |
+
DivMode["bubble"] = "bubble";
|
1698 |
+
DivMode["repulse"] = "repulse";
|
1699 |
+
})(DivMode || (DivMode = {}));
|
1700 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/HoverMode.js
|
1701 |
+
var HoverMode;
|
1702 |
+
|
1703 |
+
(function (HoverMode) {
|
1704 |
+
HoverMode["attract"] = "attract";
|
1705 |
+
HoverMode["bounce"] = "bounce";
|
1706 |
+
HoverMode["bubble"] = "bubble";
|
1707 |
+
HoverMode["connect"] = "connect";
|
1708 |
+
HoverMode["grab"] = "grab";
|
1709 |
+
HoverMode["light"] = "light";
|
1710 |
+
HoverMode["repulse"] = "repulse";
|
1711 |
+
HoverMode["slow"] = "slow";
|
1712 |
+
HoverMode["trail"] = "trail";
|
1713 |
+
})(HoverMode || (HoverMode = {}));
|
1714 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/CollisionMode.js
|
1715 |
+
var CollisionMode;
|
1716 |
+
|
1717 |
+
(function (CollisionMode) {
|
1718 |
+
CollisionMode["absorb"] = "absorb";
|
1719 |
+
CollisionMode["bounce"] = "bounce";
|
1720 |
+
CollisionMode["destroy"] = "destroy";
|
1721 |
+
})(CollisionMode || (CollisionMode = {}));
|
1722 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/OutMode.js
|
1723 |
+
var OutMode;
|
1724 |
+
|
1725 |
+
(function (OutMode) {
|
1726 |
+
OutMode["bounce"] = "bounce";
|
1727 |
+
OutMode["bounceHorizontal"] = "bounce-horizontal";
|
1728 |
+
OutMode["bounceVertical"] = "bounce-vertical";
|
1729 |
+
OutMode["none"] = "none";
|
1730 |
+
OutMode["out"] = "out";
|
1731 |
+
OutMode["destroy"] = "destroy";
|
1732 |
+
})(OutMode || (OutMode = {}));
|
1733 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/SizeMode.js
|
1734 |
+
var SizeMode;
|
1735 |
+
|
1736 |
+
(function (SizeMode) {
|
1737 |
+
SizeMode["precise"] = "precise";
|
1738 |
+
SizeMode["percent"] = "percent";
|
1739 |
+
})(SizeMode || (SizeMode = {}));
|
1740 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/ThemeMode.js
|
1741 |
+
var ThemeMode;
|
1742 |
+
|
1743 |
+
(function (ThemeMode) {
|
1744 |
+
ThemeMode["any"] = "any";
|
1745 |
+
ThemeMode["dark"] = "dark";
|
1746 |
+
ThemeMode["light"] = "light";
|
1747 |
+
})(ThemeMode || (ThemeMode = {}));
|
1748 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Modes/index.js
|
1749 |
+
|
1750 |
+
|
1751 |
+
|
1752 |
+
|
1753 |
+
|
1754 |
+
|
1755 |
+
|
1756 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/AnimationStatus.js
|
1757 |
+
var AnimationStatus;
|
1758 |
+
|
1759 |
+
(function (AnimationStatus) {
|
1760 |
+
AnimationStatus[AnimationStatus["increasing"] = 0] = "increasing";
|
1761 |
+
AnimationStatus[AnimationStatus["decreasing"] = 1] = "decreasing";
|
1762 |
+
})(AnimationStatus || (AnimationStatus = {}));
|
1763 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/DestroyType.js
|
1764 |
+
var DestroyType;
|
1765 |
+
|
1766 |
+
(function (DestroyType) {
|
1767 |
+
DestroyType["none"] = "none";
|
1768 |
+
DestroyType["max"] = "max";
|
1769 |
+
DestroyType["min"] = "min";
|
1770 |
+
})(DestroyType || (DestroyType = {}));
|
1771 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/ProcessBubbleType.js
|
1772 |
+
var ProcessBubbleType;
|
1773 |
+
|
1774 |
+
(function (ProcessBubbleType) {
|
1775 |
+
ProcessBubbleType["color"] = "color";
|
1776 |
+
ProcessBubbleType["opacity"] = "opacity";
|
1777 |
+
ProcessBubbleType["size"] = "size";
|
1778 |
+
})(ProcessBubbleType || (ProcessBubbleType = {}));
|
1779 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/ShapeType.js
|
1780 |
+
var ShapeType;
|
1781 |
+
|
1782 |
+
(function (ShapeType) {
|
1783 |
+
ShapeType["char"] = "char";
|
1784 |
+
ShapeType["character"] = "character";
|
1785 |
+
ShapeType["circle"] = "circle";
|
1786 |
+
ShapeType["edge"] = "edge";
|
1787 |
+
ShapeType["image"] = "image";
|
1788 |
+
ShapeType["images"] = "images";
|
1789 |
+
ShapeType["line"] = "line";
|
1790 |
+
ShapeType["polygon"] = "polygon";
|
1791 |
+
ShapeType["square"] = "square";
|
1792 |
+
ShapeType["star"] = "star";
|
1793 |
+
ShapeType["triangle"] = "triangle";
|
1794 |
+
})(ShapeType || (ShapeType = {}));
|
1795 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/StartValueType.js
|
1796 |
+
var StartValueType;
|
1797 |
+
|
1798 |
+
(function (StartValueType) {
|
1799 |
+
StartValueType["max"] = "max";
|
1800 |
+
StartValueType["min"] = "min";
|
1801 |
+
StartValueType["random"] = "random";
|
1802 |
+
})(StartValueType || (StartValueType = {}));
|
1803 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/DivType.js
|
1804 |
+
var DivType;
|
1805 |
+
|
1806 |
+
(function (DivType) {
|
1807 |
+
DivType["circle"] = "circle";
|
1808 |
+
DivType["rectangle"] = "rectangle";
|
1809 |
+
})(DivType || (DivType = {}));
|
1810 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/Types/index.js
|
1811 |
+
|
1812 |
+
|
1813 |
+
|
1814 |
+
|
1815 |
+
|
1816 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/InteractivityDetect.js
|
1817 |
+
var InteractivityDetect;
|
1818 |
+
|
1819 |
+
(function (InteractivityDetect) {
|
1820 |
+
InteractivityDetect["canvas"] = "canvas";
|
1821 |
+
InteractivityDetect["parent"] = "parent";
|
1822 |
+
InteractivityDetect["window"] = "window";
|
1823 |
+
})(InteractivityDetect || (InteractivityDetect = {}));
|
1824 |
+
;// CONCATENATED MODULE: ./dist/browser/Enums/index.js
|
1825 |
+
|
1826 |
+
|
1827 |
+
|
1828 |
+
|
1829 |
+
|
1830 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/EventListeners.js
|
1831 |
+
|
1832 |
+
|
1833 |
+
|
1834 |
+
function manageListener(element, event, handler, add, options) {
|
1835 |
+
if (add) {
|
1836 |
+
let addOptions = {
|
1837 |
+
passive: true
|
1838 |
+
};
|
1839 |
+
|
1840 |
+
if (typeof options === "boolean") {
|
1841 |
+
addOptions.capture = options;
|
1842 |
+
} else if (options !== undefined) {
|
1843 |
+
addOptions = options;
|
1844 |
+
}
|
1845 |
+
|
1846 |
+
element.addEventListener(event, handler, addOptions);
|
1847 |
+
} else {
|
1848 |
+
const removeOptions = options;
|
1849 |
+
element.removeEventListener(event, handler, removeOptions);
|
1850 |
+
}
|
1851 |
+
}
|
1852 |
+
|
1853 |
+
class EventListeners {
|
1854 |
+
constructor(container) {
|
1855 |
+
this.container = container;
|
1856 |
+
this.canPush = true;
|
1857 |
+
|
1858 |
+
this.mouseMoveHandler = e => this.mouseTouchMove(e);
|
1859 |
+
|
1860 |
+
this.touchStartHandler = e => this.mouseTouchMove(e);
|
1861 |
+
|
1862 |
+
this.touchMoveHandler = e => this.mouseTouchMove(e);
|
1863 |
+
|
1864 |
+
this.touchEndHandler = () => this.mouseTouchFinish();
|
1865 |
+
|
1866 |
+
this.mouseLeaveHandler = () => this.mouseTouchFinish();
|
1867 |
+
|
1868 |
+
this.touchCancelHandler = () => this.mouseTouchFinish();
|
1869 |
+
|
1870 |
+
this.touchEndClickHandler = e => this.mouseTouchClick(e);
|
1871 |
+
|
1872 |
+
this.mouseUpHandler = e => this.mouseTouchClick(e);
|
1873 |
+
|
1874 |
+
this.mouseDownHandler = () => this.mouseDown();
|
1875 |
+
|
1876 |
+
this.visibilityChangeHandler = () => this.handleVisibilityChange();
|
1877 |
+
|
1878 |
+
this.resizeHandler = () => this.handleWindowResize();
|
1879 |
+
}
|
1880 |
+
|
1881 |
+
addListeners() {
|
1882 |
+
this.manageListeners(true);
|
1883 |
+
}
|
1884 |
+
|
1885 |
+
removeListeners() {
|
1886 |
+
this.manageListeners(false);
|
1887 |
+
}
|
1888 |
+
|
1889 |
+
manageListeners(add) {
|
1890 |
+
var _a;
|
1891 |
+
|
1892 |
+
const container = this.container;
|
1893 |
+
const options = container.actualOptions;
|
1894 |
+
const detectType = options.interactivity.detectsOn;
|
1895 |
+
let mouseLeaveEvent = Constants.mouseLeaveEvent;
|
1896 |
+
|
1897 |
+
if (detectType === InteractivityDetect.window) {
|
1898 |
+
container.interactivity.element = window;
|
1899 |
+
mouseLeaveEvent = Constants.mouseOutEvent;
|
1900 |
+
} else if (detectType === InteractivityDetect.parent && container.canvas.element) {
|
1901 |
+
const canvasEl = container.canvas.element;
|
1902 |
+
container.interactivity.element = (_a = canvasEl.parentElement) !== null && _a !== void 0 ? _a : canvasEl.parentNode;
|
1903 |
+
} else {
|
1904 |
+
container.interactivity.element = container.canvas.element;
|
1905 |
+
}
|
1906 |
+
|
1907 |
+
const interactivityEl = container.interactivity.element;
|
1908 |
+
|
1909 |
+
if (!interactivityEl) {
|
1910 |
+
return;
|
1911 |
+
}
|
1912 |
+
|
1913 |
+
const html = interactivityEl;
|
1914 |
+
|
1915 |
+
if (options.interactivity.events.onHover.enable || options.interactivity.events.onClick.enable) {
|
1916 |
+
manageListener(interactivityEl, Constants.mouseMoveEvent, this.mouseMoveHandler, add);
|
1917 |
+
manageListener(interactivityEl, Constants.touchStartEvent, this.touchStartHandler, add);
|
1918 |
+
manageListener(interactivityEl, Constants.touchMoveEvent, this.touchMoveHandler, add);
|
1919 |
+
|
1920 |
+
if (!options.interactivity.events.onClick.enable) {
|
1921 |
+
manageListener(interactivityEl, Constants.touchEndEvent, this.touchEndHandler, add);
|
1922 |
+
} else {
|
1923 |
+
manageListener(interactivityEl, Constants.touchEndEvent, this.touchEndClickHandler, add);
|
1924 |
+
manageListener(interactivityEl, Constants.mouseUpEvent, this.mouseUpHandler, add);
|
1925 |
+
manageListener(interactivityEl, Constants.mouseDownEvent, this.mouseDownHandler, add);
|
1926 |
+
}
|
1927 |
+
|
1928 |
+
manageListener(interactivityEl, mouseLeaveEvent, this.mouseLeaveHandler, add);
|
1929 |
+
manageListener(interactivityEl, Constants.touchCancelEvent, this.touchCancelHandler, add);
|
1930 |
+
}
|
1931 |
+
|
1932 |
+
if (container.canvas.element) {
|
1933 |
+
container.canvas.element.style.pointerEvents = html === container.canvas.element ? "initial" : "none";
|
1934 |
+
}
|
1935 |
+
|
1936 |
+
if (options.interactivity.events.resize) {
|
1937 |
+
manageListener(window, Constants.resizeEvent, this.resizeHandler, add);
|
1938 |
+
}
|
1939 |
+
|
1940 |
+
if (document) {
|
1941 |
+
manageListener(document, Constants.visibilityChangeEvent, this.visibilityChangeHandler, add, false);
|
1942 |
+
}
|
1943 |
+
}
|
1944 |
+
|
1945 |
+
handleWindowResize() {
|
1946 |
+
var _a;
|
1947 |
+
|
1948 |
+
(_a = this.container.canvas) === null || _a === void 0 ? void 0 : _a.windowResize();
|
1949 |
+
}
|
1950 |
+
|
1951 |
+
handleVisibilityChange() {
|
1952 |
+
const container = this.container;
|
1953 |
+
const options = container.actualOptions;
|
1954 |
+
this.mouseTouchFinish();
|
1955 |
+
|
1956 |
+
if (!options.pauseOnBlur) {
|
1957 |
+
return;
|
1958 |
+
}
|
1959 |
+
|
1960 |
+
if (document === null || document === void 0 ? void 0 : document.hidden) {
|
1961 |
+
container.pageHidden = true;
|
1962 |
+
container.pause();
|
1963 |
+
} else {
|
1964 |
+
container.pageHidden = false;
|
1965 |
+
|
1966 |
+
if (container.getAnimationStatus()) {
|
1967 |
+
container.play(true);
|
1968 |
+
} else {
|
1969 |
+
container.draw();
|
1970 |
+
}
|
1971 |
+
}
|
1972 |
+
}
|
1973 |
+
|
1974 |
+
mouseDown() {
|
1975 |
+
const interactivity = this.container.interactivity;
|
1976 |
+
|
1977 |
+
if (interactivity) {
|
1978 |
+
const mouse = interactivity.mouse;
|
1979 |
+
mouse.clicking = true;
|
1980 |
+
mouse.downPosition = mouse.position;
|
1981 |
+
}
|
1982 |
+
}
|
1983 |
+
|
1984 |
+
mouseTouchMove(e) {
|
1985 |
+
var _a, _b, _c, _d, _e, _f, _g;
|
1986 |
+
|
1987 |
+
const container = this.container;
|
1988 |
+
const options = container.actualOptions;
|
1989 |
+
|
1990 |
+
if (((_a = container.interactivity) === null || _a === void 0 ? void 0 : _a.element) === undefined) {
|
1991 |
+
return;
|
1992 |
+
}
|
1993 |
+
|
1994 |
+
container.interactivity.mouse.inside = true;
|
1995 |
+
let pos;
|
1996 |
+
const canvas = container.canvas.element;
|
1997 |
+
|
1998 |
+
if (e.type.startsWith("mouse")) {
|
1999 |
+
this.canPush = true;
|
2000 |
+
const mouseEvent = e;
|
2001 |
+
|
2002 |
+
if (container.interactivity.element === window) {
|
2003 |
+
if (canvas) {
|
2004 |
+
const clientRect = canvas.getBoundingClientRect();
|
2005 |
+
pos = {
|
2006 |
+
x: mouseEvent.clientX - clientRect.left,
|
2007 |
+
y: mouseEvent.clientY - clientRect.top
|
2008 |
+
};
|
2009 |
+
}
|
2010 |
+
} else if (options.interactivity.detectsOn === InteractivityDetect.parent) {
|
2011 |
+
const source = mouseEvent.target;
|
2012 |
+
const target = mouseEvent.currentTarget;
|
2013 |
+
const canvasEl = container.canvas.element;
|
2014 |
+
|
2015 |
+
if (source && target && canvasEl) {
|
2016 |
+
const sourceRect = source.getBoundingClientRect();
|
2017 |
+
const targetRect = target.getBoundingClientRect();
|
2018 |
+
const canvasRect = canvasEl.getBoundingClientRect();
|
2019 |
+
pos = {
|
2020 |
+
x: mouseEvent.offsetX + 2 * sourceRect.left - (targetRect.left + canvasRect.left),
|
2021 |
+
y: mouseEvent.offsetY + 2 * sourceRect.top - (targetRect.top + canvasRect.top)
|
2022 |
+
};
|
2023 |
+
} else {
|
2024 |
+
pos = {
|
2025 |
+
x: (_b = mouseEvent.offsetX) !== null && _b !== void 0 ? _b : mouseEvent.clientX,
|
2026 |
+
y: (_c = mouseEvent.offsetY) !== null && _c !== void 0 ? _c : mouseEvent.clientY
|
2027 |
+
};
|
2028 |
+
}
|
2029 |
+
} else {
|
2030 |
+
if (mouseEvent.target === container.canvas.element) {
|
2031 |
+
pos = {
|
2032 |
+
x: (_d = mouseEvent.offsetX) !== null && _d !== void 0 ? _d : mouseEvent.clientX,
|
2033 |
+
y: (_e = mouseEvent.offsetY) !== null && _e !== void 0 ? _e : mouseEvent.clientY
|
2034 |
+
};
|
2035 |
+
}
|
2036 |
+
}
|
2037 |
+
} else {
|
2038 |
+
this.canPush = e.type !== "touchmove";
|
2039 |
+
const touchEvent = e;
|
2040 |
+
const lastTouch = touchEvent.touches[touchEvent.touches.length - 1];
|
2041 |
+
const canvasRect = canvas === null || canvas === void 0 ? void 0 : canvas.getBoundingClientRect();
|
2042 |
+
pos = {
|
2043 |
+
x: lastTouch.clientX - ((_f = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _f !== void 0 ? _f : 0),
|
2044 |
+
y: lastTouch.clientY - ((_g = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _g !== void 0 ? _g : 0)
|
2045 |
+
};
|
2046 |
+
}
|
2047 |
+
|
2048 |
+
const pxRatio = container.retina.pixelRatio;
|
2049 |
+
|
2050 |
+
if (pos) {
|
2051 |
+
pos.x *= pxRatio;
|
2052 |
+
pos.y *= pxRatio;
|
2053 |
+
}
|
2054 |
+
|
2055 |
+
container.interactivity.mouse.position = pos;
|
2056 |
+
container.interactivity.status = Constants.mouseMoveEvent;
|
2057 |
+
}
|
2058 |
+
|
2059 |
+
mouseTouchFinish() {
|
2060 |
+
const interactivity = this.container.interactivity;
|
2061 |
+
|
2062 |
+
if (interactivity === undefined) {
|
2063 |
+
return;
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
const mouse = interactivity.mouse;
|
2067 |
+
delete mouse.position;
|
2068 |
+
delete mouse.clickPosition;
|
2069 |
+
delete mouse.downPosition;
|
2070 |
+
interactivity.status = Constants.mouseLeaveEvent;
|
2071 |
+
mouse.inside = false;
|
2072 |
+
mouse.clicking = false;
|
2073 |
+
}
|
2074 |
+
|
2075 |
+
mouseTouchClick(e) {
|
2076 |
+
const container = this.container;
|
2077 |
+
const options = container.actualOptions;
|
2078 |
+
const mouse = container.interactivity.mouse;
|
2079 |
+
mouse.inside = true;
|
2080 |
+
let handled = false;
|
2081 |
+
const mousePosition = mouse.position;
|
2082 |
+
|
2083 |
+
if (mousePosition === undefined || !options.interactivity.events.onClick.enable) {
|
2084 |
+
return;
|
2085 |
+
}
|
2086 |
+
|
2087 |
+
for (const [, plugin] of container.plugins) {
|
2088 |
+
if (plugin.clickPositionValid !== undefined) {
|
2089 |
+
handled = plugin.clickPositionValid(mousePosition);
|
2090 |
+
|
2091 |
+
if (handled) {
|
2092 |
+
break;
|
2093 |
+
}
|
2094 |
+
}
|
2095 |
+
}
|
2096 |
+
|
2097 |
+
if (!handled) {
|
2098 |
+
this.doMouseTouchClick(e);
|
2099 |
+
}
|
2100 |
+
|
2101 |
+
mouse.clicking = false;
|
2102 |
+
}
|
2103 |
+
|
2104 |
+
doMouseTouchClick(e) {
|
2105 |
+
const container = this.container;
|
2106 |
+
const options = container.actualOptions;
|
2107 |
+
|
2108 |
+
if (this.canPush) {
|
2109 |
+
const mousePos = container.interactivity.mouse.position;
|
2110 |
+
|
2111 |
+
if (mousePos) {
|
2112 |
+
container.interactivity.mouse.clickPosition = {
|
2113 |
+
x: mousePos.x,
|
2114 |
+
y: mousePos.y
|
2115 |
+
};
|
2116 |
+
} else {
|
2117 |
+
return;
|
2118 |
+
}
|
2119 |
+
|
2120 |
+
container.interactivity.mouse.clickTime = new Date().getTime();
|
2121 |
+
const onClick = options.interactivity.events.onClick;
|
2122 |
+
|
2123 |
+
if (onClick.mode instanceof Array) {
|
2124 |
+
for (const mode of onClick.mode) {
|
2125 |
+
this.handleClickMode(mode);
|
2126 |
+
}
|
2127 |
+
} else {
|
2128 |
+
this.handleClickMode(onClick.mode);
|
2129 |
+
}
|
2130 |
+
}
|
2131 |
+
|
2132 |
+
if (e.type === "touchend") {
|
2133 |
+
setTimeout(() => this.mouseTouchFinish(), 500);
|
2134 |
+
}
|
2135 |
+
}
|
2136 |
+
|
2137 |
+
handleClickMode(mode) {
|
2138 |
+
const container = this.container;
|
2139 |
+
const options = container.actualOptions;
|
2140 |
+
const pushNb = options.interactivity.modes.push.quantity;
|
2141 |
+
const removeNb = options.interactivity.modes.remove.quantity;
|
2142 |
+
|
2143 |
+
switch (mode) {
|
2144 |
+
case ClickMode.push:
|
2145 |
+
{
|
2146 |
+
if (pushNb > 0) {
|
2147 |
+
container.particles.push(pushNb, container.interactivity.mouse);
|
2148 |
+
}
|
2149 |
+
|
2150 |
+
break;
|
2151 |
+
}
|
2152 |
+
|
2153 |
+
case ClickMode.remove:
|
2154 |
+
container.particles.removeQuantity(removeNb);
|
2155 |
+
break;
|
2156 |
+
|
2157 |
+
case ClickMode.bubble:
|
2158 |
+
container.bubble.clicking = true;
|
2159 |
+
break;
|
2160 |
+
|
2161 |
+
case ClickMode.repulse:
|
2162 |
+
container.repulse.clicking = true;
|
2163 |
+
container.repulse.count = 0;
|
2164 |
+
|
2165 |
+
for (const particle of container.repulse.particles) {
|
2166 |
+
particle.velocity.horizontal = particle.initialVelocity.horizontal;
|
2167 |
+
particle.velocity.vertical = particle.initialVelocity.vertical;
|
2168 |
+
}
|
2169 |
+
|
2170 |
+
container.repulse.particles = [];
|
2171 |
+
container.repulse.finish = false;
|
2172 |
+
setTimeout(() => {
|
2173 |
+
if (!container.destroyed) {
|
2174 |
+
container.repulse.clicking = false;
|
2175 |
+
}
|
2176 |
+
}, options.interactivity.modes.repulse.duration * 1000);
|
2177 |
+
break;
|
2178 |
+
|
2179 |
+
case ClickMode.attract:
|
2180 |
+
container.attract.clicking = true;
|
2181 |
+
container.attract.count = 0;
|
2182 |
+
|
2183 |
+
for (const particle of container.attract.particles) {
|
2184 |
+
particle.velocity.horizontal = particle.initialVelocity.horizontal;
|
2185 |
+
particle.velocity.vertical = particle.initialVelocity.vertical;
|
2186 |
+
}
|
2187 |
+
|
2188 |
+
container.attract.particles = [];
|
2189 |
+
container.attract.finish = false;
|
2190 |
+
setTimeout(() => {
|
2191 |
+
if (!container.destroyed) {
|
2192 |
+
container.attract.clicking = false;
|
2193 |
+
}
|
2194 |
+
}, options.interactivity.modes.attract.duration * 1000);
|
2195 |
+
break;
|
2196 |
+
|
2197 |
+
case ClickMode.pause:
|
2198 |
+
if (container.getAnimationStatus()) {
|
2199 |
+
container.pause();
|
2200 |
+
} else {
|
2201 |
+
container.play();
|
2202 |
+
}
|
2203 |
+
|
2204 |
+
break;
|
2205 |
+
}
|
2206 |
+
|
2207 |
+
for (const [, plugin] of container.plugins) {
|
2208 |
+
if (plugin.handleClickMode) {
|
2209 |
+
plugin.handleClickMode(mode);
|
2210 |
+
}
|
2211 |
+
}
|
2212 |
+
}
|
2213 |
+
|
2214 |
+
}
|
2215 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Plugins.js
|
2216 |
+
const plugins = [];
|
2217 |
+
const presets = new Map();
|
2218 |
+
const drawers = new Map();
|
2219 |
+
const pathGenerators = new Map();
|
2220 |
+
class Plugins {
|
2221 |
+
static getPlugin(plugin) {
|
2222 |
+
return plugins.find(t => t.id === plugin);
|
2223 |
+
}
|
2224 |
+
|
2225 |
+
static addPlugin(plugin) {
|
2226 |
+
if (!Plugins.getPlugin(plugin.id)) {
|
2227 |
+
plugins.push(plugin);
|
2228 |
+
}
|
2229 |
+
}
|
2230 |
+
|
2231 |
+
static getAvailablePlugins(container) {
|
2232 |
+
const res = new Map();
|
2233 |
+
|
2234 |
+
for (const plugin of plugins) {
|
2235 |
+
if (!plugin.needsPlugin(container.actualOptions)) {
|
2236 |
+
continue;
|
2237 |
+
}
|
2238 |
+
|
2239 |
+
res.set(plugin.id, plugin.getPlugin(container));
|
2240 |
+
}
|
2241 |
+
|
2242 |
+
return res;
|
2243 |
+
}
|
2244 |
+
|
2245 |
+
static loadOptions(options, sourceOptions) {
|
2246 |
+
for (const plugin of plugins) {
|
2247 |
+
plugin.loadOptions(options, sourceOptions);
|
2248 |
+
}
|
2249 |
+
}
|
2250 |
+
|
2251 |
+
static getPreset(preset) {
|
2252 |
+
return presets.get(preset);
|
2253 |
+
}
|
2254 |
+
|
2255 |
+
static addPreset(presetKey, options) {
|
2256 |
+
if (!Plugins.getPreset(presetKey)) {
|
2257 |
+
presets.set(presetKey, options);
|
2258 |
+
}
|
2259 |
+
}
|
2260 |
+
|
2261 |
+
static addShapeDrawer(type, drawer) {
|
2262 |
+
if (!Plugins.getShapeDrawer(type)) {
|
2263 |
+
drawers.set(type, drawer);
|
2264 |
+
}
|
2265 |
+
}
|
2266 |
+
|
2267 |
+
static getShapeDrawer(type) {
|
2268 |
+
return drawers.get(type);
|
2269 |
+
}
|
2270 |
+
|
2271 |
+
static getSupportedShapes() {
|
2272 |
+
return drawers.keys();
|
2273 |
+
}
|
2274 |
+
|
2275 |
+
static getPathGenerator(type) {
|
2276 |
+
return pathGenerators.get(type);
|
2277 |
+
}
|
2278 |
+
|
2279 |
+
static addPathGenerator(type, pathGenerator) {
|
2280 |
+
if (!Plugins.getPathGenerator(type)) {
|
2281 |
+
pathGenerators.set(type, pathGenerator);
|
2282 |
+
}
|
2283 |
+
}
|
2284 |
+
|
2285 |
+
}
|
2286 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/Point.js
|
2287 |
+
class Point {
|
2288 |
+
constructor(position, particle) {
|
2289 |
+
this.position = position;
|
2290 |
+
this.particle = particle;
|
2291 |
+
}
|
2292 |
+
|
2293 |
+
}
|
2294 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/QuadTree.js
|
2295 |
+
|
2296 |
+
|
2297 |
+
|
2298 |
+
class QuadTree {
|
2299 |
+
constructor(rectangle, capacity) {
|
2300 |
+
this.rectangle = rectangle;
|
2301 |
+
this.capacity = capacity;
|
2302 |
+
this.points = [];
|
2303 |
+
this.divided = false;
|
2304 |
+
}
|
2305 |
+
|
2306 |
+
subdivide() {
|
2307 |
+
const x = this.rectangle.position.x;
|
2308 |
+
const y = this.rectangle.position.y;
|
2309 |
+
const w = this.rectangle.size.width;
|
2310 |
+
const h = this.rectangle.size.height;
|
2311 |
+
const capacity = this.capacity;
|
2312 |
+
this.northEast = new QuadTree(new Rectangle(x, y, w / 2, h / 2), capacity);
|
2313 |
+
this.northWest = new QuadTree(new Rectangle(x + w / 2, y, w / 2, h / 2), capacity);
|
2314 |
+
this.southEast = new QuadTree(new Rectangle(x, y + h / 2, w / 2, h / 2), capacity);
|
2315 |
+
this.southWest = new QuadTree(new Rectangle(x + w / 2, y + h / 2, w / 2, h / 2), capacity);
|
2316 |
+
this.divided = true;
|
2317 |
+
}
|
2318 |
+
|
2319 |
+
insert(point) {
|
2320 |
+
var _a, _b, _c, _d, _e;
|
2321 |
+
|
2322 |
+
if (!this.rectangle.contains(point.position)) {
|
2323 |
+
return false;
|
2324 |
+
}
|
2325 |
+
|
2326 |
+
if (this.points.length < this.capacity) {
|
2327 |
+
this.points.push(point);
|
2328 |
+
return true;
|
2329 |
+
}
|
2330 |
+
|
2331 |
+
if (!this.divided) {
|
2332 |
+
this.subdivide();
|
2333 |
+
}
|
2334 |
+
|
2335 |
+
return (_e = ((_a = this.northEast) === null || _a === void 0 ? void 0 : _a.insert(point)) || ((_b = this.northWest) === null || _b === void 0 ? void 0 : _b.insert(point)) || ((_c = this.southEast) === null || _c === void 0 ? void 0 : _c.insert(point)) || ((_d = this.southWest) === null || _d === void 0 ? void 0 : _d.insert(point))) !== null && _e !== void 0 ? _e : false;
|
2336 |
+
}
|
2337 |
+
|
2338 |
+
queryCircle(position, radius) {
|
2339 |
+
return this.query(new Circle(position.x, position.y, radius));
|
2340 |
+
}
|
2341 |
+
|
2342 |
+
queryCircleWarp(position, radius, containerOrSize) {
|
2343 |
+
const container = containerOrSize;
|
2344 |
+
const size = containerOrSize;
|
2345 |
+
return this.query(new CircleWarp(position.x, position.y, radius, container.canvas !== undefined ? container.canvas.size : size));
|
2346 |
+
}
|
2347 |
+
|
2348 |
+
queryRectangle(position, size) {
|
2349 |
+
return this.query(new Rectangle(position.x, position.y, size.width, size.height));
|
2350 |
+
}
|
2351 |
+
|
2352 |
+
query(range, found) {
|
2353 |
+
var _a, _b, _c, _d;
|
2354 |
+
|
2355 |
+
const res = found !== null && found !== void 0 ? found : [];
|
2356 |
+
|
2357 |
+
if (!range.intersects(this.rectangle)) {
|
2358 |
+
return [];
|
2359 |
+
} else {
|
2360 |
+
for (const p of this.points) {
|
2361 |
+
if (!range.contains(p.position)) {
|
2362 |
+
continue;
|
2363 |
+
}
|
2364 |
+
|
2365 |
+
res.push(p.particle);
|
2366 |
+
}
|
2367 |
+
|
2368 |
+
if (this.divided) {
|
2369 |
+
(_a = this.northEast) === null || _a === void 0 ? void 0 : _a.query(range, res);
|
2370 |
+
(_b = this.northWest) === null || _b === void 0 ? void 0 : _b.query(range, res);
|
2371 |
+
(_c = this.southEast) === null || _c === void 0 ? void 0 : _c.query(range, res);
|
2372 |
+
(_d = this.southWest) === null || _d === void 0 ? void 0 : _d.query(range, res);
|
2373 |
+
}
|
2374 |
+
}
|
2375 |
+
|
2376 |
+
return res;
|
2377 |
+
}
|
2378 |
+
|
2379 |
+
}
|
2380 |
+
;// CONCATENATED MODULE: ./dist/browser/Utils/index.js
|
2381 |
+
|
2382 |
+
|
2383 |
+
|
2384 |
+
|
2385 |
+
|
2386 |
+
|
2387 |
+
|
2388 |
+
|
2389 |
+
|
2390 |
+
|
2391 |
+
|
2392 |
+
|
2393 |
+
|
2394 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/TextDrawer.js
|
2395 |
+
var TextDrawer_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
2396 |
+
function adopt(value) {
|
2397 |
+
return value instanceof P ? value : new P(function (resolve) {
|
2398 |
+
resolve(value);
|
2399 |
+
});
|
2400 |
+
}
|
2401 |
+
|
2402 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
2403 |
+
function fulfilled(value) {
|
2404 |
+
try {
|
2405 |
+
step(generator.next(value));
|
2406 |
+
} catch (e) {
|
2407 |
+
reject(e);
|
2408 |
+
}
|
2409 |
+
}
|
2410 |
+
|
2411 |
+
function rejected(value) {
|
2412 |
+
try {
|
2413 |
+
step(generator["throw"](value));
|
2414 |
+
} catch (e) {
|
2415 |
+
reject(e);
|
2416 |
+
}
|
2417 |
+
}
|
2418 |
+
|
2419 |
+
function step(result) {
|
2420 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
2421 |
+
}
|
2422 |
+
|
2423 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2424 |
+
});
|
2425 |
+
};
|
2426 |
+
|
2427 |
+
|
2428 |
+
|
2429 |
+
class TextDrawer {
|
2430 |
+
getSidesCount() {
|
2431 |
+
return 12;
|
2432 |
+
}
|
2433 |
+
|
2434 |
+
init(container) {
|
2435 |
+
var _a;
|
2436 |
+
|
2437 |
+
return TextDrawer_awaiter(this, void 0, void 0, function* () {
|
2438 |
+
const options = container.actualOptions;
|
2439 |
+
|
2440 |
+
if (Utils.isInArray(ShapeType.char, options.particles.shape.type) || Utils.isInArray(ShapeType.character, options.particles.shape.type)) {
|
2441 |
+
const shapeOptions = (_a = options.particles.shape.options[ShapeType.character]) !== null && _a !== void 0 ? _a : options.particles.shape.options[ShapeType.char];
|
2442 |
+
|
2443 |
+
if (shapeOptions instanceof Array) {
|
2444 |
+
for (const character of shapeOptions) {
|
2445 |
+
yield Utils.loadFont(character);
|
2446 |
+
}
|
2447 |
+
} else {
|
2448 |
+
if (shapeOptions !== undefined) {
|
2449 |
+
yield Utils.loadFont(shapeOptions);
|
2450 |
+
}
|
2451 |
+
}
|
2452 |
+
}
|
2453 |
+
});
|
2454 |
+
}
|
2455 |
+
|
2456 |
+
draw(context, particle, radius) {
|
2457 |
+
const character = particle.shapeData;
|
2458 |
+
|
2459 |
+
if (character === undefined) {
|
2460 |
+
return;
|
2461 |
+
}
|
2462 |
+
|
2463 |
+
const textData = character.value;
|
2464 |
+
|
2465 |
+
if (textData === undefined) {
|
2466 |
+
return;
|
2467 |
+
}
|
2468 |
+
|
2469 |
+
const textParticle = particle;
|
2470 |
+
|
2471 |
+
if (textParticle.text === undefined) {
|
2472 |
+
textParticle.text = textData instanceof Array ? Utils.itemFromArray(textData, particle.randomIndexData) : textData;
|
2473 |
+
}
|
2474 |
+
|
2475 |
+
const text = textParticle.text;
|
2476 |
+
const style = character.style;
|
2477 |
+
const weight = character.weight;
|
2478 |
+
const size = Math.round(radius) * 2;
|
2479 |
+
const font = character.font;
|
2480 |
+
const fill = particle.fill;
|
2481 |
+
const offsetX = text.length * radius / 2;
|
2482 |
+
context.font = `${style} ${weight} ${size}px "${font}"`;
|
2483 |
+
const pos = {
|
2484 |
+
x: -offsetX,
|
2485 |
+
y: radius / 2
|
2486 |
+
};
|
2487 |
+
|
2488 |
+
if (fill) {
|
2489 |
+
context.fillText(text, pos.x, pos.y);
|
2490 |
+
} else {
|
2491 |
+
context.strokeText(text, pos.x, pos.y);
|
2492 |
+
}
|
2493 |
+
}
|
2494 |
+
|
2495 |
+
}
|
2496 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/ImageDrawer.js
|
2497 |
+
var ImageDrawer_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
2498 |
+
function adopt(value) {
|
2499 |
+
return value instanceof P ? value : new P(function (resolve) {
|
2500 |
+
resolve(value);
|
2501 |
+
});
|
2502 |
+
}
|
2503 |
+
|
2504 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
2505 |
+
function fulfilled(value) {
|
2506 |
+
try {
|
2507 |
+
step(generator.next(value));
|
2508 |
+
} catch (e) {
|
2509 |
+
reject(e);
|
2510 |
+
}
|
2511 |
+
}
|
2512 |
+
|
2513 |
+
function rejected(value) {
|
2514 |
+
try {
|
2515 |
+
step(generator["throw"](value));
|
2516 |
+
} catch (e) {
|
2517 |
+
reject(e);
|
2518 |
+
}
|
2519 |
+
}
|
2520 |
+
|
2521 |
+
function step(result) {
|
2522 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
2523 |
+
}
|
2524 |
+
|
2525 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2526 |
+
});
|
2527 |
+
};
|
2528 |
+
|
2529 |
+
|
2530 |
+
|
2531 |
+
class ImageDrawer {
|
2532 |
+
constructor() {
|
2533 |
+
this.images = [];
|
2534 |
+
}
|
2535 |
+
|
2536 |
+
getSidesCount() {
|
2537 |
+
return 12;
|
2538 |
+
}
|
2539 |
+
|
2540 |
+
getImages(container) {
|
2541 |
+
const containerImages = this.images.filter(t => t.id === container.id);
|
2542 |
+
|
2543 |
+
if (!containerImages.length) {
|
2544 |
+
this.images.push({
|
2545 |
+
id: container.id,
|
2546 |
+
images: []
|
2547 |
+
});
|
2548 |
+
return this.getImages(container);
|
2549 |
+
} else {
|
2550 |
+
return containerImages[0];
|
2551 |
+
}
|
2552 |
+
}
|
2553 |
+
|
2554 |
+
addImage(container, image) {
|
2555 |
+
const containerImages = this.getImages(container);
|
2556 |
+
containerImages === null || containerImages === void 0 ? void 0 : containerImages.images.push(image);
|
2557 |
+
}
|
2558 |
+
|
2559 |
+
init(container) {
|
2560 |
+
var _a;
|
2561 |
+
|
2562 |
+
return ImageDrawer_awaiter(this, void 0, void 0, function* () {
|
2563 |
+
const options = container.actualOptions;
|
2564 |
+
const shapeOptions = options.particles.shape;
|
2565 |
+
|
2566 |
+
if (!Utils.isInArray(ShapeType.image, shapeOptions.type) && !Utils.isInArray(ShapeType.images, shapeOptions.type)) {
|
2567 |
+
return;
|
2568 |
+
}
|
2569 |
+
|
2570 |
+
const imageOptions = (_a = shapeOptions.options[ShapeType.images]) !== null && _a !== void 0 ? _a : shapeOptions.options[ShapeType.image];
|
2571 |
+
|
2572 |
+
if (imageOptions instanceof Array) {
|
2573 |
+
for (const optionsImage of imageOptions) {
|
2574 |
+
yield this.loadImageShape(container, optionsImage);
|
2575 |
+
}
|
2576 |
+
} else {
|
2577 |
+
yield this.loadImageShape(container, imageOptions);
|
2578 |
+
}
|
2579 |
+
});
|
2580 |
+
}
|
2581 |
+
|
2582 |
+
destroy() {
|
2583 |
+
this.images = [];
|
2584 |
+
}
|
2585 |
+
|
2586 |
+
loadImageShape(container, imageShape) {
|
2587 |
+
return ImageDrawer_awaiter(this, void 0, void 0, function* () {
|
2588 |
+
try {
|
2589 |
+
const image = imageShape.replaceColor ? yield Utils.downloadSvgImage(imageShape.src) : yield Utils.loadImage(imageShape.src);
|
2590 |
+
|
2591 |
+
if (image) {
|
2592 |
+
this.addImage(container, image);
|
2593 |
+
}
|
2594 |
+
} catch (_a) {
|
2595 |
+
console.warn(`tsParticles error - ${imageShape.src} not found`);
|
2596 |
+
}
|
2597 |
+
});
|
2598 |
+
}
|
2599 |
+
|
2600 |
+
draw(context, particle, radius, opacity) {
|
2601 |
+
var _a, _b;
|
2602 |
+
|
2603 |
+
if (!context) {
|
2604 |
+
return;
|
2605 |
+
}
|
2606 |
+
|
2607 |
+
const image = particle.image;
|
2608 |
+
const element = (_a = image === null || image === void 0 ? void 0 : image.data) === null || _a === void 0 ? void 0 : _a.element;
|
2609 |
+
|
2610 |
+
if (!element) {
|
2611 |
+
return;
|
2612 |
+
}
|
2613 |
+
|
2614 |
+
const ratio = (_b = image === null || image === void 0 ? void 0 : image.ratio) !== null && _b !== void 0 ? _b : 1;
|
2615 |
+
const pos = {
|
2616 |
+
x: -radius,
|
2617 |
+
y: -radius
|
2618 |
+
};
|
2619 |
+
|
2620 |
+
if (!(image === null || image === void 0 ? void 0 : image.data.svgData) || !(image === null || image === void 0 ? void 0 : image.replaceColor)) {
|
2621 |
+
context.globalAlpha = opacity;
|
2622 |
+
}
|
2623 |
+
|
2624 |
+
context.drawImage(element, pos.x, pos.y, radius * 2, radius * 2 / ratio);
|
2625 |
+
|
2626 |
+
if (!(image === null || image === void 0 ? void 0 : image.data.svgData) || !(image === null || image === void 0 ? void 0 : image.replaceColor)) {
|
2627 |
+
context.globalAlpha = 1;
|
2628 |
+
}
|
2629 |
+
}
|
2630 |
+
|
2631 |
+
}
|
2632 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/LineDrawer.js
|
2633 |
+
class LineDrawer {
|
2634 |
+
getSidesCount() {
|
2635 |
+
return 1;
|
2636 |
+
}
|
2637 |
+
|
2638 |
+
draw(context, particle, radius) {
|
2639 |
+
context.moveTo(0, -radius / 2);
|
2640 |
+
context.lineTo(0, radius / 2);
|
2641 |
+
}
|
2642 |
+
|
2643 |
+
}
|
2644 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/CircleDrawer.js
|
2645 |
+
class CircleDrawer {
|
2646 |
+
getSidesCount() {
|
2647 |
+
return 12;
|
2648 |
+
}
|
2649 |
+
|
2650 |
+
draw(context, particle, radius) {
|
2651 |
+
context.arc(0, 0, radius, 0, Math.PI * 2, false);
|
2652 |
+
}
|
2653 |
+
|
2654 |
+
}
|
2655 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/PolygonDrawerBase.js
|
2656 |
+
class PolygonDrawerBase {
|
2657 |
+
getSidesCount(particle) {
|
2658 |
+
var _a, _b;
|
2659 |
+
|
2660 |
+
const polygon = particle.shapeData;
|
2661 |
+
return (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;
|
2662 |
+
}
|
2663 |
+
|
2664 |
+
draw(context, particle, radius) {
|
2665 |
+
const start = this.getCenter(particle, radius);
|
2666 |
+
const side = this.getSidesData(particle, radius);
|
2667 |
+
const sideCount = side.count.numerator * side.count.denominator;
|
2668 |
+
const decimalSides = side.count.numerator / side.count.denominator;
|
2669 |
+
const interiorAngleDegrees = 180 * (decimalSides - 2) / decimalSides;
|
2670 |
+
const interiorAngle = Math.PI - Math.PI * interiorAngleDegrees / 180;
|
2671 |
+
|
2672 |
+
if (!context) {
|
2673 |
+
return;
|
2674 |
+
}
|
2675 |
+
|
2676 |
+
context.beginPath();
|
2677 |
+
context.translate(start.x, start.y);
|
2678 |
+
context.moveTo(0, 0);
|
2679 |
+
|
2680 |
+
for (let i = 0; i < sideCount; i++) {
|
2681 |
+
context.lineTo(side.length, 0);
|
2682 |
+
context.translate(side.length, 0);
|
2683 |
+
context.rotate(interiorAngle);
|
2684 |
+
}
|
2685 |
+
}
|
2686 |
+
|
2687 |
+
}
|
2688 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/TriangleDrawer.js
|
2689 |
+
|
2690 |
+
class TriangleDrawer extends PolygonDrawerBase {
|
2691 |
+
getSidesCount() {
|
2692 |
+
return 3;
|
2693 |
+
}
|
2694 |
+
|
2695 |
+
getSidesData(particle, radius) {
|
2696 |
+
return {
|
2697 |
+
count: {
|
2698 |
+
denominator: 2,
|
2699 |
+
numerator: 3
|
2700 |
+
},
|
2701 |
+
length: radius * 2
|
2702 |
+
};
|
2703 |
+
}
|
2704 |
+
|
2705 |
+
getCenter(particle, radius) {
|
2706 |
+
return {
|
2707 |
+
x: -radius,
|
2708 |
+
y: radius / 1.66
|
2709 |
+
};
|
2710 |
+
}
|
2711 |
+
|
2712 |
+
}
|
2713 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/StarDrawer.js
|
2714 |
+
class StarDrawer {
|
2715 |
+
getSidesCount(particle) {
|
2716 |
+
var _a, _b;
|
2717 |
+
|
2718 |
+
const star = particle.shapeData;
|
2719 |
+
return (_b = (_a = star === null || star === void 0 ? void 0 : star.sides) !== null && _a !== void 0 ? _a : star === null || star === void 0 ? void 0 : star.nb_sides) !== null && _b !== void 0 ? _b : 5;
|
2720 |
+
}
|
2721 |
+
|
2722 |
+
draw(context, particle, radius) {
|
2723 |
+
var _a;
|
2724 |
+
|
2725 |
+
const star = particle.shapeData;
|
2726 |
+
const sides = this.getSidesCount(particle);
|
2727 |
+
const inset = (_a = star === null || star === void 0 ? void 0 : star.inset) !== null && _a !== void 0 ? _a : 2;
|
2728 |
+
context.moveTo(0, 0 - radius);
|
2729 |
+
|
2730 |
+
for (let i = 0; i < sides; i++) {
|
2731 |
+
context.rotate(Math.PI / sides);
|
2732 |
+
context.lineTo(0, 0 - radius * inset);
|
2733 |
+
context.rotate(Math.PI / sides);
|
2734 |
+
context.lineTo(0, 0 - radius);
|
2735 |
+
}
|
2736 |
+
}
|
2737 |
+
|
2738 |
+
}
|
2739 |
+
;// CONCATENATED MODULE: ./dist/browser/ShapeDrawers/PolygonDrawer.js
|
2740 |
+
|
2741 |
+
class PolygonDrawer extends PolygonDrawerBase {
|
2742 |
+
getSidesData(particle, radius) {
|
2743 |
+
var _a, _b;
|
2744 |
+
|
2745 |
+
const polygon = particle.shapeData;
|
2746 |
+
const sides = (_b = (_a = polygon === null || polygon === void 0 ? void 0 : polygon.sides) !== null && _a !== void 0 ? _a : polygon === null || polygon === void 0 ? void 0 : polygon.nb_sides) !== null && _b !== void 0 ? _b : 5;
|
2747 |
+
return {
|
2748 |
+
count: {
|
2749 |
+
denominator: 1,
|
2750 |
+
numerator: sides
|
2751 |
+
},
|
2752 |
+
length: radius * 2.66 / (sides / 3)
|
2753 |
+
};
|
2754 |
+
}
|
2755 |
+
|
2756 |
+
getCenter(particle, radius) {
|
2757 |
+
const sides = this.getSidesCount(particle);
|
2758 |
+
return {
|
2759 |
+
x: -radius / (sides / 3.5),
|
2760 |
+
y: -radius / (2.66 / 3.5)
|
2761 |
+
};
|
2762 |
+
}
|
2763 |
+
|
2764 |
+
}
|
2765 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Canvas.js
|
2766 |
+
|
2767 |
+
class Canvas {
|
2768 |
+
constructor(container) {
|
2769 |
+
this.container = container;
|
2770 |
+
this.size = {
|
2771 |
+
height: 0,
|
2772 |
+
width: 0
|
2773 |
+
};
|
2774 |
+
this.context = null;
|
2775 |
+
this.generatedCanvas = false;
|
2776 |
+
}
|
2777 |
+
|
2778 |
+
init() {
|
2779 |
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
2780 |
+
|
2781 |
+
this.resize();
|
2782 |
+
const options = this.container.actualOptions;
|
2783 |
+
const element = this.element;
|
2784 |
+
|
2785 |
+
if (element) {
|
2786 |
+
if (options.fullScreen.enable) {
|
2787 |
+
this.originalStyle = Utils.deepExtend({}, element.style);
|
2788 |
+
element.style.position = "fixed";
|
2789 |
+
element.style.zIndex = options.fullScreen.zIndex.toString(10);
|
2790 |
+
element.style.top = "0";
|
2791 |
+
element.style.left = "0";
|
2792 |
+
element.style.width = "100%";
|
2793 |
+
element.style.height = "100%";
|
2794 |
+
} else {
|
2795 |
+
element.style.position = (_b = (_a = this.originalStyle) === null || _a === void 0 ? void 0 : _a.position) !== null && _b !== void 0 ? _b : "";
|
2796 |
+
element.style.zIndex = (_d = (_c = this.originalStyle) === null || _c === void 0 ? void 0 : _c.zIndex) !== null && _d !== void 0 ? _d : "";
|
2797 |
+
element.style.top = (_f = (_e = this.originalStyle) === null || _e === void 0 ? void 0 : _e.top) !== null && _f !== void 0 ? _f : "";
|
2798 |
+
element.style.left = (_h = (_g = this.originalStyle) === null || _g === void 0 ? void 0 : _g.left) !== null && _h !== void 0 ? _h : "";
|
2799 |
+
element.style.width = (_k = (_j = this.originalStyle) === null || _j === void 0 ? void 0 : _j.width) !== null && _k !== void 0 ? _k : "";
|
2800 |
+
element.style.height = (_m = (_l = this.originalStyle) === null || _l === void 0 ? void 0 : _l.height) !== null && _m !== void 0 ? _m : "";
|
2801 |
+
}
|
2802 |
+
}
|
2803 |
+
|
2804 |
+
const cover = options.backgroundMask.cover;
|
2805 |
+
const color = cover.color;
|
2806 |
+
const trail = options.particles.move.trail;
|
2807 |
+
const coverRgb = ColorUtils.colorToRgb(color);
|
2808 |
+
this.coverColor = coverRgb !== undefined ? {
|
2809 |
+
r: coverRgb.r,
|
2810 |
+
g: coverRgb.g,
|
2811 |
+
b: coverRgb.b,
|
2812 |
+
a: cover.opacity
|
2813 |
+
} : undefined;
|
2814 |
+
this.trailFillColor = ColorUtils.colorToRgb(trail.fillColor);
|
2815 |
+
this.initBackground();
|
2816 |
+
this.paint();
|
2817 |
+
}
|
2818 |
+
|
2819 |
+
loadCanvas(canvas, generatedCanvas) {
|
2820 |
+
var _a;
|
2821 |
+
|
2822 |
+
if (!canvas.className) {
|
2823 |
+
canvas.className = Constants.canvasClass;
|
2824 |
+
}
|
2825 |
+
|
2826 |
+
if (this.generatedCanvas) {
|
2827 |
+
(_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();
|
2828 |
+
}
|
2829 |
+
|
2830 |
+
this.generatedCanvas = generatedCanvas !== null && generatedCanvas !== void 0 ? generatedCanvas : this.generatedCanvas;
|
2831 |
+
this.element = canvas;
|
2832 |
+
this.originalStyle = Utils.deepExtend({}, this.element.style);
|
2833 |
+
this.size.height = canvas.offsetHeight;
|
2834 |
+
this.size.width = canvas.offsetWidth;
|
2835 |
+
this.context = this.element.getContext("2d");
|
2836 |
+
this.container.retina.init();
|
2837 |
+
this.initBackground();
|
2838 |
+
}
|
2839 |
+
|
2840 |
+
destroy() {
|
2841 |
+
var _a;
|
2842 |
+
|
2843 |
+
if (this.generatedCanvas) {
|
2844 |
+
(_a = this.element) === null || _a === void 0 ? void 0 : _a.remove();
|
2845 |
+
}
|
2846 |
+
|
2847 |
+
if (this.context) {
|
2848 |
+
CanvasUtils.clear(this.context, this.size);
|
2849 |
+
}
|
2850 |
+
}
|
2851 |
+
|
2852 |
+
paint() {
|
2853 |
+
const options = this.container.actualOptions;
|
2854 |
+
|
2855 |
+
if (!this.context) {
|
2856 |
+
return;
|
2857 |
+
}
|
2858 |
+
|
2859 |
+
if (options.backgroundMask.enable && options.backgroundMask.cover && this.coverColor) {
|
2860 |
+
CanvasUtils.clear(this.context, this.size);
|
2861 |
+
this.paintBase(ColorUtils.getStyleFromRgb(this.coverColor, this.coverColor.a));
|
2862 |
+
} else {
|
2863 |
+
this.paintBase();
|
2864 |
+
}
|
2865 |
+
}
|
2866 |
+
|
2867 |
+
clear() {
|
2868 |
+
const options = this.container.actualOptions;
|
2869 |
+
const trail = options.particles.move.trail;
|
2870 |
+
|
2871 |
+
if (options.backgroundMask.enable) {
|
2872 |
+
this.paint();
|
2873 |
+
} else if (trail.enable && trail.length > 0 && this.trailFillColor) {
|
2874 |
+
this.paintBase(ColorUtils.getStyleFromRgb(this.trailFillColor, 1 / trail.length));
|
2875 |
+
} else if (this.context) {
|
2876 |
+
CanvasUtils.clear(this.context, this.size);
|
2877 |
+
}
|
2878 |
+
}
|
2879 |
+
|
2880 |
+
windowResize() {
|
2881 |
+
if (!this.element) {
|
2882 |
+
return;
|
2883 |
+
}
|
2884 |
+
|
2885 |
+
const container = this.container;
|
2886 |
+
container.canvas.resize();
|
2887 |
+
container.actualOptions.setResponsive(this.size.width, container.retina.pixelRatio, container.options);
|
2888 |
+
container.particles.setDensity();
|
2889 |
+
|
2890 |
+
for (const [, plugin] of container.plugins) {
|
2891 |
+
if (plugin.resize !== undefined) {
|
2892 |
+
plugin.resize();
|
2893 |
+
}
|
2894 |
+
}
|
2895 |
+
}
|
2896 |
+
|
2897 |
+
resize() {
|
2898 |
+
if (!this.element) {
|
2899 |
+
return;
|
2900 |
+
}
|
2901 |
+
|
2902 |
+
const container = this.container;
|
2903 |
+
const pxRatio = container.retina.pixelRatio;
|
2904 |
+
const size = container.canvas.size;
|
2905 |
+
const oldSize = {
|
2906 |
+
width: size.width,
|
2907 |
+
height: size.height
|
2908 |
+
};
|
2909 |
+
size.width = this.element.offsetWidth * pxRatio;
|
2910 |
+
size.height = this.element.offsetHeight * pxRatio;
|
2911 |
+
this.element.width = size.width;
|
2912 |
+
this.element.height = size.height;
|
2913 |
+
this.resizeFactor = {
|
2914 |
+
width: size.width / oldSize.width,
|
2915 |
+
height: size.height / oldSize.height
|
2916 |
+
};
|
2917 |
+
}
|
2918 |
+
|
2919 |
+
drawConnectLine(p1, p2) {
|
2920 |
+
var _a;
|
2921 |
+
|
2922 |
+
const lineStyle = this.lineStyle(p1, p2);
|
2923 |
+
|
2924 |
+
if (!lineStyle) {
|
2925 |
+
return;
|
2926 |
+
}
|
2927 |
+
|
2928 |
+
const ctx = this.context;
|
2929 |
+
|
2930 |
+
if (!ctx) {
|
2931 |
+
return;
|
2932 |
+
}
|
2933 |
+
|
2934 |
+
const pos1 = p1.getPosition();
|
2935 |
+
const pos2 = p2.getPosition();
|
2936 |
+
CanvasUtils.drawConnectLine(ctx, (_a = p1.linksWidth) !== null && _a !== void 0 ? _a : this.container.retina.linksWidth, lineStyle, pos1, pos2);
|
2937 |
+
}
|
2938 |
+
|
2939 |
+
drawGrabLine(particle, lineColor, opacity, mousePos) {
|
2940 |
+
var _a;
|
2941 |
+
|
2942 |
+
const container = this.container;
|
2943 |
+
const ctx = container.canvas.context;
|
2944 |
+
|
2945 |
+
if (!ctx) {
|
2946 |
+
return;
|
2947 |
+
}
|
2948 |
+
|
2949 |
+
const beginPos = particle.getPosition();
|
2950 |
+
CanvasUtils.drawGrabLine(ctx, (_a = particle.linksWidth) !== null && _a !== void 0 ? _a : container.retina.linksWidth, beginPos, mousePos, lineColor, opacity);
|
2951 |
+
}
|
2952 |
+
|
2953 |
+
drawParticleShadow(particle, mousePos) {
|
2954 |
+
if (!this.context) {
|
2955 |
+
return;
|
2956 |
+
}
|
2957 |
+
|
2958 |
+
CanvasUtils.drawParticleShadow(this.container, this.context, particle, mousePos);
|
2959 |
+
}
|
2960 |
+
|
2961 |
+
drawLinkTriangle(p1, link1, link2) {
|
2962 |
+
var _a;
|
2963 |
+
|
2964 |
+
const container = this.container;
|
2965 |
+
const options = container.actualOptions;
|
2966 |
+
const p2 = link1.destination;
|
2967 |
+
const p3 = link2.destination;
|
2968 |
+
const triangleOptions = p1.options.links.triangles;
|
2969 |
+
const opacityTriangle = (_a = triangleOptions.opacity) !== null && _a !== void 0 ? _a : (link1.opacity + link2.opacity) / 2;
|
2970 |
+
|
2971 |
+
if (opacityTriangle <= 0) {
|
2972 |
+
return;
|
2973 |
+
}
|
2974 |
+
|
2975 |
+
const pos1 = p1.getPosition();
|
2976 |
+
const pos2 = p2.getPosition();
|
2977 |
+
const pos3 = p3.getPosition();
|
2978 |
+
const ctx = this.context;
|
2979 |
+
|
2980 |
+
if (!ctx) {
|
2981 |
+
return;
|
2982 |
+
}
|
2983 |
+
|
2984 |
+
if (NumberUtils.getDistance(pos1, pos2) > container.retina.linksDistance || NumberUtils.getDistance(pos3, pos2) > container.retina.linksDistance || NumberUtils.getDistance(pos3, pos1) > container.retina.linksDistance) {
|
2985 |
+
return;
|
2986 |
+
}
|
2987 |
+
|
2988 |
+
let colorTriangle = ColorUtils.colorToRgb(triangleOptions.color);
|
2989 |
+
|
2990 |
+
if (!colorTriangle) {
|
2991 |
+
const linksOptions = p1.options.links;
|
2992 |
+
const linkColor = linksOptions.id !== undefined ? container.particles.linksColors.get(linksOptions.id) : container.particles.linksColor;
|
2993 |
+
colorTriangle = ColorUtils.getLinkColor(p1, p2, linkColor);
|
2994 |
+
}
|
2995 |
+
|
2996 |
+
if (!colorTriangle) {
|
2997 |
+
return;
|
2998 |
+
}
|
2999 |
+
|
3000 |
+
CanvasUtils.drawLinkTriangle(ctx, pos1, pos2, pos3, options.backgroundMask.enable, options.backgroundMask.composite, colorTriangle, opacityTriangle);
|
3001 |
+
}
|
3002 |
+
|
3003 |
+
drawLinkLine(p1, link) {
|
3004 |
+
var _a, _b;
|
3005 |
+
|
3006 |
+
const container = this.container;
|
3007 |
+
const options = container.actualOptions;
|
3008 |
+
const p2 = link.destination;
|
3009 |
+
let opacity = link.opacity;
|
3010 |
+
const pos1 = p1.getPosition();
|
3011 |
+
const pos2 = p2.getPosition();
|
3012 |
+
const ctx = this.context;
|
3013 |
+
|
3014 |
+
if (!ctx) {
|
3015 |
+
return;
|
3016 |
+
}
|
3017 |
+
|
3018 |
+
let colorLine;
|
3019 |
+
const twinkle = p1.options.twinkle.lines;
|
3020 |
+
|
3021 |
+
if (twinkle.enable) {
|
3022 |
+
const twinkleFreq = twinkle.frequency;
|
3023 |
+
const twinkleRgb = ColorUtils.colorToRgb(twinkle.color);
|
3024 |
+
const twinkling = Math.random() < twinkleFreq;
|
3025 |
+
|
3026 |
+
if (twinkling && twinkleRgb !== undefined) {
|
3027 |
+
colorLine = twinkleRgb;
|
3028 |
+
opacity = twinkle.opacity;
|
3029 |
+
}
|
3030 |
+
}
|
3031 |
+
|
3032 |
+
if (!colorLine) {
|
3033 |
+
const linksOptions = p1.options.links;
|
3034 |
+
const linkColor = linksOptions.id !== undefined ? container.particles.linksColors.get(linksOptions.id) : container.particles.linksColor;
|
3035 |
+
colorLine = ColorUtils.getLinkColor(p1, p2, linkColor);
|
3036 |
+
}
|
3037 |
+
|
3038 |
+
if (!colorLine) {
|
3039 |
+
return;
|
3040 |
+
}
|
3041 |
+
|
3042 |
+
const width = (_a = p1.linksWidth) !== null && _a !== void 0 ? _a : container.retina.linksWidth;
|
3043 |
+
const maxDistance = (_b = p1.linksDistance) !== null && _b !== void 0 ? _b : container.retina.linksDistance;
|
3044 |
+
CanvasUtils.drawLinkLine(ctx, width, pos1, pos2, maxDistance, container.canvas.size, p1.options.links.warp, options.backgroundMask.enable, options.backgroundMask.composite, colorLine, opacity, p1.options.links.shadow);
|
3045 |
+
}
|
3046 |
+
|
3047 |
+
drawParticle(particle, delta) {
|
3048 |
+
var _a, _b, _c, _d;
|
3049 |
+
|
3050 |
+
if (((_a = particle.image) === null || _a === void 0 ? void 0 : _a.loaded) === false || particle.spawning || particle.destroyed) {
|
3051 |
+
return;
|
3052 |
+
}
|
3053 |
+
|
3054 |
+
const pfColor = particle.getFillColor();
|
3055 |
+
const psColor = (_b = particle.getStrokeColor()) !== null && _b !== void 0 ? _b : pfColor;
|
3056 |
+
|
3057 |
+
if (!pfColor && !psColor) {
|
3058 |
+
return;
|
3059 |
+
}
|
3060 |
+
|
3061 |
+
const options = this.container.actualOptions;
|
3062 |
+
const pOptions = particle.options;
|
3063 |
+
const twinkle = pOptions.twinkle.particles;
|
3064 |
+
const twinkleFreq = twinkle.frequency;
|
3065 |
+
const twinkleRgb = ColorUtils.colorToRgb(twinkle.color);
|
3066 |
+
const twinkling = twinkle.enable && Math.random() < twinkleFreq;
|
3067 |
+
const radius = particle.getRadius();
|
3068 |
+
const opacity = twinkling ? twinkle.opacity : (_c = particle.bubble.opacity) !== null && _c !== void 0 ? _c : particle.opacity.value;
|
3069 |
+
const infectionStage = particle.infecter.infectionStage;
|
3070 |
+
const infection = options.infection;
|
3071 |
+
const infectionStages = infection.stages;
|
3072 |
+
const infectionColor = infectionStage !== undefined ? infectionStages[infectionStage].color : undefined;
|
3073 |
+
const infectionRgb = ColorUtils.colorToRgb(infectionColor);
|
3074 |
+
const fColor = twinkling && twinkleRgb !== undefined ? twinkleRgb : infectionRgb !== null && infectionRgb !== void 0 ? infectionRgb : pfColor ? ColorUtils.hslToRgb(pfColor) : undefined;
|
3075 |
+
const sColor = twinkling && twinkleRgb !== undefined ? twinkleRgb : infectionRgb !== null && infectionRgb !== void 0 ? infectionRgb : psColor ? ColorUtils.hslToRgb(psColor) : undefined;
|
3076 |
+
const fillColorValue = fColor !== undefined ? ColorUtils.getStyleFromRgb(fColor, opacity) : undefined;
|
3077 |
+
|
3078 |
+
if (!this.context || !fillColorValue && !sColor) {
|
3079 |
+
return;
|
3080 |
+
}
|
3081 |
+
|
3082 |
+
const strokeColorValue = sColor !== undefined ? ColorUtils.getStyleFromRgb(sColor, (_d = particle.stroke.opacity) !== null && _d !== void 0 ? _d : opacity) : fillColorValue;
|
3083 |
+
this.drawParticleLinks(particle);
|
3084 |
+
|
3085 |
+
if (radius > 0) {
|
3086 |
+
CanvasUtils.drawParticle(this.container, this.context, particle, delta, fillColorValue, strokeColorValue, options.backgroundMask.enable, options.backgroundMask.composite, radius, opacity, particle.options.shadow);
|
3087 |
+
}
|
3088 |
+
}
|
3089 |
+
|
3090 |
+
drawParticleLinks(particle) {
|
3091 |
+
if (!this.context) {
|
3092 |
+
return;
|
3093 |
+
}
|
3094 |
+
|
3095 |
+
const container = this.container;
|
3096 |
+
const particles = container.particles;
|
3097 |
+
const pOptions = particle.options;
|
3098 |
+
|
3099 |
+
if (particle.links.length > 0) {
|
3100 |
+
this.context.save();
|
3101 |
+
const p1Links = particle.links.filter(l => {
|
3102 |
+
const linkFreq = container.particles.getLinkFrequency(particle, l.destination);
|
3103 |
+
return linkFreq <= pOptions.links.frequency;
|
3104 |
+
});
|
3105 |
+
|
3106 |
+
for (const link of p1Links) {
|
3107 |
+
const p2 = link.destination;
|
3108 |
+
|
3109 |
+
if (pOptions.links.triangles.enable) {
|
3110 |
+
const links = p1Links.map(l => l.destination);
|
3111 |
+
const vertices = p2.links.filter(t => {
|
3112 |
+
const linkFreq = container.particles.getLinkFrequency(p2, t.destination);
|
3113 |
+
return linkFreq <= p2.options.links.frequency && links.indexOf(t.destination) >= 0;
|
3114 |
+
});
|
3115 |
+
|
3116 |
+
if (vertices.length) {
|
3117 |
+
for (const vertex of vertices) {
|
3118 |
+
const p3 = vertex.destination;
|
3119 |
+
const triangleFreq = particles.getTriangleFrequency(particle, p2, p3);
|
3120 |
+
|
3121 |
+
if (triangleFreq > pOptions.links.triangles.frequency) {
|
3122 |
+
continue;
|
3123 |
+
}
|
3124 |
+
|
3125 |
+
this.drawLinkTriangle(particle, link, vertex);
|
3126 |
+
}
|
3127 |
+
}
|
3128 |
+
}
|
3129 |
+
|
3130 |
+
if (link.opacity > 0 && container.retina.linksWidth > 0) {
|
3131 |
+
this.drawLinkLine(particle, link);
|
3132 |
+
}
|
3133 |
+
}
|
3134 |
+
|
3135 |
+
this.context.restore();
|
3136 |
+
}
|
3137 |
+
}
|
3138 |
+
|
3139 |
+
drawPlugin(plugin, delta) {
|
3140 |
+
if (!this.context) {
|
3141 |
+
return;
|
3142 |
+
}
|
3143 |
+
|
3144 |
+
CanvasUtils.drawPlugin(this.context, plugin, delta);
|
3145 |
+
}
|
3146 |
+
|
3147 |
+
drawLight(mousePos) {
|
3148 |
+
if (!this.context) {
|
3149 |
+
return;
|
3150 |
+
}
|
3151 |
+
|
3152 |
+
CanvasUtils.drawLight(this.container, this.context, mousePos);
|
3153 |
+
}
|
3154 |
+
|
3155 |
+
paintBase(baseColor) {
|
3156 |
+
if (!this.context) {
|
3157 |
+
return;
|
3158 |
+
}
|
3159 |
+
|
3160 |
+
CanvasUtils.paintBase(this.context, this.size, baseColor);
|
3161 |
+
}
|
3162 |
+
|
3163 |
+
lineStyle(p1, p2) {
|
3164 |
+
const options = this.container.actualOptions;
|
3165 |
+
const connectOptions = options.interactivity.modes.connect;
|
3166 |
+
|
3167 |
+
if (this.context) {
|
3168 |
+
return CanvasUtils.gradient(this.context, p1, p2, connectOptions.links.opacity);
|
3169 |
+
}
|
3170 |
+
}
|
3171 |
+
|
3172 |
+
initBackground() {
|
3173 |
+
const options = this.container.actualOptions;
|
3174 |
+
const background = options.background;
|
3175 |
+
const element = this.element;
|
3176 |
+
|
3177 |
+
if (!element) {
|
3178 |
+
return;
|
3179 |
+
}
|
3180 |
+
|
3181 |
+
const elementStyle = element.style;
|
3182 |
+
|
3183 |
+
if (background.color) {
|
3184 |
+
const color = ColorUtils.colorToRgb(background.color);
|
3185 |
+
|
3186 |
+
if (color) {
|
3187 |
+
elementStyle.backgroundColor = ColorUtils.getStyleFromRgb(color, background.opacity);
|
3188 |
+
}
|
3189 |
+
}
|
3190 |
+
|
3191 |
+
if (background.image) {
|
3192 |
+
elementStyle.backgroundImage = background.image;
|
3193 |
+
}
|
3194 |
+
|
3195 |
+
if (background.position) {
|
3196 |
+
elementStyle.backgroundPosition = background.position;
|
3197 |
+
}
|
3198 |
+
|
3199 |
+
if (background.repeat) {
|
3200 |
+
elementStyle.backgroundRepeat = background.repeat;
|
3201 |
+
}
|
3202 |
+
|
3203 |
+
if (background.size) {
|
3204 |
+
elementStyle.backgroundSize = background.size;
|
3205 |
+
}
|
3206 |
+
}
|
3207 |
+
|
3208 |
+
}
|
3209 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particle/Updater.js
|
3210 |
+
|
3211 |
+
|
3212 |
+
|
3213 |
+
|
3214 |
+
function bounceHorizontal(data) {
|
3215 |
+
if (data.outMode === OutMode.bounce || data.outMode === OutMode.bounceHorizontal || data.outMode === "bounceHorizontal") {
|
3216 |
+
const velocity = data.particle.velocity.horizontal;
|
3217 |
+
let bounced = false;
|
3218 |
+
|
3219 |
+
if (data.direction === OutModeDirection.right && data.bounds.right >= data.canvasSize.width && velocity > 0 || data.direction === OutModeDirection.left && data.bounds.left <= 0 && velocity < 0) {
|
3220 |
+
const newVelocity = NumberUtils.getValue(data.particle.options.bounce.horizontal);
|
3221 |
+
data.particle.velocity.horizontal *= -newVelocity;
|
3222 |
+
bounced = true;
|
3223 |
+
}
|
3224 |
+
|
3225 |
+
if (bounced) {
|
3226 |
+
const minPos = data.offset.x + data.size;
|
3227 |
+
|
3228 |
+
if (data.bounds.right >= data.canvasSize.width) {
|
3229 |
+
data.particle.position.x = data.canvasSize.width - minPos;
|
3230 |
+
} else if (data.bounds.left <= 0) {
|
3231 |
+
data.particle.position.x = minPos;
|
3232 |
+
}
|
3233 |
+
}
|
3234 |
+
}
|
3235 |
+
}
|
3236 |
+
|
3237 |
+
function bounceVertical(data) {
|
3238 |
+
if (data.outMode === OutMode.bounce || data.outMode === OutMode.bounceVertical || data.outMode === "bounceVertical") {
|
3239 |
+
const velocity = data.particle.velocity.vertical;
|
3240 |
+
let bounced = false;
|
3241 |
+
|
3242 |
+
if (data.direction === OutModeDirection.bottom && data.bounds.bottom >= data.canvasSize.height && velocity > 0 || data.direction === OutModeDirection.top && data.bounds.top <= 0 && velocity < 0) {
|
3243 |
+
const newVelocity = NumberUtils.getValue(data.particle.options.bounce.vertical);
|
3244 |
+
data.particle.velocity.vertical *= -newVelocity;
|
3245 |
+
bounced = true;
|
3246 |
+
}
|
3247 |
+
|
3248 |
+
if (bounced) {
|
3249 |
+
const minPos = data.offset.y + data.size;
|
3250 |
+
|
3251 |
+
if (data.bounds.bottom >= data.canvasSize.height) {
|
3252 |
+
data.particle.position.y = data.canvasSize.height - minPos;
|
3253 |
+
} else if (data.bounds.top <= 0) {
|
3254 |
+
data.particle.position.y = minPos;
|
3255 |
+
}
|
3256 |
+
}
|
3257 |
+
}
|
3258 |
+
}
|
3259 |
+
|
3260 |
+
function checkDestroy(particle, destroy, value, minValue, maxValue) {
|
3261 |
+
switch (destroy) {
|
3262 |
+
case DestroyType.max:
|
3263 |
+
if (value >= maxValue) {
|
3264 |
+
particle.destroy();
|
3265 |
+
}
|
3266 |
+
|
3267 |
+
break;
|
3268 |
+
|
3269 |
+
case DestroyType.min:
|
3270 |
+
if (value <= minValue) {
|
3271 |
+
particle.destroy();
|
3272 |
+
}
|
3273 |
+
|
3274 |
+
break;
|
3275 |
+
}
|
3276 |
+
}
|
3277 |
+
|
3278 |
+
class Updater {
|
3279 |
+
constructor(container, particle) {
|
3280 |
+
this.container = container;
|
3281 |
+
this.particle = particle;
|
3282 |
+
}
|
3283 |
+
|
3284 |
+
update(delta) {
|
3285 |
+
if (this.particle.destroyed) {
|
3286 |
+
return;
|
3287 |
+
}
|
3288 |
+
|
3289 |
+
this.updateLife(delta);
|
3290 |
+
|
3291 |
+
if (this.particle.destroyed || this.particle.spawning) {
|
3292 |
+
return;
|
3293 |
+
}
|
3294 |
+
|
3295 |
+
this.updateOpacity(delta);
|
3296 |
+
this.updateSize(delta);
|
3297 |
+
this.updateAngle(delta);
|
3298 |
+
this.updateColor(delta);
|
3299 |
+
this.updateStrokeColor(delta);
|
3300 |
+
this.updateOutModes(delta);
|
3301 |
+
}
|
3302 |
+
|
3303 |
+
updateLife(delta) {
|
3304 |
+
const particle = this.particle;
|
3305 |
+
let justSpawned = false;
|
3306 |
+
|
3307 |
+
if (particle.spawning) {
|
3308 |
+
particle.lifeDelayTime += delta.value;
|
3309 |
+
|
3310 |
+
if (particle.lifeDelayTime >= particle.lifeDelay) {
|
3311 |
+
justSpawned = true;
|
3312 |
+
particle.spawning = false;
|
3313 |
+
particle.lifeDelayTime = 0;
|
3314 |
+
particle.lifeTime = 0;
|
3315 |
+
}
|
3316 |
+
}
|
3317 |
+
|
3318 |
+
if (particle.lifeDuration === -1) {
|
3319 |
+
return;
|
3320 |
+
}
|
3321 |
+
|
3322 |
+
if (!particle.spawning) {
|
3323 |
+
if (justSpawned) {
|
3324 |
+
particle.lifeTime = 0;
|
3325 |
+
} else {
|
3326 |
+
particle.lifeTime += delta.value;
|
3327 |
+
}
|
3328 |
+
|
3329 |
+
if (particle.lifeTime >= particle.lifeDuration) {
|
3330 |
+
particle.lifeTime = 0;
|
3331 |
+
|
3332 |
+
if (particle.livesRemaining > 0) {
|
3333 |
+
particle.livesRemaining--;
|
3334 |
+
}
|
3335 |
+
|
3336 |
+
if (particle.livesRemaining === 0) {
|
3337 |
+
particle.destroy();
|
3338 |
+
return;
|
3339 |
+
}
|
3340 |
+
|
3341 |
+
const canvasSize = this.container.canvas.size;
|
3342 |
+
particle.position.x = NumberUtils.randomInRange(NumberUtils.setRangeValue(0, canvasSize.width));
|
3343 |
+
particle.position.y = NumberUtils.randomInRange(NumberUtils.setRangeValue(0, canvasSize.height));
|
3344 |
+
particle.spawning = true;
|
3345 |
+
particle.lifeDelayTime = 0;
|
3346 |
+
particle.lifeTime = 0;
|
3347 |
+
particle.reset();
|
3348 |
+
const lifeOptions = particle.options.life;
|
3349 |
+
particle.lifeDelay = NumberUtils.getValue(lifeOptions.delay) * 1000;
|
3350 |
+
particle.lifeDuration = NumberUtils.getValue(lifeOptions.duration) * 1000;
|
3351 |
+
}
|
3352 |
+
}
|
3353 |
+
}
|
3354 |
+
|
3355 |
+
updateOpacity(delta) {
|
3356 |
+
var _a, _b;
|
3357 |
+
|
3358 |
+
const particle = this.particle;
|
3359 |
+
const opacityAnim = particle.options.opacity.anim;
|
3360 |
+
const minValue = opacityAnim.minimumValue;
|
3361 |
+
const maxValue = particle.options.opacity.value;
|
3362 |
+
|
3363 |
+
if (!particle.destroyed && opacityAnim.enable && (opacityAnim.count <= 0 || particle.loops.size < opacityAnim.count)) {
|
3364 |
+
switch (particle.opacity.status) {
|
3365 |
+
case AnimationStatus.increasing:
|
3366 |
+
if (particle.opacity.value >= maxValue) {
|
3367 |
+
particle.opacity.status = AnimationStatus.decreasing;
|
3368 |
+
particle.loops.opacity++;
|
3369 |
+
} else {
|
3370 |
+
particle.opacity.value += ((_a = particle.opacity.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;
|
3371 |
+
}
|
3372 |
+
|
3373 |
+
break;
|
3374 |
+
|
3375 |
+
case AnimationStatus.decreasing:
|
3376 |
+
if (particle.opacity.value <= minValue) {
|
3377 |
+
particle.opacity.status = AnimationStatus.increasing;
|
3378 |
+
particle.loops.opacity++;
|
3379 |
+
} else {
|
3380 |
+
particle.opacity.value -= ((_b = particle.opacity.velocity) !== null && _b !== void 0 ? _b : 0) * delta.factor;
|
3381 |
+
}
|
3382 |
+
|
3383 |
+
break;
|
3384 |
+
}
|
3385 |
+
|
3386 |
+
checkDestroy(particle, opacityAnim.destroy, particle.opacity.value, minValue, maxValue);
|
3387 |
+
|
3388 |
+
if (!particle.destroyed) {
|
3389 |
+
particle.opacity.value = NumberUtils.clamp(particle.opacity.value, minValue, maxValue);
|
3390 |
+
}
|
3391 |
+
}
|
3392 |
+
}
|
3393 |
+
|
3394 |
+
updateSize(delta) {
|
3395 |
+
var _a, _b;
|
3396 |
+
|
3397 |
+
const container = this.container;
|
3398 |
+
const particle = this.particle;
|
3399 |
+
const sizeOpt = particle.options.size;
|
3400 |
+
const sizeAnim = sizeOpt.animation;
|
3401 |
+
const sizeVelocity = ((_a = particle.size.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;
|
3402 |
+
const maxValue = (_b = particle.sizeValue) !== null && _b !== void 0 ? _b : container.retina.sizeValue;
|
3403 |
+
const minValue = sizeAnim.minimumValue * container.retina.pixelRatio;
|
3404 |
+
|
3405 |
+
if (!particle.destroyed && sizeAnim.enable && (sizeAnim.count <= 0 || particle.loops.size < sizeAnim.count)) {
|
3406 |
+
switch (particle.size.status) {
|
3407 |
+
case AnimationStatus.increasing:
|
3408 |
+
if (particle.size.value >= maxValue) {
|
3409 |
+
particle.size.status = AnimationStatus.decreasing;
|
3410 |
+
particle.loops.size++;
|
3411 |
+
} else {
|
3412 |
+
particle.size.value += sizeVelocity;
|
3413 |
+
}
|
3414 |
+
|
3415 |
+
break;
|
3416 |
+
|
3417 |
+
case AnimationStatus.decreasing:
|
3418 |
+
if (particle.size.value <= minValue) {
|
3419 |
+
particle.size.status = AnimationStatus.increasing;
|
3420 |
+
particle.loops.size++;
|
3421 |
+
} else {
|
3422 |
+
particle.size.value -= sizeVelocity;
|
3423 |
+
}
|
3424 |
+
|
3425 |
+
}
|
3426 |
+
|
3427 |
+
checkDestroy(particle, sizeAnim.destroy, particle.size.value, minValue, maxValue);
|
3428 |
+
|
3429 |
+
if (!particle.destroyed) {
|
3430 |
+
particle.size.value = NumberUtils.clamp(particle.size.value, minValue, maxValue);
|
3431 |
+
}
|
3432 |
+
}
|
3433 |
+
}
|
3434 |
+
|
3435 |
+
updateAngle(delta) {
|
3436 |
+
var _a;
|
3437 |
+
|
3438 |
+
const particle = this.particle;
|
3439 |
+
const rotate = particle.options.rotate;
|
3440 |
+
const rotateAnimation = rotate.animation;
|
3441 |
+
const speed = ((_a = particle.rotate.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor;
|
3442 |
+
const max = 2 * Math.PI;
|
3443 |
+
|
3444 |
+
if (rotate.path) {
|
3445 |
+
particle.pathAngle = Math.atan2(particle.velocity.vertical, particle.velocity.horizontal);
|
3446 |
+
} else if (rotateAnimation.enable) {
|
3447 |
+
switch (particle.rotate.status) {
|
3448 |
+
case AnimationStatus.increasing:
|
3449 |
+
particle.rotate.value += speed;
|
3450 |
+
|
3451 |
+
if (particle.rotate.value > max) {
|
3452 |
+
particle.rotate.value -= max;
|
3453 |
+
}
|
3454 |
+
|
3455 |
+
break;
|
3456 |
+
|
3457 |
+
case AnimationStatus.decreasing:
|
3458 |
+
default:
|
3459 |
+
particle.rotate.value -= speed;
|
3460 |
+
|
3461 |
+
if (particle.rotate.value < 0) {
|
3462 |
+
particle.rotate.value += max;
|
3463 |
+
}
|
3464 |
+
|
3465 |
+
break;
|
3466 |
+
}
|
3467 |
+
}
|
3468 |
+
}
|
3469 |
+
|
3470 |
+
updateColor(delta) {
|
3471 |
+
var _a, _b, _c;
|
3472 |
+
|
3473 |
+
const particle = this.particle;
|
3474 |
+
const animationOptions = particle.options.color.animation;
|
3475 |
+
|
3476 |
+
if (((_a = particle.color) === null || _a === void 0 ? void 0 : _a.h) !== undefined) {
|
3477 |
+
this.updateColorValue(particle, delta, particle.color.h, animationOptions.h, 360, false);
|
3478 |
+
}
|
3479 |
+
|
3480 |
+
if (((_b = particle.color) === null || _b === void 0 ? void 0 : _b.s) !== undefined) {
|
3481 |
+
this.updateColorValue(particle, delta, particle.color.s, animationOptions.s, 100, true);
|
3482 |
+
}
|
3483 |
+
|
3484 |
+
if (((_c = particle.color) === null || _c === void 0 ? void 0 : _c.l) !== undefined) {
|
3485 |
+
this.updateColorValue(particle, delta, particle.color.l, animationOptions.l, 100, true);
|
3486 |
+
}
|
3487 |
+
}
|
3488 |
+
|
3489 |
+
updateStrokeColor(delta) {
|
3490 |
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
3491 |
+
|
3492 |
+
const particle = this.particle;
|
3493 |
+
|
3494 |
+
if (!particle.stroke.color) {
|
3495 |
+
return;
|
3496 |
+
}
|
3497 |
+
|
3498 |
+
const animationOptions = particle.stroke.color.animation;
|
3499 |
+
const valueAnimations = animationOptions;
|
3500 |
+
|
3501 |
+
if (valueAnimations.enable !== undefined) {
|
3502 |
+
const hue = (_b = (_a = particle.strokeColor) === null || _a === void 0 ? void 0 : _a.h) !== null && _b !== void 0 ? _b : (_c = particle.color) === null || _c === void 0 ? void 0 : _c.h;
|
3503 |
+
|
3504 |
+
if (hue) {
|
3505 |
+
this.updateColorValue(particle, delta, hue, valueAnimations, 360, false);
|
3506 |
+
}
|
3507 |
+
} else {
|
3508 |
+
const hslAnimations = animationOptions;
|
3509 |
+
const h = (_e = (_d = particle.strokeColor) === null || _d === void 0 ? void 0 : _d.h) !== null && _e !== void 0 ? _e : (_f = particle.color) === null || _f === void 0 ? void 0 : _f.h;
|
3510 |
+
|
3511 |
+
if (h) {
|
3512 |
+
this.updateColorValue(particle, delta, h, hslAnimations.h, 360, false);
|
3513 |
+
}
|
3514 |
+
|
3515 |
+
const s = (_h = (_g = particle.strokeColor) === null || _g === void 0 ? void 0 : _g.s) !== null && _h !== void 0 ? _h : (_j = particle.color) === null || _j === void 0 ? void 0 : _j.s;
|
3516 |
+
|
3517 |
+
if (s) {
|
3518 |
+
this.updateColorValue(particle, delta, s, hslAnimations.s, 100, true);
|
3519 |
+
}
|
3520 |
+
|
3521 |
+
const l = (_l = (_k = particle.strokeColor) === null || _k === void 0 ? void 0 : _k.l) !== null && _l !== void 0 ? _l : (_m = particle.color) === null || _m === void 0 ? void 0 : _m.l;
|
3522 |
+
|
3523 |
+
if (l) {
|
3524 |
+
this.updateColorValue(particle, delta, l, hslAnimations.l, 100, true);
|
3525 |
+
}
|
3526 |
+
}
|
3527 |
+
}
|
3528 |
+
|
3529 |
+
updateColorValue(particle, delta, value, valueAnimation, max, decrease) {
|
3530 |
+
var _a;
|
3531 |
+
|
3532 |
+
const colorValue = value;
|
3533 |
+
|
3534 |
+
if (!colorValue || !valueAnimation.enable) {
|
3535 |
+
return;
|
3536 |
+
}
|
3537 |
+
|
3538 |
+
const offset = NumberUtils.randomInRange(valueAnimation.offset);
|
3539 |
+
const velocity = ((_a = value.velocity) !== null && _a !== void 0 ? _a : 0) * delta.factor + offset * 3.6;
|
3540 |
+
|
3541 |
+
if (!decrease || colorValue.status === AnimationStatus.increasing) {
|
3542 |
+
colorValue.value += velocity;
|
3543 |
+
|
3544 |
+
if (decrease && colorValue.value > max) {
|
3545 |
+
colorValue.status = AnimationStatus.decreasing;
|
3546 |
+
colorValue.value -= colorValue.value % max;
|
3547 |
+
}
|
3548 |
+
} else {
|
3549 |
+
colorValue.value -= velocity;
|
3550 |
+
|
3551 |
+
if (colorValue.value < 0) {
|
3552 |
+
colorValue.status = AnimationStatus.increasing;
|
3553 |
+
colorValue.value += colorValue.value;
|
3554 |
+
}
|
3555 |
+
}
|
3556 |
+
|
3557 |
+
if (colorValue.value > max) {
|
3558 |
+
colorValue.value %= max;
|
3559 |
+
}
|
3560 |
+
}
|
3561 |
+
|
3562 |
+
updateOutModes(delta) {
|
3563 |
+
var _a, _b, _c, _d;
|
3564 |
+
|
3565 |
+
const outModes = this.particle.options.move.outModes;
|
3566 |
+
this.updateOutMode(delta, (_a = outModes.bottom) !== null && _a !== void 0 ? _a : outModes.default, OutModeDirection.bottom);
|
3567 |
+
this.updateOutMode(delta, (_b = outModes.left) !== null && _b !== void 0 ? _b : outModes.default, OutModeDirection.left);
|
3568 |
+
this.updateOutMode(delta, (_c = outModes.right) !== null && _c !== void 0 ? _c : outModes.default, OutModeDirection.right);
|
3569 |
+
this.updateOutMode(delta, (_d = outModes.top) !== null && _d !== void 0 ? _d : outModes.default, OutModeDirection.top);
|
3570 |
+
}
|
3571 |
+
|
3572 |
+
updateOutMode(delta, outMode, direction) {
|
3573 |
+
const container = this.container;
|
3574 |
+
const particle = this.particle;
|
3575 |
+
|
3576 |
+
switch (outMode) {
|
3577 |
+
case OutMode.bounce:
|
3578 |
+
case OutMode.bounceVertical:
|
3579 |
+
case OutMode.bounceHorizontal:
|
3580 |
+
case "bounceVertical":
|
3581 |
+
case "bounceHorizontal":
|
3582 |
+
this.updateBounce(delta, direction, outMode);
|
3583 |
+
break;
|
3584 |
+
|
3585 |
+
case OutMode.destroy:
|
3586 |
+
if (!Utils.isPointInside(particle.position, container.canvas.size, particle.getRadius(), direction)) {
|
3587 |
+
container.particles.remove(particle);
|
3588 |
+
}
|
3589 |
+
|
3590 |
+
break;
|
3591 |
+
|
3592 |
+
case OutMode.out:
|
3593 |
+
if (!Utils.isPointInside(particle.position, container.canvas.size, particle.getRadius(), direction)) {
|
3594 |
+
this.fixOutOfCanvasPosition(direction);
|
3595 |
+
}
|
3596 |
+
|
3597 |
+
break;
|
3598 |
+
|
3599 |
+
case OutMode.none:
|
3600 |
+
this.bounceNone(direction);
|
3601 |
+
break;
|
3602 |
+
}
|
3603 |
+
}
|
3604 |
+
|
3605 |
+
fixOutOfCanvasPosition(direction) {
|
3606 |
+
const container = this.container;
|
3607 |
+
const particle = this.particle;
|
3608 |
+
const wrap = particle.options.move.warp;
|
3609 |
+
const canvasSize = container.canvas.size;
|
3610 |
+
const newPos = {
|
3611 |
+
bottom: canvasSize.height + particle.getRadius() - particle.offset.y,
|
3612 |
+
left: -particle.getRadius() - particle.offset.x,
|
3613 |
+
right: canvasSize.width + particle.getRadius() + particle.offset.x,
|
3614 |
+
top: -particle.getRadius() - particle.offset.y
|
3615 |
+
};
|
3616 |
+
const sizeValue = particle.getRadius();
|
3617 |
+
const nextBounds = Utils.calculateBounds(particle.position, sizeValue);
|
3618 |
+
|
3619 |
+
if (direction === OutModeDirection.right && nextBounds.left > canvasSize.width - particle.offset.x) {
|
3620 |
+
particle.position.x = newPos.left;
|
3621 |
+
|
3622 |
+
if (!wrap) {
|
3623 |
+
particle.position.y = Math.random() * canvasSize.height;
|
3624 |
+
}
|
3625 |
+
} else if (direction === OutModeDirection.left && nextBounds.right < -particle.offset.x) {
|
3626 |
+
particle.position.x = newPos.right;
|
3627 |
+
|
3628 |
+
if (!wrap) {
|
3629 |
+
particle.position.y = Math.random() * canvasSize.height;
|
3630 |
+
}
|
3631 |
+
}
|
3632 |
+
|
3633 |
+
if (direction === OutModeDirection.bottom && nextBounds.top > canvasSize.height - particle.offset.y) {
|
3634 |
+
if (!wrap) {
|
3635 |
+
particle.position.x = Math.random() * canvasSize.width;
|
3636 |
+
}
|
3637 |
+
|
3638 |
+
particle.position.y = newPos.top;
|
3639 |
+
} else if (direction === OutModeDirection.top && nextBounds.bottom < -particle.offset.y) {
|
3640 |
+
if (!wrap) {
|
3641 |
+
particle.position.x = Math.random() * canvasSize.width;
|
3642 |
+
}
|
3643 |
+
|
3644 |
+
particle.position.y = newPos.bottom;
|
3645 |
+
}
|
3646 |
+
}
|
3647 |
+
|
3648 |
+
updateBounce(delta, direction, outMode) {
|
3649 |
+
const container = this.container;
|
3650 |
+
const particle = this.particle;
|
3651 |
+
let handled = false;
|
3652 |
+
|
3653 |
+
for (const [, plugin] of container.plugins) {
|
3654 |
+
if (plugin.particleBounce !== undefined) {
|
3655 |
+
handled = plugin.particleBounce(particle, delta, direction);
|
3656 |
+
}
|
3657 |
+
|
3658 |
+
if (handled) {
|
3659 |
+
break;
|
3660 |
+
}
|
3661 |
+
}
|
3662 |
+
|
3663 |
+
if (handled) {
|
3664 |
+
return;
|
3665 |
+
}
|
3666 |
+
|
3667 |
+
const pos = particle.getPosition(),
|
3668 |
+
offset = particle.offset,
|
3669 |
+
size = particle.getRadius(),
|
3670 |
+
bounds = Utils.calculateBounds(pos, size),
|
3671 |
+
canvasSize = container.canvas.size;
|
3672 |
+
bounceHorizontal({
|
3673 |
+
particle,
|
3674 |
+
outMode,
|
3675 |
+
direction,
|
3676 |
+
bounds,
|
3677 |
+
canvasSize,
|
3678 |
+
offset,
|
3679 |
+
size
|
3680 |
+
});
|
3681 |
+
bounceVertical({
|
3682 |
+
particle,
|
3683 |
+
outMode,
|
3684 |
+
direction,
|
3685 |
+
bounds,
|
3686 |
+
canvasSize,
|
3687 |
+
offset,
|
3688 |
+
size
|
3689 |
+
});
|
3690 |
+
}
|
3691 |
+
|
3692 |
+
bounceNone(direction) {
|
3693 |
+
const particle = this.particle;
|
3694 |
+
|
3695 |
+
if (particle.options.move.distance) {
|
3696 |
+
return;
|
3697 |
+
}
|
3698 |
+
|
3699 |
+
const gravityOptions = particle.options.move.gravity;
|
3700 |
+
const container = this.container;
|
3701 |
+
|
3702 |
+
if (!gravityOptions.enable) {
|
3703 |
+
if (!Utils.isPointInside(particle.position, container.canvas.size, particle.getRadius(), direction)) {
|
3704 |
+
container.particles.remove(particle);
|
3705 |
+
}
|
3706 |
+
} else {
|
3707 |
+
const position = particle.position;
|
3708 |
+
|
3709 |
+
if (gravityOptions.acceleration >= 0 && position.y > container.canvas.size.height && direction === OutModeDirection.bottom || gravityOptions.acceleration < 0 && position.y < 0 && direction === OutModeDirection.top) {
|
3710 |
+
container.particles.remove(particle);
|
3711 |
+
}
|
3712 |
+
}
|
3713 |
+
}
|
3714 |
+
|
3715 |
+
}
|
3716 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/OptionsColor.js
|
3717 |
+
class OptionsColor {
|
3718 |
+
constructor() {
|
3719 |
+
this.value = "#fff";
|
3720 |
+
}
|
3721 |
+
|
3722 |
+
static create(source, data) {
|
3723 |
+
const color = source !== null && source !== void 0 ? source : new OptionsColor();
|
3724 |
+
|
3725 |
+
if (data !== undefined) {
|
3726 |
+
color.load(typeof data === "string" ? {
|
3727 |
+
value: data
|
3728 |
+
} : data);
|
3729 |
+
}
|
3730 |
+
|
3731 |
+
return color;
|
3732 |
+
}
|
3733 |
+
|
3734 |
+
load(data) {
|
3735 |
+
if ((data === null || data === void 0 ? void 0 : data.value) === undefined) {
|
3736 |
+
return;
|
3737 |
+
}
|
3738 |
+
|
3739 |
+
this.value = data.value;
|
3740 |
+
}
|
3741 |
+
|
3742 |
+
}
|
3743 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Links/LinksShadow.js
|
3744 |
+
|
3745 |
+
class LinksShadow {
|
3746 |
+
constructor() {
|
3747 |
+
this.blur = 5;
|
3748 |
+
this.color = new OptionsColor();
|
3749 |
+
this.enable = false;
|
3750 |
+
this.color.value = "#00ff00";
|
3751 |
+
}
|
3752 |
+
|
3753 |
+
load(data) {
|
3754 |
+
if (data === undefined) {
|
3755 |
+
return;
|
3756 |
+
}
|
3757 |
+
|
3758 |
+
if (data.blur !== undefined) {
|
3759 |
+
this.blur = data.blur;
|
3760 |
+
}
|
3761 |
+
|
3762 |
+
this.color = OptionsColor.create(this.color, data.color);
|
3763 |
+
|
3764 |
+
if (data.enable !== undefined) {
|
3765 |
+
this.enable = data.enable;
|
3766 |
+
}
|
3767 |
+
}
|
3768 |
+
|
3769 |
+
}
|
3770 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Links/LinksTriangle.js
|
3771 |
+
|
3772 |
+
class LinksTriangle {
|
3773 |
+
constructor() {
|
3774 |
+
this.enable = false;
|
3775 |
+
this.frequency = 1;
|
3776 |
+
}
|
3777 |
+
|
3778 |
+
load(data) {
|
3779 |
+
if (data === undefined) {
|
3780 |
+
return;
|
3781 |
+
}
|
3782 |
+
|
3783 |
+
if (data.color !== undefined) {
|
3784 |
+
this.color = OptionsColor.create(this.color, data.color);
|
3785 |
+
}
|
3786 |
+
|
3787 |
+
if (data.enable !== undefined) {
|
3788 |
+
this.enable = data.enable;
|
3789 |
+
}
|
3790 |
+
|
3791 |
+
if (data.frequency !== undefined) {
|
3792 |
+
this.frequency = data.frequency;
|
3793 |
+
}
|
3794 |
+
|
3795 |
+
if (data.opacity !== undefined) {
|
3796 |
+
this.opacity = data.opacity;
|
3797 |
+
}
|
3798 |
+
}
|
3799 |
+
|
3800 |
+
}
|
3801 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Links/Links.js
|
3802 |
+
|
3803 |
+
|
3804 |
+
|
3805 |
+
class Links {
|
3806 |
+
constructor() {
|
3807 |
+
this.blink = false;
|
3808 |
+
this.color = new OptionsColor();
|
3809 |
+
this.consent = false;
|
3810 |
+
this.distance = 100;
|
3811 |
+
this.enable = false;
|
3812 |
+
this.frequency = 1;
|
3813 |
+
this.opacity = 1;
|
3814 |
+
this.shadow = new LinksShadow();
|
3815 |
+
this.triangles = new LinksTriangle();
|
3816 |
+
this.width = 1;
|
3817 |
+
this.warp = false;
|
3818 |
+
}
|
3819 |
+
|
3820 |
+
load(data) {
|
3821 |
+
if (data === undefined) {
|
3822 |
+
return;
|
3823 |
+
}
|
3824 |
+
|
3825 |
+
if (data.id !== undefined) {
|
3826 |
+
this.id = data.id;
|
3827 |
+
}
|
3828 |
+
|
3829 |
+
if (data.blink !== undefined) {
|
3830 |
+
this.blink = data.blink;
|
3831 |
+
}
|
3832 |
+
|
3833 |
+
this.color = OptionsColor.create(this.color, data.color);
|
3834 |
+
|
3835 |
+
if (data.consent !== undefined) {
|
3836 |
+
this.consent = data.consent;
|
3837 |
+
}
|
3838 |
+
|
3839 |
+
if (data.distance !== undefined) {
|
3840 |
+
this.distance = data.distance;
|
3841 |
+
}
|
3842 |
+
|
3843 |
+
if (data.enable !== undefined) {
|
3844 |
+
this.enable = data.enable;
|
3845 |
+
}
|
3846 |
+
|
3847 |
+
if (data.frequency !== undefined) {
|
3848 |
+
this.frequency = data.frequency;
|
3849 |
+
}
|
3850 |
+
|
3851 |
+
if (data.opacity !== undefined) {
|
3852 |
+
this.opacity = data.opacity;
|
3853 |
+
}
|
3854 |
+
|
3855 |
+
this.shadow.load(data.shadow);
|
3856 |
+
this.triangles.load(data.triangles);
|
3857 |
+
|
3858 |
+
if (data.width !== undefined) {
|
3859 |
+
this.width = data.width;
|
3860 |
+
}
|
3861 |
+
|
3862 |
+
if (data.warp !== undefined) {
|
3863 |
+
this.warp = data.warp;
|
3864 |
+
}
|
3865 |
+
}
|
3866 |
+
|
3867 |
+
}
|
3868 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/Attract.js
|
3869 |
+
class Attract {
|
3870 |
+
constructor() {
|
3871 |
+
this.enable = false;
|
3872 |
+
this.rotate = {
|
3873 |
+
x: 3000,
|
3874 |
+
y: 3000
|
3875 |
+
};
|
3876 |
+
}
|
3877 |
+
|
3878 |
+
get rotateX() {
|
3879 |
+
return this.rotate.x;
|
3880 |
+
}
|
3881 |
+
|
3882 |
+
set rotateX(value) {
|
3883 |
+
this.rotate.x = value;
|
3884 |
+
}
|
3885 |
+
|
3886 |
+
get rotateY() {
|
3887 |
+
return this.rotate.y;
|
3888 |
+
}
|
3889 |
+
|
3890 |
+
set rotateY(value) {
|
3891 |
+
this.rotate.y = value;
|
3892 |
+
}
|
3893 |
+
|
3894 |
+
load(data) {
|
3895 |
+
var _a, _b, _c, _d;
|
3896 |
+
|
3897 |
+
if (data === undefined) {
|
3898 |
+
return;
|
3899 |
+
}
|
3900 |
+
|
3901 |
+
if (data.enable !== undefined) {
|
3902 |
+
this.enable = data.enable;
|
3903 |
+
}
|
3904 |
+
|
3905 |
+
const rotateX = (_b = (_a = data.rotate) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : data.rotateX;
|
3906 |
+
|
3907 |
+
if (rotateX !== undefined) {
|
3908 |
+
this.rotate.x = rotateX;
|
3909 |
+
}
|
3910 |
+
|
3911 |
+
const rotateY = (_d = (_c = data.rotate) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : data.rotateY;
|
3912 |
+
|
3913 |
+
if (rotateY !== undefined) {
|
3914 |
+
this.rotate.y = rotateY;
|
3915 |
+
}
|
3916 |
+
}
|
3917 |
+
|
3918 |
+
}
|
3919 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/Trail.js
|
3920 |
+
|
3921 |
+
class Trail {
|
3922 |
+
constructor() {
|
3923 |
+
this.enable = false;
|
3924 |
+
this.length = 10;
|
3925 |
+
this.fillColor = new OptionsColor();
|
3926 |
+
this.fillColor.value = "#000000";
|
3927 |
+
}
|
3928 |
+
|
3929 |
+
load(data) {
|
3930 |
+
if (data === undefined) {
|
3931 |
+
return;
|
3932 |
+
}
|
3933 |
+
|
3934 |
+
if (data.enable !== undefined) {
|
3935 |
+
this.enable = data.enable;
|
3936 |
+
}
|
3937 |
+
|
3938 |
+
this.fillColor = OptionsColor.create(this.fillColor, data.fillColor);
|
3939 |
+
|
3940 |
+
if (data.length !== undefined) {
|
3941 |
+
this.length = data.length;
|
3942 |
+
}
|
3943 |
+
}
|
3944 |
+
|
3945 |
+
}
|
3946 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Random.js
|
3947 |
+
class Random {
|
3948 |
+
constructor() {
|
3949 |
+
this.enable = false;
|
3950 |
+
this.minimumValue = 0;
|
3951 |
+
}
|
3952 |
+
|
3953 |
+
load(data) {
|
3954 |
+
if (!data) {
|
3955 |
+
return;
|
3956 |
+
}
|
3957 |
+
|
3958 |
+
if (data.enable !== undefined) {
|
3959 |
+
this.enable = data.enable;
|
3960 |
+
}
|
3961 |
+
|
3962 |
+
if (data.minimumValue !== undefined) {
|
3963 |
+
this.minimumValue = data.minimumValue;
|
3964 |
+
}
|
3965 |
+
}
|
3966 |
+
|
3967 |
+
}
|
3968 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/ValueWithRandom.js
|
3969 |
+
|
3970 |
+
class ValueWithRandom {
|
3971 |
+
constructor() {
|
3972 |
+
this.random = new Random();
|
3973 |
+
this.value = 0;
|
3974 |
+
}
|
3975 |
+
|
3976 |
+
load(data) {
|
3977 |
+
if (!data) {
|
3978 |
+
return;
|
3979 |
+
}
|
3980 |
+
|
3981 |
+
if (typeof data.random === "boolean") {
|
3982 |
+
this.random.enable = data.random;
|
3983 |
+
} else {
|
3984 |
+
this.random.load(data.random);
|
3985 |
+
}
|
3986 |
+
|
3987 |
+
if (data.value !== undefined) {
|
3988 |
+
this.value = data.value;
|
3989 |
+
}
|
3990 |
+
}
|
3991 |
+
|
3992 |
+
}
|
3993 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/Path/PathDelay.js
|
3994 |
+
|
3995 |
+
class PathDelay extends ValueWithRandom {
|
3996 |
+
constructor() {
|
3997 |
+
super();
|
3998 |
+
}
|
3999 |
+
|
4000 |
+
}
|
4001 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/Path/Path.js
|
4002 |
+
|
4003 |
+
class Path {
|
4004 |
+
constructor() {
|
4005 |
+
this.clamp = true;
|
4006 |
+
this.delay = new PathDelay();
|
4007 |
+
this.enable = false;
|
4008 |
+
}
|
4009 |
+
|
4010 |
+
load(data) {
|
4011 |
+
if (data === undefined) {
|
4012 |
+
return;
|
4013 |
+
}
|
4014 |
+
|
4015 |
+
if (data.clamp !== undefined) {
|
4016 |
+
this.clamp = data.clamp;
|
4017 |
+
}
|
4018 |
+
|
4019 |
+
this.delay.load(data.delay);
|
4020 |
+
|
4021 |
+
if (data.enable !== undefined) {
|
4022 |
+
this.enable = data.enable;
|
4023 |
+
}
|
4024 |
+
|
4025 |
+
this.generator = data.generator;
|
4026 |
+
}
|
4027 |
+
|
4028 |
+
}
|
4029 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/MoveAngle.js
|
4030 |
+
class MoveAngle {
|
4031 |
+
constructor() {
|
4032 |
+
this.offset = 45;
|
4033 |
+
this.value = 90;
|
4034 |
+
}
|
4035 |
+
|
4036 |
+
load(data) {
|
4037 |
+
if (data === undefined) {
|
4038 |
+
return;
|
4039 |
+
}
|
4040 |
+
|
4041 |
+
if (data.offset !== undefined) {
|
4042 |
+
this.offset = data.offset;
|
4043 |
+
}
|
4044 |
+
|
4045 |
+
if (data.value !== undefined) {
|
4046 |
+
this.value = data.value;
|
4047 |
+
}
|
4048 |
+
}
|
4049 |
+
|
4050 |
+
}
|
4051 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/MoveGravity.js
|
4052 |
+
class MoveGravity {
|
4053 |
+
constructor() {
|
4054 |
+
this.acceleration = 9.81;
|
4055 |
+
this.enable = false;
|
4056 |
+
this.maxSpeed = 50;
|
4057 |
+
}
|
4058 |
+
|
4059 |
+
load(data) {
|
4060 |
+
if (!data) {
|
4061 |
+
return;
|
4062 |
+
}
|
4063 |
+
|
4064 |
+
if (data.acceleration !== undefined) {
|
4065 |
+
this.acceleration = data.acceleration;
|
4066 |
+
}
|
4067 |
+
|
4068 |
+
if (data.enable !== undefined) {
|
4069 |
+
this.enable = data.enable;
|
4070 |
+
}
|
4071 |
+
|
4072 |
+
if (data.maxSpeed !== undefined) {
|
4073 |
+
this.maxSpeed = data.maxSpeed;
|
4074 |
+
}
|
4075 |
+
}
|
4076 |
+
|
4077 |
+
}
|
4078 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/OutModes.js
|
4079 |
+
|
4080 |
+
class OutModes {
|
4081 |
+
constructor() {
|
4082 |
+
this.default = OutMode.out;
|
4083 |
+
}
|
4084 |
+
|
4085 |
+
load(data) {
|
4086 |
+
var _a, _b, _c, _d;
|
4087 |
+
|
4088 |
+
if (!data) {
|
4089 |
+
return;
|
4090 |
+
}
|
4091 |
+
|
4092 |
+
if (data.default !== undefined) {
|
4093 |
+
this.default = data.default;
|
4094 |
+
}
|
4095 |
+
|
4096 |
+
this.bottom = (_a = data.bottom) !== null && _a !== void 0 ? _a : data.default;
|
4097 |
+
this.left = (_b = data.left) !== null && _b !== void 0 ? _b : data.default;
|
4098 |
+
this.right = (_c = data.right) !== null && _c !== void 0 ? _c : data.default;
|
4099 |
+
this.top = (_d = data.top) !== null && _d !== void 0 ? _d : data.default;
|
4100 |
+
}
|
4101 |
+
|
4102 |
+
}
|
4103 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Move/Move.js
|
4104 |
+
|
4105 |
+
|
4106 |
+
|
4107 |
+
|
4108 |
+
|
4109 |
+
|
4110 |
+
|
4111 |
+
class Move {
|
4112 |
+
constructor() {
|
4113 |
+
this.angle = new MoveAngle();
|
4114 |
+
this.attract = new Attract();
|
4115 |
+
this.decay = 0;
|
4116 |
+
this.direction = MoveDirection.none;
|
4117 |
+
this.distance = 0;
|
4118 |
+
this.enable = false;
|
4119 |
+
this.gravity = new MoveGravity();
|
4120 |
+
this.path = new Path();
|
4121 |
+
this.outModes = new OutModes();
|
4122 |
+
this.random = false;
|
4123 |
+
this.size = false;
|
4124 |
+
this.speed = 2;
|
4125 |
+
this.straight = false;
|
4126 |
+
this.trail = new Trail();
|
4127 |
+
this.vibrate = false;
|
4128 |
+
this.warp = false;
|
4129 |
+
}
|
4130 |
+
|
4131 |
+
get collisions() {
|
4132 |
+
return false;
|
4133 |
+
}
|
4134 |
+
|
4135 |
+
set collisions(value) {}
|
4136 |
+
|
4137 |
+
get bounce() {
|
4138 |
+
return this.collisions;
|
4139 |
+
}
|
4140 |
+
|
4141 |
+
set bounce(value) {
|
4142 |
+
this.collisions = value;
|
4143 |
+
}
|
4144 |
+
|
4145 |
+
get out_mode() {
|
4146 |
+
return this.outMode;
|
4147 |
+
}
|
4148 |
+
|
4149 |
+
set out_mode(value) {
|
4150 |
+
this.outMode = value;
|
4151 |
+
}
|
4152 |
+
|
4153 |
+
get outMode() {
|
4154 |
+
return this.outModes.default;
|
4155 |
+
}
|
4156 |
+
|
4157 |
+
set outMode(value) {
|
4158 |
+
this.outModes.default = value;
|
4159 |
+
}
|
4160 |
+
|
4161 |
+
get noise() {
|
4162 |
+
return this.path;
|
4163 |
+
}
|
4164 |
+
|
4165 |
+
set noise(value) {
|
4166 |
+
this.path = value;
|
4167 |
+
}
|
4168 |
+
|
4169 |
+
load(data) {
|
4170 |
+
var _a, _b, _c;
|
4171 |
+
|
4172 |
+
if (data === undefined) {
|
4173 |
+
return;
|
4174 |
+
}
|
4175 |
+
|
4176 |
+
if (data.angle !== undefined) {
|
4177 |
+
if (typeof data.angle === "number") {
|
4178 |
+
this.angle.value = data.angle;
|
4179 |
+
} else {
|
4180 |
+
this.angle.load(data.angle);
|
4181 |
+
}
|
4182 |
+
}
|
4183 |
+
|
4184 |
+
this.attract.load(data.attract);
|
4185 |
+
|
4186 |
+
if (data.decay !== undefined) {
|
4187 |
+
this.decay = data.decay;
|
4188 |
+
}
|
4189 |
+
|
4190 |
+
if (data.direction !== undefined) {
|
4191 |
+
this.direction = data.direction;
|
4192 |
+
}
|
4193 |
+
|
4194 |
+
if (data.distance !== undefined) {
|
4195 |
+
this.distance = data.distance;
|
4196 |
+
}
|
4197 |
+
|
4198 |
+
if (data.enable !== undefined) {
|
4199 |
+
this.enable = data.enable;
|
4200 |
+
}
|
4201 |
+
|
4202 |
+
this.gravity.load(data.gravity);
|
4203 |
+
const outMode = (_a = data.outMode) !== null && _a !== void 0 ? _a : data.out_mode;
|
4204 |
+
|
4205 |
+
if (data.outModes !== undefined || outMode !== undefined) {
|
4206 |
+
if (typeof data.outModes === "string" || data.outModes === undefined && outMode !== undefined) {
|
4207 |
+
this.outModes.load({
|
4208 |
+
default: (_b = data.outModes) !== null && _b !== void 0 ? _b : outMode
|
4209 |
+
});
|
4210 |
+
} else {
|
4211 |
+
this.outModes.load(data.outModes);
|
4212 |
+
}
|
4213 |
+
}
|
4214 |
+
|
4215 |
+
this.path.load((_c = data.path) !== null && _c !== void 0 ? _c : data.noise);
|
4216 |
+
|
4217 |
+
if (data.random !== undefined) {
|
4218 |
+
this.random = data.random;
|
4219 |
+
}
|
4220 |
+
|
4221 |
+
if (data.size !== undefined) {
|
4222 |
+
this.size = data.size;
|
4223 |
+
}
|
4224 |
+
|
4225 |
+
if (data.speed !== undefined) {
|
4226 |
+
this.speed = data.speed;
|
4227 |
+
}
|
4228 |
+
|
4229 |
+
if (data.straight !== undefined) {
|
4230 |
+
this.straight = data.straight;
|
4231 |
+
}
|
4232 |
+
|
4233 |
+
this.trail.load(data.trail);
|
4234 |
+
|
4235 |
+
if (data.vibrate !== undefined) {
|
4236 |
+
this.vibrate = data.vibrate;
|
4237 |
+
}
|
4238 |
+
|
4239 |
+
if (data.warp !== undefined) {
|
4240 |
+
this.warp = data.warp;
|
4241 |
+
}
|
4242 |
+
}
|
4243 |
+
|
4244 |
+
}
|
4245 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Number/Density.js
|
4246 |
+
class Density {
|
4247 |
+
constructor() {
|
4248 |
+
this.enable = false;
|
4249 |
+
this.area = 800;
|
4250 |
+
this.factor = 1000;
|
4251 |
+
}
|
4252 |
+
|
4253 |
+
get value_area() {
|
4254 |
+
return this.area;
|
4255 |
+
}
|
4256 |
+
|
4257 |
+
set value_area(value) {
|
4258 |
+
this.area = value;
|
4259 |
+
}
|
4260 |
+
|
4261 |
+
load(data) {
|
4262 |
+
var _a;
|
4263 |
+
|
4264 |
+
if (data === undefined) {
|
4265 |
+
return;
|
4266 |
+
}
|
4267 |
+
|
4268 |
+
if (data.enable !== undefined) {
|
4269 |
+
this.enable = data.enable;
|
4270 |
+
}
|
4271 |
+
|
4272 |
+
const area = (_a = data.area) !== null && _a !== void 0 ? _a : data.value_area;
|
4273 |
+
|
4274 |
+
if (area !== undefined) {
|
4275 |
+
this.area = area;
|
4276 |
+
}
|
4277 |
+
|
4278 |
+
if (data.factor !== undefined) {
|
4279 |
+
this.factor = data.factor;
|
4280 |
+
}
|
4281 |
+
}
|
4282 |
+
|
4283 |
+
}
|
4284 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Number/ParticlesNumber.js
|
4285 |
+
|
4286 |
+
class ParticlesNumber {
|
4287 |
+
constructor() {
|
4288 |
+
this.density = new Density();
|
4289 |
+
this.limit = 0;
|
4290 |
+
this.value = 100;
|
4291 |
+
}
|
4292 |
+
|
4293 |
+
get max() {
|
4294 |
+
return this.limit;
|
4295 |
+
}
|
4296 |
+
|
4297 |
+
set max(value) {
|
4298 |
+
this.limit = value;
|
4299 |
+
}
|
4300 |
+
|
4301 |
+
load(data) {
|
4302 |
+
var _a;
|
4303 |
+
|
4304 |
+
if (data === undefined) {
|
4305 |
+
return;
|
4306 |
+
}
|
4307 |
+
|
4308 |
+
this.density.load(data.density);
|
4309 |
+
const limit = (_a = data.limit) !== null && _a !== void 0 ? _a : data.max;
|
4310 |
+
|
4311 |
+
if (limit !== undefined) {
|
4312 |
+
this.limit = limit;
|
4313 |
+
}
|
4314 |
+
|
4315 |
+
if (data.value !== undefined) {
|
4316 |
+
this.value = data.value;
|
4317 |
+
}
|
4318 |
+
}
|
4319 |
+
|
4320 |
+
}
|
4321 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/AnimationOptions.js
|
4322 |
+
class AnimationOptions {
|
4323 |
+
constructor() {
|
4324 |
+
this.count = 0;
|
4325 |
+
this.enable = false;
|
4326 |
+
this.speed = 1;
|
4327 |
+
this.sync = false;
|
4328 |
+
}
|
4329 |
+
|
4330 |
+
load(data) {
|
4331 |
+
if (!data) {
|
4332 |
+
return;
|
4333 |
+
}
|
4334 |
+
|
4335 |
+
if (data.count !== undefined) {
|
4336 |
+
this.count = data.count;
|
4337 |
+
}
|
4338 |
+
|
4339 |
+
if (data.enable !== undefined) {
|
4340 |
+
this.enable = data.enable;
|
4341 |
+
}
|
4342 |
+
|
4343 |
+
if (data.speed !== undefined) {
|
4344 |
+
this.speed = data.speed;
|
4345 |
+
}
|
4346 |
+
|
4347 |
+
if (data.sync !== undefined) {
|
4348 |
+
this.sync = data.sync;
|
4349 |
+
}
|
4350 |
+
}
|
4351 |
+
|
4352 |
+
}
|
4353 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Opacity/OpacityAnimation.js
|
4354 |
+
|
4355 |
+
|
4356 |
+
class OpacityAnimation extends AnimationOptions {
|
4357 |
+
constructor() {
|
4358 |
+
super();
|
4359 |
+
this.destroy = DestroyType.none;
|
4360 |
+
this.enable = false;
|
4361 |
+
this.minimumValue = 0;
|
4362 |
+
this.speed = 2;
|
4363 |
+
this.startValue = StartValueType.random;
|
4364 |
+
this.sync = false;
|
4365 |
+
}
|
4366 |
+
|
4367 |
+
get opacity_min() {
|
4368 |
+
return this.minimumValue;
|
4369 |
+
}
|
4370 |
+
|
4371 |
+
set opacity_min(value) {
|
4372 |
+
this.minimumValue = value;
|
4373 |
+
}
|
4374 |
+
|
4375 |
+
load(data) {
|
4376 |
+
var _a;
|
4377 |
+
|
4378 |
+
if (data === undefined) {
|
4379 |
+
return;
|
4380 |
+
}
|
4381 |
+
|
4382 |
+
super.load(data);
|
4383 |
+
|
4384 |
+
if (data.destroy !== undefined) {
|
4385 |
+
this.destroy = data.destroy;
|
4386 |
+
}
|
4387 |
+
|
4388 |
+
if (data.enable !== undefined) {
|
4389 |
+
this.enable = data.enable;
|
4390 |
+
}
|
4391 |
+
|
4392 |
+
const minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.opacity_min;
|
4393 |
+
|
4394 |
+
if (minimumValue !== undefined) {
|
4395 |
+
this.minimumValue = minimumValue;
|
4396 |
+
}
|
4397 |
+
|
4398 |
+
if (data.speed !== undefined) {
|
4399 |
+
this.speed = data.speed;
|
4400 |
+
}
|
4401 |
+
|
4402 |
+
if (data.startValue !== undefined) {
|
4403 |
+
this.startValue = data.startValue;
|
4404 |
+
}
|
4405 |
+
|
4406 |
+
if (data.sync !== undefined) {
|
4407 |
+
this.sync = data.sync;
|
4408 |
+
}
|
4409 |
+
}
|
4410 |
+
|
4411 |
+
}
|
4412 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Opacity/Opacity.js
|
4413 |
+
|
4414 |
+
|
4415 |
+
class Opacity extends ValueWithRandom {
|
4416 |
+
constructor() {
|
4417 |
+
super();
|
4418 |
+
this.animation = new OpacityAnimation();
|
4419 |
+
this.random.minimumValue = 0.1;
|
4420 |
+
this.value = 1;
|
4421 |
+
}
|
4422 |
+
|
4423 |
+
get anim() {
|
4424 |
+
return this.animation;
|
4425 |
+
}
|
4426 |
+
|
4427 |
+
set anim(value) {
|
4428 |
+
this.animation = value;
|
4429 |
+
}
|
4430 |
+
|
4431 |
+
load(data) {
|
4432 |
+
var _a;
|
4433 |
+
|
4434 |
+
if (!data) {
|
4435 |
+
return;
|
4436 |
+
}
|
4437 |
+
|
4438 |
+
super.load(data);
|
4439 |
+
this.animation.load((_a = data.animation) !== null && _a !== void 0 ? _a : data.anim);
|
4440 |
+
}
|
4441 |
+
|
4442 |
+
}
|
4443 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Shape/Shape.js
|
4444 |
+
|
4445 |
+
|
4446 |
+
class Shape {
|
4447 |
+
constructor() {
|
4448 |
+
this.options = {};
|
4449 |
+
this.type = ShapeType.circle;
|
4450 |
+
}
|
4451 |
+
|
4452 |
+
get image() {
|
4453 |
+
var _a;
|
4454 |
+
|
4455 |
+
return (_a = this.options[ShapeType.image]) !== null && _a !== void 0 ? _a : this.options[ShapeType.images];
|
4456 |
+
}
|
4457 |
+
|
4458 |
+
set image(value) {
|
4459 |
+
this.options[ShapeType.image] = value;
|
4460 |
+
this.options[ShapeType.images] = value;
|
4461 |
+
}
|
4462 |
+
|
4463 |
+
get custom() {
|
4464 |
+
return this.options;
|
4465 |
+
}
|
4466 |
+
|
4467 |
+
set custom(value) {
|
4468 |
+
this.options = value;
|
4469 |
+
}
|
4470 |
+
|
4471 |
+
get images() {
|
4472 |
+
return this.image instanceof Array ? this.image : [this.image];
|
4473 |
+
}
|
4474 |
+
|
4475 |
+
set images(value) {
|
4476 |
+
this.image = value;
|
4477 |
+
}
|
4478 |
+
|
4479 |
+
get stroke() {
|
4480 |
+
return [];
|
4481 |
+
}
|
4482 |
+
|
4483 |
+
set stroke(_value) {}
|
4484 |
+
|
4485 |
+
get character() {
|
4486 |
+
var _a;
|
4487 |
+
|
4488 |
+
return (_a = this.options[ShapeType.character]) !== null && _a !== void 0 ? _a : this.options[ShapeType.char];
|
4489 |
+
}
|
4490 |
+
|
4491 |
+
set character(value) {
|
4492 |
+
this.options[ShapeType.character] = value;
|
4493 |
+
this.options[ShapeType.char] = value;
|
4494 |
+
}
|
4495 |
+
|
4496 |
+
get polygon() {
|
4497 |
+
var _a;
|
4498 |
+
|
4499 |
+
return (_a = this.options[ShapeType.polygon]) !== null && _a !== void 0 ? _a : this.options[ShapeType.star];
|
4500 |
+
}
|
4501 |
+
|
4502 |
+
set polygon(value) {
|
4503 |
+
this.options[ShapeType.polygon] = value;
|
4504 |
+
this.options[ShapeType.star] = value;
|
4505 |
+
}
|
4506 |
+
|
4507 |
+
load(data) {
|
4508 |
+
var _a, _b, _c;
|
4509 |
+
|
4510 |
+
if (data === undefined) {
|
4511 |
+
return;
|
4512 |
+
}
|
4513 |
+
|
4514 |
+
const options = (_a = data.options) !== null && _a !== void 0 ? _a : data.custom;
|
4515 |
+
|
4516 |
+
if (options !== undefined) {
|
4517 |
+
for (const shape in options) {
|
4518 |
+
const item = options[shape];
|
4519 |
+
|
4520 |
+
if (item !== undefined) {
|
4521 |
+
this.options[shape] = Utils.deepExtend((_b = this.options[shape]) !== null && _b !== void 0 ? _b : {}, item);
|
4522 |
+
}
|
4523 |
+
}
|
4524 |
+
}
|
4525 |
+
|
4526 |
+
this.loadShape(data.character, ShapeType.character, ShapeType.char, true);
|
4527 |
+
this.loadShape(data.polygon, ShapeType.polygon, ShapeType.star, false);
|
4528 |
+
this.loadShape((_c = data.image) !== null && _c !== void 0 ? _c : data.images, ShapeType.image, ShapeType.images, true);
|
4529 |
+
|
4530 |
+
if (data.type !== undefined) {
|
4531 |
+
this.type = data.type;
|
4532 |
+
}
|
4533 |
+
}
|
4534 |
+
|
4535 |
+
loadShape(item, mainKey, altKey, altOverride) {
|
4536 |
+
var _a, _b, _c, _d;
|
4537 |
+
|
4538 |
+
if (item === undefined) {
|
4539 |
+
return;
|
4540 |
+
}
|
4541 |
+
|
4542 |
+
if (item instanceof Array) {
|
4543 |
+
if (!(this.options[mainKey] instanceof Array)) {
|
4544 |
+
this.options[mainKey] = [];
|
4545 |
+
|
4546 |
+
if (!this.options[altKey] || altOverride) {
|
4547 |
+
this.options[altKey] = [];
|
4548 |
+
}
|
4549 |
+
}
|
4550 |
+
|
4551 |
+
this.options[mainKey] = Utils.deepExtend((_a = this.options[mainKey]) !== null && _a !== void 0 ? _a : [], item);
|
4552 |
+
|
4553 |
+
if (!this.options[altKey] || altOverride) {
|
4554 |
+
this.options[altKey] = Utils.deepExtend((_b = this.options[altKey]) !== null && _b !== void 0 ? _b : [], item);
|
4555 |
+
}
|
4556 |
+
} else {
|
4557 |
+
if (this.options[mainKey] instanceof Array) {
|
4558 |
+
this.options[mainKey] = {};
|
4559 |
+
|
4560 |
+
if (!this.options[altKey] || altOverride) {
|
4561 |
+
this.options[altKey] = {};
|
4562 |
+
}
|
4563 |
+
}
|
4564 |
+
|
4565 |
+
this.options[mainKey] = Utils.deepExtend((_c = this.options[mainKey]) !== null && _c !== void 0 ? _c : {}, item);
|
4566 |
+
|
4567 |
+
if (!this.options[altKey] || altOverride) {
|
4568 |
+
this.options[altKey] = Utils.deepExtend((_d = this.options[altKey]) !== null && _d !== void 0 ? _d : {}, item);
|
4569 |
+
}
|
4570 |
+
}
|
4571 |
+
}
|
4572 |
+
|
4573 |
+
}
|
4574 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Size/SizeAnimation.js
|
4575 |
+
|
4576 |
+
|
4577 |
+
class SizeAnimation extends AnimationOptions {
|
4578 |
+
constructor() {
|
4579 |
+
super();
|
4580 |
+
this.destroy = DestroyType.none;
|
4581 |
+
this.enable = false;
|
4582 |
+
this.minimumValue = 0;
|
4583 |
+
this.speed = 5;
|
4584 |
+
this.startValue = StartValueType.random;
|
4585 |
+
this.sync = false;
|
4586 |
+
}
|
4587 |
+
|
4588 |
+
get size_min() {
|
4589 |
+
return this.minimumValue;
|
4590 |
+
}
|
4591 |
+
|
4592 |
+
set size_min(value) {
|
4593 |
+
this.minimumValue = value;
|
4594 |
+
}
|
4595 |
+
|
4596 |
+
load(data) {
|
4597 |
+
var _a;
|
4598 |
+
|
4599 |
+
if (data === undefined) {
|
4600 |
+
return;
|
4601 |
+
}
|
4602 |
+
|
4603 |
+
super.load(data);
|
4604 |
+
|
4605 |
+
if (data.destroy !== undefined) {
|
4606 |
+
this.destroy = data.destroy;
|
4607 |
+
}
|
4608 |
+
|
4609 |
+
if (data.enable !== undefined) {
|
4610 |
+
this.enable = data.enable;
|
4611 |
+
}
|
4612 |
+
|
4613 |
+
const minimumValue = (_a = data.minimumValue) !== null && _a !== void 0 ? _a : data.size_min;
|
4614 |
+
|
4615 |
+
if (minimumValue !== undefined) {
|
4616 |
+
this.minimumValue = minimumValue;
|
4617 |
+
}
|
4618 |
+
|
4619 |
+
if (data.speed !== undefined) {
|
4620 |
+
this.speed = data.speed;
|
4621 |
+
}
|
4622 |
+
|
4623 |
+
if (data.startValue !== undefined) {
|
4624 |
+
this.startValue = data.startValue;
|
4625 |
+
}
|
4626 |
+
|
4627 |
+
if (data.sync !== undefined) {
|
4628 |
+
this.sync = data.sync;
|
4629 |
+
}
|
4630 |
+
}
|
4631 |
+
|
4632 |
+
}
|
4633 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Size/Size.js
|
4634 |
+
|
4635 |
+
|
4636 |
+
class Size extends ValueWithRandom {
|
4637 |
+
constructor() {
|
4638 |
+
super();
|
4639 |
+
this.animation = new SizeAnimation();
|
4640 |
+
this.random.minimumValue = 1;
|
4641 |
+
this.value = 3;
|
4642 |
+
}
|
4643 |
+
|
4644 |
+
get anim() {
|
4645 |
+
return this.animation;
|
4646 |
+
}
|
4647 |
+
|
4648 |
+
set anim(value) {
|
4649 |
+
this.animation = value;
|
4650 |
+
}
|
4651 |
+
|
4652 |
+
load(data) {
|
4653 |
+
var _a;
|
4654 |
+
|
4655 |
+
if (!data) {
|
4656 |
+
return;
|
4657 |
+
}
|
4658 |
+
|
4659 |
+
super.load(data);
|
4660 |
+
const animation = (_a = data.animation) !== null && _a !== void 0 ? _a : data.anim;
|
4661 |
+
|
4662 |
+
if (animation !== undefined) {
|
4663 |
+
this.animation.load(animation);
|
4664 |
+
}
|
4665 |
+
}
|
4666 |
+
|
4667 |
+
}
|
4668 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Rotate/RotateAnimation.js
|
4669 |
+
class RotateAnimation {
|
4670 |
+
constructor() {
|
4671 |
+
this.enable = false;
|
4672 |
+
this.speed = 0;
|
4673 |
+
this.sync = false;
|
4674 |
+
}
|
4675 |
+
|
4676 |
+
load(data) {
|
4677 |
+
if (data === undefined) {
|
4678 |
+
return;
|
4679 |
+
}
|
4680 |
+
|
4681 |
+
if (data.enable !== undefined) {
|
4682 |
+
this.enable = data.enable;
|
4683 |
+
}
|
4684 |
+
|
4685 |
+
if (data.speed !== undefined) {
|
4686 |
+
this.speed = data.speed;
|
4687 |
+
}
|
4688 |
+
|
4689 |
+
if (data.sync !== undefined) {
|
4690 |
+
this.sync = data.sync;
|
4691 |
+
}
|
4692 |
+
}
|
4693 |
+
|
4694 |
+
}
|
4695 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Rotate/Rotate.js
|
4696 |
+
|
4697 |
+
|
4698 |
+
|
4699 |
+
class Rotate extends ValueWithRandom {
|
4700 |
+
constructor() {
|
4701 |
+
super();
|
4702 |
+
this.animation = new RotateAnimation();
|
4703 |
+
this.direction = RotateDirection.clockwise;
|
4704 |
+
this.path = false;
|
4705 |
+
}
|
4706 |
+
|
4707 |
+
load(data) {
|
4708 |
+
if (!data) {
|
4709 |
+
return;
|
4710 |
+
}
|
4711 |
+
|
4712 |
+
super.load(data);
|
4713 |
+
|
4714 |
+
if (data.direction !== undefined) {
|
4715 |
+
this.direction = data.direction;
|
4716 |
+
}
|
4717 |
+
|
4718 |
+
this.animation.load(data.animation);
|
4719 |
+
|
4720 |
+
if (data.path !== undefined) {
|
4721 |
+
this.path = data.path;
|
4722 |
+
}
|
4723 |
+
}
|
4724 |
+
|
4725 |
+
}
|
4726 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Shadow.js
|
4727 |
+
|
4728 |
+
class Shadow {
|
4729 |
+
constructor() {
|
4730 |
+
this.blur = 0;
|
4731 |
+
this.color = new OptionsColor();
|
4732 |
+
this.enable = false;
|
4733 |
+
this.offset = {
|
4734 |
+
x: 0,
|
4735 |
+
y: 0
|
4736 |
+
};
|
4737 |
+
this.color.value = "#000000";
|
4738 |
+
}
|
4739 |
+
|
4740 |
+
load(data) {
|
4741 |
+
if (data === undefined) {
|
4742 |
+
return;
|
4743 |
+
}
|
4744 |
+
|
4745 |
+
if (data.blur !== undefined) {
|
4746 |
+
this.blur = data.blur;
|
4747 |
+
}
|
4748 |
+
|
4749 |
+
this.color = OptionsColor.create(this.color, data.color);
|
4750 |
+
|
4751 |
+
if (data.enable !== undefined) {
|
4752 |
+
this.enable = data.enable;
|
4753 |
+
}
|
4754 |
+
|
4755 |
+
if (data.offset === undefined) {
|
4756 |
+
return;
|
4757 |
+
}
|
4758 |
+
|
4759 |
+
if (data.offset.x !== undefined) {
|
4760 |
+
this.offset.x = data.offset.x;
|
4761 |
+
}
|
4762 |
+
|
4763 |
+
if (data.offset.y !== undefined) {
|
4764 |
+
this.offset.y = data.offset.y;
|
4765 |
+
}
|
4766 |
+
}
|
4767 |
+
|
4768 |
+
}
|
4769 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/ColorAnimation.js
|
4770 |
+
|
4771 |
+
class ColorAnimation {
|
4772 |
+
constructor() {
|
4773 |
+
this.count = 0;
|
4774 |
+
this.enable = false;
|
4775 |
+
this.offset = 0;
|
4776 |
+
this.speed = 1;
|
4777 |
+
this.sync = true;
|
4778 |
+
}
|
4779 |
+
|
4780 |
+
load(data) {
|
4781 |
+
if (data === undefined) {
|
4782 |
+
return;
|
4783 |
+
}
|
4784 |
+
|
4785 |
+
if (data.count !== undefined) {
|
4786 |
+
this.count = data.count;
|
4787 |
+
}
|
4788 |
+
|
4789 |
+
if (data.enable !== undefined) {
|
4790 |
+
this.enable = data.enable;
|
4791 |
+
}
|
4792 |
+
|
4793 |
+
if (data.offset !== undefined) {
|
4794 |
+
this.offset = NumberUtils.setRangeValue(data.offset);
|
4795 |
+
}
|
4796 |
+
|
4797 |
+
if (data.speed !== undefined) {
|
4798 |
+
this.speed = data.speed;
|
4799 |
+
}
|
4800 |
+
|
4801 |
+
if (data.sync !== undefined) {
|
4802 |
+
this.sync = data.sync;
|
4803 |
+
}
|
4804 |
+
}
|
4805 |
+
|
4806 |
+
}
|
4807 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/HslAnimation.js
|
4808 |
+
|
4809 |
+
class HslAnimation {
|
4810 |
+
constructor() {
|
4811 |
+
this.h = new ColorAnimation();
|
4812 |
+
this.s = new ColorAnimation();
|
4813 |
+
this.l = new ColorAnimation();
|
4814 |
+
}
|
4815 |
+
|
4816 |
+
load(data) {
|
4817 |
+
if (!data) {
|
4818 |
+
return;
|
4819 |
+
}
|
4820 |
+
|
4821 |
+
this.h.load(data.h);
|
4822 |
+
this.s.load(data.s);
|
4823 |
+
this.l.load(data.l);
|
4824 |
+
}
|
4825 |
+
|
4826 |
+
}
|
4827 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/AnimatableColor.js
|
4828 |
+
|
4829 |
+
|
4830 |
+
class AnimatableColor extends OptionsColor {
|
4831 |
+
constructor() {
|
4832 |
+
super();
|
4833 |
+
this.animation = new HslAnimation();
|
4834 |
+
}
|
4835 |
+
|
4836 |
+
static create(source, data) {
|
4837 |
+
const color = source !== null && source !== void 0 ? source : new AnimatableColor();
|
4838 |
+
|
4839 |
+
if (data !== undefined) {
|
4840 |
+
color.load(typeof data === "string" ? {
|
4841 |
+
value: data
|
4842 |
+
} : data);
|
4843 |
+
}
|
4844 |
+
|
4845 |
+
return color;
|
4846 |
+
}
|
4847 |
+
|
4848 |
+
load(data) {
|
4849 |
+
super.load(data);
|
4850 |
+
|
4851 |
+
if (!data) {
|
4852 |
+
return;
|
4853 |
+
}
|
4854 |
+
|
4855 |
+
const colorAnimation = data.animation;
|
4856 |
+
|
4857 |
+
if (colorAnimation !== undefined) {
|
4858 |
+
if (colorAnimation.enable !== undefined) {
|
4859 |
+
this.animation.h.load(colorAnimation);
|
4860 |
+
} else {
|
4861 |
+
this.animation.load(data.animation);
|
4862 |
+
}
|
4863 |
+
}
|
4864 |
+
}
|
4865 |
+
|
4866 |
+
}
|
4867 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Stroke.js
|
4868 |
+
|
4869 |
+
class Stroke {
|
4870 |
+
constructor() {
|
4871 |
+
this.width = 0;
|
4872 |
+
}
|
4873 |
+
|
4874 |
+
load(data) {
|
4875 |
+
if (data === undefined) {
|
4876 |
+
return;
|
4877 |
+
}
|
4878 |
+
|
4879 |
+
if (data.color !== undefined) {
|
4880 |
+
this.color = AnimatableColor.create(this.color, data.color);
|
4881 |
+
}
|
4882 |
+
|
4883 |
+
if (data.width !== undefined) {
|
4884 |
+
this.width = data.width;
|
4885 |
+
}
|
4886 |
+
|
4887 |
+
if (data.opacity !== undefined) {
|
4888 |
+
this.opacity = data.opacity;
|
4889 |
+
}
|
4890 |
+
}
|
4891 |
+
|
4892 |
+
}
|
4893 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Bounce/BounceFactor.js
|
4894 |
+
|
4895 |
+
class BounceFactor extends ValueWithRandom {
|
4896 |
+
constructor() {
|
4897 |
+
super();
|
4898 |
+
this.random.minimumValue = 0.1;
|
4899 |
+
this.value = 1;
|
4900 |
+
}
|
4901 |
+
|
4902 |
+
}
|
4903 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Bounce/Bounce.js
|
4904 |
+
|
4905 |
+
class Bounce {
|
4906 |
+
constructor() {
|
4907 |
+
this.horizontal = new BounceFactor();
|
4908 |
+
this.vertical = new BounceFactor();
|
4909 |
+
}
|
4910 |
+
|
4911 |
+
load(data) {
|
4912 |
+
if (!data) {
|
4913 |
+
return;
|
4914 |
+
}
|
4915 |
+
|
4916 |
+
this.horizontal.load(data.horizontal);
|
4917 |
+
this.vertical.load(data.vertical);
|
4918 |
+
}
|
4919 |
+
|
4920 |
+
}
|
4921 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Collisions/CollisionsOverlap.js
|
4922 |
+
class CollisionsOverlap {
|
4923 |
+
constructor() {
|
4924 |
+
this.enable = true;
|
4925 |
+
this.retries = 0;
|
4926 |
+
}
|
4927 |
+
|
4928 |
+
load(data) {
|
4929 |
+
if (!data) {
|
4930 |
+
return;
|
4931 |
+
}
|
4932 |
+
|
4933 |
+
if (data.enable !== undefined) {
|
4934 |
+
this.enable = data.enable;
|
4935 |
+
}
|
4936 |
+
|
4937 |
+
if (data.retries !== undefined) {
|
4938 |
+
this.retries = data.retries;
|
4939 |
+
}
|
4940 |
+
}
|
4941 |
+
|
4942 |
+
}
|
4943 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Collisions/Collisions.js
|
4944 |
+
|
4945 |
+
|
4946 |
+
|
4947 |
+
class Collisions {
|
4948 |
+
constructor() {
|
4949 |
+
this.bounce = new Bounce();
|
4950 |
+
this.enable = false;
|
4951 |
+
this.mode = CollisionMode.bounce;
|
4952 |
+
this.overlap = new CollisionsOverlap();
|
4953 |
+
}
|
4954 |
+
|
4955 |
+
load(data) {
|
4956 |
+
if (data === undefined) {
|
4957 |
+
return;
|
4958 |
+
}
|
4959 |
+
|
4960 |
+
this.bounce.load(data.bounce);
|
4961 |
+
|
4962 |
+
if (data.enable !== undefined) {
|
4963 |
+
this.enable = data.enable;
|
4964 |
+
}
|
4965 |
+
|
4966 |
+
if (data.mode !== undefined) {
|
4967 |
+
this.mode = data.mode;
|
4968 |
+
}
|
4969 |
+
|
4970 |
+
this.overlap.load(data.overlap);
|
4971 |
+
}
|
4972 |
+
|
4973 |
+
}
|
4974 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Twinkle/TwinkleValues.js
|
4975 |
+
|
4976 |
+
class TwinkleValues {
|
4977 |
+
constructor() {
|
4978 |
+
this.enable = false;
|
4979 |
+
this.frequency = 0.05;
|
4980 |
+
this.opacity = 1;
|
4981 |
+
}
|
4982 |
+
|
4983 |
+
load(data) {
|
4984 |
+
if (data === undefined) {
|
4985 |
+
return;
|
4986 |
+
}
|
4987 |
+
|
4988 |
+
if (data.color !== undefined) {
|
4989 |
+
this.color = OptionsColor.create(this.color, data.color);
|
4990 |
+
}
|
4991 |
+
|
4992 |
+
if (data.enable !== undefined) {
|
4993 |
+
this.enable = data.enable;
|
4994 |
+
}
|
4995 |
+
|
4996 |
+
if (data.frequency !== undefined) {
|
4997 |
+
this.frequency = data.frequency;
|
4998 |
+
}
|
4999 |
+
|
5000 |
+
if (data.opacity !== undefined) {
|
5001 |
+
this.opacity = data.opacity;
|
5002 |
+
}
|
5003 |
+
}
|
5004 |
+
|
5005 |
+
}
|
5006 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Twinkle/Twinkle.js
|
5007 |
+
|
5008 |
+
class Twinkle {
|
5009 |
+
constructor() {
|
5010 |
+
this.lines = new TwinkleValues();
|
5011 |
+
this.particles = new TwinkleValues();
|
5012 |
+
}
|
5013 |
+
|
5014 |
+
load(data) {
|
5015 |
+
if (data === undefined) {
|
5016 |
+
return;
|
5017 |
+
}
|
5018 |
+
|
5019 |
+
this.lines.load(data.lines);
|
5020 |
+
this.particles.load(data.particles);
|
5021 |
+
}
|
5022 |
+
|
5023 |
+
}
|
5024 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Life/LifeDelay.js
|
5025 |
+
|
5026 |
+
class LifeDelay extends ValueWithRandom {
|
5027 |
+
constructor() {
|
5028 |
+
super();
|
5029 |
+
this.sync = false;
|
5030 |
+
}
|
5031 |
+
|
5032 |
+
load(data) {
|
5033 |
+
if (!data) {
|
5034 |
+
return;
|
5035 |
+
}
|
5036 |
+
|
5037 |
+
super.load(data);
|
5038 |
+
|
5039 |
+
if (data.sync !== undefined) {
|
5040 |
+
this.sync = data.sync;
|
5041 |
+
}
|
5042 |
+
}
|
5043 |
+
|
5044 |
+
}
|
5045 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Life/LifeDuration.js
|
5046 |
+
|
5047 |
+
class LifeDuration extends ValueWithRandom {
|
5048 |
+
constructor() {
|
5049 |
+
super();
|
5050 |
+
this.random.minimumValue = 0.0001;
|
5051 |
+
this.sync = false;
|
5052 |
+
}
|
5053 |
+
|
5054 |
+
load(data) {
|
5055 |
+
if (data === undefined) {
|
5056 |
+
return;
|
5057 |
+
}
|
5058 |
+
|
5059 |
+
super.load(data);
|
5060 |
+
|
5061 |
+
if (data.sync !== undefined) {
|
5062 |
+
this.sync = data.sync;
|
5063 |
+
}
|
5064 |
+
}
|
5065 |
+
|
5066 |
+
}
|
5067 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Life/Life.js
|
5068 |
+
|
5069 |
+
|
5070 |
+
class Life {
|
5071 |
+
constructor() {
|
5072 |
+
this.count = 0;
|
5073 |
+
this.delay = new LifeDelay();
|
5074 |
+
this.duration = new LifeDuration();
|
5075 |
+
}
|
5076 |
+
|
5077 |
+
load(data) {
|
5078 |
+
if (data === undefined) {
|
5079 |
+
return;
|
5080 |
+
}
|
5081 |
+
|
5082 |
+
if (data.count !== undefined) {
|
5083 |
+
this.count = data.count;
|
5084 |
+
}
|
5085 |
+
|
5086 |
+
this.delay.load(data.delay);
|
5087 |
+
this.duration.load(data.duration);
|
5088 |
+
}
|
5089 |
+
|
5090 |
+
}
|
5091 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Particles/Particles.js
|
5092 |
+
|
5093 |
+
|
5094 |
+
|
5095 |
+
|
5096 |
+
|
5097 |
+
|
5098 |
+
|
5099 |
+
|
5100 |
+
|
5101 |
+
|
5102 |
+
|
5103 |
+
|
5104 |
+
|
5105 |
+
|
5106 |
+
class Particles {
|
5107 |
+
constructor() {
|
5108 |
+
this.bounce = new Bounce();
|
5109 |
+
this.collisions = new Collisions();
|
5110 |
+
this.color = new AnimatableColor();
|
5111 |
+
this.life = new Life();
|
5112 |
+
this.links = new Links();
|
5113 |
+
this.move = new Move();
|
5114 |
+
this.number = new ParticlesNumber();
|
5115 |
+
this.opacity = new Opacity();
|
5116 |
+
this.reduceDuplicates = false;
|
5117 |
+
this.rotate = new Rotate();
|
5118 |
+
this.shadow = new Shadow();
|
5119 |
+
this.shape = new Shape();
|
5120 |
+
this.size = new Size();
|
5121 |
+
this.stroke = new Stroke();
|
5122 |
+
this.twinkle = new Twinkle();
|
5123 |
+
}
|
5124 |
+
|
5125 |
+
get line_linked() {
|
5126 |
+
return this.links;
|
5127 |
+
}
|
5128 |
+
|
5129 |
+
set line_linked(value) {
|
5130 |
+
this.links = value;
|
5131 |
+
}
|
5132 |
+
|
5133 |
+
get lineLinked() {
|
5134 |
+
return this.links;
|
5135 |
+
}
|
5136 |
+
|
5137 |
+
set lineLinked(value) {
|
5138 |
+
this.links = value;
|
5139 |
+
}
|
5140 |
+
|
5141 |
+
load(data) {
|
5142 |
+
var _a, _b, _c, _d, _e, _f, _g;
|
5143 |
+
|
5144 |
+
if (data === undefined) {
|
5145 |
+
return;
|
5146 |
+
}
|
5147 |
+
|
5148 |
+
this.bounce.load(data.bounce);
|
5149 |
+
this.color = AnimatableColor.create(this.color, data.color);
|
5150 |
+
this.life.load(data.life);
|
5151 |
+
const links = (_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked;
|
5152 |
+
|
5153 |
+
if (links !== undefined) {
|
5154 |
+
this.links.load(links);
|
5155 |
+
}
|
5156 |
+
|
5157 |
+
this.move.load(data.move);
|
5158 |
+
this.number.load(data.number);
|
5159 |
+
this.opacity.load(data.opacity);
|
5160 |
+
|
5161 |
+
if (data.reduceDuplicates !== undefined) {
|
5162 |
+
this.reduceDuplicates = data.reduceDuplicates;
|
5163 |
+
}
|
5164 |
+
|
5165 |
+
this.rotate.load(data.rotate);
|
5166 |
+
this.shape.load(data.shape);
|
5167 |
+
this.size.load(data.size);
|
5168 |
+
this.shadow.load(data.shadow);
|
5169 |
+
this.twinkle.load(data.twinkle);
|
5170 |
+
const collisions = (_d = (_c = data.move) === null || _c === void 0 ? void 0 : _c.collisions) !== null && _d !== void 0 ? _d : (_e = data.move) === null || _e === void 0 ? void 0 : _e.bounce;
|
5171 |
+
|
5172 |
+
if (collisions !== undefined) {
|
5173 |
+
this.collisions.enable = collisions;
|
5174 |
+
}
|
5175 |
+
|
5176 |
+
this.collisions.load(data.collisions);
|
5177 |
+
const strokeToLoad = (_f = data.stroke) !== null && _f !== void 0 ? _f : (_g = data.shape) === null || _g === void 0 ? void 0 : _g.stroke;
|
5178 |
+
|
5179 |
+
if (strokeToLoad === undefined) {
|
5180 |
+
return;
|
5181 |
+
}
|
5182 |
+
|
5183 |
+
if (strokeToLoad instanceof Array) {
|
5184 |
+
this.stroke = strokeToLoad.map(s => {
|
5185 |
+
const tmp = new Stroke();
|
5186 |
+
tmp.load(s);
|
5187 |
+
return tmp;
|
5188 |
+
});
|
5189 |
+
} else {
|
5190 |
+
if (this.stroke instanceof Array) {
|
5191 |
+
this.stroke = new Stroke();
|
5192 |
+
}
|
5193 |
+
|
5194 |
+
this.stroke.load(strokeToLoad);
|
5195 |
+
}
|
5196 |
+
}
|
5197 |
+
|
5198 |
+
}
|
5199 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particle/Infecter.js
|
5200 |
+
class Infecter {
|
5201 |
+
constructor(container) {
|
5202 |
+
this.container = container;
|
5203 |
+
}
|
5204 |
+
|
5205 |
+
startInfection(stage) {
|
5206 |
+
const options = this.container.actualOptions;
|
5207 |
+
const stages = options.infection.stages;
|
5208 |
+
const stagesCount = stages.length;
|
5209 |
+
|
5210 |
+
if (stage > stagesCount || stage < 0) {
|
5211 |
+
return;
|
5212 |
+
}
|
5213 |
+
|
5214 |
+
this.infectionDelay = 0;
|
5215 |
+
this.infectionDelayStage = stage;
|
5216 |
+
}
|
5217 |
+
|
5218 |
+
updateInfectionStage(stage) {
|
5219 |
+
const options = this.container.actualOptions;
|
5220 |
+
const stagesCount = options.infection.stages.length;
|
5221 |
+
|
5222 |
+
if (stage > stagesCount || stage < 0 || this.infectionStage !== undefined && this.infectionStage > stage) {
|
5223 |
+
return;
|
5224 |
+
}
|
5225 |
+
|
5226 |
+
this.infectionStage = stage;
|
5227 |
+
this.infectionTime = 0;
|
5228 |
+
}
|
5229 |
+
|
5230 |
+
updateInfection(delta) {
|
5231 |
+
const options = this.container.actualOptions;
|
5232 |
+
const infection = options.infection;
|
5233 |
+
const stages = options.infection.stages;
|
5234 |
+
const stagesCount = stages.length;
|
5235 |
+
|
5236 |
+
if (this.infectionDelay !== undefined && this.infectionDelayStage !== undefined) {
|
5237 |
+
const stage = this.infectionDelayStage;
|
5238 |
+
|
5239 |
+
if (stage > stagesCount || stage < 0) {
|
5240 |
+
return;
|
5241 |
+
}
|
5242 |
+
|
5243 |
+
if (this.infectionDelay > infection.delay * 1000) {
|
5244 |
+
this.infectionStage = stage;
|
5245 |
+
this.infectionTime = 0;
|
5246 |
+
delete this.infectionDelay;
|
5247 |
+
delete this.infectionDelayStage;
|
5248 |
+
} else {
|
5249 |
+
this.infectionDelay += delta;
|
5250 |
+
}
|
5251 |
+
} else {
|
5252 |
+
delete this.infectionDelay;
|
5253 |
+
delete this.infectionDelayStage;
|
5254 |
+
}
|
5255 |
+
|
5256 |
+
if (this.infectionStage !== undefined && this.infectionTime !== undefined) {
|
5257 |
+
const infectionStage = stages[this.infectionStage];
|
5258 |
+
|
5259 |
+
if (infectionStage.duration !== undefined && infectionStage.duration >= 0) {
|
5260 |
+
if (this.infectionTime > infectionStage.duration * 1000) {
|
5261 |
+
this.nextInfectionStage();
|
5262 |
+
} else {
|
5263 |
+
this.infectionTime += delta;
|
5264 |
+
}
|
5265 |
+
} else {
|
5266 |
+
this.infectionTime += delta;
|
5267 |
+
}
|
5268 |
+
} else {
|
5269 |
+
delete this.infectionStage;
|
5270 |
+
delete this.infectionTime;
|
5271 |
+
}
|
5272 |
+
}
|
5273 |
+
|
5274 |
+
nextInfectionStage() {
|
5275 |
+
const options = this.container.actualOptions;
|
5276 |
+
const stagesCount = options.infection.stages.length;
|
5277 |
+
|
5278 |
+
if (stagesCount <= 0 || this.infectionStage === undefined) {
|
5279 |
+
return;
|
5280 |
+
}
|
5281 |
+
|
5282 |
+
this.infectionTime = 0;
|
5283 |
+
|
5284 |
+
if (stagesCount <= ++this.infectionStage) {
|
5285 |
+
if (options.infection.cure) {
|
5286 |
+
delete this.infectionStage;
|
5287 |
+
delete this.infectionTime;
|
5288 |
+
return;
|
5289 |
+
} else {
|
5290 |
+
this.infectionStage = 0;
|
5291 |
+
this.infectionTime = 0;
|
5292 |
+
}
|
5293 |
+
}
|
5294 |
+
}
|
5295 |
+
|
5296 |
+
}
|
5297 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particle/Mover.js
|
5298 |
+
|
5299 |
+
|
5300 |
+
class Mover {
|
5301 |
+
constructor(container, particle) {
|
5302 |
+
this.container = container;
|
5303 |
+
this.particle = particle;
|
5304 |
+
}
|
5305 |
+
|
5306 |
+
move(delta) {
|
5307 |
+
const particle = this.particle;
|
5308 |
+
particle.bubble.inRange = false;
|
5309 |
+
particle.links = [];
|
5310 |
+
|
5311 |
+
for (const [, plugin] of this.container.plugins) {
|
5312 |
+
if (particle.destroyed) {
|
5313 |
+
break;
|
5314 |
+
}
|
5315 |
+
|
5316 |
+
if (plugin.particleUpdate) {
|
5317 |
+
plugin.particleUpdate(particle, delta);
|
5318 |
+
}
|
5319 |
+
}
|
5320 |
+
|
5321 |
+
if (particle.destroyed) {
|
5322 |
+
return;
|
5323 |
+
}
|
5324 |
+
|
5325 |
+
this.moveParticle(delta);
|
5326 |
+
this.moveParallax();
|
5327 |
+
}
|
5328 |
+
|
5329 |
+
moveParticle(delta) {
|
5330 |
+
var _a, _b;
|
5331 |
+
|
5332 |
+
const particle = this.particle;
|
5333 |
+
const particlesOptions = particle.options;
|
5334 |
+
|
5335 |
+
if (!particlesOptions.move.enable) {
|
5336 |
+
return;
|
5337 |
+
}
|
5338 |
+
|
5339 |
+
const container = this.container;
|
5340 |
+
const slowFactor = this.getProximitySpeedFactor();
|
5341 |
+
const baseSpeed = ((_a = particle.moveSpeed) !== null && _a !== void 0 ? _a : container.retina.moveSpeed) * container.retina.reduceFactor;
|
5342 |
+
const maxSize = (_b = particle.sizeValue) !== null && _b !== void 0 ? _b : container.retina.sizeValue;
|
5343 |
+
const sizeFactor = particlesOptions.move.size ? particle.getRadius() / maxSize : 1;
|
5344 |
+
const moveSpeed = baseSpeed / 2 * sizeFactor * slowFactor * delta.factor;
|
5345 |
+
this.applyPath(delta);
|
5346 |
+
const gravityOptions = particlesOptions.move.gravity;
|
5347 |
+
|
5348 |
+
if (gravityOptions.enable) {
|
5349 |
+
particle.velocity.vertical += gravityOptions.acceleration * delta.factor / (60 * moveSpeed);
|
5350 |
+
}
|
5351 |
+
|
5352 |
+
const decay = 1 - particle.options.move.decay;
|
5353 |
+
particle.velocity.horizontal *= decay;
|
5354 |
+
particle.velocity.vertical *= decay;
|
5355 |
+
const velocity = {
|
5356 |
+
horizontal: particle.velocity.horizontal * moveSpeed,
|
5357 |
+
vertical: particle.velocity.vertical * moveSpeed
|
5358 |
+
};
|
5359 |
+
|
5360 |
+
if (gravityOptions.enable && velocity.vertical >= gravityOptions.maxSpeed && gravityOptions.maxSpeed > 0) {
|
5361 |
+
velocity.vertical = gravityOptions.maxSpeed;
|
5362 |
+
particle.velocity.vertical = velocity.vertical / moveSpeed;
|
5363 |
+
}
|
5364 |
+
|
5365 |
+
particle.position.x += velocity.horizontal;
|
5366 |
+
particle.position.y += velocity.vertical;
|
5367 |
+
|
5368 |
+
if (particlesOptions.move.vibrate) {
|
5369 |
+
particle.position.x += Math.sin(particle.position.x * Math.cos(particle.position.y));
|
5370 |
+
particle.position.y += Math.cos(particle.position.y * Math.sin(particle.position.x));
|
5371 |
+
}
|
5372 |
+
|
5373 |
+
const initialPosition = particle.initialPosition;
|
5374 |
+
const initialDistance = NumberUtils.getDistance(initialPosition, particle.position);
|
5375 |
+
|
5376 |
+
if (particle.maxDistance) {
|
5377 |
+
if (initialDistance >= particle.maxDistance && !particle.misplaced) {
|
5378 |
+
particle.misplaced = initialDistance > particle.maxDistance;
|
5379 |
+
particle.velocity.horizontal = particle.velocity.vertical / 2 - particle.velocity.horizontal;
|
5380 |
+
particle.velocity.vertical = particle.velocity.horizontal / 2 - particle.velocity.vertical;
|
5381 |
+
} else if (initialDistance < particle.maxDistance && particle.misplaced) {
|
5382 |
+
particle.misplaced = false;
|
5383 |
+
} else if (particle.misplaced) {
|
5384 |
+
if (particle.position.x < initialPosition.x && particle.velocity.horizontal < 0 || particle.position.x > initialPosition.x && particle.velocity.horizontal > 0) {
|
5385 |
+
particle.velocity.horizontal *= -Math.random();
|
5386 |
+
}
|
5387 |
+
|
5388 |
+
if (particle.position.y < initialPosition.y && particle.velocity.vertical < 0 || particle.position.y > initialPosition.y && particle.velocity.vertical > 0) {
|
5389 |
+
particle.velocity.vertical *= -Math.random();
|
5390 |
+
}
|
5391 |
+
}
|
5392 |
+
}
|
5393 |
+
}
|
5394 |
+
|
5395 |
+
applyPath(delta) {
|
5396 |
+
const particle = this.particle;
|
5397 |
+
const particlesOptions = particle.options;
|
5398 |
+
const pathOptions = particlesOptions.move.path;
|
5399 |
+
const pathEnabled = pathOptions.enable;
|
5400 |
+
|
5401 |
+
if (!pathEnabled) {
|
5402 |
+
return;
|
5403 |
+
}
|
5404 |
+
|
5405 |
+
const container = this.container;
|
5406 |
+
|
5407 |
+
if (particle.lastPathTime <= particle.pathDelay) {
|
5408 |
+
particle.lastPathTime += delta.value;
|
5409 |
+
return;
|
5410 |
+
}
|
5411 |
+
|
5412 |
+
let generator = container.pathGenerator;
|
5413 |
+
|
5414 |
+
if (pathOptions.generator) {
|
5415 |
+
const customGenerator = Plugins.getPathGenerator(pathOptions.generator);
|
5416 |
+
|
5417 |
+
if (customGenerator) {
|
5418 |
+
generator = customGenerator;
|
5419 |
+
}
|
5420 |
+
}
|
5421 |
+
|
5422 |
+
const path = generator.generate(particle);
|
5423 |
+
particle.velocity.horizontal += Math.cos(path.angle) * path.length;
|
5424 |
+
particle.velocity.vertical += Math.sin(path.angle) * path.length;
|
5425 |
+
|
5426 |
+
if (pathOptions.clamp) {
|
5427 |
+
particle.velocity.horizontal = NumberUtils.clamp(particle.velocity.horizontal, -1, 1);
|
5428 |
+
particle.velocity.vertical = NumberUtils.clamp(particle.velocity.vertical, -1, 1);
|
5429 |
+
}
|
5430 |
+
|
5431 |
+
particle.lastPathTime -= particle.pathDelay;
|
5432 |
+
}
|
5433 |
+
|
5434 |
+
moveParallax() {
|
5435 |
+
const container = this.container;
|
5436 |
+
const options = container.actualOptions;
|
5437 |
+
|
5438 |
+
if (Utils.isSsr() || !options.interactivity.events.onHover.parallax.enable) {
|
5439 |
+
return;
|
5440 |
+
}
|
5441 |
+
|
5442 |
+
const particle = this.particle;
|
5443 |
+
const parallaxForce = options.interactivity.events.onHover.parallax.force;
|
5444 |
+
const mousePos = container.interactivity.mouse.position;
|
5445 |
+
|
5446 |
+
if (!mousePos) {
|
5447 |
+
return;
|
5448 |
+
}
|
5449 |
+
|
5450 |
+
const canvasCenter = {
|
5451 |
+
x: container.canvas.size.width / 2,
|
5452 |
+
y: container.canvas.size.height / 2
|
5453 |
+
};
|
5454 |
+
const parallaxSmooth = options.interactivity.events.onHover.parallax.smooth;
|
5455 |
+
const factor = particle.getRadius() / parallaxForce;
|
5456 |
+
const tmp = {
|
5457 |
+
x: (mousePos.x - canvasCenter.x) * factor,
|
5458 |
+
y: (mousePos.y - canvasCenter.y) * factor
|
5459 |
+
};
|
5460 |
+
particle.offset.x += (tmp.x - particle.offset.x) / parallaxSmooth;
|
5461 |
+
particle.offset.y += (tmp.y - particle.offset.y) / parallaxSmooth;
|
5462 |
+
}
|
5463 |
+
|
5464 |
+
getProximitySpeedFactor() {
|
5465 |
+
const container = this.container;
|
5466 |
+
const options = container.actualOptions;
|
5467 |
+
const active = Utils.isInArray(HoverMode.slow, options.interactivity.events.onHover.mode);
|
5468 |
+
|
5469 |
+
if (!active) {
|
5470 |
+
return 1;
|
5471 |
+
}
|
5472 |
+
|
5473 |
+
const mousePos = this.container.interactivity.mouse.position;
|
5474 |
+
|
5475 |
+
if (!mousePos) {
|
5476 |
+
return 1;
|
5477 |
+
}
|
5478 |
+
|
5479 |
+
const particlePos = this.particle.getPosition();
|
5480 |
+
const dist = NumberUtils.getDistance(mousePos, particlePos);
|
5481 |
+
const radius = container.retina.slowModeRadius;
|
5482 |
+
|
5483 |
+
if (dist > radius) {
|
5484 |
+
return 1;
|
5485 |
+
}
|
5486 |
+
|
5487 |
+
const proximityFactor = dist / radius || 0;
|
5488 |
+
const slowFactor = options.interactivity.modes.slow.factor;
|
5489 |
+
return proximityFactor / slowFactor;
|
5490 |
+
}
|
5491 |
+
|
5492 |
+
}
|
5493 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particle.js
|
5494 |
+
|
5495 |
+
|
5496 |
+
|
5497 |
+
|
5498 |
+
|
5499 |
+
|
5500 |
+
|
5501 |
+
class Particle {
|
5502 |
+
constructor(id, container, position, overrideOptions) {
|
5503 |
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
5504 |
+
|
5505 |
+
this.id = id;
|
5506 |
+
this.container = container;
|
5507 |
+
this.links = [];
|
5508 |
+
this.fill = true;
|
5509 |
+
this.close = true;
|
5510 |
+
this.lastPathTime = 0;
|
5511 |
+
this.destroyed = false;
|
5512 |
+
this.misplaced = false;
|
5513 |
+
this.loops = {
|
5514 |
+
opacity: 0,
|
5515 |
+
size: 0
|
5516 |
+
};
|
5517 |
+
const pxRatio = container.retina.pixelRatio;
|
5518 |
+
const options = container.actualOptions;
|
5519 |
+
const particlesOptions = new Particles();
|
5520 |
+
particlesOptions.load(options.particles);
|
5521 |
+
const shapeType = particlesOptions.shape.type;
|
5522 |
+
const reduceDuplicates = particlesOptions.reduceDuplicates;
|
5523 |
+
this.shape = shapeType instanceof Array ? Utils.itemFromArray(shapeType, this.id, reduceDuplicates) : shapeType;
|
5524 |
+
|
5525 |
+
if (overrideOptions === null || overrideOptions === void 0 ? void 0 : overrideOptions.shape) {
|
5526 |
+
if (overrideOptions.shape.type) {
|
5527 |
+
const overrideShapeType = overrideOptions.shape.type;
|
5528 |
+
this.shape = overrideShapeType instanceof Array ? Utils.itemFromArray(overrideShapeType, this.id, reduceDuplicates) : overrideShapeType;
|
5529 |
+
}
|
5530 |
+
|
5531 |
+
const shapeOptions = new Shape();
|
5532 |
+
shapeOptions.load(overrideOptions.shape);
|
5533 |
+
|
5534 |
+
if (this.shape) {
|
5535 |
+
const shapeData = shapeOptions.options[this.shape];
|
5536 |
+
|
5537 |
+
if (shapeData) {
|
5538 |
+
this.shapeData = Utils.deepExtend({}, shapeData instanceof Array ? Utils.itemFromArray(shapeData, this.id, reduceDuplicates) : shapeData);
|
5539 |
+
}
|
5540 |
+
}
|
5541 |
+
} else {
|
5542 |
+
const shapeData = particlesOptions.shape.options[this.shape];
|
5543 |
+
|
5544 |
+
if (shapeData) {
|
5545 |
+
this.shapeData = Utils.deepExtend({}, shapeData instanceof Array ? Utils.itemFromArray(shapeData, this.id, reduceDuplicates) : shapeData);
|
5546 |
+
}
|
5547 |
+
}
|
5548 |
+
|
5549 |
+
if (overrideOptions !== undefined) {
|
5550 |
+
particlesOptions.load(overrideOptions);
|
5551 |
+
}
|
5552 |
+
|
5553 |
+
if (((_a = this.shapeData) === null || _a === void 0 ? void 0 : _a.particles) !== undefined) {
|
5554 |
+
particlesOptions.load((_b = this.shapeData) === null || _b === void 0 ? void 0 : _b.particles);
|
5555 |
+
}
|
5556 |
+
|
5557 |
+
this.fill = (_d = (_c = this.shapeData) === null || _c === void 0 ? void 0 : _c.fill) !== null && _d !== void 0 ? _d : this.fill;
|
5558 |
+
this.close = (_f = (_e = this.shapeData) === null || _e === void 0 ? void 0 : _e.close) !== null && _f !== void 0 ? _f : this.close;
|
5559 |
+
this.options = particlesOptions;
|
5560 |
+
this.pathDelay = NumberUtils.getValue(this.options.move.path.delay) * 1000;
|
5561 |
+
container.retina.initParticle(this);
|
5562 |
+
const color = this.options.color;
|
5563 |
+
const sizeOptions = this.options.size;
|
5564 |
+
const sizeValue = NumberUtils.getValue(sizeOptions) * container.retina.pixelRatio;
|
5565 |
+
const randomSize = typeof sizeOptions.random === "boolean" ? sizeOptions.random : sizeOptions.random.enable;
|
5566 |
+
this.size = {
|
5567 |
+
value: sizeValue
|
5568 |
+
};
|
5569 |
+
this.direction = this.options.move.direction;
|
5570 |
+
this.bubble = {
|
5571 |
+
inRange: false
|
5572 |
+
};
|
5573 |
+
this.initialVelocity = this.calculateVelocity();
|
5574 |
+
this.velocity = {
|
5575 |
+
horizontal: this.initialVelocity.horizontal,
|
5576 |
+
vertical: this.initialVelocity.vertical
|
5577 |
+
};
|
5578 |
+
this.pathAngle = Math.atan2(this.initialVelocity.vertical, this.initialVelocity.horizontal);
|
5579 |
+
const rotateOptions = this.options.rotate;
|
5580 |
+
this.rotate = {
|
5581 |
+
value: (rotateOptions.random.enable ? Math.random() * 360 : rotateOptions.value) * Math.PI / 180
|
5582 |
+
};
|
5583 |
+
let rotateDirection = rotateOptions.direction;
|
5584 |
+
|
5585 |
+
if (rotateDirection === RotateDirection.random) {
|
5586 |
+
const index = Math.floor(Math.random() * 2);
|
5587 |
+
rotateDirection = index > 0 ? RotateDirection.counterClockwise : RotateDirection.clockwise;
|
5588 |
+
}
|
5589 |
+
|
5590 |
+
switch (rotateDirection) {
|
5591 |
+
case RotateDirection.counterClockwise:
|
5592 |
+
case "counterClockwise":
|
5593 |
+
this.rotate.status = AnimationStatus.decreasing;
|
5594 |
+
break;
|
5595 |
+
|
5596 |
+
case RotateDirection.clockwise:
|
5597 |
+
this.rotate.status = AnimationStatus.increasing;
|
5598 |
+
break;
|
5599 |
+
}
|
5600 |
+
|
5601 |
+
const rotateAnimation = this.options.rotate.animation;
|
5602 |
+
|
5603 |
+
if (rotateAnimation.enable) {
|
5604 |
+
this.rotate.velocity = rotateAnimation.speed / 360 * container.retina.reduceFactor;
|
5605 |
+
|
5606 |
+
if (!rotateAnimation.sync) {
|
5607 |
+
this.rotate.velocity *= Math.random();
|
5608 |
+
}
|
5609 |
+
}
|
5610 |
+
|
5611 |
+
const sizeAnimation = this.options.size.animation;
|
5612 |
+
|
5613 |
+
if (sizeAnimation.enable) {
|
5614 |
+
this.size.status = AnimationStatus.increasing;
|
5615 |
+
|
5616 |
+
if (!randomSize) {
|
5617 |
+
switch (sizeAnimation.startValue) {
|
5618 |
+
case StartValueType.min:
|
5619 |
+
this.size.value = sizeAnimation.minimumValue * pxRatio;
|
5620 |
+
break;
|
5621 |
+
|
5622 |
+
case StartValueType.random:
|
5623 |
+
this.size.value = NumberUtils.randomInRange(NumberUtils.setRangeValue(sizeAnimation.minimumValue * pxRatio, this.size.value));
|
5624 |
+
break;
|
5625 |
+
|
5626 |
+
case StartValueType.max:
|
5627 |
+
default:
|
5628 |
+
this.size.status = AnimationStatus.decreasing;
|
5629 |
+
break;
|
5630 |
+
}
|
5631 |
+
}
|
5632 |
+
|
5633 |
+
this.size.velocity = ((_g = this.sizeAnimationSpeed) !== null && _g !== void 0 ? _g : container.retina.sizeAnimationSpeed) / 100 * container.retina.reduceFactor;
|
5634 |
+
|
5635 |
+
if (!sizeAnimation.sync) {
|
5636 |
+
this.size.velocity *= Math.random();
|
5637 |
+
}
|
5638 |
+
}
|
5639 |
+
|
5640 |
+
const hslColor = ColorUtils.colorToHsl(color, this.id, reduceDuplicates);
|
5641 |
+
|
5642 |
+
if (hslColor) {
|
5643 |
+
this.color = {
|
5644 |
+
h: {
|
5645 |
+
value: hslColor.h
|
5646 |
+
},
|
5647 |
+
s: {
|
5648 |
+
value: hslColor.s
|
5649 |
+
},
|
5650 |
+
l: {
|
5651 |
+
value: hslColor.l
|
5652 |
+
}
|
5653 |
+
};
|
5654 |
+
const colorAnimation = this.options.color.animation;
|
5655 |
+
this.setColorAnimation(colorAnimation.h, this.color.h);
|
5656 |
+
this.setColorAnimation(colorAnimation.s, this.color.s);
|
5657 |
+
this.setColorAnimation(colorAnimation.l, this.color.l);
|
5658 |
+
}
|
5659 |
+
|
5660 |
+
this.position = this.calcPosition(this.container, position);
|
5661 |
+
this.initialPosition = {
|
5662 |
+
x: this.position.x,
|
5663 |
+
y: this.position.y
|
5664 |
+
};
|
5665 |
+
this.offset = {
|
5666 |
+
x: 0,
|
5667 |
+
y: 0
|
5668 |
+
};
|
5669 |
+
const opacityOptions = this.options.opacity;
|
5670 |
+
const randomOpacity = typeof opacityOptions.random === "boolean" ? opacityOptions.random : opacityOptions.random.enable;
|
5671 |
+
this.opacity = {
|
5672 |
+
value: NumberUtils.getValue(opacityOptions)
|
5673 |
+
};
|
5674 |
+
const opacityAnimation = opacityOptions.animation;
|
5675 |
+
|
5676 |
+
if (opacityAnimation.enable) {
|
5677 |
+
this.opacity.status = AnimationStatus.increasing;
|
5678 |
+
|
5679 |
+
if (!randomOpacity) {
|
5680 |
+
switch (opacityAnimation.startValue) {
|
5681 |
+
case StartValueType.min:
|
5682 |
+
this.opacity.value = opacityAnimation.minimumValue;
|
5683 |
+
break;
|
5684 |
+
|
5685 |
+
case StartValueType.random:
|
5686 |
+
this.opacity.value = NumberUtils.randomInRange(NumberUtils.setRangeValue(opacityAnimation.minimumValue, this.opacity.value));
|
5687 |
+
break;
|
5688 |
+
|
5689 |
+
case StartValueType.max:
|
5690 |
+
default:
|
5691 |
+
this.opacity.status = AnimationStatus.decreasing;
|
5692 |
+
break;
|
5693 |
+
}
|
5694 |
+
}
|
5695 |
+
|
5696 |
+
this.opacity.velocity = opacityAnimation.speed / 100 * container.retina.reduceFactor;
|
5697 |
+
|
5698 |
+
if (!opacityAnimation.sync) {
|
5699 |
+
this.opacity.velocity *= Math.random();
|
5700 |
+
}
|
5701 |
+
}
|
5702 |
+
|
5703 |
+
this.sides = 24;
|
5704 |
+
let drawer = container.drawers.get(this.shape);
|
5705 |
+
|
5706 |
+
if (!drawer) {
|
5707 |
+
drawer = Plugins.getShapeDrawer(this.shape);
|
5708 |
+
|
5709 |
+
if (drawer) {
|
5710 |
+
container.drawers.set(this.shape, drawer);
|
5711 |
+
}
|
5712 |
+
}
|
5713 |
+
|
5714 |
+
const sideCountFunc = drawer === null || drawer === void 0 ? void 0 : drawer.getSidesCount;
|
5715 |
+
|
5716 |
+
if (sideCountFunc) {
|
5717 |
+
this.sides = sideCountFunc(this);
|
5718 |
+
}
|
5719 |
+
|
5720 |
+
const imageShape = this.loadImageShape(container, drawer);
|
5721 |
+
|
5722 |
+
if (imageShape) {
|
5723 |
+
this.image = imageShape.image;
|
5724 |
+
this.fill = imageShape.fill;
|
5725 |
+
this.close = imageShape.close;
|
5726 |
+
}
|
5727 |
+
|
5728 |
+
this.stroke = this.options.stroke instanceof Array ? Utils.itemFromArray(this.options.stroke, this.id, reduceDuplicates) : this.options.stroke;
|
5729 |
+
this.strokeWidth = this.stroke.width * container.retina.pixelRatio;
|
5730 |
+
const strokeHslColor = (_h = ColorUtils.colorToHsl(this.stroke.color)) !== null && _h !== void 0 ? _h : this.getFillColor();
|
5731 |
+
|
5732 |
+
if (strokeHslColor) {
|
5733 |
+
this.strokeColor = {
|
5734 |
+
h: {
|
5735 |
+
value: strokeHslColor.h
|
5736 |
+
},
|
5737 |
+
s: {
|
5738 |
+
value: strokeHslColor.s
|
5739 |
+
},
|
5740 |
+
l: {
|
5741 |
+
value: strokeHslColor.l
|
5742 |
+
}
|
5743 |
+
};
|
5744 |
+
const strokeColorAnimation = (_j = this.stroke.color) === null || _j === void 0 ? void 0 : _j.animation;
|
5745 |
+
|
5746 |
+
if (strokeColorAnimation && this.strokeColor) {
|
5747 |
+
this.setColorAnimation(strokeColorAnimation.h, this.strokeColor.h);
|
5748 |
+
this.setColorAnimation(strokeColorAnimation.s, this.strokeColor.s);
|
5749 |
+
this.setColorAnimation(strokeColorAnimation.l, this.strokeColor.l);
|
5750 |
+
}
|
5751 |
+
}
|
5752 |
+
|
5753 |
+
const lifeOptions = particlesOptions.life;
|
5754 |
+
this.lifeDelay = container.retina.reduceFactor ? NumberUtils.getValue(lifeOptions.delay) * (lifeOptions.delay.sync ? 1 : Math.random()) / container.retina.reduceFactor * 1000 : 0;
|
5755 |
+
this.lifeDelayTime = 0;
|
5756 |
+
this.lifeDuration = container.retina.reduceFactor ? NumberUtils.getValue(lifeOptions.duration) * (lifeOptions.duration.sync ? 1 : Math.random()) / container.retina.reduceFactor * 1000 : 0;
|
5757 |
+
this.lifeTime = 0;
|
5758 |
+
this.livesRemaining = particlesOptions.life.count;
|
5759 |
+
this.spawning = this.lifeDelay > 0;
|
5760 |
+
|
5761 |
+
if (this.lifeDuration <= 0) {
|
5762 |
+
this.lifeDuration = -1;
|
5763 |
+
}
|
5764 |
+
|
5765 |
+
if (this.livesRemaining <= 0) {
|
5766 |
+
this.livesRemaining = -1;
|
5767 |
+
}
|
5768 |
+
|
5769 |
+
this.shadowColor = ColorUtils.colorToRgb(this.options.shadow.color);
|
5770 |
+
this.updater = new Updater(container, this);
|
5771 |
+
this.infecter = new Infecter(container);
|
5772 |
+
this.mover = new Mover(container, this);
|
5773 |
+
}
|
5774 |
+
|
5775 |
+
move(delta) {
|
5776 |
+
this.mover.move(delta);
|
5777 |
+
}
|
5778 |
+
|
5779 |
+
update(delta) {
|
5780 |
+
this.updater.update(delta);
|
5781 |
+
}
|
5782 |
+
|
5783 |
+
draw(delta) {
|
5784 |
+
this.container.canvas.drawParticle(this, delta);
|
5785 |
+
}
|
5786 |
+
|
5787 |
+
getPosition() {
|
5788 |
+
return {
|
5789 |
+
x: this.position.x + this.offset.x,
|
5790 |
+
y: this.position.y + this.offset.y
|
5791 |
+
};
|
5792 |
+
}
|
5793 |
+
|
5794 |
+
getRadius() {
|
5795 |
+
return this.bubble.radius || this.size.value;
|
5796 |
+
}
|
5797 |
+
|
5798 |
+
getFillColor() {
|
5799 |
+
var _a;
|
5800 |
+
|
5801 |
+
return (_a = this.bubble.color) !== null && _a !== void 0 ? _a : ColorUtils.getHslFromAnimation(this.color);
|
5802 |
+
}
|
5803 |
+
|
5804 |
+
getStrokeColor() {
|
5805 |
+
var _a, _b;
|
5806 |
+
|
5807 |
+
return (_b = (_a = this.bubble.color) !== null && _a !== void 0 ? _a : ColorUtils.getHslFromAnimation(this.strokeColor)) !== null && _b !== void 0 ? _b : this.getFillColor();
|
5808 |
+
}
|
5809 |
+
|
5810 |
+
destroy() {
|
5811 |
+
this.destroyed = true;
|
5812 |
+
this.bubble.inRange = false;
|
5813 |
+
this.links = [];
|
5814 |
+
}
|
5815 |
+
|
5816 |
+
reset() {
|
5817 |
+
this.loops.opacity = 0;
|
5818 |
+
this.loops.size = 0;
|
5819 |
+
}
|
5820 |
+
|
5821 |
+
setColorAnimation(colorAnimation, colorValue) {
|
5822 |
+
if (colorAnimation.enable) {
|
5823 |
+
colorValue.velocity = colorAnimation.speed / 100 * this.container.retina.reduceFactor;
|
5824 |
+
|
5825 |
+
if (colorAnimation.sync) {
|
5826 |
+
return;
|
5827 |
+
}
|
5828 |
+
|
5829 |
+
colorValue.status = AnimationStatus.increasing;
|
5830 |
+
colorValue.velocity *= Math.random();
|
5831 |
+
|
5832 |
+
if (colorValue.value) {
|
5833 |
+
colorValue.value *= Math.random();
|
5834 |
+
}
|
5835 |
+
} else {
|
5836 |
+
colorValue.velocity = 0;
|
5837 |
+
}
|
5838 |
+
}
|
5839 |
+
|
5840 |
+
calcPosition(container, position, tryCount = 0) {
|
5841 |
+
var _a, _b;
|
5842 |
+
|
5843 |
+
for (const [, plugin] of container.plugins) {
|
5844 |
+
const pluginPos = plugin.particlePosition !== undefined ? plugin.particlePosition(position, this) : undefined;
|
5845 |
+
|
5846 |
+
if (pluginPos !== undefined) {
|
5847 |
+
return Utils.deepExtend({}, pluginPos);
|
5848 |
+
}
|
5849 |
+
}
|
5850 |
+
|
5851 |
+
const pos = {
|
5852 |
+
x: (_a = position === null || position === void 0 ? void 0 : position.x) !== null && _a !== void 0 ? _a : Math.random() * container.canvas.size.width,
|
5853 |
+
y: (_b = position === null || position === void 0 ? void 0 : position.y) !== null && _b !== void 0 ? _b : Math.random() * container.canvas.size.height
|
5854 |
+
};
|
5855 |
+
const outMode = this.options.move.outMode;
|
5856 |
+
|
5857 |
+
if (Utils.isInArray(outMode, OutMode.bounce) || Utils.isInArray(outMode, OutMode.bounceHorizontal)) {
|
5858 |
+
if (pos.x > container.canvas.size.width - this.size.value * 2) {
|
5859 |
+
pos.x -= this.size.value;
|
5860 |
+
} else if (pos.x < this.size.value * 2) {
|
5861 |
+
pos.x += this.size.value;
|
5862 |
+
}
|
5863 |
+
}
|
5864 |
+
|
5865 |
+
if (Utils.isInArray(outMode, OutMode.bounce) || Utils.isInArray(outMode, OutMode.bounceVertical)) {
|
5866 |
+
if (pos.y > container.canvas.size.height - this.size.value * 2) {
|
5867 |
+
pos.y -= this.size.value;
|
5868 |
+
} else if (pos.y < this.size.value * 2) {
|
5869 |
+
pos.y += this.size.value;
|
5870 |
+
}
|
5871 |
+
}
|
5872 |
+
|
5873 |
+
if (this.checkOverlap(pos, tryCount)) {
|
5874 |
+
return this.calcPosition(container, undefined, tryCount + 1);
|
5875 |
+
}
|
5876 |
+
|
5877 |
+
return pos;
|
5878 |
+
}
|
5879 |
+
|
5880 |
+
checkOverlap(pos, tryCount = 0) {
|
5881 |
+
const overlapOptions = this.options.collisions.overlap;
|
5882 |
+
|
5883 |
+
if (!overlapOptions.enable) {
|
5884 |
+
const retries = overlapOptions.retries;
|
5885 |
+
|
5886 |
+
if (retries >= 0 && tryCount > retries) {
|
5887 |
+
throw new Error("Particle is overlapping and can't be placed");
|
5888 |
+
}
|
5889 |
+
|
5890 |
+
let overlaps = false;
|
5891 |
+
|
5892 |
+
for (const particle of this.container.particles.array) {
|
5893 |
+
if (NumberUtils.getDistance(pos, particle.position) < this.size.value + particle.size.value) {
|
5894 |
+
overlaps = true;
|
5895 |
+
break;
|
5896 |
+
}
|
5897 |
+
}
|
5898 |
+
|
5899 |
+
return overlaps;
|
5900 |
+
}
|
5901 |
+
|
5902 |
+
return false;
|
5903 |
+
}
|
5904 |
+
|
5905 |
+
calculateVelocity() {
|
5906 |
+
const baseVelocity = NumberUtils.getParticleBaseVelocity(this);
|
5907 |
+
const res = {
|
5908 |
+
horizontal: 0,
|
5909 |
+
vertical: 0
|
5910 |
+
};
|
5911 |
+
const moveOptions = this.options.move;
|
5912 |
+
let rad;
|
5913 |
+
let radOffset = Math.PI / 4;
|
5914 |
+
|
5915 |
+
if (typeof moveOptions.angle === "number") {
|
5916 |
+
rad = Math.PI / 180 * moveOptions.angle;
|
5917 |
+
} else {
|
5918 |
+
rad = Math.PI / 180 * moveOptions.angle.value;
|
5919 |
+
radOffset = Math.PI / 180 * moveOptions.angle.offset;
|
5920 |
+
}
|
5921 |
+
|
5922 |
+
const range = {
|
5923 |
+
left: Math.sin(radOffset + rad / 2) - Math.sin(radOffset - rad / 2),
|
5924 |
+
right: Math.cos(radOffset + rad / 2) - Math.cos(radOffset - rad / 2)
|
5925 |
+
};
|
5926 |
+
|
5927 |
+
if (moveOptions.straight) {
|
5928 |
+
res.horizontal = baseVelocity.x;
|
5929 |
+
res.vertical = baseVelocity.y;
|
5930 |
+
|
5931 |
+
if (moveOptions.random) {
|
5932 |
+
res.horizontal += NumberUtils.randomInRange(NumberUtils.setRangeValue(range.left, range.right)) / 2;
|
5933 |
+
res.vertical += NumberUtils.randomInRange(NumberUtils.setRangeValue(range.left, range.right)) / 2;
|
5934 |
+
}
|
5935 |
+
} else {
|
5936 |
+
res.horizontal = baseVelocity.x + NumberUtils.randomInRange(NumberUtils.setRangeValue(range.left, range.right)) / 2;
|
5937 |
+
res.vertical = baseVelocity.y + NumberUtils.randomInRange(NumberUtils.setRangeValue(range.left, range.right)) / 2;
|
5938 |
+
}
|
5939 |
+
|
5940 |
+
return res;
|
5941 |
+
}
|
5942 |
+
|
5943 |
+
loadImageShape(container, drawer) {
|
5944 |
+
var _a, _b, _c, _d, _e;
|
5945 |
+
|
5946 |
+
if (!(this.shape === ShapeType.image || this.shape === ShapeType.images)) {
|
5947 |
+
return;
|
5948 |
+
}
|
5949 |
+
|
5950 |
+
const imageDrawer = drawer;
|
5951 |
+
const images = imageDrawer.getImages(container).images;
|
5952 |
+
const imageData = this.shapeData;
|
5953 |
+
const image = (_a = images.find(t => t.source === imageData.src)) !== null && _a !== void 0 ? _a : images[0];
|
5954 |
+
const color = this.getFillColor();
|
5955 |
+
let imageRes;
|
5956 |
+
|
5957 |
+
if (!image) {
|
5958 |
+
return;
|
5959 |
+
}
|
5960 |
+
|
5961 |
+
if (image.svgData !== undefined && imageData.replaceColor && color) {
|
5962 |
+
const svgColoredData = ColorUtils.replaceColorSvg(image, color, this.opacity.value);
|
5963 |
+
const svg = new Blob([svgColoredData], {
|
5964 |
+
type: "image/svg+xml"
|
5965 |
+
});
|
5966 |
+
const domUrl = URL || window.URL || window.webkitURL || window;
|
5967 |
+
const url = domUrl.createObjectURL(svg);
|
5968 |
+
const img = new Image();
|
5969 |
+
imageRes = {
|
5970 |
+
data: image,
|
5971 |
+
loaded: false,
|
5972 |
+
ratio: imageData.width / imageData.height,
|
5973 |
+
replaceColor: (_b = imageData.replaceColor) !== null && _b !== void 0 ? _b : imageData.replace_color,
|
5974 |
+
source: imageData.src
|
5975 |
+
};
|
5976 |
+
img.addEventListener("load", () => {
|
5977 |
+
if (this.image) {
|
5978 |
+
this.image.loaded = true;
|
5979 |
+
image.element = img;
|
5980 |
+
}
|
5981 |
+
|
5982 |
+
domUrl.revokeObjectURL(url);
|
5983 |
+
});
|
5984 |
+
img.addEventListener("error", () => {
|
5985 |
+
domUrl.revokeObjectURL(url);
|
5986 |
+
Utils.loadImage(imageData.src).then(img2 => {
|
5987 |
+
if (this.image && img2) {
|
5988 |
+
image.element = img2.element;
|
5989 |
+
this.image.loaded = true;
|
5990 |
+
}
|
5991 |
+
});
|
5992 |
+
});
|
5993 |
+
img.src = url;
|
5994 |
+
} else {
|
5995 |
+
imageRes = {
|
5996 |
+
data: image,
|
5997 |
+
loaded: true,
|
5998 |
+
ratio: imageData.width / imageData.height,
|
5999 |
+
replaceColor: (_c = imageData.replaceColor) !== null && _c !== void 0 ? _c : imageData.replace_color,
|
6000 |
+
source: imageData.src
|
6001 |
+
};
|
6002 |
+
}
|
6003 |
+
|
6004 |
+
if (!imageRes.ratio) {
|
6005 |
+
imageRes.ratio = 1;
|
6006 |
+
}
|
6007 |
+
|
6008 |
+
const fill = (_d = imageData.fill) !== null && _d !== void 0 ? _d : this.fill;
|
6009 |
+
const close = (_e = imageData.close) !== null && _e !== void 0 ? _e : this.close;
|
6010 |
+
return {
|
6011 |
+
image: imageRes,
|
6012 |
+
fill,
|
6013 |
+
close
|
6014 |
+
};
|
6015 |
+
}
|
6016 |
+
|
6017 |
+
}
|
6018 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Grabber.js
|
6019 |
+
|
6020 |
+
|
6021 |
+
class Grabber {
|
6022 |
+
constructor(container) {
|
6023 |
+
this.container = container;
|
6024 |
+
}
|
6025 |
+
|
6026 |
+
isEnabled() {
|
6027 |
+
const container = this.container;
|
6028 |
+
const mouse = container.interactivity.mouse;
|
6029 |
+
const events = container.actualOptions.interactivity.events;
|
6030 |
+
|
6031 |
+
if (!(events.onHover.enable && mouse.position)) {
|
6032 |
+
return false;
|
6033 |
+
}
|
6034 |
+
|
6035 |
+
const hoverMode = events.onHover.mode;
|
6036 |
+
return Utils.isInArray(HoverMode.grab, hoverMode);
|
6037 |
+
}
|
6038 |
+
|
6039 |
+
reset() {}
|
6040 |
+
|
6041 |
+
interact() {
|
6042 |
+
var _a;
|
6043 |
+
|
6044 |
+
const container = this.container;
|
6045 |
+
const options = container.actualOptions;
|
6046 |
+
const interactivity = options.interactivity;
|
6047 |
+
|
6048 |
+
if (interactivity.events.onHover.enable && container.interactivity.status === Constants.mouseMoveEvent) {
|
6049 |
+
const mousePos = container.interactivity.mouse.position;
|
6050 |
+
|
6051 |
+
if (mousePos === undefined) {
|
6052 |
+
return;
|
6053 |
+
}
|
6054 |
+
|
6055 |
+
const distance = container.retina.grabModeDistance;
|
6056 |
+
const query = container.particles.quadTree.queryCircle(mousePos, distance);
|
6057 |
+
|
6058 |
+
for (const particle of query) {
|
6059 |
+
const pos = particle.getPosition();
|
6060 |
+
const pointDistance = NumberUtils.getDistance(pos, mousePos);
|
6061 |
+
|
6062 |
+
if (pointDistance <= distance) {
|
6063 |
+
const grabLineOptions = interactivity.modes.grab.links;
|
6064 |
+
const lineOpacity = grabLineOptions.opacity;
|
6065 |
+
const opacityLine = lineOpacity - pointDistance * lineOpacity / distance;
|
6066 |
+
|
6067 |
+
if (opacityLine > 0) {
|
6068 |
+
const optColor = (_a = grabLineOptions.color) !== null && _a !== void 0 ? _a : particle.options.links.color;
|
6069 |
+
|
6070 |
+
if (!container.particles.grabLineColor) {
|
6071 |
+
const linksOptions = container.actualOptions.interactivity.modes.grab.links;
|
6072 |
+
container.particles.grabLineColor = ColorUtils.getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);
|
6073 |
+
}
|
6074 |
+
|
6075 |
+
const colorLine = ColorUtils.getLinkColor(particle, undefined, container.particles.grabLineColor);
|
6076 |
+
|
6077 |
+
if (colorLine === undefined) {
|
6078 |
+
return;
|
6079 |
+
}
|
6080 |
+
|
6081 |
+
container.canvas.drawGrabLine(particle, colorLine, opacityLine, mousePos);
|
6082 |
+
}
|
6083 |
+
}
|
6084 |
+
}
|
6085 |
+
}
|
6086 |
+
}
|
6087 |
+
|
6088 |
+
}
|
6089 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Repulser.js
|
6090 |
+
|
6091 |
+
|
6092 |
+
class Repulser {
|
6093 |
+
constructor(container) {
|
6094 |
+
this.container = container;
|
6095 |
+
}
|
6096 |
+
|
6097 |
+
isEnabled() {
|
6098 |
+
const container = this.container;
|
6099 |
+
const options = container.actualOptions;
|
6100 |
+
const mouse = container.interactivity.mouse;
|
6101 |
+
const events = options.interactivity.events;
|
6102 |
+
const divs = events.onDiv;
|
6103 |
+
const divRepulse = Utils.isDivModeEnabled(DivMode.repulse, divs);
|
6104 |
+
|
6105 |
+
if (!(divRepulse || events.onHover.enable && mouse.position || events.onClick.enable && mouse.clickPosition)) {
|
6106 |
+
return false;
|
6107 |
+
}
|
6108 |
+
|
6109 |
+
const hoverMode = events.onHover.mode;
|
6110 |
+
const clickMode = events.onClick.mode;
|
6111 |
+
return Utils.isInArray(HoverMode.repulse, hoverMode) || Utils.isInArray(ClickMode.repulse, clickMode) || divRepulse;
|
6112 |
+
}
|
6113 |
+
|
6114 |
+
reset() {}
|
6115 |
+
|
6116 |
+
interact() {
|
6117 |
+
const container = this.container;
|
6118 |
+
const options = container.actualOptions;
|
6119 |
+
const mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent;
|
6120 |
+
const events = options.interactivity.events;
|
6121 |
+
const hoverEnabled = events.onHover.enable;
|
6122 |
+
const hoverMode = events.onHover.mode;
|
6123 |
+
const clickEnabled = events.onClick.enable;
|
6124 |
+
const clickMode = events.onClick.mode;
|
6125 |
+
const divs = events.onDiv;
|
6126 |
+
|
6127 |
+
if (mouseMoveStatus && hoverEnabled && Utils.isInArray(HoverMode.repulse, hoverMode)) {
|
6128 |
+
this.hoverRepulse();
|
6129 |
+
} else if (clickEnabled && Utils.isInArray(ClickMode.repulse, clickMode)) {
|
6130 |
+
this.clickRepulse();
|
6131 |
+
} else {
|
6132 |
+
Utils.divModeExecute(DivMode.repulse, divs, (selector, div) => this.singleSelectorRepulse(selector, div));
|
6133 |
+
}
|
6134 |
+
}
|
6135 |
+
|
6136 |
+
singleSelectorRepulse(selector, div) {
|
6137 |
+
const container = this.container;
|
6138 |
+
const query = document.querySelectorAll(selector);
|
6139 |
+
|
6140 |
+
if (!query.length) {
|
6141 |
+
return;
|
6142 |
+
}
|
6143 |
+
|
6144 |
+
query.forEach(item => {
|
6145 |
+
const elem = item;
|
6146 |
+
const pxRatio = container.retina.pixelRatio;
|
6147 |
+
const pos = {
|
6148 |
+
x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,
|
6149 |
+
y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio
|
6150 |
+
};
|
6151 |
+
const repulseRadius = elem.offsetWidth / 2 * pxRatio;
|
6152 |
+
const area = div.type === DivType.circle ? new Circle(pos.x, pos.y, repulseRadius) : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio);
|
6153 |
+
const divs = container.actualOptions.interactivity.modes.repulse.divs;
|
6154 |
+
const divRepulse = Utils.divMode(divs, elem);
|
6155 |
+
this.processRepulse(pos, repulseRadius, area, divRepulse);
|
6156 |
+
});
|
6157 |
+
}
|
6158 |
+
|
6159 |
+
hoverRepulse() {
|
6160 |
+
const container = this.container;
|
6161 |
+
const mousePos = container.interactivity.mouse.position;
|
6162 |
+
|
6163 |
+
if (!mousePos) {
|
6164 |
+
return;
|
6165 |
+
}
|
6166 |
+
|
6167 |
+
const repulseRadius = container.retina.repulseModeDistance;
|
6168 |
+
this.processRepulse(mousePos, repulseRadius, new Circle(mousePos.x, mousePos.y, repulseRadius));
|
6169 |
+
}
|
6170 |
+
|
6171 |
+
processRepulse(position, repulseRadius, area, divRepulse) {
|
6172 |
+
var _a;
|
6173 |
+
|
6174 |
+
const container = this.container;
|
6175 |
+
const query = container.particles.quadTree.query(area);
|
6176 |
+
|
6177 |
+
for (const particle of query) {
|
6178 |
+
const {
|
6179 |
+
dx,
|
6180 |
+
dy,
|
6181 |
+
distance
|
6182 |
+
} = NumberUtils.getDistances(particle.position, position);
|
6183 |
+
const normVec = {
|
6184 |
+
x: dx / distance,
|
6185 |
+
y: dy / distance
|
6186 |
+
};
|
6187 |
+
const velocity = ((_a = divRepulse === null || divRepulse === void 0 ? void 0 : divRepulse.speed) !== null && _a !== void 0 ? _a : container.actualOptions.interactivity.modes.repulse.speed) * 100;
|
6188 |
+
const repulseFactor = NumberUtils.clamp((1 - Math.pow(distance / repulseRadius, 2)) * velocity, 0, 50);
|
6189 |
+
particle.position.x = particle.position.x + normVec.x * repulseFactor;
|
6190 |
+
particle.position.y = particle.position.y + normVec.y * repulseFactor;
|
6191 |
+
}
|
6192 |
+
}
|
6193 |
+
|
6194 |
+
clickRepulse() {
|
6195 |
+
const container = this.container;
|
6196 |
+
|
6197 |
+
if (!container.repulse.finish) {
|
6198 |
+
if (!container.repulse.count) {
|
6199 |
+
container.repulse.count = 0;
|
6200 |
+
}
|
6201 |
+
|
6202 |
+
container.repulse.count++;
|
6203 |
+
|
6204 |
+
if (container.repulse.count === container.particles.count) {
|
6205 |
+
container.repulse.finish = true;
|
6206 |
+
}
|
6207 |
+
}
|
6208 |
+
|
6209 |
+
if (container.repulse.clicking) {
|
6210 |
+
const repulseDistance = container.retina.repulseModeDistance;
|
6211 |
+
const repulseRadius = Math.pow(repulseDistance / 6, 3);
|
6212 |
+
const mouseClickPos = container.interactivity.mouse.clickPosition;
|
6213 |
+
|
6214 |
+
if (mouseClickPos === undefined) {
|
6215 |
+
return;
|
6216 |
+
}
|
6217 |
+
|
6218 |
+
const range = new Circle(mouseClickPos.x, mouseClickPos.y, repulseRadius);
|
6219 |
+
const query = container.particles.quadTree.query(range);
|
6220 |
+
|
6221 |
+
for (const particle of query) {
|
6222 |
+
const {
|
6223 |
+
dx,
|
6224 |
+
dy,
|
6225 |
+
distance
|
6226 |
+
} = NumberUtils.getDistances(mouseClickPos, particle.position);
|
6227 |
+
const d = distance * distance;
|
6228 |
+
const velocity = container.actualOptions.interactivity.modes.repulse.speed;
|
6229 |
+
const force = -repulseRadius * velocity / d;
|
6230 |
+
|
6231 |
+
if (d <= repulseRadius) {
|
6232 |
+
container.repulse.particles.push(particle);
|
6233 |
+
const angle = Math.atan2(dy, dx);
|
6234 |
+
particle.velocity.horizontal = force * Math.cos(angle);
|
6235 |
+
particle.velocity.vertical = force * Math.sin(angle);
|
6236 |
+
}
|
6237 |
+
}
|
6238 |
+
} else if (container.repulse.clicking === false) {
|
6239 |
+
for (const particle of container.repulse.particles) {
|
6240 |
+
particle.velocity.horizontal = particle.initialVelocity.horizontal;
|
6241 |
+
particle.velocity.vertical = particle.initialVelocity.vertical;
|
6242 |
+
}
|
6243 |
+
|
6244 |
+
container.repulse.particles = [];
|
6245 |
+
}
|
6246 |
+
}
|
6247 |
+
|
6248 |
+
}
|
6249 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Bubbler.js
|
6250 |
+
|
6251 |
+
|
6252 |
+
|
6253 |
+
function calculateBubbleValue(particleValue, modeValue, optionsValue, ratio) {
|
6254 |
+
if (modeValue > optionsValue) {
|
6255 |
+
const size = particleValue + (modeValue - optionsValue) * ratio;
|
6256 |
+
return NumberUtils.clamp(size, particleValue, modeValue);
|
6257 |
+
} else if (modeValue < optionsValue) {
|
6258 |
+
const size = particleValue - (optionsValue - modeValue) * ratio;
|
6259 |
+
return NumberUtils.clamp(size, modeValue, particleValue);
|
6260 |
+
}
|
6261 |
+
}
|
6262 |
+
|
6263 |
+
class Bubbler {
|
6264 |
+
constructor(container) {
|
6265 |
+
this.container = container;
|
6266 |
+
}
|
6267 |
+
|
6268 |
+
isEnabled() {
|
6269 |
+
const container = this.container;
|
6270 |
+
const options = container.actualOptions;
|
6271 |
+
const mouse = container.interactivity.mouse;
|
6272 |
+
const events = options.interactivity.events;
|
6273 |
+
const divs = events.onDiv;
|
6274 |
+
const divBubble = Utils.isDivModeEnabled(DivMode.bubble, divs);
|
6275 |
+
|
6276 |
+
if (!(divBubble || events.onHover.enable && mouse.position || events.onClick.enable && mouse.clickPosition)) {
|
6277 |
+
return false;
|
6278 |
+
}
|
6279 |
+
|
6280 |
+
const hoverMode = events.onHover.mode;
|
6281 |
+
const clickMode = events.onClick.mode;
|
6282 |
+
return Utils.isInArray(HoverMode.bubble, hoverMode) || Utils.isInArray(ClickMode.bubble, clickMode) || divBubble;
|
6283 |
+
}
|
6284 |
+
|
6285 |
+
reset(particle, force) {
|
6286 |
+
if (!particle.bubble.inRange || force) {
|
6287 |
+
delete particle.bubble.div;
|
6288 |
+
delete particle.bubble.opacity;
|
6289 |
+
delete particle.bubble.radius;
|
6290 |
+
delete particle.bubble.color;
|
6291 |
+
}
|
6292 |
+
}
|
6293 |
+
|
6294 |
+
interact() {
|
6295 |
+
const options = this.container.actualOptions;
|
6296 |
+
const events = options.interactivity.events;
|
6297 |
+
const onHover = events.onHover;
|
6298 |
+
const onClick = events.onClick;
|
6299 |
+
const hoverEnabled = onHover.enable;
|
6300 |
+
const hoverMode = onHover.mode;
|
6301 |
+
const clickEnabled = onClick.enable;
|
6302 |
+
const clickMode = onClick.mode;
|
6303 |
+
const divs = events.onDiv;
|
6304 |
+
|
6305 |
+
if (hoverEnabled && Utils.isInArray(HoverMode.bubble, hoverMode)) {
|
6306 |
+
this.hoverBubble();
|
6307 |
+
} else if (clickEnabled && Utils.isInArray(ClickMode.bubble, clickMode)) {
|
6308 |
+
this.clickBubble();
|
6309 |
+
} else {
|
6310 |
+
Utils.divModeExecute(DivMode.bubble, divs, (selector, div) => this.singleSelectorHover(selector, div));
|
6311 |
+
}
|
6312 |
+
}
|
6313 |
+
|
6314 |
+
singleSelectorHover(selector, div) {
|
6315 |
+
const container = this.container;
|
6316 |
+
const selectors = document.querySelectorAll(selector);
|
6317 |
+
|
6318 |
+
if (!selectors.length) {
|
6319 |
+
return;
|
6320 |
+
}
|
6321 |
+
|
6322 |
+
selectors.forEach(item => {
|
6323 |
+
const elem = item;
|
6324 |
+
const pxRatio = container.retina.pixelRatio;
|
6325 |
+
const pos = {
|
6326 |
+
x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,
|
6327 |
+
y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio
|
6328 |
+
};
|
6329 |
+
const repulseRadius = elem.offsetWidth / 2 * pxRatio;
|
6330 |
+
const area = div.type === DivType.circle ? new Circle(pos.x, pos.y, repulseRadius) : new Rectangle(elem.offsetLeft * pxRatio, elem.offsetTop * pxRatio, elem.offsetWidth * pxRatio, elem.offsetHeight * pxRatio);
|
6331 |
+
const query = container.particles.quadTree.query(area);
|
6332 |
+
|
6333 |
+
for (const particle of query) {
|
6334 |
+
if (!area.contains(particle.getPosition())) {
|
6335 |
+
continue;
|
6336 |
+
}
|
6337 |
+
|
6338 |
+
particle.bubble.inRange = true;
|
6339 |
+
const divs = container.actualOptions.interactivity.modes.bubble.divs;
|
6340 |
+
const divBubble = Utils.divMode(divs, elem);
|
6341 |
+
|
6342 |
+
if (!particle.bubble.div || particle.bubble.div !== elem) {
|
6343 |
+
this.reset(particle, true);
|
6344 |
+
particle.bubble.div = elem;
|
6345 |
+
}
|
6346 |
+
|
6347 |
+
this.hoverBubbleSize(particle, 1, divBubble);
|
6348 |
+
this.hoverBubbleOpacity(particle, 1, divBubble);
|
6349 |
+
this.hoverBubbleColor(particle, divBubble);
|
6350 |
+
}
|
6351 |
+
});
|
6352 |
+
}
|
6353 |
+
|
6354 |
+
process(particle, distMouse, timeSpent, data) {
|
6355 |
+
const container = this.container;
|
6356 |
+
const bubbleParam = data.bubbleObj.optValue;
|
6357 |
+
|
6358 |
+
if (bubbleParam === undefined) {
|
6359 |
+
return;
|
6360 |
+
}
|
6361 |
+
|
6362 |
+
const options = container.actualOptions;
|
6363 |
+
const bubbleDuration = options.interactivity.modes.bubble.duration;
|
6364 |
+
const bubbleDistance = container.retina.bubbleModeDistance;
|
6365 |
+
const particlesParam = data.particlesObj.optValue;
|
6366 |
+
const pObjBubble = data.bubbleObj.value;
|
6367 |
+
const pObj = data.particlesObj.value || 0;
|
6368 |
+
const type = data.type;
|
6369 |
+
|
6370 |
+
if (bubbleParam !== particlesParam) {
|
6371 |
+
if (!container.bubble.durationEnd) {
|
6372 |
+
if (distMouse <= bubbleDistance) {
|
6373 |
+
const obj = pObjBubble !== null && pObjBubble !== void 0 ? pObjBubble : pObj;
|
6374 |
+
|
6375 |
+
if (obj !== bubbleParam) {
|
6376 |
+
const value = pObj - timeSpent * (pObj - bubbleParam) / bubbleDuration;
|
6377 |
+
|
6378 |
+
if (type === ProcessBubbleType.size) {
|
6379 |
+
particle.bubble.radius = value;
|
6380 |
+
}
|
6381 |
+
|
6382 |
+
if (type === ProcessBubbleType.opacity) {
|
6383 |
+
particle.bubble.opacity = value;
|
6384 |
+
}
|
6385 |
+
}
|
6386 |
+
} else {
|
6387 |
+
if (type === ProcessBubbleType.size) {
|
6388 |
+
delete particle.bubble.radius;
|
6389 |
+
}
|
6390 |
+
|
6391 |
+
if (type === ProcessBubbleType.opacity) {
|
6392 |
+
delete particle.bubble.opacity;
|
6393 |
+
}
|
6394 |
+
}
|
6395 |
+
} else if (pObjBubble) {
|
6396 |
+
if (type === ProcessBubbleType.size) {
|
6397 |
+
delete particle.bubble.radius;
|
6398 |
+
}
|
6399 |
+
|
6400 |
+
if (type === ProcessBubbleType.opacity) {
|
6401 |
+
delete particle.bubble.opacity;
|
6402 |
+
}
|
6403 |
+
}
|
6404 |
+
}
|
6405 |
+
}
|
6406 |
+
|
6407 |
+
clickBubble() {
|
6408 |
+
var _a;
|
6409 |
+
|
6410 |
+
const container = this.container;
|
6411 |
+
const options = container.actualOptions;
|
6412 |
+
const mouseClickPos = container.interactivity.mouse.clickPosition;
|
6413 |
+
|
6414 |
+
if (mouseClickPos === undefined) {
|
6415 |
+
return;
|
6416 |
+
}
|
6417 |
+
|
6418 |
+
const distance = container.retina.bubbleModeDistance;
|
6419 |
+
const query = container.particles.quadTree.queryCircle(mouseClickPos, distance);
|
6420 |
+
|
6421 |
+
for (const particle of query) {
|
6422 |
+
if (!container.bubble.clicking) {
|
6423 |
+
continue;
|
6424 |
+
}
|
6425 |
+
|
6426 |
+
particle.bubble.inRange = !container.bubble.durationEnd;
|
6427 |
+
const pos = particle.getPosition();
|
6428 |
+
const distMouse = NumberUtils.getDistance(pos, mouseClickPos);
|
6429 |
+
const timeSpent = (new Date().getTime() - (container.interactivity.mouse.clickTime || 0)) / 1000;
|
6430 |
+
|
6431 |
+
if (timeSpent > options.interactivity.modes.bubble.duration) {
|
6432 |
+
container.bubble.durationEnd = true;
|
6433 |
+
}
|
6434 |
+
|
6435 |
+
if (timeSpent > options.interactivity.modes.bubble.duration * 2) {
|
6436 |
+
container.bubble.clicking = false;
|
6437 |
+
container.bubble.durationEnd = false;
|
6438 |
+
}
|
6439 |
+
|
6440 |
+
const sizeData = {
|
6441 |
+
bubbleObj: {
|
6442 |
+
optValue: container.retina.bubbleModeSize,
|
6443 |
+
value: particle.bubble.radius
|
6444 |
+
},
|
6445 |
+
particlesObj: {
|
6446 |
+
optValue: (_a = particle.sizeValue) !== null && _a !== void 0 ? _a : container.retina.sizeValue,
|
6447 |
+
value: particle.size.value
|
6448 |
+
},
|
6449 |
+
type: ProcessBubbleType.size
|
6450 |
+
};
|
6451 |
+
this.process(particle, distMouse, timeSpent, sizeData);
|
6452 |
+
const opacityData = {
|
6453 |
+
bubbleObj: {
|
6454 |
+
optValue: options.interactivity.modes.bubble.opacity,
|
6455 |
+
value: particle.bubble.opacity
|
6456 |
+
},
|
6457 |
+
particlesObj: {
|
6458 |
+
optValue: particle.options.opacity.value,
|
6459 |
+
value: particle.opacity.value
|
6460 |
+
},
|
6461 |
+
type: ProcessBubbleType.opacity
|
6462 |
+
};
|
6463 |
+
this.process(particle, distMouse, timeSpent, opacityData);
|
6464 |
+
|
6465 |
+
if (!container.bubble.durationEnd) {
|
6466 |
+
if (distMouse <= container.retina.bubbleModeDistance) {
|
6467 |
+
this.hoverBubbleColor(particle);
|
6468 |
+
} else {
|
6469 |
+
delete particle.bubble.color;
|
6470 |
+
}
|
6471 |
+
} else {
|
6472 |
+
delete particle.bubble.color;
|
6473 |
+
}
|
6474 |
+
}
|
6475 |
+
}
|
6476 |
+
|
6477 |
+
hoverBubble() {
|
6478 |
+
const container = this.container;
|
6479 |
+
const mousePos = container.interactivity.mouse.position;
|
6480 |
+
|
6481 |
+
if (mousePos === undefined) {
|
6482 |
+
return;
|
6483 |
+
}
|
6484 |
+
|
6485 |
+
const distance = container.retina.bubbleModeDistance;
|
6486 |
+
const query = container.particles.quadTree.queryCircle(mousePos, distance);
|
6487 |
+
|
6488 |
+
for (const particle of query) {
|
6489 |
+
particle.bubble.inRange = true;
|
6490 |
+
const pos = particle.getPosition();
|
6491 |
+
const pointDistance = NumberUtils.getDistance(pos, mousePos);
|
6492 |
+
const ratio = 1 - pointDistance / distance;
|
6493 |
+
|
6494 |
+
if (pointDistance <= distance) {
|
6495 |
+
if (ratio >= 0 && container.interactivity.status === Constants.mouseMoveEvent) {
|
6496 |
+
this.hoverBubbleSize(particle, ratio);
|
6497 |
+
this.hoverBubbleOpacity(particle, ratio);
|
6498 |
+
this.hoverBubbleColor(particle);
|
6499 |
+
}
|
6500 |
+
} else {
|
6501 |
+
this.reset(particle);
|
6502 |
+
}
|
6503 |
+
|
6504 |
+
if (container.interactivity.status === Constants.mouseLeaveEvent) {
|
6505 |
+
this.reset(particle);
|
6506 |
+
}
|
6507 |
+
}
|
6508 |
+
}
|
6509 |
+
|
6510 |
+
hoverBubbleSize(particle, ratio, divBubble) {
|
6511 |
+
var _a;
|
6512 |
+
|
6513 |
+
const container = this.container;
|
6514 |
+
const modeSize = (divBubble === null || divBubble === void 0 ? void 0 : divBubble.size) ? divBubble.size * container.retina.pixelRatio : container.retina.bubbleModeSize;
|
6515 |
+
|
6516 |
+
if (modeSize === undefined) {
|
6517 |
+
return;
|
6518 |
+
}
|
6519 |
+
|
6520 |
+
const optSize = (_a = particle.sizeValue) !== null && _a !== void 0 ? _a : container.retina.sizeValue;
|
6521 |
+
const pSize = particle.size.value;
|
6522 |
+
const size = calculateBubbleValue(pSize, modeSize, optSize, ratio);
|
6523 |
+
|
6524 |
+
if (size !== undefined) {
|
6525 |
+
particle.bubble.radius = size;
|
6526 |
+
}
|
6527 |
+
}
|
6528 |
+
|
6529 |
+
hoverBubbleOpacity(particle, ratio, divBubble) {
|
6530 |
+
var _a;
|
6531 |
+
|
6532 |
+
const options = this.container.actualOptions;
|
6533 |
+
const modeOpacity = (_a = divBubble === null || divBubble === void 0 ? void 0 : divBubble.opacity) !== null && _a !== void 0 ? _a : options.interactivity.modes.bubble.opacity;
|
6534 |
+
|
6535 |
+
if (modeOpacity === undefined) {
|
6536 |
+
return;
|
6537 |
+
}
|
6538 |
+
|
6539 |
+
const optOpacity = particle.options.opacity.value;
|
6540 |
+
const pOpacity = particle.opacity.value;
|
6541 |
+
const opacity = calculateBubbleValue(pOpacity, modeOpacity, optOpacity, ratio);
|
6542 |
+
|
6543 |
+
if (opacity !== undefined) {
|
6544 |
+
particle.bubble.opacity = opacity;
|
6545 |
+
}
|
6546 |
+
}
|
6547 |
+
|
6548 |
+
hoverBubbleColor(particle, divBubble) {
|
6549 |
+
var _a;
|
6550 |
+
|
6551 |
+
const options = this.container.actualOptions;
|
6552 |
+
|
6553 |
+
if (particle.bubble.color === undefined) {
|
6554 |
+
const modeColor = (_a = divBubble === null || divBubble === void 0 ? void 0 : divBubble.color) !== null && _a !== void 0 ? _a : options.interactivity.modes.bubble.color;
|
6555 |
+
|
6556 |
+
if (modeColor === undefined) {
|
6557 |
+
return;
|
6558 |
+
}
|
6559 |
+
|
6560 |
+
const bubbleColor = modeColor instanceof Array ? Utils.itemFromArray(modeColor) : modeColor;
|
6561 |
+
particle.bubble.color = ColorUtils.colorToHsl(bubbleColor);
|
6562 |
+
}
|
6563 |
+
}
|
6564 |
+
|
6565 |
+
}
|
6566 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Connector.js
|
6567 |
+
|
6568 |
+
|
6569 |
+
class Connector {
|
6570 |
+
constructor(container) {
|
6571 |
+
this.container = container;
|
6572 |
+
}
|
6573 |
+
|
6574 |
+
isEnabled() {
|
6575 |
+
const container = this.container;
|
6576 |
+
const mouse = container.interactivity.mouse;
|
6577 |
+
const events = container.actualOptions.interactivity.events;
|
6578 |
+
|
6579 |
+
if (!(events.onHover.enable && mouse.position)) {
|
6580 |
+
return false;
|
6581 |
+
}
|
6582 |
+
|
6583 |
+
const hoverMode = events.onHover.mode;
|
6584 |
+
return Utils.isInArray(HoverMode.connect, hoverMode);
|
6585 |
+
}
|
6586 |
+
|
6587 |
+
reset() {}
|
6588 |
+
|
6589 |
+
interact() {
|
6590 |
+
const container = this.container;
|
6591 |
+
const options = container.actualOptions;
|
6592 |
+
|
6593 |
+
if (options.interactivity.events.onHover.enable && container.interactivity.status === "mousemove") {
|
6594 |
+
const mousePos = container.interactivity.mouse.position;
|
6595 |
+
|
6596 |
+
if (!mousePos) {
|
6597 |
+
return;
|
6598 |
+
}
|
6599 |
+
|
6600 |
+
const distance = Math.abs(container.retina.connectModeRadius);
|
6601 |
+
const query = container.particles.quadTree.queryCircle(mousePos, distance);
|
6602 |
+
let i = 0;
|
6603 |
+
|
6604 |
+
for (const p1 of query) {
|
6605 |
+
const pos1 = p1.getPosition();
|
6606 |
+
|
6607 |
+
for (const p2 of query.slice(i + 1)) {
|
6608 |
+
const pos2 = p2.getPosition();
|
6609 |
+
const distMax = Math.abs(container.retina.connectModeDistance);
|
6610 |
+
const xDiff = Math.abs(pos1.x - pos2.x);
|
6611 |
+
const yDiff = Math.abs(pos1.y - pos2.y);
|
6612 |
+
|
6613 |
+
if (xDiff < distMax && yDiff < distMax) {
|
6614 |
+
container.canvas.drawConnectLine(p1, p2);
|
6615 |
+
}
|
6616 |
+
}
|
6617 |
+
|
6618 |
+
++i;
|
6619 |
+
}
|
6620 |
+
}
|
6621 |
+
}
|
6622 |
+
|
6623 |
+
}
|
6624 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/Particles/Linker.js
|
6625 |
+
|
6626 |
+
class Linker {
|
6627 |
+
constructor(container) {
|
6628 |
+
this.container = container;
|
6629 |
+
}
|
6630 |
+
|
6631 |
+
isEnabled(particle) {
|
6632 |
+
return particle.options.links.enable;
|
6633 |
+
}
|
6634 |
+
|
6635 |
+
reset() {}
|
6636 |
+
|
6637 |
+
interact(p1) {
|
6638 |
+
var _a;
|
6639 |
+
|
6640 |
+
const container = this.container;
|
6641 |
+
const linkOpt1 = p1.options.links;
|
6642 |
+
const optOpacity = linkOpt1.opacity;
|
6643 |
+
const optDistance = (_a = p1.linksDistance) !== null && _a !== void 0 ? _a : container.retina.linksDistance;
|
6644 |
+
const canvasSize = container.canvas.size;
|
6645 |
+
const warp = linkOpt1.warp;
|
6646 |
+
const pos1 = p1.getPosition();
|
6647 |
+
const range = warp ? new CircleWarp(pos1.x, pos1.y, optDistance, canvasSize) : new Circle(pos1.x, pos1.y, optDistance);
|
6648 |
+
const query = container.particles.quadTree.query(range);
|
6649 |
+
|
6650 |
+
for (const p2 of query) {
|
6651 |
+
const linkOpt2 = p2.options.links;
|
6652 |
+
|
6653 |
+
if (p1 === p2 || !linkOpt2.enable || linkOpt1.id !== linkOpt2.id || p2.spawning || p2.destroyed) {
|
6654 |
+
continue;
|
6655 |
+
}
|
6656 |
+
|
6657 |
+
const pos2 = p2.getPosition();
|
6658 |
+
let distance = NumberUtils.getDistance(pos1, pos2);
|
6659 |
+
|
6660 |
+
if (warp) {
|
6661 |
+
if (distance > optDistance) {
|
6662 |
+
const pos2NE = {
|
6663 |
+
x: pos2.x - canvasSize.width,
|
6664 |
+
y: pos2.y
|
6665 |
+
};
|
6666 |
+
distance = NumberUtils.getDistance(pos1, pos2NE);
|
6667 |
+
|
6668 |
+
if (distance > optDistance) {
|
6669 |
+
const pos2SE = {
|
6670 |
+
x: pos2.x - canvasSize.width,
|
6671 |
+
y: pos2.y - canvasSize.height
|
6672 |
+
};
|
6673 |
+
distance = NumberUtils.getDistance(pos1, pos2SE);
|
6674 |
+
|
6675 |
+
if (distance > optDistance) {
|
6676 |
+
const pos2SW = {
|
6677 |
+
x: pos2.x,
|
6678 |
+
y: pos2.y - canvasSize.height
|
6679 |
+
};
|
6680 |
+
distance = NumberUtils.getDistance(pos1, pos2SW);
|
6681 |
+
}
|
6682 |
+
}
|
6683 |
+
}
|
6684 |
+
}
|
6685 |
+
|
6686 |
+
if (distance > optDistance) {
|
6687 |
+
return;
|
6688 |
+
}
|
6689 |
+
|
6690 |
+
const opacityLine = (1 - distance / optDistance) * optOpacity;
|
6691 |
+
const linksOptions = p1.options.links;
|
6692 |
+
let linkColor = linksOptions.id !== undefined ? container.particles.linksColors.get(linksOptions.id) : container.particles.linksColor;
|
6693 |
+
|
6694 |
+
if (!linkColor) {
|
6695 |
+
const optColor = linksOptions.color;
|
6696 |
+
linkColor = ColorUtils.getLinkRandomColor(optColor, linksOptions.blink, linksOptions.consent);
|
6697 |
+
|
6698 |
+
if (linksOptions.id !== undefined) {
|
6699 |
+
container.particles.linksColors.set(linksOptions.id, linkColor);
|
6700 |
+
} else {
|
6701 |
+
container.particles.linksColor = linkColor;
|
6702 |
+
}
|
6703 |
+
}
|
6704 |
+
|
6705 |
+
if (p2.links.map(t => t.destination).indexOf(p1) === -1 && p1.links.map(t => t.destination).indexOf(p2) === -1) {
|
6706 |
+
p1.links.push({
|
6707 |
+
destination: p2,
|
6708 |
+
opacity: opacityLine
|
6709 |
+
});
|
6710 |
+
}
|
6711 |
+
}
|
6712 |
+
}
|
6713 |
+
|
6714 |
+
}
|
6715 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/Particles/Attractor.js
|
6716 |
+
|
6717 |
+
class Attractor {
|
6718 |
+
constructor(container) {
|
6719 |
+
this.container = container;
|
6720 |
+
}
|
6721 |
+
|
6722 |
+
interact(p1) {
|
6723 |
+
var _a;
|
6724 |
+
|
6725 |
+
const container = this.container;
|
6726 |
+
const distance = (_a = p1.linksDistance) !== null && _a !== void 0 ? _a : container.retina.linksDistance;
|
6727 |
+
const pos1 = p1.getPosition();
|
6728 |
+
const query = container.particles.quadTree.queryCircle(pos1, distance);
|
6729 |
+
|
6730 |
+
for (const p2 of query) {
|
6731 |
+
if (p1 === p2 || !p2.options.move.attract.enable || p2.destroyed || p2.spawning) {
|
6732 |
+
continue;
|
6733 |
+
}
|
6734 |
+
|
6735 |
+
const pos2 = p2.getPosition();
|
6736 |
+
const {
|
6737 |
+
dx,
|
6738 |
+
dy
|
6739 |
+
} = NumberUtils.getDistances(pos1, pos2);
|
6740 |
+
const rotate = p1.options.move.attract.rotate;
|
6741 |
+
const ax = dx / (rotate.x * 1000);
|
6742 |
+
const ay = dy / (rotate.y * 1000);
|
6743 |
+
p1.velocity.horizontal -= ax;
|
6744 |
+
p1.velocity.vertical -= ay;
|
6745 |
+
p2.velocity.horizontal += ax;
|
6746 |
+
p2.velocity.vertical += ay;
|
6747 |
+
}
|
6748 |
+
}
|
6749 |
+
|
6750 |
+
isEnabled(particle) {
|
6751 |
+
return particle.options.move.attract.enable;
|
6752 |
+
}
|
6753 |
+
|
6754 |
+
reset() {}
|
6755 |
+
|
6756 |
+
}
|
6757 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/Particles/Collider.js
|
6758 |
+
|
6759 |
+
|
6760 |
+
|
6761 |
+
function bounce(p1, p2) {
|
6762 |
+
Utils.circleBounce(Utils.circleBounceDataFromParticle(p1), Utils.circleBounceDataFromParticle(p2));
|
6763 |
+
}
|
6764 |
+
|
6765 |
+
function destroy(p1, p2) {
|
6766 |
+
if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {
|
6767 |
+
p1.destroy();
|
6768 |
+
} else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {
|
6769 |
+
p2.destroy();
|
6770 |
+
} else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {
|
6771 |
+
if (p1.getRadius() >= p2.getRadius()) {
|
6772 |
+
p2.destroy();
|
6773 |
+
} else {
|
6774 |
+
p1.destroy();
|
6775 |
+
}
|
6776 |
+
}
|
6777 |
+
}
|
6778 |
+
|
6779 |
+
class Collider {
|
6780 |
+
constructor(container) {
|
6781 |
+
this.container = container;
|
6782 |
+
}
|
6783 |
+
|
6784 |
+
isEnabled(particle) {
|
6785 |
+
return particle.options.collisions.enable;
|
6786 |
+
}
|
6787 |
+
|
6788 |
+
reset() {}
|
6789 |
+
|
6790 |
+
interact(p1) {
|
6791 |
+
const container = this.container;
|
6792 |
+
const pos1 = p1.getPosition();
|
6793 |
+
const query = container.particles.quadTree.queryCircle(pos1, p1.getRadius() * 2);
|
6794 |
+
|
6795 |
+
for (const p2 of query) {
|
6796 |
+
if (p1 === p2 || !p2.options.collisions.enable || p1.options.collisions.mode !== p2.options.collisions.mode || p2.destroyed || p2.spawning) {
|
6797 |
+
continue;
|
6798 |
+
}
|
6799 |
+
|
6800 |
+
const pos2 = p2.getPosition();
|
6801 |
+
const dist = NumberUtils.getDistance(pos1, pos2);
|
6802 |
+
const radius1 = p1.getRadius();
|
6803 |
+
const radius2 = p2.getRadius();
|
6804 |
+
const distP = radius1 + radius2;
|
6805 |
+
|
6806 |
+
if (dist <= distP) {
|
6807 |
+
this.resolveCollision(p1, p2);
|
6808 |
+
}
|
6809 |
+
}
|
6810 |
+
}
|
6811 |
+
|
6812 |
+
resolveCollision(p1, p2) {
|
6813 |
+
switch (p1.options.collisions.mode) {
|
6814 |
+
case CollisionMode.absorb:
|
6815 |
+
{
|
6816 |
+
this.absorb(p1, p2);
|
6817 |
+
break;
|
6818 |
+
}
|
6819 |
+
|
6820 |
+
case CollisionMode.bounce:
|
6821 |
+
{
|
6822 |
+
bounce(p1, p2);
|
6823 |
+
break;
|
6824 |
+
}
|
6825 |
+
|
6826 |
+
case CollisionMode.destroy:
|
6827 |
+
{
|
6828 |
+
destroy(p1, p2);
|
6829 |
+
break;
|
6830 |
+
}
|
6831 |
+
}
|
6832 |
+
}
|
6833 |
+
|
6834 |
+
absorb(p1, p2) {
|
6835 |
+
const container = this.container;
|
6836 |
+
const fps = container.actualOptions.fpsLimit / 1000;
|
6837 |
+
|
6838 |
+
if (p1.getRadius() === undefined && p2.getRadius() !== undefined) {
|
6839 |
+
p1.destroy();
|
6840 |
+
} else if (p1.getRadius() !== undefined && p2.getRadius() === undefined) {
|
6841 |
+
p2.destroy();
|
6842 |
+
} else if (p1.getRadius() !== undefined && p2.getRadius() !== undefined) {
|
6843 |
+
if (p1.getRadius() >= p2.getRadius()) {
|
6844 |
+
const factor = NumberUtils.clamp(p1.getRadius() / p2.getRadius(), 0, p2.getRadius()) * fps;
|
6845 |
+
p1.size.value += factor;
|
6846 |
+
p2.size.value -= factor;
|
6847 |
+
|
6848 |
+
if (p2.getRadius() <= container.retina.pixelRatio) {
|
6849 |
+
p2.size.value = 0;
|
6850 |
+
p2.destroy();
|
6851 |
+
}
|
6852 |
+
} else {
|
6853 |
+
const factor = NumberUtils.clamp(p2.getRadius() / p1.getRadius(), 0, p1.getRadius()) * fps;
|
6854 |
+
p1.size.value -= factor;
|
6855 |
+
p2.size.value += factor;
|
6856 |
+
|
6857 |
+
if (p1.getRadius() <= container.retina.pixelRatio) {
|
6858 |
+
p1.size.value = 0;
|
6859 |
+
p1.destroy();
|
6860 |
+
}
|
6861 |
+
}
|
6862 |
+
}
|
6863 |
+
}
|
6864 |
+
|
6865 |
+
}
|
6866 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/Particles/Infecter.js
|
6867 |
+
class Infecter_Infecter {
|
6868 |
+
constructor(container) {
|
6869 |
+
this.container = container;
|
6870 |
+
}
|
6871 |
+
|
6872 |
+
isEnabled() {
|
6873 |
+
return this.container.actualOptions.infection.enable;
|
6874 |
+
}
|
6875 |
+
|
6876 |
+
reset() {}
|
6877 |
+
|
6878 |
+
interact(p1, delta) {
|
6879 |
+
var _a, _b;
|
6880 |
+
|
6881 |
+
const infecter1 = p1.infecter;
|
6882 |
+
infecter1.updateInfection(delta.value);
|
6883 |
+
|
6884 |
+
if (infecter1.infectionStage === undefined) {
|
6885 |
+
return;
|
6886 |
+
}
|
6887 |
+
|
6888 |
+
const container = this.container;
|
6889 |
+
const options = container.actualOptions;
|
6890 |
+
const infectionOptions = options.infection;
|
6891 |
+
|
6892 |
+
if (!infectionOptions.enable || infectionOptions.stages.length < 1) {
|
6893 |
+
return;
|
6894 |
+
}
|
6895 |
+
|
6896 |
+
const infectionStage1 = infectionOptions.stages[infecter1.infectionStage];
|
6897 |
+
const pxRatio = container.retina.pixelRatio;
|
6898 |
+
const radius = p1.getRadius() * 2 + infectionStage1.radius * pxRatio;
|
6899 |
+
const pos = p1.getPosition();
|
6900 |
+
const infectedStage1 = (_a = infectionStage1.infectedStage) !== null && _a !== void 0 ? _a : infecter1.infectionStage;
|
6901 |
+
const query = container.particles.quadTree.queryCircle(pos, radius);
|
6902 |
+
const infections = infectionStage1.rate;
|
6903 |
+
const neighbors = query.length;
|
6904 |
+
|
6905 |
+
for (const p2 of query) {
|
6906 |
+
if (p2 === p1 || p2.destroyed || p2.spawning || !(p2.infecter.infectionStage === undefined || p2.infecter.infectionStage !== infecter1.infectionStage)) {
|
6907 |
+
continue;
|
6908 |
+
}
|
6909 |
+
|
6910 |
+
const infecter2 = p2.infecter;
|
6911 |
+
|
6912 |
+
if (Math.random() < infections / neighbors) {
|
6913 |
+
if (infecter2.infectionStage === undefined) {
|
6914 |
+
infecter2.startInfection(infectedStage1);
|
6915 |
+
} else if (infecter2.infectionStage < infecter1.infectionStage) {
|
6916 |
+
infecter2.updateInfectionStage(infectedStage1);
|
6917 |
+
} else if (infecter2.infectionStage > infecter1.infectionStage) {
|
6918 |
+
const infectionStage2 = infectionOptions.stages[infecter2.infectionStage];
|
6919 |
+
const infectedStage2 = (_b = infectionStage2 === null || infectionStage2 === void 0 ? void 0 : infectionStage2.infectedStage) !== null && _b !== void 0 ? _b : infecter2.infectionStage;
|
6920 |
+
infecter1.updateInfectionStage(infectedStage2);
|
6921 |
+
}
|
6922 |
+
}
|
6923 |
+
}
|
6924 |
+
}
|
6925 |
+
|
6926 |
+
}
|
6927 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/TrailMaker.js
|
6928 |
+
|
6929 |
+
|
6930 |
+
class TrailMaker {
|
6931 |
+
constructor(container) {
|
6932 |
+
this.container = container;
|
6933 |
+
this.delay = 0;
|
6934 |
+
}
|
6935 |
+
|
6936 |
+
interact(delta) {
|
6937 |
+
if (!this.container.retina.reduceFactor) {
|
6938 |
+
return;
|
6939 |
+
}
|
6940 |
+
|
6941 |
+
const container = this.container;
|
6942 |
+
const options = container.actualOptions;
|
6943 |
+
const trailOptions = options.interactivity.modes.trail;
|
6944 |
+
const optDelay = trailOptions.delay * 1000 / this.container.retina.reduceFactor;
|
6945 |
+
|
6946 |
+
if (this.delay < optDelay) {
|
6947 |
+
this.delay += delta.value;
|
6948 |
+
}
|
6949 |
+
|
6950 |
+
if (this.delay >= optDelay) {
|
6951 |
+
container.particles.push(trailOptions.quantity, container.interactivity.mouse, trailOptions.particles);
|
6952 |
+
this.delay -= optDelay;
|
6953 |
+
}
|
6954 |
+
}
|
6955 |
+
|
6956 |
+
isEnabled() {
|
6957 |
+
const container = this.container;
|
6958 |
+
const options = container.actualOptions;
|
6959 |
+
const mouse = container.interactivity.mouse;
|
6960 |
+
const events = options.interactivity.events;
|
6961 |
+
return mouse.clicking && mouse.inside && !!mouse.position && Utils.isInArray(ClickMode.trail, events.onClick.mode) || mouse.inside && !!mouse.position && Utils.isInArray(HoverMode.trail, events.onHover.mode);
|
6962 |
+
}
|
6963 |
+
|
6964 |
+
reset() {}
|
6965 |
+
|
6966 |
+
}
|
6967 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Attractor.js
|
6968 |
+
|
6969 |
+
|
6970 |
+
class Attractor_Attractor {
|
6971 |
+
constructor(container) {
|
6972 |
+
this.container = container;
|
6973 |
+
}
|
6974 |
+
|
6975 |
+
isEnabled() {
|
6976 |
+
const container = this.container;
|
6977 |
+
const options = container.actualOptions;
|
6978 |
+
const mouse = container.interactivity.mouse;
|
6979 |
+
const events = options.interactivity.events;
|
6980 |
+
|
6981 |
+
if (!(events.onHover.enable && mouse.position || events.onClick.enable && mouse.clickPosition)) {
|
6982 |
+
return false;
|
6983 |
+
}
|
6984 |
+
|
6985 |
+
const hoverMode = events.onHover.mode;
|
6986 |
+
const clickMode = events.onClick.mode;
|
6987 |
+
return Utils.isInArray(HoverMode.attract, hoverMode) || Utils.isInArray(ClickMode.attract, clickMode);
|
6988 |
+
}
|
6989 |
+
|
6990 |
+
reset() {}
|
6991 |
+
|
6992 |
+
interact() {
|
6993 |
+
const container = this.container;
|
6994 |
+
const options = container.actualOptions;
|
6995 |
+
const mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent;
|
6996 |
+
const events = options.interactivity.events;
|
6997 |
+
const hoverEnabled = events.onHover.enable;
|
6998 |
+
const hoverMode = events.onHover.mode;
|
6999 |
+
const clickEnabled = events.onClick.enable;
|
7000 |
+
const clickMode = events.onClick.mode;
|
7001 |
+
|
7002 |
+
if (mouseMoveStatus && hoverEnabled && Utils.isInArray(HoverMode.attract, hoverMode)) {
|
7003 |
+
this.hoverAttract();
|
7004 |
+
} else if (clickEnabled && Utils.isInArray(ClickMode.attract, clickMode)) {
|
7005 |
+
this.clickAttract();
|
7006 |
+
}
|
7007 |
+
}
|
7008 |
+
|
7009 |
+
hoverAttract() {
|
7010 |
+
const container = this.container;
|
7011 |
+
const mousePos = container.interactivity.mouse.position;
|
7012 |
+
|
7013 |
+
if (!mousePos) {
|
7014 |
+
return;
|
7015 |
+
}
|
7016 |
+
|
7017 |
+
const attractRadius = container.retina.attractModeDistance;
|
7018 |
+
this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));
|
7019 |
+
}
|
7020 |
+
|
7021 |
+
processAttract(position, attractRadius, area) {
|
7022 |
+
const container = this.container;
|
7023 |
+
const query = container.particles.quadTree.query(area);
|
7024 |
+
|
7025 |
+
for (const particle of query) {
|
7026 |
+
const {
|
7027 |
+
dx,
|
7028 |
+
dy,
|
7029 |
+
distance
|
7030 |
+
} = NumberUtils.getDistances(particle.position, position);
|
7031 |
+
const normVec = {
|
7032 |
+
x: dx / distance,
|
7033 |
+
y: dy / distance
|
7034 |
+
};
|
7035 |
+
const velocity = container.actualOptions.interactivity.modes.attract.speed;
|
7036 |
+
const attractFactor = NumberUtils.clamp((1 - Math.pow(distance / attractRadius, 2)) * velocity, 0, 50);
|
7037 |
+
particle.position.x = particle.position.x - normVec.x * attractFactor;
|
7038 |
+
particle.position.y = particle.position.y - normVec.y * attractFactor;
|
7039 |
+
}
|
7040 |
+
}
|
7041 |
+
|
7042 |
+
clickAttract() {
|
7043 |
+
const container = this.container;
|
7044 |
+
|
7045 |
+
if (!container.attract.finish) {
|
7046 |
+
if (!container.attract.count) {
|
7047 |
+
container.attract.count = 0;
|
7048 |
+
}
|
7049 |
+
|
7050 |
+
container.attract.count++;
|
7051 |
+
|
7052 |
+
if (container.attract.count === container.particles.count) {
|
7053 |
+
container.attract.finish = true;
|
7054 |
+
}
|
7055 |
+
}
|
7056 |
+
|
7057 |
+
if (container.attract.clicking) {
|
7058 |
+
const mousePos = container.interactivity.mouse.clickPosition;
|
7059 |
+
|
7060 |
+
if (!mousePos) {
|
7061 |
+
return;
|
7062 |
+
}
|
7063 |
+
|
7064 |
+
const attractRadius = container.retina.attractModeDistance;
|
7065 |
+
this.processAttract(mousePos, attractRadius, new Circle(mousePos.x, mousePos.y, attractRadius));
|
7066 |
+
} else if (container.attract.clicking === false) {
|
7067 |
+
container.attract.particles = [];
|
7068 |
+
}
|
7069 |
+
|
7070 |
+
return;
|
7071 |
+
}
|
7072 |
+
|
7073 |
+
}
|
7074 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/Particles/Lighter.js
|
7075 |
+
|
7076 |
+
|
7077 |
+
class Lighter {
|
7078 |
+
constructor(container) {
|
7079 |
+
this.container = container;
|
7080 |
+
}
|
7081 |
+
|
7082 |
+
interact(particle) {
|
7083 |
+
const container = this.container;
|
7084 |
+
const options = container.actualOptions;
|
7085 |
+
|
7086 |
+
if (options.interactivity.events.onHover.enable && container.interactivity.status === "mousemove") {
|
7087 |
+
const mousePos = this.container.interactivity.mouse.position;
|
7088 |
+
|
7089 |
+
if (mousePos) {
|
7090 |
+
container.canvas.drawParticleShadow(particle, mousePos);
|
7091 |
+
}
|
7092 |
+
}
|
7093 |
+
}
|
7094 |
+
|
7095 |
+
isEnabled() {
|
7096 |
+
const container = this.container;
|
7097 |
+
const mouse = container.interactivity.mouse;
|
7098 |
+
const events = container.actualOptions.interactivity.events;
|
7099 |
+
|
7100 |
+
if (!(events.onHover.enable && mouse.position)) {
|
7101 |
+
return false;
|
7102 |
+
}
|
7103 |
+
|
7104 |
+
const hoverMode = events.onHover.mode;
|
7105 |
+
return Utils.isInArray(HoverMode.light, hoverMode);
|
7106 |
+
}
|
7107 |
+
|
7108 |
+
reset() {}
|
7109 |
+
|
7110 |
+
}
|
7111 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Lighter.js
|
7112 |
+
|
7113 |
+
|
7114 |
+
class Lighter_Lighter {
|
7115 |
+
constructor(container) {
|
7116 |
+
this.container = container;
|
7117 |
+
}
|
7118 |
+
|
7119 |
+
interact() {
|
7120 |
+
const container = this.container;
|
7121 |
+
const options = container.actualOptions;
|
7122 |
+
|
7123 |
+
if (options.interactivity.events.onHover.enable && container.interactivity.status === "mousemove") {
|
7124 |
+
const mousePos = container.interactivity.mouse.position;
|
7125 |
+
|
7126 |
+
if (!mousePos) {
|
7127 |
+
return;
|
7128 |
+
}
|
7129 |
+
|
7130 |
+
container.canvas.drawLight(mousePos);
|
7131 |
+
}
|
7132 |
+
}
|
7133 |
+
|
7134 |
+
isEnabled() {
|
7135 |
+
const container = this.container;
|
7136 |
+
const mouse = container.interactivity.mouse;
|
7137 |
+
const events = container.actualOptions.interactivity.events;
|
7138 |
+
|
7139 |
+
if (!(events.onHover.enable && mouse.position)) {
|
7140 |
+
return false;
|
7141 |
+
}
|
7142 |
+
|
7143 |
+
const hoverMode = events.onHover.mode;
|
7144 |
+
return Utils.isInArray(HoverMode.light, hoverMode);
|
7145 |
+
}
|
7146 |
+
|
7147 |
+
reset() {}
|
7148 |
+
|
7149 |
+
}
|
7150 |
+
;// CONCATENATED MODULE: ./dist/browser/Interactions/External/Bouncer.js
|
7151 |
+
|
7152 |
+
|
7153 |
+
|
7154 |
+
|
7155 |
+
|
7156 |
+
class Bouncer {
|
7157 |
+
constructor(container) {
|
7158 |
+
this.container = container;
|
7159 |
+
}
|
7160 |
+
|
7161 |
+
isEnabled() {
|
7162 |
+
const container = this.container;
|
7163 |
+
const options = container.actualOptions;
|
7164 |
+
const mouse = container.interactivity.mouse;
|
7165 |
+
const events = options.interactivity.events;
|
7166 |
+
const divs = events.onDiv;
|
7167 |
+
return mouse.position && events.onHover.enable && Utils.isInArray(HoverMode.bounce, events.onHover.mode) || Utils.isDivModeEnabled(DivMode.bounce, divs);
|
7168 |
+
}
|
7169 |
+
|
7170 |
+
interact() {
|
7171 |
+
const container = this.container;
|
7172 |
+
const options = container.actualOptions;
|
7173 |
+
const events = options.interactivity.events;
|
7174 |
+
const mouseMoveStatus = container.interactivity.status === Constants.mouseMoveEvent;
|
7175 |
+
const hoverEnabled = events.onHover.enable;
|
7176 |
+
const hoverMode = events.onHover.mode;
|
7177 |
+
const divs = events.onDiv;
|
7178 |
+
|
7179 |
+
if (mouseMoveStatus && hoverEnabled && Utils.isInArray(HoverMode.bounce, hoverMode)) {
|
7180 |
+
this.processMouseBounce();
|
7181 |
+
} else {
|
7182 |
+
Utils.divModeExecute(DivMode.bounce, divs, (selector, div) => this.singleSelectorBounce(selector, div));
|
7183 |
+
}
|
7184 |
+
}
|
7185 |
+
|
7186 |
+
reset() {}
|
7187 |
+
|
7188 |
+
processMouseBounce() {
|
7189 |
+
const container = this.container;
|
7190 |
+
const pxRatio = container.retina.pixelRatio;
|
7191 |
+
const tolerance = 10 * pxRatio;
|
7192 |
+
const mousePos = container.interactivity.mouse.position;
|
7193 |
+
const radius = container.retina.bounceModeDistance;
|
7194 |
+
|
7195 |
+
if (mousePos) {
|
7196 |
+
this.processBounce(mousePos, radius, new Circle(mousePos.x, mousePos.y, radius + tolerance));
|
7197 |
+
}
|
7198 |
+
}
|
7199 |
+
|
7200 |
+
singleSelectorBounce(selector, div) {
|
7201 |
+
const container = this.container;
|
7202 |
+
const query = document.querySelectorAll(selector);
|
7203 |
+
|
7204 |
+
if (!query.length) {
|
7205 |
+
return;
|
7206 |
+
}
|
7207 |
+
|
7208 |
+
query.forEach(item => {
|
7209 |
+
const elem = item;
|
7210 |
+
const pxRatio = container.retina.pixelRatio;
|
7211 |
+
const pos = {
|
7212 |
+
x: (elem.offsetLeft + elem.offsetWidth / 2) * pxRatio,
|
7213 |
+
y: (elem.offsetTop + elem.offsetHeight / 2) * pxRatio
|
7214 |
+
};
|
7215 |
+
const radius = elem.offsetWidth / 2 * pxRatio;
|
7216 |
+
const tolerance = 10 * pxRatio;
|
7217 |
+
const area = div.type === DivType.circle ? new Circle(pos.x, pos.y, radius + tolerance) : new Rectangle(elem.offsetLeft * pxRatio - tolerance, elem.offsetTop * pxRatio - tolerance, elem.offsetWidth * pxRatio + tolerance * 2, elem.offsetHeight * pxRatio + tolerance * 2);
|
7218 |
+
this.processBounce(pos, radius, area);
|
7219 |
+
});
|
7220 |
+
}
|
7221 |
+
|
7222 |
+
processBounce(position, radius, area) {
|
7223 |
+
const query = this.container.particles.quadTree.query(area);
|
7224 |
+
|
7225 |
+
for (const particle of query) {
|
7226 |
+
if (area instanceof Circle) {
|
7227 |
+
Utils.circleBounce(Utils.circleBounceDataFromParticle(particle), {
|
7228 |
+
position,
|
7229 |
+
radius,
|
7230 |
+
velocity: {
|
7231 |
+
horizontal: 0,
|
7232 |
+
vertical: 0
|
7233 |
+
},
|
7234 |
+
factor: {
|
7235 |
+
horizontal: 0,
|
7236 |
+
vertical: 0
|
7237 |
+
}
|
7238 |
+
});
|
7239 |
+
} else if (area instanceof Rectangle) {
|
7240 |
+
Utils.rectBounce(particle, Utils.calculateBounds(position, radius));
|
7241 |
+
}
|
7242 |
+
}
|
7243 |
+
}
|
7244 |
+
|
7245 |
+
}
|
7246 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particle/InteractionManager.js
|
7247 |
+
|
7248 |
+
|
7249 |
+
|
7250 |
+
|
7251 |
+
|
7252 |
+
|
7253 |
+
|
7254 |
+
|
7255 |
+
|
7256 |
+
|
7257 |
+
|
7258 |
+
|
7259 |
+
|
7260 |
+
class InteractionManager {
|
7261 |
+
constructor(container) {
|
7262 |
+
this.container = container;
|
7263 |
+
this.externalInteractors = [new Bouncer(container), new Bubbler(container), new Connector(container), new Grabber(container), new Lighter_Lighter(container), new Attractor_Attractor(container), new Repulser(container), new TrailMaker(container)];
|
7264 |
+
this.particleInteractors = [new Attractor(container), new Lighter(container), new Collider(container), new Infecter_Infecter(container), new Linker(container)];
|
7265 |
+
}
|
7266 |
+
|
7267 |
+
init() {}
|
7268 |
+
|
7269 |
+
externalInteract(delta) {
|
7270 |
+
for (const interactor of this.externalInteractors) {
|
7271 |
+
if (interactor.isEnabled()) {
|
7272 |
+
interactor.interact(delta);
|
7273 |
+
}
|
7274 |
+
}
|
7275 |
+
}
|
7276 |
+
|
7277 |
+
particlesInteract(particle, delta) {
|
7278 |
+
for (const interactor of this.externalInteractors) {
|
7279 |
+
interactor.reset(particle);
|
7280 |
+
}
|
7281 |
+
|
7282 |
+
for (const interactor of this.particleInteractors) {
|
7283 |
+
if (interactor.isEnabled(particle)) {
|
7284 |
+
interactor.interact(particle, delta);
|
7285 |
+
}
|
7286 |
+
}
|
7287 |
+
}
|
7288 |
+
|
7289 |
+
}
|
7290 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Particles.js
|
7291 |
+
|
7292 |
+
|
7293 |
+
|
7294 |
+
class Particles_Particles {
|
7295 |
+
constructor(container) {
|
7296 |
+
this.container = container;
|
7297 |
+
this.nextId = 0;
|
7298 |
+
this.array = [];
|
7299 |
+
this.limit = 0;
|
7300 |
+
this.linksFreq = new Map();
|
7301 |
+
this.trianglesFreq = new Map();
|
7302 |
+
this.interactionManager = new InteractionManager(container);
|
7303 |
+
const canvasSize = this.container.canvas.size;
|
7304 |
+
this.linksColors = new Map();
|
7305 |
+
this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
|
7306 |
+
}
|
7307 |
+
|
7308 |
+
get count() {
|
7309 |
+
return this.array.length;
|
7310 |
+
}
|
7311 |
+
|
7312 |
+
init() {
|
7313 |
+
const container = this.container;
|
7314 |
+
const options = container.actualOptions;
|
7315 |
+
this.linksFreq = new Map();
|
7316 |
+
this.trianglesFreq = new Map();
|
7317 |
+
let handled = false;
|
7318 |
+
|
7319 |
+
for (const particle of options.manualParticles) {
|
7320 |
+
const pos = particle.position ? {
|
7321 |
+
x: particle.position.x * container.canvas.size.width / 100,
|
7322 |
+
y: particle.position.y * container.canvas.size.height / 100
|
7323 |
+
} : undefined;
|
7324 |
+
this.addParticle(pos, particle.options);
|
7325 |
+
}
|
7326 |
+
|
7327 |
+
for (const [, plugin] of container.plugins) {
|
7328 |
+
if (plugin.particlesInitialization !== undefined) {
|
7329 |
+
handled = plugin.particlesInitialization();
|
7330 |
+
}
|
7331 |
+
|
7332 |
+
if (handled) {
|
7333 |
+
break;
|
7334 |
+
}
|
7335 |
+
}
|
7336 |
+
|
7337 |
+
if (!handled) {
|
7338 |
+
for (let i = this.count; i < options.particles.number.value; i++) {
|
7339 |
+
this.addParticle();
|
7340 |
+
}
|
7341 |
+
}
|
7342 |
+
|
7343 |
+
if (options.infection.enable) {
|
7344 |
+
for (let i = 0; i < options.infection.infections; i++) {
|
7345 |
+
const notInfected = this.array.filter(p => p.infecter.infectionStage === undefined);
|
7346 |
+
const infected = Utils.itemFromArray(notInfected);
|
7347 |
+
infected.infecter.startInfection(0);
|
7348 |
+
}
|
7349 |
+
}
|
7350 |
+
|
7351 |
+
this.interactionManager.init();
|
7352 |
+
container.pathGenerator.init();
|
7353 |
+
}
|
7354 |
+
|
7355 |
+
redraw() {
|
7356 |
+
this.clear();
|
7357 |
+
this.init();
|
7358 |
+
this.draw({
|
7359 |
+
value: 0,
|
7360 |
+
factor: 0
|
7361 |
+
});
|
7362 |
+
}
|
7363 |
+
|
7364 |
+
removeAt(index, quantity) {
|
7365 |
+
if (index >= 0 && index <= this.count) {
|
7366 |
+
for (const particle of this.array.splice(index, quantity !== null && quantity !== void 0 ? quantity : 1)) {
|
7367 |
+
particle.destroy();
|
7368 |
+
}
|
7369 |
+
}
|
7370 |
+
}
|
7371 |
+
|
7372 |
+
remove(particle) {
|
7373 |
+
this.removeAt(this.array.indexOf(particle));
|
7374 |
+
}
|
7375 |
+
|
7376 |
+
update(delta) {
|
7377 |
+
const container = this.container;
|
7378 |
+
const particlesToDelete = [];
|
7379 |
+
container.pathGenerator.update();
|
7380 |
+
|
7381 |
+
for (const [, plugin] of container.plugins) {
|
7382 |
+
if (plugin.update !== undefined) {
|
7383 |
+
plugin.update(delta);
|
7384 |
+
}
|
7385 |
+
}
|
7386 |
+
|
7387 |
+
for (const particle of this.array) {
|
7388 |
+
const resizeFactor = this.container.canvas.resizeFactor;
|
7389 |
+
|
7390 |
+
if (resizeFactor) {
|
7391 |
+
particle.position.x *= resizeFactor.width;
|
7392 |
+
particle.position.y *= resizeFactor.height;
|
7393 |
+
}
|
7394 |
+
|
7395 |
+
particle.move(delta);
|
7396 |
+
|
7397 |
+
if (particle.destroyed) {
|
7398 |
+
particlesToDelete.push(particle);
|
7399 |
+
continue;
|
7400 |
+
}
|
7401 |
+
|
7402 |
+
this.quadTree.insert(new Point(particle.getPosition(), particle));
|
7403 |
+
}
|
7404 |
+
|
7405 |
+
for (const particle of particlesToDelete) {
|
7406 |
+
this.remove(particle);
|
7407 |
+
}
|
7408 |
+
|
7409 |
+
this.interactionManager.externalInteract(delta);
|
7410 |
+
|
7411 |
+
for (const particle of this.container.particles.array) {
|
7412 |
+
particle.update(delta);
|
7413 |
+
|
7414 |
+
if (!particle.destroyed && !particle.spawning) {
|
7415 |
+
this.interactionManager.particlesInteract(particle, delta);
|
7416 |
+
}
|
7417 |
+
}
|
7418 |
+
|
7419 |
+
delete container.canvas.resizeFactor;
|
7420 |
+
}
|
7421 |
+
|
7422 |
+
draw(delta) {
|
7423 |
+
const container = this.container;
|
7424 |
+
container.canvas.clear();
|
7425 |
+
const canvasSize = this.container.canvas.size;
|
7426 |
+
this.quadTree = new QuadTree(new Rectangle(-canvasSize.width / 4, -canvasSize.height / 4, canvasSize.width * 3 / 2, canvasSize.height * 3 / 2), 4);
|
7427 |
+
this.update(delta);
|
7428 |
+
|
7429 |
+
for (const [, plugin] of container.plugins) {
|
7430 |
+
container.canvas.drawPlugin(plugin, delta);
|
7431 |
+
}
|
7432 |
+
|
7433 |
+
for (const p of this.array) {
|
7434 |
+
p.draw(delta);
|
7435 |
+
}
|
7436 |
+
}
|
7437 |
+
|
7438 |
+
clear() {
|
7439 |
+
this.array = [];
|
7440 |
+
}
|
7441 |
+
|
7442 |
+
push(nb, mouse, overrideOptions) {
|
7443 |
+
const container = this.container;
|
7444 |
+
const options = container.actualOptions;
|
7445 |
+
const limit = options.particles.number.limit * container.density;
|
7446 |
+
this.pushing = true;
|
7447 |
+
|
7448 |
+
if (limit > 0) {
|
7449 |
+
const countToRemove = this.count + nb - limit;
|
7450 |
+
|
7451 |
+
if (countToRemove > 0) {
|
7452 |
+
this.removeQuantity(countToRemove);
|
7453 |
+
}
|
7454 |
+
}
|
7455 |
+
|
7456 |
+
for (let i = 0; i < nb; i++) {
|
7457 |
+
this.addParticle(mouse === null || mouse === void 0 ? void 0 : mouse.position, overrideOptions);
|
7458 |
+
}
|
7459 |
+
|
7460 |
+
this.pushing = false;
|
7461 |
+
}
|
7462 |
+
|
7463 |
+
addParticle(position, overrideOptions) {
|
7464 |
+
try {
|
7465 |
+
const particle = new Particle(this.nextId, this.container, position, overrideOptions);
|
7466 |
+
this.array.push(particle);
|
7467 |
+
this.nextId++;
|
7468 |
+
return particle;
|
7469 |
+
} catch (_a) {
|
7470 |
+
console.warn("error adding particle");
|
7471 |
+
return;
|
7472 |
+
}
|
7473 |
+
}
|
7474 |
+
|
7475 |
+
removeQuantity(quantity) {
|
7476 |
+
this.removeAt(0, quantity);
|
7477 |
+
}
|
7478 |
+
|
7479 |
+
getLinkFrequency(p1, p2) {
|
7480 |
+
const key = `${Math.min(p1.id, p2.id)}_${Math.max(p1.id, p2.id)}`;
|
7481 |
+
let res = this.linksFreq.get(key);
|
7482 |
+
|
7483 |
+
if (res === undefined) {
|
7484 |
+
res = Math.random();
|
7485 |
+
this.linksFreq.set(key, res);
|
7486 |
+
}
|
7487 |
+
|
7488 |
+
return res;
|
7489 |
+
}
|
7490 |
+
|
7491 |
+
getTriangleFrequency(p1, p2, p3) {
|
7492 |
+
let [id1, id2, id3] = [p1.id, p2.id, p3.id];
|
7493 |
+
|
7494 |
+
if (id1 > id2) {
|
7495 |
+
[id2, id1] = [id1, id2];
|
7496 |
+
}
|
7497 |
+
|
7498 |
+
if (id2 > id3) {
|
7499 |
+
[id3, id2] = [id2, id3];
|
7500 |
+
}
|
7501 |
+
|
7502 |
+
if (id1 > id3) {
|
7503 |
+
[id3, id1] = [id1, id3];
|
7504 |
+
}
|
7505 |
+
|
7506 |
+
const key = `${id1}_${id2}_${id3}`;
|
7507 |
+
let res = this.trianglesFreq.get(key);
|
7508 |
+
|
7509 |
+
if (res === undefined) {
|
7510 |
+
res = Math.random();
|
7511 |
+
this.trianglesFreq.set(key, res);
|
7512 |
+
}
|
7513 |
+
|
7514 |
+
return res;
|
7515 |
+
}
|
7516 |
+
|
7517 |
+
setDensity() {
|
7518 |
+
const options = this.container.actualOptions;
|
7519 |
+
this.applyDensity(options.particles);
|
7520 |
+
}
|
7521 |
+
|
7522 |
+
applyDensity(options) {
|
7523 |
+
var _a;
|
7524 |
+
|
7525 |
+
if (!((_a = options.number.density) === null || _a === void 0 ? void 0 : _a.enable)) {
|
7526 |
+
return;
|
7527 |
+
}
|
7528 |
+
|
7529 |
+
const numberOptions = options.number;
|
7530 |
+
const densityFactor = this.initDensityFactor(numberOptions.density);
|
7531 |
+
const optParticlesNumber = numberOptions.value;
|
7532 |
+
const optParticlesLimit = numberOptions.limit > 0 ? numberOptions.limit : optParticlesNumber;
|
7533 |
+
const particlesNumber = Math.min(optParticlesNumber, optParticlesLimit) * densityFactor;
|
7534 |
+
const particlesCount = this.count;
|
7535 |
+
this.limit = numberOptions.limit * densityFactor;
|
7536 |
+
|
7537 |
+
if (particlesCount < particlesNumber) {
|
7538 |
+
this.push(Math.abs(particlesNumber - particlesCount), undefined, options);
|
7539 |
+
} else if (particlesCount > particlesNumber) {
|
7540 |
+
this.removeQuantity(particlesCount - particlesNumber);
|
7541 |
+
}
|
7542 |
+
}
|
7543 |
+
|
7544 |
+
initDensityFactor(densityOptions) {
|
7545 |
+
const container = this.container;
|
7546 |
+
|
7547 |
+
if (!container.canvas.element || !densityOptions.enable) {
|
7548 |
+
return 1;
|
7549 |
+
}
|
7550 |
+
|
7551 |
+
const canvas = container.canvas.element;
|
7552 |
+
const pxRatio = container.retina.pixelRatio;
|
7553 |
+
return canvas.width * canvas.height / (densityOptions.factor * pxRatio * pxRatio * densityOptions.area);
|
7554 |
+
}
|
7555 |
+
|
7556 |
+
}
|
7557 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Retina.js
|
7558 |
+
|
7559 |
+
class Retina {
|
7560 |
+
constructor(container) {
|
7561 |
+
this.container = container;
|
7562 |
+
}
|
7563 |
+
|
7564 |
+
init() {
|
7565 |
+
const container = this.container;
|
7566 |
+
const options = container.actualOptions;
|
7567 |
+
|
7568 |
+
if (options.detectRetina) {
|
7569 |
+
this.pixelRatio = Utils.isSsr() ? 1 : window.devicePixelRatio;
|
7570 |
+
} else {
|
7571 |
+
this.pixelRatio = 1;
|
7572 |
+
}
|
7573 |
+
|
7574 |
+
const motionOptions = this.container.actualOptions.motion;
|
7575 |
+
|
7576 |
+
if (motionOptions && (motionOptions.disable || motionOptions.reduce.value)) {
|
7577 |
+
if (Utils.isSsr() || typeof matchMedia === "undefined" || !matchMedia) {
|
7578 |
+
this.reduceFactor = 1;
|
7579 |
+
} else {
|
7580 |
+
const mediaQuery = matchMedia("(prefers-reduced-motion: reduce)");
|
7581 |
+
|
7582 |
+
if (mediaQuery) {
|
7583 |
+
this.handleMotionChange(mediaQuery);
|
7584 |
+
|
7585 |
+
const handleChange = () => {
|
7586 |
+
this.handleMotionChange(mediaQuery);
|
7587 |
+
container.refresh().catch(() => {});
|
7588 |
+
};
|
7589 |
+
|
7590 |
+
if (mediaQuery.addEventListener !== undefined) {
|
7591 |
+
mediaQuery.addEventListener("change", handleChange);
|
7592 |
+
} else if (mediaQuery.addListener !== undefined) {
|
7593 |
+
mediaQuery.addListener(handleChange);
|
7594 |
+
}
|
7595 |
+
}
|
7596 |
+
}
|
7597 |
+
} else {
|
7598 |
+
this.reduceFactor = 1;
|
7599 |
+
}
|
7600 |
+
|
7601 |
+
const ratio = this.pixelRatio;
|
7602 |
+
|
7603 |
+
if (container.canvas.element) {
|
7604 |
+
const element = container.canvas.element;
|
7605 |
+
container.canvas.size.width = element.offsetWidth * ratio;
|
7606 |
+
container.canvas.size.height = element.offsetHeight * ratio;
|
7607 |
+
}
|
7608 |
+
|
7609 |
+
const particles = options.particles;
|
7610 |
+
this.linksDistance = particles.links.distance * ratio;
|
7611 |
+
this.linksWidth = particles.links.width * ratio;
|
7612 |
+
this.moveSpeed = particles.move.speed * ratio;
|
7613 |
+
this.sizeValue = particles.size.value * ratio;
|
7614 |
+
this.sizeAnimationSpeed = particles.size.animation.speed * ratio;
|
7615 |
+
const modes = options.interactivity.modes;
|
7616 |
+
this.connectModeDistance = modes.connect.distance * ratio;
|
7617 |
+
this.connectModeRadius = modes.connect.radius * ratio;
|
7618 |
+
this.grabModeDistance = modes.grab.distance * ratio;
|
7619 |
+
this.repulseModeDistance = modes.repulse.distance * ratio;
|
7620 |
+
this.bounceModeDistance = modes.bounce.distance * ratio;
|
7621 |
+
this.attractModeDistance = modes.attract.distance * ratio;
|
7622 |
+
this.slowModeRadius = modes.slow.radius * ratio;
|
7623 |
+
this.bubbleModeDistance = modes.bubble.distance * ratio;
|
7624 |
+
|
7625 |
+
if (modes.bubble.size) {
|
7626 |
+
this.bubbleModeSize = modes.bubble.size * ratio;
|
7627 |
+
}
|
7628 |
+
}
|
7629 |
+
|
7630 |
+
initParticle(particle) {
|
7631 |
+
const particlesOptions = particle.options;
|
7632 |
+
const ratio = this.pixelRatio;
|
7633 |
+
particle.linksDistance = particlesOptions.links.distance * ratio;
|
7634 |
+
particle.linksWidth = particlesOptions.links.width * ratio;
|
7635 |
+
particle.moveSpeed = particlesOptions.move.speed * ratio;
|
7636 |
+
particle.sizeValue = particlesOptions.size.value * ratio;
|
7637 |
+
particle.sizeAnimationSpeed = particlesOptions.size.animation.speed * ratio;
|
7638 |
+
particle.maxDistance = particlesOptions.move.distance * ratio;
|
7639 |
+
}
|
7640 |
+
|
7641 |
+
handleMotionChange(mediaQuery) {
|
7642 |
+
const options = this.container.actualOptions;
|
7643 |
+
|
7644 |
+
if (mediaQuery.matches) {
|
7645 |
+
const motion = options.motion;
|
7646 |
+
this.reduceFactor = motion.disable ? 0 : motion.reduce.value ? 1 / motion.reduce.factor : 1;
|
7647 |
+
} else {
|
7648 |
+
this.reduceFactor = 1;
|
7649 |
+
}
|
7650 |
+
}
|
7651 |
+
|
7652 |
+
}
|
7653 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/FrameManager.js
|
7654 |
+
class FrameManager {
|
7655 |
+
constructor(container) {
|
7656 |
+
this.container = container;
|
7657 |
+
}
|
7658 |
+
|
7659 |
+
nextFrame(timestamp) {
|
7660 |
+
try {
|
7661 |
+
const container = this.container;
|
7662 |
+
|
7663 |
+
if (container.lastFrameTime !== undefined && timestamp < container.lastFrameTime + 1000 / container.fpsLimit) {
|
7664 |
+
container.draw();
|
7665 |
+
return;
|
7666 |
+
}
|
7667 |
+
|
7668 |
+
const deltaValue = timestamp - container.lastFrameTime;
|
7669 |
+
const delta = {
|
7670 |
+
value: deltaValue,
|
7671 |
+
factor: 60 * deltaValue / 1000
|
7672 |
+
};
|
7673 |
+
container.lastFrameTime = timestamp;
|
7674 |
+
container.particles.draw(delta);
|
7675 |
+
|
7676 |
+
if (container.getAnimationStatus()) {
|
7677 |
+
container.draw();
|
7678 |
+
}
|
7679 |
+
} catch (e) {
|
7680 |
+
console.error("tsParticles error in animation loop", e);
|
7681 |
+
}
|
7682 |
+
}
|
7683 |
+
|
7684 |
+
}
|
7685 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Events/ClickEvent.js
|
7686 |
+
class ClickEvent {
|
7687 |
+
constructor() {
|
7688 |
+
this.enable = false;
|
7689 |
+
this.mode = [];
|
7690 |
+
}
|
7691 |
+
|
7692 |
+
load(data) {
|
7693 |
+
if (data === undefined) {
|
7694 |
+
return;
|
7695 |
+
}
|
7696 |
+
|
7697 |
+
if (data.enable !== undefined) {
|
7698 |
+
this.enable = data.enable;
|
7699 |
+
}
|
7700 |
+
|
7701 |
+
if (data.mode !== undefined) {
|
7702 |
+
this.mode = data.mode;
|
7703 |
+
}
|
7704 |
+
}
|
7705 |
+
|
7706 |
+
}
|
7707 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Events/DivEvent.js
|
7708 |
+
|
7709 |
+
class DivEvent {
|
7710 |
+
constructor() {
|
7711 |
+
this.selectors = [];
|
7712 |
+
this.enable = false;
|
7713 |
+
this.mode = [];
|
7714 |
+
this.type = DivType.circle;
|
7715 |
+
}
|
7716 |
+
|
7717 |
+
get elementId() {
|
7718 |
+
return this.ids;
|
7719 |
+
}
|
7720 |
+
|
7721 |
+
set elementId(value) {
|
7722 |
+
this.ids = value;
|
7723 |
+
}
|
7724 |
+
|
7725 |
+
get el() {
|
7726 |
+
return this.elementId;
|
7727 |
+
}
|
7728 |
+
|
7729 |
+
set el(value) {
|
7730 |
+
this.elementId = value;
|
7731 |
+
}
|
7732 |
+
|
7733 |
+
get ids() {
|
7734 |
+
if (this.selectors instanceof Array) {
|
7735 |
+
return this.selectors.map(t => t.replace("#", ""));
|
7736 |
+
} else {
|
7737 |
+
return this.selectors.replace("#", "");
|
7738 |
+
}
|
7739 |
+
}
|
7740 |
+
|
7741 |
+
set ids(value) {
|
7742 |
+
if (value instanceof Array) {
|
7743 |
+
this.selectors = value.map(t => `#${t}`);
|
7744 |
+
} else {
|
7745 |
+
this.selectors = `#${value}`;
|
7746 |
+
}
|
7747 |
+
}
|
7748 |
+
|
7749 |
+
load(data) {
|
7750 |
+
var _a, _b;
|
7751 |
+
|
7752 |
+
if (data === undefined) {
|
7753 |
+
return;
|
7754 |
+
}
|
7755 |
+
|
7756 |
+
const ids = (_b = (_a = data.ids) !== null && _a !== void 0 ? _a : data.elementId) !== null && _b !== void 0 ? _b : data.el;
|
7757 |
+
|
7758 |
+
if (ids !== undefined) {
|
7759 |
+
this.ids = ids;
|
7760 |
+
}
|
7761 |
+
|
7762 |
+
if (data.selectors !== undefined) {
|
7763 |
+
this.selectors = data.selectors;
|
7764 |
+
}
|
7765 |
+
|
7766 |
+
if (data.enable !== undefined) {
|
7767 |
+
this.enable = data.enable;
|
7768 |
+
}
|
7769 |
+
|
7770 |
+
if (data.mode !== undefined) {
|
7771 |
+
this.mode = data.mode;
|
7772 |
+
}
|
7773 |
+
|
7774 |
+
if (data.type !== undefined) {
|
7775 |
+
this.type = data.type;
|
7776 |
+
}
|
7777 |
+
}
|
7778 |
+
|
7779 |
+
}
|
7780 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Events/Parallax.js
|
7781 |
+
class Parallax {
|
7782 |
+
constructor() {
|
7783 |
+
this.enable = false;
|
7784 |
+
this.force = 2;
|
7785 |
+
this.smooth = 10;
|
7786 |
+
}
|
7787 |
+
|
7788 |
+
load(data) {
|
7789 |
+
if (data === undefined) {
|
7790 |
+
return;
|
7791 |
+
}
|
7792 |
+
|
7793 |
+
if (data.enable !== undefined) {
|
7794 |
+
this.enable = data.enable;
|
7795 |
+
}
|
7796 |
+
|
7797 |
+
if (data.force !== undefined) {
|
7798 |
+
this.force = data.force;
|
7799 |
+
}
|
7800 |
+
|
7801 |
+
if (data.smooth !== undefined) {
|
7802 |
+
this.smooth = data.smooth;
|
7803 |
+
}
|
7804 |
+
}
|
7805 |
+
|
7806 |
+
}
|
7807 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Events/HoverEvent.js
|
7808 |
+
|
7809 |
+
class HoverEvent {
|
7810 |
+
constructor() {
|
7811 |
+
this.enable = false;
|
7812 |
+
this.mode = [];
|
7813 |
+
this.parallax = new Parallax();
|
7814 |
+
}
|
7815 |
+
|
7816 |
+
load(data) {
|
7817 |
+
if (data === undefined) {
|
7818 |
+
return;
|
7819 |
+
}
|
7820 |
+
|
7821 |
+
if (data.enable !== undefined) {
|
7822 |
+
this.enable = data.enable;
|
7823 |
+
}
|
7824 |
+
|
7825 |
+
if (data.mode !== undefined) {
|
7826 |
+
this.mode = data.mode;
|
7827 |
+
}
|
7828 |
+
|
7829 |
+
this.parallax.load(data.parallax);
|
7830 |
+
}
|
7831 |
+
|
7832 |
+
}
|
7833 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Events/Events.js
|
7834 |
+
|
7835 |
+
|
7836 |
+
|
7837 |
+
class Events {
|
7838 |
+
constructor() {
|
7839 |
+
this.onClick = new ClickEvent();
|
7840 |
+
this.onDiv = new DivEvent();
|
7841 |
+
this.onHover = new HoverEvent();
|
7842 |
+
this.resize = true;
|
7843 |
+
}
|
7844 |
+
|
7845 |
+
get onclick() {
|
7846 |
+
return this.onClick;
|
7847 |
+
}
|
7848 |
+
|
7849 |
+
set onclick(value) {
|
7850 |
+
this.onClick = value;
|
7851 |
+
}
|
7852 |
+
|
7853 |
+
get ondiv() {
|
7854 |
+
return this.onDiv;
|
7855 |
+
}
|
7856 |
+
|
7857 |
+
set ondiv(value) {
|
7858 |
+
this.onDiv = value;
|
7859 |
+
}
|
7860 |
+
|
7861 |
+
get onhover() {
|
7862 |
+
return this.onHover;
|
7863 |
+
}
|
7864 |
+
|
7865 |
+
set onhover(value) {
|
7866 |
+
this.onHover = value;
|
7867 |
+
}
|
7868 |
+
|
7869 |
+
load(data) {
|
7870 |
+
var _a, _b, _c;
|
7871 |
+
|
7872 |
+
if (data === undefined) {
|
7873 |
+
return;
|
7874 |
+
}
|
7875 |
+
|
7876 |
+
this.onClick.load((_a = data.onClick) !== null && _a !== void 0 ? _a : data.onclick);
|
7877 |
+
const onDiv = (_b = data.onDiv) !== null && _b !== void 0 ? _b : data.ondiv;
|
7878 |
+
|
7879 |
+
if (onDiv !== undefined) {
|
7880 |
+
if (onDiv instanceof Array) {
|
7881 |
+
this.onDiv = onDiv.map(div => {
|
7882 |
+
const tmp = new DivEvent();
|
7883 |
+
tmp.load(div);
|
7884 |
+
return tmp;
|
7885 |
+
});
|
7886 |
+
} else {
|
7887 |
+
this.onDiv = new DivEvent();
|
7888 |
+
this.onDiv.load(onDiv);
|
7889 |
+
}
|
7890 |
+
}
|
7891 |
+
|
7892 |
+
this.onHover.load((_c = data.onHover) !== null && _c !== void 0 ? _c : data.onhover);
|
7893 |
+
|
7894 |
+
if (data.resize !== undefined) {
|
7895 |
+
this.resize = data.resize;
|
7896 |
+
}
|
7897 |
+
}
|
7898 |
+
|
7899 |
+
}
|
7900 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/BubbleBase.js
|
7901 |
+
|
7902 |
+
class BubbleBase {
|
7903 |
+
constructor() {
|
7904 |
+
this.distance = 200;
|
7905 |
+
this.duration = 0.4;
|
7906 |
+
}
|
7907 |
+
|
7908 |
+
load(data) {
|
7909 |
+
if (data === undefined) {
|
7910 |
+
return;
|
7911 |
+
}
|
7912 |
+
|
7913 |
+
if (data.distance !== undefined) {
|
7914 |
+
this.distance = data.distance;
|
7915 |
+
}
|
7916 |
+
|
7917 |
+
if (data.duration !== undefined) {
|
7918 |
+
this.duration = data.duration;
|
7919 |
+
}
|
7920 |
+
|
7921 |
+
if (data.opacity !== undefined) {
|
7922 |
+
this.opacity = data.opacity;
|
7923 |
+
}
|
7924 |
+
|
7925 |
+
if (data.color !== undefined) {
|
7926 |
+
if (data.color instanceof Array) {
|
7927 |
+
this.color = data.color.map(s => OptionsColor.create(undefined, s));
|
7928 |
+
} else {
|
7929 |
+
if (this.color instanceof Array) {
|
7930 |
+
this.color = new OptionsColor();
|
7931 |
+
}
|
7932 |
+
|
7933 |
+
this.color = OptionsColor.create(this.color, data.color);
|
7934 |
+
}
|
7935 |
+
}
|
7936 |
+
|
7937 |
+
if (data.size !== undefined) {
|
7938 |
+
this.size = data.size;
|
7939 |
+
}
|
7940 |
+
}
|
7941 |
+
|
7942 |
+
}
|
7943 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/BubbleDiv.js
|
7944 |
+
|
7945 |
+
class BubbleDiv extends BubbleBase {
|
7946 |
+
constructor() {
|
7947 |
+
super();
|
7948 |
+
this.selectors = [];
|
7949 |
+
}
|
7950 |
+
|
7951 |
+
get ids() {
|
7952 |
+
if (this.selectors instanceof Array) {
|
7953 |
+
return this.selectors.map(t => t.replace("#", ""));
|
7954 |
+
} else {
|
7955 |
+
return this.selectors.replace("#", "");
|
7956 |
+
}
|
7957 |
+
}
|
7958 |
+
|
7959 |
+
set ids(value) {
|
7960 |
+
if (value instanceof Array) {
|
7961 |
+
this.selectors = value.map(t => `#${t}`);
|
7962 |
+
} else {
|
7963 |
+
this.selectors = `#${value}`;
|
7964 |
+
}
|
7965 |
+
}
|
7966 |
+
|
7967 |
+
load(data) {
|
7968 |
+
super.load(data);
|
7969 |
+
|
7970 |
+
if (data === undefined) {
|
7971 |
+
return;
|
7972 |
+
}
|
7973 |
+
|
7974 |
+
if (data.ids !== undefined) {
|
7975 |
+
this.ids = data.ids;
|
7976 |
+
}
|
7977 |
+
|
7978 |
+
if (data.selectors !== undefined) {
|
7979 |
+
this.selectors = data.selectors;
|
7980 |
+
}
|
7981 |
+
}
|
7982 |
+
|
7983 |
+
}
|
7984 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Bubble.js
|
7985 |
+
|
7986 |
+
|
7987 |
+
class Bubble extends BubbleBase {
|
7988 |
+
load(data) {
|
7989 |
+
super.load(data);
|
7990 |
+
|
7991 |
+
if (!(data !== undefined && data.divs !== undefined)) {
|
7992 |
+
return;
|
7993 |
+
}
|
7994 |
+
|
7995 |
+
if (data.divs instanceof Array) {
|
7996 |
+
this.divs = data.divs.map(s => {
|
7997 |
+
const tmp = new BubbleDiv();
|
7998 |
+
tmp.load(s);
|
7999 |
+
return tmp;
|
8000 |
+
});
|
8001 |
+
} else {
|
8002 |
+
if (this.divs instanceof Array || !this.divs) {
|
8003 |
+
this.divs = new BubbleDiv();
|
8004 |
+
}
|
8005 |
+
|
8006 |
+
this.divs.load(data.divs);
|
8007 |
+
}
|
8008 |
+
}
|
8009 |
+
|
8010 |
+
}
|
8011 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/ConnectLinks.js
|
8012 |
+
class ConnectLinks {
|
8013 |
+
constructor() {
|
8014 |
+
this.opacity = 0.5;
|
8015 |
+
}
|
8016 |
+
|
8017 |
+
load(data) {
|
8018 |
+
if (!(data !== undefined && data.opacity !== undefined)) {
|
8019 |
+
return;
|
8020 |
+
}
|
8021 |
+
|
8022 |
+
this.opacity = data.opacity;
|
8023 |
+
}
|
8024 |
+
|
8025 |
+
}
|
8026 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Connect.js
|
8027 |
+
|
8028 |
+
class Connect {
|
8029 |
+
constructor() {
|
8030 |
+
this.distance = 80;
|
8031 |
+
this.links = new ConnectLinks();
|
8032 |
+
this.radius = 60;
|
8033 |
+
}
|
8034 |
+
|
8035 |
+
get line_linked() {
|
8036 |
+
return this.links;
|
8037 |
+
}
|
8038 |
+
|
8039 |
+
set line_linked(value) {
|
8040 |
+
this.links = value;
|
8041 |
+
}
|
8042 |
+
|
8043 |
+
get lineLinked() {
|
8044 |
+
return this.links;
|
8045 |
+
}
|
8046 |
+
|
8047 |
+
set lineLinked(value) {
|
8048 |
+
this.links = value;
|
8049 |
+
}
|
8050 |
+
|
8051 |
+
load(data) {
|
8052 |
+
var _a, _b;
|
8053 |
+
|
8054 |
+
if (data === undefined) {
|
8055 |
+
return;
|
8056 |
+
}
|
8057 |
+
|
8058 |
+
if (data.distance !== undefined) {
|
8059 |
+
this.distance = data.distance;
|
8060 |
+
}
|
8061 |
+
|
8062 |
+
this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);
|
8063 |
+
|
8064 |
+
if (data.radius !== undefined) {
|
8065 |
+
this.radius = data.radius;
|
8066 |
+
}
|
8067 |
+
}
|
8068 |
+
|
8069 |
+
}
|
8070 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/GrabLinks.js
|
8071 |
+
|
8072 |
+
class GrabLinks {
|
8073 |
+
constructor() {
|
8074 |
+
this.blink = false;
|
8075 |
+
this.consent = false;
|
8076 |
+
this.opacity = 1;
|
8077 |
+
}
|
8078 |
+
|
8079 |
+
load(data) {
|
8080 |
+
if (data === undefined) {
|
8081 |
+
return;
|
8082 |
+
}
|
8083 |
+
|
8084 |
+
if (data.blink !== undefined) {
|
8085 |
+
this.blink = data.blink;
|
8086 |
+
}
|
8087 |
+
|
8088 |
+
if (data.color !== undefined) {
|
8089 |
+
this.color = OptionsColor.create(this.color, data.color);
|
8090 |
+
}
|
8091 |
+
|
8092 |
+
if (data.consent !== undefined) {
|
8093 |
+
this.consent = data.consent;
|
8094 |
+
}
|
8095 |
+
|
8096 |
+
if (data.opacity !== undefined) {
|
8097 |
+
this.opacity = data.opacity;
|
8098 |
+
}
|
8099 |
+
}
|
8100 |
+
|
8101 |
+
}
|
8102 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Grab.js
|
8103 |
+
|
8104 |
+
class Grab {
|
8105 |
+
constructor() {
|
8106 |
+
this.distance = 100;
|
8107 |
+
this.links = new GrabLinks();
|
8108 |
+
}
|
8109 |
+
|
8110 |
+
get line_linked() {
|
8111 |
+
return this.links;
|
8112 |
+
}
|
8113 |
+
|
8114 |
+
set line_linked(value) {
|
8115 |
+
this.links = value;
|
8116 |
+
}
|
8117 |
+
|
8118 |
+
get lineLinked() {
|
8119 |
+
return this.links;
|
8120 |
+
}
|
8121 |
+
|
8122 |
+
set lineLinked(value) {
|
8123 |
+
this.links = value;
|
8124 |
+
}
|
8125 |
+
|
8126 |
+
load(data) {
|
8127 |
+
var _a, _b;
|
8128 |
+
|
8129 |
+
if (data === undefined) {
|
8130 |
+
return;
|
8131 |
+
}
|
8132 |
+
|
8133 |
+
if (data.distance !== undefined) {
|
8134 |
+
this.distance = data.distance;
|
8135 |
+
}
|
8136 |
+
|
8137 |
+
this.links.load((_b = (_a = data.links) !== null && _a !== void 0 ? _a : data.lineLinked) !== null && _b !== void 0 ? _b : data.line_linked);
|
8138 |
+
}
|
8139 |
+
|
8140 |
+
}
|
8141 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Remove.js
|
8142 |
+
class Remove {
|
8143 |
+
constructor() {
|
8144 |
+
this.quantity = 2;
|
8145 |
+
}
|
8146 |
+
|
8147 |
+
get particles_nb() {
|
8148 |
+
return this.quantity;
|
8149 |
+
}
|
8150 |
+
|
8151 |
+
set particles_nb(value) {
|
8152 |
+
this.quantity = value;
|
8153 |
+
}
|
8154 |
+
|
8155 |
+
load(data) {
|
8156 |
+
var _a;
|
8157 |
+
|
8158 |
+
if (data === undefined) {
|
8159 |
+
return;
|
8160 |
+
}
|
8161 |
+
|
8162 |
+
const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;
|
8163 |
+
|
8164 |
+
if (quantity !== undefined) {
|
8165 |
+
this.quantity = quantity;
|
8166 |
+
}
|
8167 |
+
}
|
8168 |
+
|
8169 |
+
}
|
8170 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Push.js
|
8171 |
+
class Push {
|
8172 |
+
constructor() {
|
8173 |
+
this.quantity = 4;
|
8174 |
+
}
|
8175 |
+
|
8176 |
+
get particles_nb() {
|
8177 |
+
return this.quantity;
|
8178 |
+
}
|
8179 |
+
|
8180 |
+
set particles_nb(value) {
|
8181 |
+
this.quantity = value;
|
8182 |
+
}
|
8183 |
+
|
8184 |
+
load(data) {
|
8185 |
+
var _a;
|
8186 |
+
|
8187 |
+
if (data === undefined) {
|
8188 |
+
return;
|
8189 |
+
}
|
8190 |
+
|
8191 |
+
const quantity = (_a = data.quantity) !== null && _a !== void 0 ? _a : data.particles_nb;
|
8192 |
+
|
8193 |
+
if (quantity !== undefined) {
|
8194 |
+
this.quantity = quantity;
|
8195 |
+
}
|
8196 |
+
}
|
8197 |
+
|
8198 |
+
}
|
8199 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/RepulseBase.js
|
8200 |
+
class RepulseBase {
|
8201 |
+
constructor() {
|
8202 |
+
this.distance = 200;
|
8203 |
+
this.duration = 0.4;
|
8204 |
+
this.speed = 1;
|
8205 |
+
}
|
8206 |
+
|
8207 |
+
load(data) {
|
8208 |
+
if (data === undefined) {
|
8209 |
+
return;
|
8210 |
+
}
|
8211 |
+
|
8212 |
+
if (data.distance !== undefined) {
|
8213 |
+
this.distance = data.distance;
|
8214 |
+
}
|
8215 |
+
|
8216 |
+
if (data.duration !== undefined) {
|
8217 |
+
this.duration = data.duration;
|
8218 |
+
}
|
8219 |
+
|
8220 |
+
if (data.speed !== undefined) {
|
8221 |
+
this.speed = data.speed;
|
8222 |
+
}
|
8223 |
+
}
|
8224 |
+
|
8225 |
+
}
|
8226 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/RepulseDiv.js
|
8227 |
+
|
8228 |
+
class RepulseDiv extends RepulseBase {
|
8229 |
+
constructor() {
|
8230 |
+
super();
|
8231 |
+
this.selectors = [];
|
8232 |
+
}
|
8233 |
+
|
8234 |
+
get ids() {
|
8235 |
+
if (this.selectors instanceof Array) {
|
8236 |
+
return this.selectors.map(t => t.replace("#", ""));
|
8237 |
+
} else {
|
8238 |
+
return this.selectors.replace("#", "");
|
8239 |
+
}
|
8240 |
+
}
|
8241 |
+
|
8242 |
+
set ids(value) {
|
8243 |
+
if (value instanceof Array) {
|
8244 |
+
this.selectors = value.map(() => `#${value}`);
|
8245 |
+
} else {
|
8246 |
+
this.selectors = `#${value}`;
|
8247 |
+
}
|
8248 |
+
}
|
8249 |
+
|
8250 |
+
load(data) {
|
8251 |
+
super.load(data);
|
8252 |
+
|
8253 |
+
if (data === undefined) {
|
8254 |
+
return;
|
8255 |
+
}
|
8256 |
+
|
8257 |
+
if (data.ids !== undefined) {
|
8258 |
+
this.ids = data.ids;
|
8259 |
+
}
|
8260 |
+
|
8261 |
+
if (data.selectors !== undefined) {
|
8262 |
+
this.selectors = data.selectors;
|
8263 |
+
}
|
8264 |
+
}
|
8265 |
+
|
8266 |
+
}
|
8267 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Repulse.js
|
8268 |
+
|
8269 |
+
|
8270 |
+
class Repulse extends RepulseBase {
|
8271 |
+
load(data) {
|
8272 |
+
super.load(data);
|
8273 |
+
|
8274 |
+
if ((data === null || data === void 0 ? void 0 : data.divs) === undefined) {
|
8275 |
+
return;
|
8276 |
+
}
|
8277 |
+
|
8278 |
+
if (data.divs instanceof Array) {
|
8279 |
+
this.divs = data.divs.map(s => {
|
8280 |
+
const tmp = new RepulseDiv();
|
8281 |
+
tmp.load(s);
|
8282 |
+
return tmp;
|
8283 |
+
});
|
8284 |
+
} else {
|
8285 |
+
if (this.divs instanceof Array || !this.divs) {
|
8286 |
+
this.divs = new RepulseDiv();
|
8287 |
+
}
|
8288 |
+
|
8289 |
+
this.divs.load(data.divs);
|
8290 |
+
}
|
8291 |
+
}
|
8292 |
+
|
8293 |
+
}
|
8294 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Slow.js
|
8295 |
+
class Slow {
|
8296 |
+
constructor() {
|
8297 |
+
this.factor = 3;
|
8298 |
+
this.radius = 200;
|
8299 |
+
}
|
8300 |
+
|
8301 |
+
get active() {
|
8302 |
+
return false;
|
8303 |
+
}
|
8304 |
+
|
8305 |
+
set active(_value) {}
|
8306 |
+
|
8307 |
+
load(data) {
|
8308 |
+
if (data === undefined) {
|
8309 |
+
return;
|
8310 |
+
}
|
8311 |
+
|
8312 |
+
if (data.factor !== undefined) {
|
8313 |
+
this.factor = data.factor;
|
8314 |
+
}
|
8315 |
+
|
8316 |
+
if (data.radius !== undefined) {
|
8317 |
+
this.radius = data.radius;
|
8318 |
+
}
|
8319 |
+
}
|
8320 |
+
|
8321 |
+
}
|
8322 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Trail.js
|
8323 |
+
|
8324 |
+
class Trail_Trail {
|
8325 |
+
constructor() {
|
8326 |
+
this.delay = 1;
|
8327 |
+
this.quantity = 1;
|
8328 |
+
}
|
8329 |
+
|
8330 |
+
load(data) {
|
8331 |
+
if (data === undefined) {
|
8332 |
+
return;
|
8333 |
+
}
|
8334 |
+
|
8335 |
+
if (data.delay !== undefined) {
|
8336 |
+
this.delay = data.delay;
|
8337 |
+
}
|
8338 |
+
|
8339 |
+
if (data.quantity !== undefined) {
|
8340 |
+
this.quantity = data.quantity;
|
8341 |
+
}
|
8342 |
+
|
8343 |
+
if (data.particles !== undefined) {
|
8344 |
+
this.particles = Utils.deepExtend({}, data.particles);
|
8345 |
+
}
|
8346 |
+
}
|
8347 |
+
|
8348 |
+
}
|
8349 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Attract.js
|
8350 |
+
class Attract_Attract {
|
8351 |
+
constructor() {
|
8352 |
+
this.distance = 200;
|
8353 |
+
this.duration = 0.4;
|
8354 |
+
this.speed = 1;
|
8355 |
+
}
|
8356 |
+
|
8357 |
+
load(data) {
|
8358 |
+
if (data === undefined) {
|
8359 |
+
return;
|
8360 |
+
}
|
8361 |
+
|
8362 |
+
if (data.distance !== undefined) {
|
8363 |
+
this.distance = data.distance;
|
8364 |
+
}
|
8365 |
+
|
8366 |
+
if (data.duration !== undefined) {
|
8367 |
+
this.duration = data.duration;
|
8368 |
+
}
|
8369 |
+
|
8370 |
+
if (data.speed !== undefined) {
|
8371 |
+
this.speed = data.speed;
|
8372 |
+
}
|
8373 |
+
}
|
8374 |
+
|
8375 |
+
}
|
8376 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/LightGradient.js
|
8377 |
+
|
8378 |
+
class LightGradient {
|
8379 |
+
constructor() {
|
8380 |
+
this.start = new OptionsColor();
|
8381 |
+
this.stop = new OptionsColor();
|
8382 |
+
this.start.value = "#ffffff";
|
8383 |
+
this.stop.value = "#000000";
|
8384 |
+
}
|
8385 |
+
|
8386 |
+
load(data) {
|
8387 |
+
if (data === undefined) {
|
8388 |
+
return;
|
8389 |
+
}
|
8390 |
+
|
8391 |
+
this.start = OptionsColor.create(this.start, data.start);
|
8392 |
+
this.stop = OptionsColor.create(this.stop, data.stop);
|
8393 |
+
}
|
8394 |
+
|
8395 |
+
}
|
8396 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/LightArea.js
|
8397 |
+
|
8398 |
+
class LightArea {
|
8399 |
+
constructor() {
|
8400 |
+
this.gradient = new LightGradient();
|
8401 |
+
this.radius = 1000;
|
8402 |
+
}
|
8403 |
+
|
8404 |
+
load(data) {
|
8405 |
+
if (data === undefined) {
|
8406 |
+
return;
|
8407 |
+
}
|
8408 |
+
|
8409 |
+
this.gradient.load(data.gradient);
|
8410 |
+
|
8411 |
+
if (data.radius !== undefined) {
|
8412 |
+
this.radius = data.radius;
|
8413 |
+
}
|
8414 |
+
}
|
8415 |
+
|
8416 |
+
}
|
8417 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/LightShadow.js
|
8418 |
+
|
8419 |
+
class LightShadow {
|
8420 |
+
constructor() {
|
8421 |
+
this.color = new OptionsColor();
|
8422 |
+
this.color.value = "#000000";
|
8423 |
+
this.length = 2000;
|
8424 |
+
}
|
8425 |
+
|
8426 |
+
load(data) {
|
8427 |
+
if (data === undefined) {
|
8428 |
+
return;
|
8429 |
+
}
|
8430 |
+
|
8431 |
+
this.color = OptionsColor.create(this.color, data.color);
|
8432 |
+
|
8433 |
+
if (data.length !== undefined) {
|
8434 |
+
this.length = data.length;
|
8435 |
+
}
|
8436 |
+
}
|
8437 |
+
|
8438 |
+
}
|
8439 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Light.js
|
8440 |
+
|
8441 |
+
|
8442 |
+
class Light {
|
8443 |
+
constructor() {
|
8444 |
+
this.area = new LightArea();
|
8445 |
+
this.shadow = new LightShadow();
|
8446 |
+
}
|
8447 |
+
|
8448 |
+
load(data) {
|
8449 |
+
if (data === undefined) {
|
8450 |
+
return;
|
8451 |
+
}
|
8452 |
+
|
8453 |
+
this.area.load(data.area);
|
8454 |
+
this.shadow.load(data.shadow);
|
8455 |
+
}
|
8456 |
+
|
8457 |
+
}
|
8458 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Bounce.js
|
8459 |
+
class Bounce_Bounce {
|
8460 |
+
constructor() {
|
8461 |
+
this.distance = 200;
|
8462 |
+
}
|
8463 |
+
|
8464 |
+
load(data) {
|
8465 |
+
if (!data) {
|
8466 |
+
return;
|
8467 |
+
}
|
8468 |
+
|
8469 |
+
if (data.distance !== undefined) {
|
8470 |
+
this.distance = data.distance;
|
8471 |
+
}
|
8472 |
+
}
|
8473 |
+
|
8474 |
+
}
|
8475 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Modes/Modes.js
|
8476 |
+
|
8477 |
+
|
8478 |
+
|
8479 |
+
|
8480 |
+
|
8481 |
+
|
8482 |
+
|
8483 |
+
|
8484 |
+
|
8485 |
+
|
8486 |
+
|
8487 |
+
class Modes {
|
8488 |
+
constructor() {
|
8489 |
+
this.attract = new Attract_Attract();
|
8490 |
+
this.bounce = new Bounce_Bounce();
|
8491 |
+
this.bubble = new Bubble();
|
8492 |
+
this.connect = new Connect();
|
8493 |
+
this.grab = new Grab();
|
8494 |
+
this.light = new Light();
|
8495 |
+
this.push = new Push();
|
8496 |
+
this.remove = new Remove();
|
8497 |
+
this.repulse = new Repulse();
|
8498 |
+
this.slow = new Slow();
|
8499 |
+
this.trail = new Trail_Trail();
|
8500 |
+
}
|
8501 |
+
|
8502 |
+
load(data) {
|
8503 |
+
if (data === undefined) {
|
8504 |
+
return;
|
8505 |
+
}
|
8506 |
+
|
8507 |
+
this.attract.load(data.attract);
|
8508 |
+
this.bubble.load(data.bubble);
|
8509 |
+
this.connect.load(data.connect);
|
8510 |
+
this.grab.load(data.grab);
|
8511 |
+
this.light.load(data.light);
|
8512 |
+
this.push.load(data.push);
|
8513 |
+
this.remove.load(data.remove);
|
8514 |
+
this.repulse.load(data.repulse);
|
8515 |
+
this.slow.load(data.slow);
|
8516 |
+
this.trail.load(data.trail);
|
8517 |
+
}
|
8518 |
+
|
8519 |
+
}
|
8520 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Interactivity/Interactivity.js
|
8521 |
+
|
8522 |
+
|
8523 |
+
|
8524 |
+
class Interactivity {
|
8525 |
+
constructor() {
|
8526 |
+
this.detectsOn = InteractivityDetect.canvas;
|
8527 |
+
this.events = new Events();
|
8528 |
+
this.modes = new Modes();
|
8529 |
+
}
|
8530 |
+
|
8531 |
+
get detect_on() {
|
8532 |
+
return this.detectsOn;
|
8533 |
+
}
|
8534 |
+
|
8535 |
+
set detect_on(value) {
|
8536 |
+
this.detectsOn = value;
|
8537 |
+
}
|
8538 |
+
|
8539 |
+
load(data) {
|
8540 |
+
var _a, _b, _c;
|
8541 |
+
|
8542 |
+
if (data === undefined) {
|
8543 |
+
return;
|
8544 |
+
}
|
8545 |
+
|
8546 |
+
const detectsOn = (_a = data.detectsOn) !== null && _a !== void 0 ? _a : data.detect_on;
|
8547 |
+
|
8548 |
+
if (detectsOn !== undefined) {
|
8549 |
+
this.detectsOn = detectsOn;
|
8550 |
+
}
|
8551 |
+
|
8552 |
+
this.events.load(data.events);
|
8553 |
+
this.modes.load(data.modes);
|
8554 |
+
|
8555 |
+
if (((_c = (_b = data.modes) === null || _b === void 0 ? void 0 : _b.slow) === null || _c === void 0 ? void 0 : _c.active) === true) {
|
8556 |
+
if (this.events.onHover.mode instanceof Array) {
|
8557 |
+
if (this.events.onHover.mode.indexOf(HoverMode.slow) < 0) {
|
8558 |
+
this.events.onHover.mode.push(HoverMode.slow);
|
8559 |
+
}
|
8560 |
+
} else if (this.events.onHover.mode !== HoverMode.slow) {
|
8561 |
+
this.events.onHover.mode = [this.events.onHover.mode, HoverMode.slow];
|
8562 |
+
}
|
8563 |
+
}
|
8564 |
+
}
|
8565 |
+
|
8566 |
+
}
|
8567 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/BackgroundMask/BackgroundMaskCover.js
|
8568 |
+
|
8569 |
+
class BackgroundMaskCover {
|
8570 |
+
constructor() {
|
8571 |
+
this.color = new OptionsColor();
|
8572 |
+
this.opacity = 1;
|
8573 |
+
}
|
8574 |
+
|
8575 |
+
load(data) {
|
8576 |
+
if (data === undefined) {
|
8577 |
+
return;
|
8578 |
+
}
|
8579 |
+
|
8580 |
+
if (data.color !== undefined) {
|
8581 |
+
this.color = OptionsColor.create(this.color, data.color);
|
8582 |
+
}
|
8583 |
+
|
8584 |
+
if (data.opacity !== undefined) {
|
8585 |
+
this.opacity = data.opacity;
|
8586 |
+
}
|
8587 |
+
}
|
8588 |
+
|
8589 |
+
}
|
8590 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/BackgroundMask/BackgroundMask.js
|
8591 |
+
|
8592 |
+
class BackgroundMask {
|
8593 |
+
constructor() {
|
8594 |
+
this.composite = "destination-out";
|
8595 |
+
this.cover = new BackgroundMaskCover();
|
8596 |
+
this.enable = false;
|
8597 |
+
}
|
8598 |
+
|
8599 |
+
load(data) {
|
8600 |
+
if (data === undefined) {
|
8601 |
+
return;
|
8602 |
+
}
|
8603 |
+
|
8604 |
+
if (data.composite !== undefined) {
|
8605 |
+
this.composite = data.composite;
|
8606 |
+
}
|
8607 |
+
|
8608 |
+
if (data.cover !== undefined) {
|
8609 |
+
const cover = data.cover;
|
8610 |
+
const color = typeof data.cover === "string" ? {
|
8611 |
+
color: data.cover
|
8612 |
+
} : data.cover;
|
8613 |
+
this.cover.load(cover.color !== undefined ? cover : {
|
8614 |
+
color: color
|
8615 |
+
});
|
8616 |
+
}
|
8617 |
+
|
8618 |
+
if (data.enable !== undefined) {
|
8619 |
+
this.enable = data.enable;
|
8620 |
+
}
|
8621 |
+
}
|
8622 |
+
|
8623 |
+
}
|
8624 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Background/Background.js
|
8625 |
+
|
8626 |
+
class Background {
|
8627 |
+
constructor() {
|
8628 |
+
this.color = new OptionsColor();
|
8629 |
+
this.color.value = "";
|
8630 |
+
this.image = "";
|
8631 |
+
this.position = "";
|
8632 |
+
this.repeat = "";
|
8633 |
+
this.size = "";
|
8634 |
+
this.opacity = 1;
|
8635 |
+
}
|
8636 |
+
|
8637 |
+
load(data) {
|
8638 |
+
if (data === undefined) {
|
8639 |
+
return;
|
8640 |
+
}
|
8641 |
+
|
8642 |
+
if (data.color !== undefined) {
|
8643 |
+
this.color = OptionsColor.create(this.color, data.color);
|
8644 |
+
}
|
8645 |
+
|
8646 |
+
if (data.image !== undefined) {
|
8647 |
+
this.image = data.image;
|
8648 |
+
}
|
8649 |
+
|
8650 |
+
if (data.position !== undefined) {
|
8651 |
+
this.position = data.position;
|
8652 |
+
}
|
8653 |
+
|
8654 |
+
if (data.repeat !== undefined) {
|
8655 |
+
this.repeat = data.repeat;
|
8656 |
+
}
|
8657 |
+
|
8658 |
+
if (data.size !== undefined) {
|
8659 |
+
this.size = data.size;
|
8660 |
+
}
|
8661 |
+
|
8662 |
+
if (data.opacity !== undefined) {
|
8663 |
+
this.opacity = data.opacity;
|
8664 |
+
}
|
8665 |
+
}
|
8666 |
+
|
8667 |
+
}
|
8668 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Infection/InfectionStage.js
|
8669 |
+
|
8670 |
+
class InfectionStage {
|
8671 |
+
constructor() {
|
8672 |
+
this.color = new OptionsColor();
|
8673 |
+
this.color.value = "#ff0000";
|
8674 |
+
this.radius = 0;
|
8675 |
+
this.rate = 1;
|
8676 |
+
}
|
8677 |
+
|
8678 |
+
load(data) {
|
8679 |
+
if (data === undefined) {
|
8680 |
+
return;
|
8681 |
+
}
|
8682 |
+
|
8683 |
+
if (data.color !== undefined) {
|
8684 |
+
this.color = OptionsColor.create(this.color, data.color);
|
8685 |
+
}
|
8686 |
+
|
8687 |
+
this.duration = data.duration;
|
8688 |
+
this.infectedStage = data.infectedStage;
|
8689 |
+
|
8690 |
+
if (data.radius !== undefined) {
|
8691 |
+
this.radius = data.radius;
|
8692 |
+
}
|
8693 |
+
|
8694 |
+
if (data.rate !== undefined) {
|
8695 |
+
this.rate = data.rate;
|
8696 |
+
}
|
8697 |
+
}
|
8698 |
+
|
8699 |
+
}
|
8700 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Infection/Infection.js
|
8701 |
+
|
8702 |
+
class Infection {
|
8703 |
+
constructor() {
|
8704 |
+
this.cure = false;
|
8705 |
+
this.delay = 0;
|
8706 |
+
this.enable = false;
|
8707 |
+
this.infections = 0;
|
8708 |
+
this.stages = [];
|
8709 |
+
}
|
8710 |
+
|
8711 |
+
load(data) {
|
8712 |
+
if (data === undefined) {
|
8713 |
+
return;
|
8714 |
+
}
|
8715 |
+
|
8716 |
+
if (data.cure !== undefined) {
|
8717 |
+
this.cure = data.cure;
|
8718 |
+
}
|
8719 |
+
|
8720 |
+
if (data.delay !== undefined) {
|
8721 |
+
this.delay = data.delay;
|
8722 |
+
}
|
8723 |
+
|
8724 |
+
if (data.enable !== undefined) {
|
8725 |
+
this.enable = data.enable;
|
8726 |
+
}
|
8727 |
+
|
8728 |
+
if (data.infections !== undefined) {
|
8729 |
+
this.infections = data.infections;
|
8730 |
+
}
|
8731 |
+
|
8732 |
+
if (data.stages === undefined) {
|
8733 |
+
return;
|
8734 |
+
}
|
8735 |
+
|
8736 |
+
this.stages = data.stages.map(t => {
|
8737 |
+
const s = new InfectionStage();
|
8738 |
+
s.load(t);
|
8739 |
+
return s;
|
8740 |
+
});
|
8741 |
+
}
|
8742 |
+
|
8743 |
+
}
|
8744 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Theme/ThemeDefault.js
|
8745 |
+
|
8746 |
+
class ThemeDefault {
|
8747 |
+
constructor() {
|
8748 |
+
this.mode = ThemeMode.any;
|
8749 |
+
this.value = false;
|
8750 |
+
}
|
8751 |
+
|
8752 |
+
load(data) {
|
8753 |
+
if (data === undefined) {
|
8754 |
+
return;
|
8755 |
+
}
|
8756 |
+
|
8757 |
+
if (data.mode !== undefined) {
|
8758 |
+
this.mode = data.mode;
|
8759 |
+
}
|
8760 |
+
|
8761 |
+
if (data.value !== undefined) {
|
8762 |
+
this.value = data.value;
|
8763 |
+
}
|
8764 |
+
}
|
8765 |
+
|
8766 |
+
}
|
8767 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Theme/Theme.js
|
8768 |
+
|
8769 |
+
|
8770 |
+
class Theme {
|
8771 |
+
constructor() {
|
8772 |
+
this.name = "";
|
8773 |
+
this.default = new ThemeDefault();
|
8774 |
+
}
|
8775 |
+
|
8776 |
+
load(data) {
|
8777 |
+
if (data === undefined) {
|
8778 |
+
return;
|
8779 |
+
}
|
8780 |
+
|
8781 |
+
if (data.name !== undefined) {
|
8782 |
+
this.name = data.name;
|
8783 |
+
}
|
8784 |
+
|
8785 |
+
this.default.load(data.default);
|
8786 |
+
|
8787 |
+
if (data.options !== undefined) {
|
8788 |
+
this.options = Utils.deepExtend({}, data.options);
|
8789 |
+
}
|
8790 |
+
}
|
8791 |
+
|
8792 |
+
}
|
8793 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/FullScreen/FullScreen.js
|
8794 |
+
class FullScreen {
|
8795 |
+
constructor() {
|
8796 |
+
this.enable = false;
|
8797 |
+
this.zIndex = -1;
|
8798 |
+
}
|
8799 |
+
|
8800 |
+
load(data) {
|
8801 |
+
if (!data) {
|
8802 |
+
return;
|
8803 |
+
}
|
8804 |
+
|
8805 |
+
if (data.enable !== undefined) {
|
8806 |
+
this.enable = data.enable;
|
8807 |
+
}
|
8808 |
+
|
8809 |
+
if (data.zIndex !== undefined) {
|
8810 |
+
this.zIndex = data.zIndex;
|
8811 |
+
}
|
8812 |
+
}
|
8813 |
+
|
8814 |
+
}
|
8815 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Motion/MotionReduce.js
|
8816 |
+
class MotionReduce {
|
8817 |
+
constructor() {
|
8818 |
+
this.factor = 4;
|
8819 |
+
this.value = true;
|
8820 |
+
}
|
8821 |
+
|
8822 |
+
load(data) {
|
8823 |
+
if (!data) {
|
8824 |
+
return;
|
8825 |
+
}
|
8826 |
+
|
8827 |
+
if (data.factor !== undefined) {
|
8828 |
+
this.factor = data.factor;
|
8829 |
+
}
|
8830 |
+
|
8831 |
+
if (data.value !== undefined) {
|
8832 |
+
this.value = data.value;
|
8833 |
+
}
|
8834 |
+
}
|
8835 |
+
|
8836 |
+
}
|
8837 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Motion/Motion.js
|
8838 |
+
|
8839 |
+
class Motion {
|
8840 |
+
constructor() {
|
8841 |
+
this.disable = false;
|
8842 |
+
this.reduce = new MotionReduce();
|
8843 |
+
}
|
8844 |
+
|
8845 |
+
load(data) {
|
8846 |
+
if (!data) {
|
8847 |
+
return;
|
8848 |
+
}
|
8849 |
+
|
8850 |
+
if (data.disable !== undefined) {
|
8851 |
+
this.disable = data.disable;
|
8852 |
+
}
|
8853 |
+
|
8854 |
+
this.reduce.load(data.reduce);
|
8855 |
+
}
|
8856 |
+
|
8857 |
+
}
|
8858 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/ManualParticle.js
|
8859 |
+
|
8860 |
+
class ManualParticle {
|
8861 |
+
load(data) {
|
8862 |
+
var _a, _b;
|
8863 |
+
|
8864 |
+
if (!data) {
|
8865 |
+
return;
|
8866 |
+
}
|
8867 |
+
|
8868 |
+
if (data.position !== undefined) {
|
8869 |
+
this.position = {
|
8870 |
+
x: (_a = data.position.x) !== null && _a !== void 0 ? _a : 50,
|
8871 |
+
y: (_b = data.position.y) !== null && _b !== void 0 ? _b : 50
|
8872 |
+
};
|
8873 |
+
}
|
8874 |
+
|
8875 |
+
if (data.options !== undefined) {
|
8876 |
+
this.options = Utils.deepExtend({}, data.options);
|
8877 |
+
}
|
8878 |
+
}
|
8879 |
+
|
8880 |
+
}
|
8881 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Responsive.js
|
8882 |
+
|
8883 |
+
class Responsive {
|
8884 |
+
constructor() {
|
8885 |
+
this.maxWidth = Infinity;
|
8886 |
+
this.options = {};
|
8887 |
+
}
|
8888 |
+
|
8889 |
+
load(data) {
|
8890 |
+
if (!data) {
|
8891 |
+
return;
|
8892 |
+
}
|
8893 |
+
|
8894 |
+
if (data.maxWidth !== undefined) {
|
8895 |
+
this.maxWidth = data.maxWidth;
|
8896 |
+
}
|
8897 |
+
|
8898 |
+
if (data.options !== undefined) {
|
8899 |
+
this.options = Utils.deepExtend({}, data.options);
|
8900 |
+
}
|
8901 |
+
}
|
8902 |
+
|
8903 |
+
}
|
8904 |
+
;// CONCATENATED MODULE: ./dist/browser/Options/Classes/Options.js
|
8905 |
+
|
8906 |
+
|
8907 |
+
|
8908 |
+
|
8909 |
+
|
8910 |
+
|
8911 |
+
|
8912 |
+
|
8913 |
+
|
8914 |
+
|
8915 |
+
|
8916 |
+
|
8917 |
+
class Options {
|
8918 |
+
constructor() {
|
8919 |
+
this.autoPlay = true;
|
8920 |
+
this.background = new Background();
|
8921 |
+
this.backgroundMask = new BackgroundMask();
|
8922 |
+
this.fullScreen = new FullScreen();
|
8923 |
+
this.detectRetina = true;
|
8924 |
+
this.fpsLimit = 60;
|
8925 |
+
this.infection = new Infection();
|
8926 |
+
this.interactivity = new Interactivity();
|
8927 |
+
this.manualParticles = [];
|
8928 |
+
this.motion = new Motion();
|
8929 |
+
this.particles = new Particles();
|
8930 |
+
this.pauseOnBlur = true;
|
8931 |
+
this.pauseOnOutsideViewport = false;
|
8932 |
+
this.responsive = [];
|
8933 |
+
this.themes = [];
|
8934 |
+
}
|
8935 |
+
|
8936 |
+
get fps_limit() {
|
8937 |
+
return this.fpsLimit;
|
8938 |
+
}
|
8939 |
+
|
8940 |
+
set fps_limit(value) {
|
8941 |
+
this.fpsLimit = value;
|
8942 |
+
}
|
8943 |
+
|
8944 |
+
get retina_detect() {
|
8945 |
+
return this.detectRetina;
|
8946 |
+
}
|
8947 |
+
|
8948 |
+
set retina_detect(value) {
|
8949 |
+
this.detectRetina = value;
|
8950 |
+
}
|
8951 |
+
|
8952 |
+
get backgroundMode() {
|
8953 |
+
return this.fullScreen;
|
8954 |
+
}
|
8955 |
+
|
8956 |
+
set backgroundMode(value) {
|
8957 |
+
this.fullScreen.load(value);
|
8958 |
+
}
|
8959 |
+
|
8960 |
+
load(data) {
|
8961 |
+
var _a, _b, _c;
|
8962 |
+
|
8963 |
+
if (data === undefined) {
|
8964 |
+
return;
|
8965 |
+
}
|
8966 |
+
|
8967 |
+
if (data.preset !== undefined) {
|
8968 |
+
if (data.preset instanceof Array) {
|
8969 |
+
for (const preset of data.preset) {
|
8970 |
+
this.importPreset(preset);
|
8971 |
+
}
|
8972 |
+
} else {
|
8973 |
+
this.importPreset(data.preset);
|
8974 |
+
}
|
8975 |
+
}
|
8976 |
+
|
8977 |
+
if (data.autoPlay !== undefined) {
|
8978 |
+
this.autoPlay = data.autoPlay;
|
8979 |
+
}
|
8980 |
+
|
8981 |
+
const detectRetina = (_a = data.detectRetina) !== null && _a !== void 0 ? _a : data.retina_detect;
|
8982 |
+
|
8983 |
+
if (detectRetina !== undefined) {
|
8984 |
+
this.detectRetina = detectRetina;
|
8985 |
+
}
|
8986 |
+
|
8987 |
+
const fpsLimit = (_b = data.fpsLimit) !== null && _b !== void 0 ? _b : data.fps_limit;
|
8988 |
+
|
8989 |
+
if (fpsLimit !== undefined) {
|
8990 |
+
this.fpsLimit = fpsLimit;
|
8991 |
+
}
|
8992 |
+
|
8993 |
+
if (data.pauseOnBlur !== undefined) {
|
8994 |
+
this.pauseOnBlur = data.pauseOnBlur;
|
8995 |
+
}
|
8996 |
+
|
8997 |
+
if (data.pauseOnOutsideViewport !== undefined) {
|
8998 |
+
this.pauseOnOutsideViewport = data.pauseOnOutsideViewport;
|
8999 |
+
}
|
9000 |
+
|
9001 |
+
this.background.load(data.background);
|
9002 |
+
this.fullScreen.load((_c = data.fullScreen) !== null && _c !== void 0 ? _c : data.backgroundMode);
|
9003 |
+
this.backgroundMask.load(data.backgroundMask);
|
9004 |
+
this.infection.load(data.infection);
|
9005 |
+
this.interactivity.load(data.interactivity);
|
9006 |
+
|
9007 |
+
if (data.manualParticles !== undefined) {
|
9008 |
+
this.manualParticles = data.manualParticles.map(t => {
|
9009 |
+
const tmp = new ManualParticle();
|
9010 |
+
tmp.load(t);
|
9011 |
+
return tmp;
|
9012 |
+
});
|
9013 |
+
}
|
9014 |
+
|
9015 |
+
this.motion.load(data.motion);
|
9016 |
+
this.particles.load(data.particles);
|
9017 |
+
Plugins.loadOptions(this, data);
|
9018 |
+
|
9019 |
+
if (data.responsive !== undefined) {
|
9020 |
+
for (const responsive of data.responsive) {
|
9021 |
+
const optResponsive = new Responsive();
|
9022 |
+
optResponsive.load(responsive);
|
9023 |
+
this.responsive.push(optResponsive);
|
9024 |
+
}
|
9025 |
+
}
|
9026 |
+
|
9027 |
+
this.responsive.sort((a, b) => a.maxWidth - b.maxWidth);
|
9028 |
+
|
9029 |
+
if (data.themes !== undefined) {
|
9030 |
+
for (const theme of data.themes) {
|
9031 |
+
const optTheme = new Theme();
|
9032 |
+
optTheme.load(theme);
|
9033 |
+
this.themes.push(optTheme);
|
9034 |
+
}
|
9035 |
+
}
|
9036 |
+
}
|
9037 |
+
|
9038 |
+
setTheme(name) {
|
9039 |
+
if (name) {
|
9040 |
+
const chosenTheme = this.themes.find(theme => theme.name === name);
|
9041 |
+
|
9042 |
+
if (chosenTheme) {
|
9043 |
+
this.load(chosenTheme.options);
|
9044 |
+
}
|
9045 |
+
} else {
|
9046 |
+
const clientDarkMode = typeof matchMedia !== "undefined" && matchMedia("(prefers-color-scheme: dark)").matches;
|
9047 |
+
let defaultTheme = this.themes.find(theme => theme.default.value && (theme.default.mode === ThemeMode.dark && clientDarkMode || theme.default.mode === ThemeMode.light && !clientDarkMode));
|
9048 |
+
|
9049 |
+
if (!defaultTheme) {
|
9050 |
+
defaultTheme = this.themes.find(theme => theme.default.value && theme.default.mode === ThemeMode.any);
|
9051 |
+
}
|
9052 |
+
|
9053 |
+
if (defaultTheme) {
|
9054 |
+
this.load(defaultTheme.options);
|
9055 |
+
}
|
9056 |
+
}
|
9057 |
+
}
|
9058 |
+
|
9059 |
+
importPreset(preset) {
|
9060 |
+
this.load(Plugins.getPreset(preset));
|
9061 |
+
}
|
9062 |
+
|
9063 |
+
setResponsive(width, pxRatio, defaultOptions) {
|
9064 |
+
var _a;
|
9065 |
+
|
9066 |
+
this.load(defaultOptions);
|
9067 |
+
this.load((_a = this.responsive.find(t => t.maxWidth * pxRatio > width)) === null || _a === void 0 ? void 0 : _a.options);
|
9068 |
+
}
|
9069 |
+
|
9070 |
+
}
|
9071 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Container.js
|
9072 |
+
var Container_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
9073 |
+
function adopt(value) {
|
9074 |
+
return value instanceof P ? value : new P(function (resolve) {
|
9075 |
+
resolve(value);
|
9076 |
+
});
|
9077 |
+
}
|
9078 |
+
|
9079 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
9080 |
+
function fulfilled(value) {
|
9081 |
+
try {
|
9082 |
+
step(generator.next(value));
|
9083 |
+
} catch (e) {
|
9084 |
+
reject(e);
|
9085 |
+
}
|
9086 |
+
}
|
9087 |
+
|
9088 |
+
function rejected(value) {
|
9089 |
+
try {
|
9090 |
+
step(generator["throw"](value));
|
9091 |
+
} catch (e) {
|
9092 |
+
reject(e);
|
9093 |
+
}
|
9094 |
+
}
|
9095 |
+
|
9096 |
+
function step(result) {
|
9097 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
9098 |
+
}
|
9099 |
+
|
9100 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9101 |
+
});
|
9102 |
+
};
|
9103 |
+
|
9104 |
+
|
9105 |
+
|
9106 |
+
|
9107 |
+
|
9108 |
+
|
9109 |
+
|
9110 |
+
class Container {
|
9111 |
+
constructor(id, sourceOptions, ...presets) {
|
9112 |
+
this.id = id;
|
9113 |
+
this.sourceOptions = sourceOptions;
|
9114 |
+
this.fpsLimit = 60;
|
9115 |
+
this.firstStart = true;
|
9116 |
+
this.started = false;
|
9117 |
+
this.destroyed = false;
|
9118 |
+
this.paused = true;
|
9119 |
+
this.lastFrameTime = 0;
|
9120 |
+
this.pageHidden = false;
|
9121 |
+
this.retina = new Retina(this);
|
9122 |
+
this.canvas = new Canvas(this);
|
9123 |
+
this.particles = new Particles_Particles(this);
|
9124 |
+
this.drawer = new FrameManager(this);
|
9125 |
+
this.pathGenerator = {
|
9126 |
+
generate: () => {
|
9127 |
+
return {
|
9128 |
+
angle: Math.random() * Math.PI * 2,
|
9129 |
+
length: Math.random()
|
9130 |
+
};
|
9131 |
+
},
|
9132 |
+
init: () => {},
|
9133 |
+
update: () => {}
|
9134 |
+
};
|
9135 |
+
this.interactivity = {
|
9136 |
+
mouse: {
|
9137 |
+
clicking: false,
|
9138 |
+
inside: false
|
9139 |
+
}
|
9140 |
+
};
|
9141 |
+
this.bubble = {};
|
9142 |
+
this.repulse = {
|
9143 |
+
particles: []
|
9144 |
+
};
|
9145 |
+
this.attract = {
|
9146 |
+
particles: []
|
9147 |
+
};
|
9148 |
+
this.plugins = new Map();
|
9149 |
+
this.drawers = new Map();
|
9150 |
+
this.density = 1;
|
9151 |
+
this.options = new Options();
|
9152 |
+
this.actualOptions = new Options();
|
9153 |
+
|
9154 |
+
for (const preset of presets) {
|
9155 |
+
this.options.load(Plugins.getPreset(preset));
|
9156 |
+
}
|
9157 |
+
|
9158 |
+
const shapes = Plugins.getSupportedShapes();
|
9159 |
+
|
9160 |
+
for (const type of shapes) {
|
9161 |
+
const drawer = Plugins.getShapeDrawer(type);
|
9162 |
+
|
9163 |
+
if (drawer) {
|
9164 |
+
this.drawers.set(type, drawer);
|
9165 |
+
}
|
9166 |
+
}
|
9167 |
+
|
9168 |
+
if (this.options) {
|
9169 |
+
this.options.load(this.sourceOptions);
|
9170 |
+
}
|
9171 |
+
|
9172 |
+
this.eventListeners = new EventListeners(this);
|
9173 |
+
|
9174 |
+
if (typeof IntersectionObserver !== "undefined" && IntersectionObserver) {
|
9175 |
+
this.intersectionObserver = new IntersectionObserver(entries => this.intersectionManager(entries));
|
9176 |
+
}
|
9177 |
+
}
|
9178 |
+
|
9179 |
+
play(force) {
|
9180 |
+
const needsUpdate = this.paused || force;
|
9181 |
+
|
9182 |
+
if (this.firstStart && !this.actualOptions.autoPlay) {
|
9183 |
+
this.firstStart = false;
|
9184 |
+
return;
|
9185 |
+
}
|
9186 |
+
|
9187 |
+
if (this.paused) {
|
9188 |
+
this.paused = false;
|
9189 |
+
}
|
9190 |
+
|
9191 |
+
if (needsUpdate) {
|
9192 |
+
for (const [, plugin] of this.plugins) {
|
9193 |
+
if (plugin.play) {
|
9194 |
+
plugin.play();
|
9195 |
+
}
|
9196 |
+
}
|
9197 |
+
|
9198 |
+
this.lastFrameTime = performance.now();
|
9199 |
+
}
|
9200 |
+
|
9201 |
+
this.draw();
|
9202 |
+
}
|
9203 |
+
|
9204 |
+
pause() {
|
9205 |
+
if (this.drawAnimationFrame !== undefined) {
|
9206 |
+
Utils.cancelAnimation(this.drawAnimationFrame);
|
9207 |
+
delete this.drawAnimationFrame;
|
9208 |
+
}
|
9209 |
+
|
9210 |
+
if (this.paused) {
|
9211 |
+
return;
|
9212 |
+
}
|
9213 |
+
|
9214 |
+
for (const [, plugin] of this.plugins) {
|
9215 |
+
if (plugin.pause) {
|
9216 |
+
plugin.pause();
|
9217 |
+
}
|
9218 |
+
}
|
9219 |
+
|
9220 |
+
if (!this.pageHidden) {
|
9221 |
+
this.paused = true;
|
9222 |
+
}
|
9223 |
+
}
|
9224 |
+
|
9225 |
+
draw() {
|
9226 |
+
this.drawAnimationFrame = Utils.animate(timestamp => this.drawer.nextFrame(timestamp));
|
9227 |
+
}
|
9228 |
+
|
9229 |
+
getAnimationStatus() {
|
9230 |
+
return !this.paused;
|
9231 |
+
}
|
9232 |
+
|
9233 |
+
setNoise(noiseOrGenerator, init, update) {
|
9234 |
+
this.setPath(noiseOrGenerator, init, update);
|
9235 |
+
}
|
9236 |
+
|
9237 |
+
setPath(pathOrGenerator, init, update) {
|
9238 |
+
if (!pathOrGenerator) {
|
9239 |
+
return;
|
9240 |
+
}
|
9241 |
+
|
9242 |
+
if (typeof pathOrGenerator === "function") {
|
9243 |
+
this.pathGenerator.generate = pathOrGenerator;
|
9244 |
+
|
9245 |
+
if (init) {
|
9246 |
+
this.pathGenerator.init = init;
|
9247 |
+
}
|
9248 |
+
|
9249 |
+
if (update) {
|
9250 |
+
this.pathGenerator.update = update;
|
9251 |
+
}
|
9252 |
+
} else {
|
9253 |
+
if (pathOrGenerator.generate) {
|
9254 |
+
this.pathGenerator.generate = pathOrGenerator.generate;
|
9255 |
+
}
|
9256 |
+
|
9257 |
+
if (pathOrGenerator.init) {
|
9258 |
+
this.pathGenerator.init = pathOrGenerator.init;
|
9259 |
+
}
|
9260 |
+
|
9261 |
+
if (pathOrGenerator.update) {
|
9262 |
+
this.pathGenerator.update = pathOrGenerator.update;
|
9263 |
+
}
|
9264 |
+
}
|
9265 |
+
}
|
9266 |
+
|
9267 |
+
destroy() {
|
9268 |
+
this.stop();
|
9269 |
+
this.canvas.destroy();
|
9270 |
+
|
9271 |
+
for (const [, drawer] of this.drawers) {
|
9272 |
+
if (drawer.destroy) {
|
9273 |
+
drawer.destroy(this);
|
9274 |
+
}
|
9275 |
+
}
|
9276 |
+
|
9277 |
+
for (const key of this.drawers.keys()) {
|
9278 |
+
this.drawers.delete(key);
|
9279 |
+
}
|
9280 |
+
|
9281 |
+
this.destroyed = true;
|
9282 |
+
}
|
9283 |
+
|
9284 |
+
exportImg(callback) {
|
9285 |
+
this.exportImage(callback);
|
9286 |
+
}
|
9287 |
+
|
9288 |
+
exportImage(callback, type, quality) {
|
9289 |
+
var _a;
|
9290 |
+
|
9291 |
+
return (_a = this.canvas.element) === null || _a === void 0 ? void 0 : _a.toBlob(callback, type !== null && type !== void 0 ? type : "image/png", quality);
|
9292 |
+
}
|
9293 |
+
|
9294 |
+
exportConfiguration() {
|
9295 |
+
return JSON.stringify(this.actualOptions, undefined, 2);
|
9296 |
+
}
|
9297 |
+
|
9298 |
+
refresh() {
|
9299 |
+
return Container_awaiter(this, void 0, void 0, function* () {
|
9300 |
+
this.stop();
|
9301 |
+
yield this.start();
|
9302 |
+
});
|
9303 |
+
}
|
9304 |
+
|
9305 |
+
stop() {
|
9306 |
+
if (!this.started) {
|
9307 |
+
return;
|
9308 |
+
}
|
9309 |
+
|
9310 |
+
this.firstStart = true;
|
9311 |
+
this.started = false;
|
9312 |
+
this.eventListeners.removeListeners();
|
9313 |
+
this.pause();
|
9314 |
+
this.particles.clear();
|
9315 |
+
this.canvas.clear();
|
9316 |
+
|
9317 |
+
if (this.interactivity.element instanceof HTMLElement && this.intersectionObserver) {
|
9318 |
+
this.intersectionObserver.observe(this.interactivity.element);
|
9319 |
+
}
|
9320 |
+
|
9321 |
+
for (const [, plugin] of this.plugins) {
|
9322 |
+
if (plugin.stop) {
|
9323 |
+
plugin.stop();
|
9324 |
+
}
|
9325 |
+
}
|
9326 |
+
|
9327 |
+
for (const key of this.plugins.keys()) {
|
9328 |
+
this.plugins.delete(key);
|
9329 |
+
}
|
9330 |
+
|
9331 |
+
this.particles.linksColors = new Map();
|
9332 |
+
delete this.particles.grabLineColor;
|
9333 |
+
delete this.particles.linksColor;
|
9334 |
+
}
|
9335 |
+
|
9336 |
+
loadTheme(name) {
|
9337 |
+
return Container_awaiter(this, void 0, void 0, function* () {
|
9338 |
+
this.actualOptions.setTheme(name);
|
9339 |
+
yield this.refresh();
|
9340 |
+
});
|
9341 |
+
}
|
9342 |
+
|
9343 |
+
start() {
|
9344 |
+
return Container_awaiter(this, void 0, void 0, function* () {
|
9345 |
+
if (this.started) {
|
9346 |
+
return;
|
9347 |
+
}
|
9348 |
+
|
9349 |
+
yield this.init();
|
9350 |
+
this.started = true;
|
9351 |
+
this.eventListeners.addListeners();
|
9352 |
+
|
9353 |
+
if (this.interactivity.element instanceof HTMLElement && this.intersectionObserver) {
|
9354 |
+
this.intersectionObserver.observe(this.interactivity.element);
|
9355 |
+
}
|
9356 |
+
|
9357 |
+
for (const [, plugin] of this.plugins) {
|
9358 |
+
if (plugin.startAsync !== undefined) {
|
9359 |
+
yield plugin.startAsync();
|
9360 |
+
} else if (plugin.start !== undefined) {
|
9361 |
+
plugin.start();
|
9362 |
+
}
|
9363 |
+
}
|
9364 |
+
|
9365 |
+
this.play();
|
9366 |
+
});
|
9367 |
+
}
|
9368 |
+
|
9369 |
+
init() {
|
9370 |
+
return Container_awaiter(this, void 0, void 0, function* () {
|
9371 |
+
this.actualOptions = new Options();
|
9372 |
+
this.actualOptions.load(this.options);
|
9373 |
+
this.retina.init();
|
9374 |
+
this.canvas.init();
|
9375 |
+
this.actualOptions.setResponsive(this.canvas.size.width, this.retina.pixelRatio, this.options);
|
9376 |
+
this.actualOptions.setTheme(undefined);
|
9377 |
+
this.fpsLimit = this.actualOptions.fpsLimit > 0 ? this.actualOptions.fpsLimit : 60;
|
9378 |
+
const availablePlugins = Plugins.getAvailablePlugins(this);
|
9379 |
+
|
9380 |
+
for (const [id, plugin] of availablePlugins) {
|
9381 |
+
this.plugins.set(id, plugin);
|
9382 |
+
}
|
9383 |
+
|
9384 |
+
for (const [, drawer] of this.drawers) {
|
9385 |
+
if (drawer.init) {
|
9386 |
+
yield drawer.init(this);
|
9387 |
+
}
|
9388 |
+
}
|
9389 |
+
|
9390 |
+
for (const [, plugin] of this.plugins) {
|
9391 |
+
if (plugin.init) {
|
9392 |
+
plugin.init(this.actualOptions);
|
9393 |
+
} else if (plugin.initAsync !== undefined) {
|
9394 |
+
yield plugin.initAsync(this.actualOptions);
|
9395 |
+
}
|
9396 |
+
}
|
9397 |
+
|
9398 |
+
this.canvas.resize();
|
9399 |
+
this.particles.init();
|
9400 |
+
this.particles.setDensity();
|
9401 |
+
});
|
9402 |
+
}
|
9403 |
+
|
9404 |
+
intersectionManager(entries) {
|
9405 |
+
if (!this.actualOptions.pauseOnOutsideViewport) {
|
9406 |
+
return;
|
9407 |
+
}
|
9408 |
+
|
9409 |
+
for (const entry of entries) {
|
9410 |
+
if (entry.target !== this.interactivity.element) {
|
9411 |
+
continue;
|
9412 |
+
}
|
9413 |
+
|
9414 |
+
if (entry.isIntersecting) {
|
9415 |
+
this.play();
|
9416 |
+
} else {
|
9417 |
+
this.pause();
|
9418 |
+
}
|
9419 |
+
}
|
9420 |
+
}
|
9421 |
+
|
9422 |
+
}
|
9423 |
+
;// CONCATENATED MODULE: ./dist/browser/Core/Loader.js
|
9424 |
+
var Loader_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
9425 |
+
function adopt(value) {
|
9426 |
+
return value instanceof P ? value : new P(function (resolve) {
|
9427 |
+
resolve(value);
|
9428 |
+
});
|
9429 |
+
}
|
9430 |
+
|
9431 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
9432 |
+
function fulfilled(value) {
|
9433 |
+
try {
|
9434 |
+
step(generator.next(value));
|
9435 |
+
} catch (e) {
|
9436 |
+
reject(e);
|
9437 |
+
}
|
9438 |
+
}
|
9439 |
+
|
9440 |
+
function rejected(value) {
|
9441 |
+
try {
|
9442 |
+
step(generator["throw"](value));
|
9443 |
+
} catch (e) {
|
9444 |
+
reject(e);
|
9445 |
+
}
|
9446 |
+
}
|
9447 |
+
|
9448 |
+
function step(result) {
|
9449 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
9450 |
+
}
|
9451 |
+
|
9452 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9453 |
+
});
|
9454 |
+
};
|
9455 |
+
|
9456 |
+
|
9457 |
+
|
9458 |
+
const tsParticlesDom = [];
|
9459 |
+
|
9460 |
+
function fetchError(statusCode) {
|
9461 |
+
console.error(`Error tsParticles - fetch status: ${statusCode}`);
|
9462 |
+
console.error("Error tsParticles - File config not found");
|
9463 |
+
}
|
9464 |
+
|
9465 |
+
class Loader {
|
9466 |
+
static dom() {
|
9467 |
+
return tsParticlesDom;
|
9468 |
+
}
|
9469 |
+
|
9470 |
+
static domItem(index) {
|
9471 |
+
const dom = Loader.dom();
|
9472 |
+
const item = dom[index];
|
9473 |
+
|
9474 |
+
if (item && !item.destroyed) {
|
9475 |
+
return item;
|
9476 |
+
}
|
9477 |
+
|
9478 |
+
dom.splice(index, 1);
|
9479 |
+
}
|
9480 |
+
|
9481 |
+
static load(tagId, options, index) {
|
9482 |
+
return Loader_awaiter(this, void 0, void 0, function* () {
|
9483 |
+
const domContainer = document.getElementById(tagId);
|
9484 |
+
|
9485 |
+
if (!domContainer) {
|
9486 |
+
return;
|
9487 |
+
}
|
9488 |
+
|
9489 |
+
return Loader.set(tagId, domContainer, options, index);
|
9490 |
+
});
|
9491 |
+
}
|
9492 |
+
|
9493 |
+
static set(id, domContainer, options, index) {
|
9494 |
+
return Loader_awaiter(this, void 0, void 0, function* () {
|
9495 |
+
const currentOptions = options instanceof Array ? Utils.itemFromArray(options, index) : options;
|
9496 |
+
const dom = Loader.dom();
|
9497 |
+
const oldIndex = dom.findIndex(v => v.id === id);
|
9498 |
+
|
9499 |
+
if (oldIndex >= 0) {
|
9500 |
+
const old = Loader.domItem(oldIndex);
|
9501 |
+
|
9502 |
+
if (old && !old.destroyed) {
|
9503 |
+
old.destroy();
|
9504 |
+
dom.splice(oldIndex, 1);
|
9505 |
+
}
|
9506 |
+
}
|
9507 |
+
|
9508 |
+
let canvasEl;
|
9509 |
+
let generatedCanvas;
|
9510 |
+
|
9511 |
+
if (domContainer.tagName.toLowerCase() === "canvas") {
|
9512 |
+
canvasEl = domContainer;
|
9513 |
+
generatedCanvas = false;
|
9514 |
+
} else {
|
9515 |
+
const existingCanvases = domContainer.getElementsByTagName("canvas");
|
9516 |
+
|
9517 |
+
if (existingCanvases.length) {
|
9518 |
+
canvasEl = existingCanvases[0];
|
9519 |
+
|
9520 |
+
if (!canvasEl.className) {
|
9521 |
+
canvasEl.className = Constants.canvasClass;
|
9522 |
+
}
|
9523 |
+
|
9524 |
+
generatedCanvas = false;
|
9525 |
+
} else {
|
9526 |
+
generatedCanvas = true;
|
9527 |
+
canvasEl = document.createElement("canvas");
|
9528 |
+
canvasEl.className = Constants.canvasClass;
|
9529 |
+
canvasEl.style.width = "100%";
|
9530 |
+
canvasEl.style.height = "100%";
|
9531 |
+
domContainer.appendChild(canvasEl);
|
9532 |
+
}
|
9533 |
+
}
|
9534 |
+
|
9535 |
+
const newItem = new Container(id, currentOptions);
|
9536 |
+
|
9537 |
+
if (oldIndex >= 0) {
|
9538 |
+
dom.splice(oldIndex, 0, newItem);
|
9539 |
+
} else {
|
9540 |
+
dom.push(newItem);
|
9541 |
+
}
|
9542 |
+
|
9543 |
+
newItem.canvas.loadCanvas(canvasEl, generatedCanvas);
|
9544 |
+
yield newItem.start();
|
9545 |
+
return newItem;
|
9546 |
+
});
|
9547 |
+
}
|
9548 |
+
|
9549 |
+
static loadJSON(tagId, jsonUrl, index) {
|
9550 |
+
return Loader_awaiter(this, void 0, void 0, function* () {
|
9551 |
+
const url = jsonUrl instanceof Array ? Utils.itemFromArray(jsonUrl, index) : jsonUrl;
|
9552 |
+
const response = yield fetch(url);
|
9553 |
+
|
9554 |
+
if (response.ok) {
|
9555 |
+
return Loader.load(tagId, yield response.json());
|
9556 |
+
} else {
|
9557 |
+
fetchError(response.status);
|
9558 |
+
}
|
9559 |
+
});
|
9560 |
+
}
|
9561 |
+
|
9562 |
+
static setJSON(id, domContainer, jsonUrl) {
|
9563 |
+
return Loader_awaiter(this, void 0, void 0, function* () {
|
9564 |
+
const response = yield fetch(jsonUrl);
|
9565 |
+
|
9566 |
+
if (response.ok) {
|
9567 |
+
const options = yield response.json();
|
9568 |
+
return Loader.set(id, domContainer, options);
|
9569 |
+
} else {
|
9570 |
+
fetchError(response.status);
|
9571 |
+
}
|
9572 |
+
});
|
9573 |
+
}
|
9574 |
+
|
9575 |
+
static setOnClickHandler(callback) {
|
9576 |
+
const dom = Loader.dom();
|
9577 |
+
|
9578 |
+
if (dom.length === 0) {
|
9579 |
+
throw new Error("Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()");
|
9580 |
+
}
|
9581 |
+
|
9582 |
+
for (const domItem of dom) {
|
9583 |
+
const el = domItem.interactivity.element;
|
9584 |
+
|
9585 |
+
if (!el) {
|
9586 |
+
continue;
|
9587 |
+
}
|
9588 |
+
|
9589 |
+
const clickOrTouchHandler = (e, pos) => {
|
9590 |
+
if (domItem.destroyed) {
|
9591 |
+
return;
|
9592 |
+
}
|
9593 |
+
|
9594 |
+
const pxRatio = domItem.retina.pixelRatio;
|
9595 |
+
const posRetina = {
|
9596 |
+
x: pos.x * pxRatio,
|
9597 |
+
y: pos.y * pxRatio
|
9598 |
+
};
|
9599 |
+
const particles = domItem.particles.quadTree.queryCircle(posRetina, domItem.retina.sizeValue);
|
9600 |
+
callback(e, particles);
|
9601 |
+
};
|
9602 |
+
|
9603 |
+
const clickHandler = e => {
|
9604 |
+
if (domItem.destroyed) {
|
9605 |
+
return;
|
9606 |
+
}
|
9607 |
+
|
9608 |
+
const mouseEvent = e;
|
9609 |
+
const pos = {
|
9610 |
+
x: mouseEvent.offsetX || mouseEvent.clientX,
|
9611 |
+
y: mouseEvent.offsetY || mouseEvent.clientY
|
9612 |
+
};
|
9613 |
+
clickOrTouchHandler(e, pos);
|
9614 |
+
};
|
9615 |
+
|
9616 |
+
const touchStartHandler = () => {
|
9617 |
+
if (domItem.destroyed) {
|
9618 |
+
return;
|
9619 |
+
}
|
9620 |
+
|
9621 |
+
touched = true;
|
9622 |
+
touchMoved = false;
|
9623 |
+
};
|
9624 |
+
|
9625 |
+
const touchMoveHandler = () => {
|
9626 |
+
if (domItem.destroyed) {
|
9627 |
+
return;
|
9628 |
+
}
|
9629 |
+
|
9630 |
+
touchMoved = true;
|
9631 |
+
};
|
9632 |
+
|
9633 |
+
const touchEndHandler = e => {
|
9634 |
+
var _a, _b, _c;
|
9635 |
+
|
9636 |
+
if (domItem.destroyed) {
|
9637 |
+
return;
|
9638 |
+
}
|
9639 |
+
|
9640 |
+
if (touched && !touchMoved) {
|
9641 |
+
const touchEvent = e;
|
9642 |
+
const lastTouch = touchEvent.touches[touchEvent.touches.length - 1];
|
9643 |
+
const canvasRect = (_a = domItem.canvas.element) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
9644 |
+
const pos = {
|
9645 |
+
x: lastTouch.clientX - ((_b = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.left) !== null && _b !== void 0 ? _b : 0),
|
9646 |
+
y: lastTouch.clientY - ((_c = canvasRect === null || canvasRect === void 0 ? void 0 : canvasRect.top) !== null && _c !== void 0 ? _c : 0)
|
9647 |
+
};
|
9648 |
+
clickOrTouchHandler(e, pos);
|
9649 |
+
}
|
9650 |
+
|
9651 |
+
touched = false;
|
9652 |
+
touchMoved = false;
|
9653 |
+
};
|
9654 |
+
|
9655 |
+
const touchCancelHandler = () => {
|
9656 |
+
if (domItem.destroyed) {
|
9657 |
+
return;
|
9658 |
+
}
|
9659 |
+
|
9660 |
+
touched = false;
|
9661 |
+
touchMoved = false;
|
9662 |
+
};
|
9663 |
+
|
9664 |
+
let touched = false;
|
9665 |
+
let touchMoved = false;
|
9666 |
+
el.addEventListener("click", clickHandler);
|
9667 |
+
el.addEventListener("touchstart", touchStartHandler);
|
9668 |
+
el.addEventListener("touchmove", touchMoveHandler);
|
9669 |
+
el.addEventListener("touchend", touchEndHandler);
|
9670 |
+
el.addEventListener("touchcancel", touchCancelHandler);
|
9671 |
+
}
|
9672 |
+
}
|
9673 |
+
|
9674 |
+
}
|
9675 |
+
;// CONCATENATED MODULE: ./dist/browser/main.slim.js
|
9676 |
+
var main_slim_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
9677 |
+
function adopt(value) {
|
9678 |
+
return value instanceof P ? value : new P(function (resolve) {
|
9679 |
+
resolve(value);
|
9680 |
+
});
|
9681 |
+
}
|
9682 |
+
|
9683 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
9684 |
+
function fulfilled(value) {
|
9685 |
+
try {
|
9686 |
+
step(generator.next(value));
|
9687 |
+
} catch (e) {
|
9688 |
+
reject(e);
|
9689 |
+
}
|
9690 |
+
}
|
9691 |
+
|
9692 |
+
function rejected(value) {
|
9693 |
+
try {
|
9694 |
+
step(generator["throw"](value));
|
9695 |
+
} catch (e) {
|
9696 |
+
reject(e);
|
9697 |
+
}
|
9698 |
+
}
|
9699 |
+
|
9700 |
+
function step(result) {
|
9701 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
9702 |
+
}
|
9703 |
+
|
9704 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9705 |
+
});
|
9706 |
+
};
|
9707 |
+
|
9708 |
+
var __classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function (receiver, privateMap, value) {
|
9709 |
+
if (!privateMap.has(receiver)) {
|
9710 |
+
throw new TypeError("attempted to set private field on non-instance");
|
9711 |
+
}
|
9712 |
+
|
9713 |
+
privateMap.set(receiver, value);
|
9714 |
+
return value;
|
9715 |
+
};
|
9716 |
+
|
9717 |
+
var __classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function (receiver, privateMap) {
|
9718 |
+
if (!privateMap.has(receiver)) {
|
9719 |
+
throw new TypeError("attempted to get private field on non-instance");
|
9720 |
+
}
|
9721 |
+
|
9722 |
+
return privateMap.get(receiver);
|
9723 |
+
};
|
9724 |
+
|
9725 |
+
var _initialized;
|
9726 |
+
|
9727 |
+
|
9728 |
+
|
9729 |
+
|
9730 |
+
|
9731 |
+
|
9732 |
+
|
9733 |
+
|
9734 |
+
|
9735 |
+
|
9736 |
+
|
9737 |
+
|
9738 |
+
class MainSlim {
|
9739 |
+
constructor() {
|
9740 |
+
_initialized.set(this, void 0);
|
9741 |
+
|
9742 |
+
__classPrivateFieldSet(this, _initialized, false);
|
9743 |
+
|
9744 |
+
const squareDrawer = new SquareDrawer();
|
9745 |
+
const textDrawer = new TextDrawer();
|
9746 |
+
const imageDrawer = new ImageDrawer();
|
9747 |
+
Plugins.addShapeDrawer(ShapeType.line, new LineDrawer());
|
9748 |
+
Plugins.addShapeDrawer(ShapeType.circle, new CircleDrawer());
|
9749 |
+
Plugins.addShapeDrawer(ShapeType.edge, squareDrawer);
|
9750 |
+
Plugins.addShapeDrawer(ShapeType.square, squareDrawer);
|
9751 |
+
Plugins.addShapeDrawer(ShapeType.triangle, new TriangleDrawer());
|
9752 |
+
Plugins.addShapeDrawer(ShapeType.star, new StarDrawer());
|
9753 |
+
Plugins.addShapeDrawer(ShapeType.polygon, new PolygonDrawer());
|
9754 |
+
Plugins.addShapeDrawer(ShapeType.char, textDrawer);
|
9755 |
+
Plugins.addShapeDrawer(ShapeType.character, textDrawer);
|
9756 |
+
Plugins.addShapeDrawer(ShapeType.image, imageDrawer);
|
9757 |
+
Plugins.addShapeDrawer(ShapeType.images, imageDrawer);
|
9758 |
+
}
|
9759 |
+
|
9760 |
+
init() {
|
9761 |
+
if (!__classPrivateFieldGet(this, _initialized)) {
|
9762 |
+
__classPrivateFieldSet(this, _initialized, true);
|
9763 |
+
}
|
9764 |
+
}
|
9765 |
+
|
9766 |
+
loadFromArray(tagId, options, index) {
|
9767 |
+
return main_slim_awaiter(this, void 0, void 0, function* () {
|
9768 |
+
return Loader.load(tagId, options, index);
|
9769 |
+
});
|
9770 |
+
}
|
9771 |
+
|
9772 |
+
load(tagId, options) {
|
9773 |
+
return main_slim_awaiter(this, void 0, void 0, function* () {
|
9774 |
+
return Loader.load(tagId, options);
|
9775 |
+
});
|
9776 |
+
}
|
9777 |
+
|
9778 |
+
set(id, element, options) {
|
9779 |
+
return main_slim_awaiter(this, void 0, void 0, function* () {
|
9780 |
+
return Loader.set(id, element, options);
|
9781 |
+
});
|
9782 |
+
}
|
9783 |
+
|
9784 |
+
loadJSON(tagId, pathConfigJson, index) {
|
9785 |
+
return Loader.loadJSON(tagId, pathConfigJson, index);
|
9786 |
+
}
|
9787 |
+
|
9788 |
+
setOnClickHandler(callback) {
|
9789 |
+
Loader.setOnClickHandler(callback);
|
9790 |
+
}
|
9791 |
+
|
9792 |
+
dom() {
|
9793 |
+
return Loader.dom();
|
9794 |
+
}
|
9795 |
+
|
9796 |
+
domItem(index) {
|
9797 |
+
return Loader.domItem(index);
|
9798 |
+
}
|
9799 |
+
|
9800 |
+
addShape(shape, drawer, init, afterEffect, destroy) {
|
9801 |
+
let customDrawer;
|
9802 |
+
|
9803 |
+
if (typeof drawer === "function") {
|
9804 |
+
customDrawer = {
|
9805 |
+
afterEffect: afterEffect,
|
9806 |
+
destroy: destroy,
|
9807 |
+
draw: drawer,
|
9808 |
+
init: init
|
9809 |
+
};
|
9810 |
+
} else {
|
9811 |
+
customDrawer = drawer;
|
9812 |
+
}
|
9813 |
+
|
9814 |
+
Plugins.addShapeDrawer(shape, customDrawer);
|
9815 |
+
}
|
9816 |
+
|
9817 |
+
addPreset(preset, options) {
|
9818 |
+
Plugins.addPreset(preset, options);
|
9819 |
+
}
|
9820 |
+
|
9821 |
+
addPlugin(plugin) {
|
9822 |
+
Plugins.addPlugin(plugin);
|
9823 |
+
}
|
9824 |
+
|
9825 |
+
addPathGenerator(name, generator) {
|
9826 |
+
Plugins.addPathGenerator(name, generator);
|
9827 |
+
}
|
9828 |
+
|
9829 |
+
}
|
9830 |
+
_initialized = new WeakMap();
|
9831 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/AbsorberInstance.js
|
9832 |
+
|
9833 |
+
class AbsorberInstance {
|
9834 |
+
constructor(absorbers, container, options, position) {
|
9835 |
+
var _a, _b;
|
9836 |
+
|
9837 |
+
this.absorbers = absorbers;
|
9838 |
+
this.container = container;
|
9839 |
+
this.initialPosition = position;
|
9840 |
+
this.options = options;
|
9841 |
+
this.dragging = false;
|
9842 |
+
this.name = this.options.name;
|
9843 |
+
this.opacity = this.options.opacity;
|
9844 |
+
this.size = NumberUtils.getValue(options.size) * container.retina.pixelRatio;
|
9845 |
+
this.mass = this.size * options.size.density * container.retina.reduceFactor;
|
9846 |
+
const limit = options.size.limit;
|
9847 |
+
this.limit = limit !== undefined ? limit * container.retina.pixelRatio * container.retina.reduceFactor : limit;
|
9848 |
+
const color = typeof options.color === "string" ? {
|
9849 |
+
value: options.color
|
9850 |
+
} : options.color;
|
9851 |
+
this.color = (_a = ColorUtils.colorToRgb(color)) !== null && _a !== void 0 ? _a : {
|
9852 |
+
b: 0,
|
9853 |
+
g: 0,
|
9854 |
+
r: 0
|
9855 |
+
};
|
9856 |
+
this.position = (_b = this.initialPosition) !== null && _b !== void 0 ? _b : this.calcPosition();
|
9857 |
+
}
|
9858 |
+
|
9859 |
+
attract(particle) {
|
9860 |
+
const options = this.options;
|
9861 |
+
|
9862 |
+
if (options.draggable) {
|
9863 |
+
const mouse = this.container.interactivity.mouse;
|
9864 |
+
|
9865 |
+
if (mouse.clicking && mouse.downPosition) {
|
9866 |
+
const mouseDist = NumberUtils.getDistance(this.position, mouse.downPosition);
|
9867 |
+
|
9868 |
+
if (mouseDist <= this.size) {
|
9869 |
+
this.dragging = true;
|
9870 |
+
}
|
9871 |
+
} else {
|
9872 |
+
this.dragging = false;
|
9873 |
+
}
|
9874 |
+
|
9875 |
+
if (this.dragging && mouse.position) {
|
9876 |
+
this.position.x = mouse.position.x;
|
9877 |
+
this.position.y = mouse.position.y;
|
9878 |
+
}
|
9879 |
+
}
|
9880 |
+
|
9881 |
+
const pos = particle.getPosition();
|
9882 |
+
const {
|
9883 |
+
dx,
|
9884 |
+
dy,
|
9885 |
+
distance
|
9886 |
+
} = NumberUtils.getDistances(this.position, pos);
|
9887 |
+
const angle = Math.atan2(dx, dy);
|
9888 |
+
const acceleration = this.mass / Math.pow(distance, 2) * this.container.retina.reduceFactor;
|
9889 |
+
|
9890 |
+
if (distance < this.size + particle.getRadius()) {
|
9891 |
+
const sizeFactor = particle.getRadius() * 0.033 * this.container.retina.pixelRatio;
|
9892 |
+
|
9893 |
+
if (this.size > particle.getRadius() && distance < this.size - particle.getRadius()) {
|
9894 |
+
if (options.destroy) {
|
9895 |
+
particle.destroy();
|
9896 |
+
} else {
|
9897 |
+
particle.needsNewPosition = true;
|
9898 |
+
this.updateParticlePosition(particle, angle, acceleration);
|
9899 |
+
}
|
9900 |
+
} else {
|
9901 |
+
if (options.destroy) {
|
9902 |
+
particle.size.value -= sizeFactor;
|
9903 |
+
}
|
9904 |
+
|
9905 |
+
this.updateParticlePosition(particle, angle, acceleration);
|
9906 |
+
}
|
9907 |
+
|
9908 |
+
if (this.limit === undefined || this.size < this.limit) {
|
9909 |
+
this.size += sizeFactor;
|
9910 |
+
}
|
9911 |
+
|
9912 |
+
this.mass += sizeFactor * this.options.size.density * this.container.retina.reduceFactor;
|
9913 |
+
} else {
|
9914 |
+
this.updateParticlePosition(particle, angle, acceleration);
|
9915 |
+
}
|
9916 |
+
}
|
9917 |
+
|
9918 |
+
resize() {
|
9919 |
+
const initialPosition = this.initialPosition;
|
9920 |
+
this.position = initialPosition && Utils.isPointInside(initialPosition, this.container.canvas.size) ? initialPosition : this.calcPosition();
|
9921 |
+
}
|
9922 |
+
|
9923 |
+
draw(context) {
|
9924 |
+
context.translate(this.position.x, this.position.y);
|
9925 |
+
context.beginPath();
|
9926 |
+
context.arc(0, 0, this.size, 0, Math.PI * 2, false);
|
9927 |
+
context.closePath();
|
9928 |
+
context.fillStyle = ColorUtils.getStyleFromRgb(this.color, this.opacity);
|
9929 |
+
context.fill();
|
9930 |
+
}
|
9931 |
+
|
9932 |
+
calcPosition() {
|
9933 |
+
var _a, _b;
|
9934 |
+
|
9935 |
+
const container = this.container;
|
9936 |
+
const percentPosition = this.options.position;
|
9937 |
+
return {
|
9938 |
+
x: ((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100 * container.canvas.size.width,
|
9939 |
+
y: ((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100 * container.canvas.size.height
|
9940 |
+
};
|
9941 |
+
}
|
9942 |
+
|
9943 |
+
updateParticlePosition(particle, angle, acceleration) {
|
9944 |
+
var _a;
|
9945 |
+
|
9946 |
+
if (particle.destroyed) {
|
9947 |
+
return;
|
9948 |
+
}
|
9949 |
+
|
9950 |
+
const canvasSize = this.container.canvas.size;
|
9951 |
+
|
9952 |
+
if (particle.needsNewPosition) {
|
9953 |
+
const pSize = particle.getRadius();
|
9954 |
+
particle.position.x = Math.random() * (canvasSize.width - pSize * 2) + pSize;
|
9955 |
+
particle.position.y = Math.random() * (canvasSize.height - pSize * 2) + pSize;
|
9956 |
+
particle.needsNewPosition = false;
|
9957 |
+
}
|
9958 |
+
|
9959 |
+
if (this.options.orbits) {
|
9960 |
+
if (particle.orbitRadius === undefined) {
|
9961 |
+
particle.orbitRadius = NumberUtils.getDistance(particle.getPosition(), this.position);
|
9962 |
+
}
|
9963 |
+
|
9964 |
+
if (particle.orbitRadius <= this.size && !this.options.destroy) {
|
9965 |
+
particle.orbitRadius = Math.random() * Math.max(canvasSize.width, canvasSize.height);
|
9966 |
+
}
|
9967 |
+
|
9968 |
+
if (particle.orbitAngle === undefined) {
|
9969 |
+
particle.orbitAngle = Math.random() * Math.PI * 2;
|
9970 |
+
}
|
9971 |
+
|
9972 |
+
const orbitRadius = particle.orbitRadius;
|
9973 |
+
const orbitAngle = particle.orbitAngle;
|
9974 |
+
particle.velocity.horizontal = 0;
|
9975 |
+
particle.velocity.vertical = 0;
|
9976 |
+
particle.position.x = this.position.x + orbitRadius * Math.cos(orbitAngle);
|
9977 |
+
particle.position.y = this.position.y + orbitRadius * Math.sin(orbitAngle);
|
9978 |
+
particle.orbitRadius -= acceleration;
|
9979 |
+
particle.orbitAngle += ((_a = particle.moveSpeed) !== null && _a !== void 0 ? _a : this.container.retina.moveSpeed) / 100 * this.container.retina.reduceFactor;
|
9980 |
+
} else {
|
9981 |
+
particle.velocity.horizontal += Math.sin(angle) * acceleration;
|
9982 |
+
particle.velocity.vertical += Math.cos(angle) * acceleration;
|
9983 |
+
}
|
9984 |
+
}
|
9985 |
+
|
9986 |
+
}
|
9987 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/Options/Classes/AbsorberSize.js
|
9988 |
+
|
9989 |
+
class AbsorberSize extends ValueWithRandom {
|
9990 |
+
constructor() {
|
9991 |
+
super();
|
9992 |
+
this.density = 5;
|
9993 |
+
this.random.minimumValue = 1;
|
9994 |
+
this.value = 50;
|
9995 |
+
}
|
9996 |
+
|
9997 |
+
load(data) {
|
9998 |
+
if (!data) {
|
9999 |
+
return;
|
10000 |
+
}
|
10001 |
+
|
10002 |
+
super.load(data);
|
10003 |
+
|
10004 |
+
if (data.density !== undefined) {
|
10005 |
+
this.density = data.density;
|
10006 |
+
}
|
10007 |
+
|
10008 |
+
if (data.limit !== undefined) {
|
10009 |
+
this.limit = data.limit;
|
10010 |
+
}
|
10011 |
+
|
10012 |
+
if (data.limit !== undefined) {
|
10013 |
+
this.limit = data.limit;
|
10014 |
+
}
|
10015 |
+
}
|
10016 |
+
|
10017 |
+
}
|
10018 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/Options/Classes/Absorber.js
|
10019 |
+
|
10020 |
+
|
10021 |
+
class Absorber {
|
10022 |
+
constructor() {
|
10023 |
+
this.color = new OptionsColor();
|
10024 |
+
this.color.value = "#000000";
|
10025 |
+
this.draggable = false;
|
10026 |
+
this.opacity = 1;
|
10027 |
+
this.destroy = true;
|
10028 |
+
this.orbits = false;
|
10029 |
+
this.size = new AbsorberSize();
|
10030 |
+
}
|
10031 |
+
|
10032 |
+
load(data) {
|
10033 |
+
if (data === undefined) {
|
10034 |
+
return;
|
10035 |
+
}
|
10036 |
+
|
10037 |
+
if (data.color !== undefined) {
|
10038 |
+
this.color = OptionsColor.create(this.color, data.color);
|
10039 |
+
}
|
10040 |
+
|
10041 |
+
if (data.draggable !== undefined) {
|
10042 |
+
this.draggable = data.draggable;
|
10043 |
+
}
|
10044 |
+
|
10045 |
+
this.name = data.name;
|
10046 |
+
|
10047 |
+
if (data.opacity !== undefined) {
|
10048 |
+
this.opacity = data.opacity;
|
10049 |
+
}
|
10050 |
+
|
10051 |
+
if (data.position !== undefined) {
|
10052 |
+
this.position = {
|
10053 |
+
x: data.position.x,
|
10054 |
+
y: data.position.y
|
10055 |
+
};
|
10056 |
+
}
|
10057 |
+
|
10058 |
+
if (data.size !== undefined) {
|
10059 |
+
this.size.load(data.size);
|
10060 |
+
}
|
10061 |
+
|
10062 |
+
if (data.destroy !== undefined) {
|
10063 |
+
this.destroy = data.destroy;
|
10064 |
+
}
|
10065 |
+
|
10066 |
+
if (data.orbits !== undefined) {
|
10067 |
+
this.orbits = data.orbits;
|
10068 |
+
}
|
10069 |
+
}
|
10070 |
+
|
10071 |
+
}
|
10072 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/Enums/AbsorberClickMode.js
|
10073 |
+
var AbsorberClickMode;
|
10074 |
+
|
10075 |
+
(function (AbsorberClickMode) {
|
10076 |
+
AbsorberClickMode["absorber"] = "absorber";
|
10077 |
+
})(AbsorberClickMode || (AbsorberClickMode = {}));
|
10078 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/Enums/index.js
|
10079 |
+
|
10080 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/Absorbers.js
|
10081 |
+
|
10082 |
+
|
10083 |
+
|
10084 |
+
|
10085 |
+
class Absorbers {
|
10086 |
+
constructor(container) {
|
10087 |
+
this.container = container;
|
10088 |
+
this.array = [];
|
10089 |
+
this.absorbers = [];
|
10090 |
+
this.interactivityAbsorbers = [];
|
10091 |
+
const overridableContainer = container;
|
10092 |
+
|
10093 |
+
overridableContainer.addAbsorber = (options, position) => this.addAbsorber(options, position);
|
10094 |
+
}
|
10095 |
+
|
10096 |
+
init(options) {
|
10097 |
+
var _a, _b;
|
10098 |
+
|
10099 |
+
if (!options) {
|
10100 |
+
return;
|
10101 |
+
}
|
10102 |
+
|
10103 |
+
if (options.absorbers) {
|
10104 |
+
if (options.absorbers instanceof Array) {
|
10105 |
+
this.absorbers = options.absorbers.map(s => {
|
10106 |
+
const tmp = new Absorber();
|
10107 |
+
tmp.load(s);
|
10108 |
+
return tmp;
|
10109 |
+
});
|
10110 |
+
} else {
|
10111 |
+
if (this.absorbers instanceof Array) {
|
10112 |
+
this.absorbers = new Absorber();
|
10113 |
+
}
|
10114 |
+
|
10115 |
+
this.absorbers.load(options.absorbers);
|
10116 |
+
}
|
10117 |
+
}
|
10118 |
+
|
10119 |
+
const interactivityAbsorbers = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers;
|
10120 |
+
|
10121 |
+
if (interactivityAbsorbers) {
|
10122 |
+
if (interactivityAbsorbers instanceof Array) {
|
10123 |
+
this.interactivityAbsorbers = interactivityAbsorbers.map(s => {
|
10124 |
+
const tmp = new Absorber();
|
10125 |
+
tmp.load(s);
|
10126 |
+
return tmp;
|
10127 |
+
});
|
10128 |
+
} else {
|
10129 |
+
if (this.interactivityAbsorbers instanceof Array) {
|
10130 |
+
this.interactivityAbsorbers = new Absorber();
|
10131 |
+
}
|
10132 |
+
|
10133 |
+
this.interactivityAbsorbers.load(interactivityAbsorbers);
|
10134 |
+
}
|
10135 |
+
}
|
10136 |
+
|
10137 |
+
if (this.absorbers instanceof Array) {
|
10138 |
+
for (const absorberOptions of this.absorbers) {
|
10139 |
+
this.addAbsorber(absorberOptions);
|
10140 |
+
}
|
10141 |
+
} else {
|
10142 |
+
this.addAbsorber(this.absorbers);
|
10143 |
+
}
|
10144 |
+
}
|
10145 |
+
|
10146 |
+
particleUpdate(particle) {
|
10147 |
+
for (const absorber of this.array) {
|
10148 |
+
absorber.attract(particle);
|
10149 |
+
|
10150 |
+
if (particle.destroyed) {
|
10151 |
+
break;
|
10152 |
+
}
|
10153 |
+
}
|
10154 |
+
}
|
10155 |
+
|
10156 |
+
draw(context) {
|
10157 |
+
for (const absorber of this.array) {
|
10158 |
+
context.save();
|
10159 |
+
absorber.draw(context);
|
10160 |
+
context.restore();
|
10161 |
+
}
|
10162 |
+
}
|
10163 |
+
|
10164 |
+
stop() {
|
10165 |
+
this.array = [];
|
10166 |
+
}
|
10167 |
+
|
10168 |
+
resize() {
|
10169 |
+
for (const absorber of this.array) {
|
10170 |
+
absorber.resize();
|
10171 |
+
}
|
10172 |
+
}
|
10173 |
+
|
10174 |
+
handleClickMode(mode) {
|
10175 |
+
const container = this.container;
|
10176 |
+
const absorberOptions = this.absorbers;
|
10177 |
+
const modeAbsorbers = this.interactivityAbsorbers;
|
10178 |
+
|
10179 |
+
if (mode === AbsorberClickMode.absorber) {
|
10180 |
+
let absorbersModeOptions;
|
10181 |
+
|
10182 |
+
if (modeAbsorbers instanceof Array) {
|
10183 |
+
if (modeAbsorbers.length > 0) {
|
10184 |
+
absorbersModeOptions = Utils.itemFromArray(modeAbsorbers);
|
10185 |
+
}
|
10186 |
+
} else {
|
10187 |
+
absorbersModeOptions = modeAbsorbers;
|
10188 |
+
}
|
10189 |
+
|
10190 |
+
const absorbersOptions = absorbersModeOptions !== null && absorbersModeOptions !== void 0 ? absorbersModeOptions : absorberOptions instanceof Array ? Utils.itemFromArray(absorberOptions) : absorberOptions;
|
10191 |
+
const aPosition = container.interactivity.mouse.clickPosition;
|
10192 |
+
this.addAbsorber(absorbersOptions, aPosition);
|
10193 |
+
}
|
10194 |
+
}
|
10195 |
+
|
10196 |
+
addAbsorber(options, position) {
|
10197 |
+
const absorber = new AbsorberInstance(this, this.container, options, position);
|
10198 |
+
this.array.push(absorber);
|
10199 |
+
return absorber;
|
10200 |
+
}
|
10201 |
+
|
10202 |
+
removeAbsorber(absorber) {
|
10203 |
+
const index = this.array.indexOf(absorber);
|
10204 |
+
|
10205 |
+
if (index >= 0) {
|
10206 |
+
this.array.splice(index, 1);
|
10207 |
+
}
|
10208 |
+
}
|
10209 |
+
|
10210 |
+
}
|
10211 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Absorbers/AbsorbersPlugin.js
|
10212 |
+
|
10213 |
+
|
10214 |
+
|
10215 |
+
|
10216 |
+
|
10217 |
+
class AbsorbersPlugin {
|
10218 |
+
constructor() {
|
10219 |
+
this.id = "absorbers";
|
10220 |
+
}
|
10221 |
+
|
10222 |
+
getPlugin(container) {
|
10223 |
+
return new Absorbers(container);
|
10224 |
+
}
|
10225 |
+
|
10226 |
+
needsPlugin(options) {
|
10227 |
+
var _a, _b, _c;
|
10228 |
+
|
10229 |
+
if (options === undefined) {
|
10230 |
+
return false;
|
10231 |
+
}
|
10232 |
+
|
10233 |
+
const absorbers = options.absorbers;
|
10234 |
+
let loadAbsorbers = false;
|
10235 |
+
|
10236 |
+
if (absorbers instanceof Array) {
|
10237 |
+
if (absorbers.length) {
|
10238 |
+
loadAbsorbers = true;
|
10239 |
+
}
|
10240 |
+
} else if (absorbers !== undefined) {
|
10241 |
+
loadAbsorbers = true;
|
10242 |
+
} else if (((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) && Utils.isInArray(AbsorberClickMode.absorber, options.interactivity.events.onClick.mode)) {
|
10243 |
+
loadAbsorbers = true;
|
10244 |
+
}
|
10245 |
+
|
10246 |
+
return loadAbsorbers;
|
10247 |
+
}
|
10248 |
+
|
10249 |
+
loadOptions(options, source) {
|
10250 |
+
var _a, _b;
|
10251 |
+
|
10252 |
+
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
|
10253 |
+
return;
|
10254 |
+
}
|
10255 |
+
|
10256 |
+
const optionsCast = options;
|
10257 |
+
|
10258 |
+
if (source === null || source === void 0 ? void 0 : source.absorbers) {
|
10259 |
+
if ((source === null || source === void 0 ? void 0 : source.absorbers) instanceof Array) {
|
10260 |
+
optionsCast.absorbers = source === null || source === void 0 ? void 0 : source.absorbers.map(s => {
|
10261 |
+
const tmp = new Absorber();
|
10262 |
+
tmp.load(s);
|
10263 |
+
return tmp;
|
10264 |
+
});
|
10265 |
+
} else {
|
10266 |
+
let absorberOptions = optionsCast.absorbers;
|
10267 |
+
|
10268 |
+
if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) {
|
10269 |
+
optionsCast.absorbers = absorberOptions = new Absorber();
|
10270 |
+
}
|
10271 |
+
|
10272 |
+
absorberOptions.load(source === null || source === void 0 ? void 0 : source.absorbers);
|
10273 |
+
}
|
10274 |
+
}
|
10275 |
+
|
10276 |
+
const interactivityAbsorbers = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.absorbers;
|
10277 |
+
|
10278 |
+
if (interactivityAbsorbers) {
|
10279 |
+
if (interactivityAbsorbers instanceof Array) {
|
10280 |
+
optionsCast.interactivity.modes.absorbers = interactivityAbsorbers.map(s => {
|
10281 |
+
const tmp = new Absorber();
|
10282 |
+
tmp.load(s);
|
10283 |
+
return tmp;
|
10284 |
+
});
|
10285 |
+
} else {
|
10286 |
+
let absorberOptions = optionsCast.interactivity.modes.absorbers;
|
10287 |
+
|
10288 |
+
if ((absorberOptions === null || absorberOptions === void 0 ? void 0 : absorberOptions.load) === undefined) {
|
10289 |
+
optionsCast.interactivity.modes.absorbers = absorberOptions = new Absorber();
|
10290 |
+
}
|
10291 |
+
|
10292 |
+
absorberOptions.load(interactivityAbsorbers);
|
10293 |
+
}
|
10294 |
+
}
|
10295 |
+
}
|
10296 |
+
|
10297 |
+
}
|
10298 |
+
|
10299 |
+
const AbsorbersPlugin_plugin = new AbsorbersPlugin();
|
10300 |
+
|
10301 |
+
|
10302 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Options/Classes/EmitterSize.js
|
10303 |
+
|
10304 |
+
class EmitterSize {
|
10305 |
+
constructor() {
|
10306 |
+
this.mode = SizeMode.percent;
|
10307 |
+
this.height = 0;
|
10308 |
+
this.width = 0;
|
10309 |
+
}
|
10310 |
+
|
10311 |
+
load(data) {
|
10312 |
+
if (data === undefined) {
|
10313 |
+
return;
|
10314 |
+
}
|
10315 |
+
|
10316 |
+
if (data.mode !== undefined) {
|
10317 |
+
this.mode = data.mode;
|
10318 |
+
}
|
10319 |
+
|
10320 |
+
if (data.height !== undefined) {
|
10321 |
+
this.height = data.height;
|
10322 |
+
}
|
10323 |
+
|
10324 |
+
if (data.width !== undefined) {
|
10325 |
+
this.width = data.width;
|
10326 |
+
}
|
10327 |
+
}
|
10328 |
+
|
10329 |
+
}
|
10330 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/EmitterInstance.js
|
10331 |
+
|
10332 |
+
|
10333 |
+
|
10334 |
+
|
10335 |
+
function randomCoordinate(position, offset) {
|
10336 |
+
return position + offset * (Math.random() - 0.5);
|
10337 |
+
}
|
10338 |
+
|
10339 |
+
function randomPosition(position, offset) {
|
10340 |
+
return {
|
10341 |
+
x: randomCoordinate(position.x, offset.x),
|
10342 |
+
y: randomCoordinate(position.y, offset.y)
|
10343 |
+
};
|
10344 |
+
}
|
10345 |
+
|
10346 |
+
class EmitterInstance {
|
10347 |
+
constructor(emitters, container, emitterOptions, position) {
|
10348 |
+
var _a, _b, _c;
|
10349 |
+
|
10350 |
+
this.emitters = emitters;
|
10351 |
+
this.container = container;
|
10352 |
+
this.currentDuration = 0;
|
10353 |
+
this.currentEmitDelay = 0;
|
10354 |
+
this.currentSpawnDelay = 0;
|
10355 |
+
this.initialPosition = position;
|
10356 |
+
this.emitterOptions = Utils.deepExtend({}, emitterOptions);
|
10357 |
+
this.position = (_a = this.initialPosition) !== null && _a !== void 0 ? _a : this.calcPosition();
|
10358 |
+
this.name = emitterOptions.name;
|
10359 |
+
let particlesOptions = Utils.deepExtend({}, this.emitterOptions.particles);
|
10360 |
+
|
10361 |
+
if (particlesOptions === undefined) {
|
10362 |
+
particlesOptions = {};
|
10363 |
+
}
|
10364 |
+
|
10365 |
+
if (particlesOptions.move === undefined) {
|
10366 |
+
particlesOptions.move = {};
|
10367 |
+
}
|
10368 |
+
|
10369 |
+
if (particlesOptions.move.direction === undefined) {
|
10370 |
+
particlesOptions.move.direction = this.emitterOptions.direction;
|
10371 |
+
}
|
10372 |
+
|
10373 |
+
if (this.emitterOptions.spawnColor !== undefined) {
|
10374 |
+
this.spawnColor = ColorUtils.colorToHsl(this.emitterOptions.spawnColor);
|
10375 |
+
}
|
10376 |
+
|
10377 |
+
this.particlesOptions = particlesOptions;
|
10378 |
+
this.size = (_b = this.emitterOptions.size) !== null && _b !== void 0 ? _b : (() => {
|
10379 |
+
const size = new EmitterSize();
|
10380 |
+
size.load({
|
10381 |
+
height: 0,
|
10382 |
+
mode: SizeMode.percent,
|
10383 |
+
width: 0
|
10384 |
+
});
|
10385 |
+
return size;
|
10386 |
+
})();
|
10387 |
+
this.lifeCount = (_c = this.emitterOptions.life.count) !== null && _c !== void 0 ? _c : -1;
|
10388 |
+
this.immortal = this.lifeCount <= 0;
|
10389 |
+
this.play();
|
10390 |
+
}
|
10391 |
+
|
10392 |
+
play() {
|
10393 |
+
if (this.container.retina.reduceFactor && (this.lifeCount > 0 || this.immortal || !this.emitterOptions.life.count)) {
|
10394 |
+
if (this.emitDelay === undefined) {
|
10395 |
+
this.emitDelay = 1000 * this.emitterOptions.rate.delay / this.container.retina.reduceFactor;
|
10396 |
+
}
|
10397 |
+
|
10398 |
+
if (this.lifeCount > 0 || this.immortal) {
|
10399 |
+
this.prepareToDie();
|
10400 |
+
}
|
10401 |
+
}
|
10402 |
+
}
|
10403 |
+
|
10404 |
+
pause() {
|
10405 |
+
delete this.emitDelay;
|
10406 |
+
}
|
10407 |
+
|
10408 |
+
resize() {
|
10409 |
+
const initialPosition = this.initialPosition;
|
10410 |
+
this.position = initialPosition && Utils.isPointInside(initialPosition, this.container.canvas.size) ? initialPosition : this.calcPosition();
|
10411 |
+
}
|
10412 |
+
|
10413 |
+
update(delta) {
|
10414 |
+
var _a;
|
10415 |
+
|
10416 |
+
if (this.duration !== undefined) {
|
10417 |
+
this.currentDuration += delta.value;
|
10418 |
+
|
10419 |
+
if (this.currentDuration >= this.duration) {
|
10420 |
+
this.pause();
|
10421 |
+
|
10422 |
+
if (this.spawnDelay !== undefined) {
|
10423 |
+
delete this.spawnDelay;
|
10424 |
+
}
|
10425 |
+
|
10426 |
+
if (!this.immortal) {
|
10427 |
+
this.lifeCount--;
|
10428 |
+
}
|
10429 |
+
|
10430 |
+
if (this.lifeCount > 0 || this.immortal) {
|
10431 |
+
this.position = this.calcPosition();
|
10432 |
+
this.spawnDelay = ((_a = this.emitterOptions.life.delay) !== null && _a !== void 0 ? _a : 0) * 1000 / this.container.retina.reduceFactor;
|
10433 |
+
} else {
|
10434 |
+
this.destroy();
|
10435 |
+
}
|
10436 |
+
|
10437 |
+
this.currentDuration -= this.duration;
|
10438 |
+
delete this.duration;
|
10439 |
+
}
|
10440 |
+
}
|
10441 |
+
|
10442 |
+
if (this.spawnDelay !== undefined) {
|
10443 |
+
this.currentSpawnDelay += delta.value;
|
10444 |
+
|
10445 |
+
if (this.currentSpawnDelay >= this.spawnDelay) {
|
10446 |
+
this.play();
|
10447 |
+
this.currentSpawnDelay -= this.currentSpawnDelay;
|
10448 |
+
delete this.spawnDelay;
|
10449 |
+
}
|
10450 |
+
}
|
10451 |
+
|
10452 |
+
if (this.emitDelay !== undefined) {
|
10453 |
+
this.currentEmitDelay += delta.value;
|
10454 |
+
|
10455 |
+
if (this.currentEmitDelay >= this.emitDelay) {
|
10456 |
+
this.emit();
|
10457 |
+
this.currentEmitDelay -= this.emitDelay;
|
10458 |
+
}
|
10459 |
+
}
|
10460 |
+
}
|
10461 |
+
|
10462 |
+
prepareToDie() {
|
10463 |
+
var _a;
|
10464 |
+
|
10465 |
+
const duration = (_a = this.emitterOptions.life) === null || _a === void 0 ? void 0 : _a.duration;
|
10466 |
+
|
10467 |
+
if (this.container.retina.reduceFactor && (this.lifeCount > 0 || this.immortal) && duration !== undefined && duration > 0) {
|
10468 |
+
this.duration = duration * 1000;
|
10469 |
+
}
|
10470 |
+
}
|
10471 |
+
|
10472 |
+
destroy() {
|
10473 |
+
this.emitters.removeEmitter(this);
|
10474 |
+
}
|
10475 |
+
|
10476 |
+
calcPosition() {
|
10477 |
+
var _a, _b;
|
10478 |
+
|
10479 |
+
const container = this.container;
|
10480 |
+
const percentPosition = this.emitterOptions.position;
|
10481 |
+
return {
|
10482 |
+
x: ((_a = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.x) !== null && _a !== void 0 ? _a : Math.random() * 100) / 100 * container.canvas.size.width,
|
10483 |
+
y: ((_b = percentPosition === null || percentPosition === void 0 ? void 0 : percentPosition.y) !== null && _b !== void 0 ? _b : Math.random() * 100) / 100 * container.canvas.size.height
|
10484 |
+
};
|
10485 |
+
}
|
10486 |
+
|
10487 |
+
emit() {
|
10488 |
+
var _a;
|
10489 |
+
|
10490 |
+
const container = this.container;
|
10491 |
+
const position = this.position;
|
10492 |
+
const offset = {
|
10493 |
+
x: this.size.mode === SizeMode.percent ? container.canvas.size.width * this.size.width / 100 : this.size.width,
|
10494 |
+
y: this.size.mode === SizeMode.percent ? container.canvas.size.height * this.size.height / 100 : this.size.height
|
10495 |
+
};
|
10496 |
+
|
10497 |
+
for (let i = 0; i < this.emitterOptions.rate.quantity; i++) {
|
10498 |
+
const particlesOptions = Utils.deepExtend({}, this.particlesOptions);
|
10499 |
+
|
10500 |
+
if (this.spawnColor !== undefined) {
|
10501 |
+
const colorAnimation = (_a = this.emitterOptions.spawnColor) === null || _a === void 0 ? void 0 : _a.animation;
|
10502 |
+
|
10503 |
+
if (colorAnimation) {
|
10504 |
+
const hueAnimation = colorAnimation;
|
10505 |
+
|
10506 |
+
if (hueAnimation.enable) {
|
10507 |
+
this.spawnColor.h = this.setColorAnimation(hueAnimation, this.spawnColor.h, 360);
|
10508 |
+
} else {
|
10509 |
+
const hslAnimation = colorAnimation;
|
10510 |
+
this.spawnColor.h = this.setColorAnimation(hslAnimation.h, this.spawnColor.h, 360);
|
10511 |
+
this.spawnColor.s = this.setColorAnimation(hslAnimation.s, this.spawnColor.s, 100);
|
10512 |
+
this.spawnColor.l = this.setColorAnimation(hslAnimation.l, this.spawnColor.l, 100);
|
10513 |
+
}
|
10514 |
+
}
|
10515 |
+
|
10516 |
+
if (!particlesOptions.color) {
|
10517 |
+
particlesOptions.color = {
|
10518 |
+
value: this.spawnColor
|
10519 |
+
};
|
10520 |
+
} else {
|
10521 |
+
particlesOptions.color.value = this.spawnColor;
|
10522 |
+
}
|
10523 |
+
}
|
10524 |
+
|
10525 |
+
container.particles.addParticle(randomPosition(position, offset), particlesOptions);
|
10526 |
+
}
|
10527 |
+
}
|
10528 |
+
|
10529 |
+
setColorAnimation(animation, initValue, maxValue) {
|
10530 |
+
var _a;
|
10531 |
+
|
10532 |
+
const container = this.container;
|
10533 |
+
|
10534 |
+
if (!animation.enable) {
|
10535 |
+
return initValue;
|
10536 |
+
}
|
10537 |
+
|
10538 |
+
const colorOffset = NumberUtils.randomInRange(animation.offset);
|
10539 |
+
const emitFactor = 1000 * this.emitterOptions.rate.delay / container.retina.reduceFactor;
|
10540 |
+
const colorSpeed = (_a = animation.speed) !== null && _a !== void 0 ? _a : 0;
|
10541 |
+
return (initValue + colorSpeed * container.fpsLimit / emitFactor + colorOffset * 3.6) % maxValue;
|
10542 |
+
}
|
10543 |
+
|
10544 |
+
}
|
10545 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Options/Classes/EmitterRate.js
|
10546 |
+
class EmitterRate {
|
10547 |
+
constructor() {
|
10548 |
+
this.quantity = 1;
|
10549 |
+
this.delay = 0.1;
|
10550 |
+
}
|
10551 |
+
|
10552 |
+
load(data) {
|
10553 |
+
if (data === undefined) {
|
10554 |
+
return;
|
10555 |
+
}
|
10556 |
+
|
10557 |
+
if (data.quantity !== undefined) {
|
10558 |
+
this.quantity = data.quantity;
|
10559 |
+
}
|
10560 |
+
|
10561 |
+
if (data.delay !== undefined) {
|
10562 |
+
this.delay = data.delay;
|
10563 |
+
}
|
10564 |
+
}
|
10565 |
+
|
10566 |
+
}
|
10567 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Options/Classes/EmitterLife.js
|
10568 |
+
class EmitterLife {
|
10569 |
+
load(data) {
|
10570 |
+
if (data === undefined) {
|
10571 |
+
return;
|
10572 |
+
}
|
10573 |
+
|
10574 |
+
if (data.count !== undefined) {
|
10575 |
+
this.count = data.count;
|
10576 |
+
}
|
10577 |
+
|
10578 |
+
if (data.delay !== undefined) {
|
10579 |
+
this.delay = data.delay;
|
10580 |
+
}
|
10581 |
+
|
10582 |
+
if (data.duration !== undefined) {
|
10583 |
+
this.duration = data.duration;
|
10584 |
+
}
|
10585 |
+
}
|
10586 |
+
|
10587 |
+
}
|
10588 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Options/Classes/Emitter.js
|
10589 |
+
|
10590 |
+
|
10591 |
+
|
10592 |
+
|
10593 |
+
|
10594 |
+
|
10595 |
+
class Emitter {
|
10596 |
+
constructor() {
|
10597 |
+
this.direction = MoveDirection.none;
|
10598 |
+
this.life = new EmitterLife();
|
10599 |
+
this.rate = new EmitterRate();
|
10600 |
+
}
|
10601 |
+
|
10602 |
+
load(data) {
|
10603 |
+
if (data === undefined) {
|
10604 |
+
return;
|
10605 |
+
}
|
10606 |
+
|
10607 |
+
if (data.size !== undefined) {
|
10608 |
+
if (this.size === undefined) {
|
10609 |
+
this.size = new EmitterSize();
|
10610 |
+
}
|
10611 |
+
|
10612 |
+
this.size.load(data.size);
|
10613 |
+
}
|
10614 |
+
|
10615 |
+
if (data.direction !== undefined) {
|
10616 |
+
this.direction = data.direction;
|
10617 |
+
}
|
10618 |
+
|
10619 |
+
this.life.load(data.life);
|
10620 |
+
this.name = data.name;
|
10621 |
+
|
10622 |
+
if (data.particles !== undefined) {
|
10623 |
+
this.particles = Utils.deepExtend({}, data.particles);
|
10624 |
+
}
|
10625 |
+
|
10626 |
+
this.rate.load(data.rate);
|
10627 |
+
|
10628 |
+
if (data.position !== undefined) {
|
10629 |
+
this.position = {
|
10630 |
+
x: data.position.x,
|
10631 |
+
y: data.position.y
|
10632 |
+
};
|
10633 |
+
}
|
10634 |
+
|
10635 |
+
if (data.spawnColor !== undefined) {
|
10636 |
+
if (this.spawnColor === undefined) {
|
10637 |
+
this.spawnColor = new AnimatableColor();
|
10638 |
+
}
|
10639 |
+
|
10640 |
+
this.spawnColor.load(data.spawnColor);
|
10641 |
+
}
|
10642 |
+
}
|
10643 |
+
|
10644 |
+
}
|
10645 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Enums/EmitterClickMode.js
|
10646 |
+
var EmitterClickMode;
|
10647 |
+
|
10648 |
+
(function (EmitterClickMode) {
|
10649 |
+
EmitterClickMode["emitter"] = "emitter";
|
10650 |
+
})(EmitterClickMode || (EmitterClickMode = {}));
|
10651 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Enums/index.js
|
10652 |
+
|
10653 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/Emitters.js
|
10654 |
+
|
10655 |
+
|
10656 |
+
|
10657 |
+
|
10658 |
+
class Emitters {
|
10659 |
+
constructor(container) {
|
10660 |
+
this.container = container;
|
10661 |
+
this.array = [];
|
10662 |
+
this.emitters = [];
|
10663 |
+
this.interactivityEmitters = [];
|
10664 |
+
const overridableContainer = container;
|
10665 |
+
|
10666 |
+
overridableContainer.addEmitter = (options, position) => this.addEmitter(options, position);
|
10667 |
+
|
10668 |
+
overridableContainer.playEmitter = idxOrName => {
|
10669 |
+
const emitter = idxOrName === undefined || typeof idxOrName === "number" ? this.array[idxOrName || 0] : this.array.find(t => t.name === idxOrName);
|
10670 |
+
|
10671 |
+
if (emitter) {
|
10672 |
+
emitter.play();
|
10673 |
+
}
|
10674 |
+
};
|
10675 |
+
|
10676 |
+
overridableContainer.pauseEmitter = idxOrName => {
|
10677 |
+
const emitter = idxOrName === undefined || typeof idxOrName === "number" ? this.array[idxOrName || 0] : this.array.find(t => t.name === idxOrName);
|
10678 |
+
|
10679 |
+
if (emitter) {
|
10680 |
+
emitter.pause();
|
10681 |
+
}
|
10682 |
+
};
|
10683 |
+
}
|
10684 |
+
|
10685 |
+
init(options) {
|
10686 |
+
var _a, _b;
|
10687 |
+
|
10688 |
+
if (!options) {
|
10689 |
+
return;
|
10690 |
+
}
|
10691 |
+
|
10692 |
+
if (options.emitters) {
|
10693 |
+
if (options.emitters instanceof Array) {
|
10694 |
+
this.emitters = options.emitters.map(s => {
|
10695 |
+
const tmp = new Emitter();
|
10696 |
+
tmp.load(s);
|
10697 |
+
return tmp;
|
10698 |
+
});
|
10699 |
+
} else {
|
10700 |
+
if (this.emitters instanceof Array) {
|
10701 |
+
this.emitters = new Emitter();
|
10702 |
+
}
|
10703 |
+
|
10704 |
+
this.emitters.load(options.emitters);
|
10705 |
+
}
|
10706 |
+
}
|
10707 |
+
|
10708 |
+
const interactivityEmitters = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;
|
10709 |
+
|
10710 |
+
if (interactivityEmitters) {
|
10711 |
+
if (interactivityEmitters instanceof Array) {
|
10712 |
+
this.interactivityEmitters = interactivityEmitters.map(s => {
|
10713 |
+
const tmp = new Emitter();
|
10714 |
+
tmp.load(s);
|
10715 |
+
return tmp;
|
10716 |
+
});
|
10717 |
+
} else {
|
10718 |
+
if (this.interactivityEmitters instanceof Array) {
|
10719 |
+
this.interactivityEmitters = new Emitter();
|
10720 |
+
}
|
10721 |
+
|
10722 |
+
this.interactivityEmitters.load(interactivityEmitters);
|
10723 |
+
}
|
10724 |
+
}
|
10725 |
+
|
10726 |
+
if (this.emitters instanceof Array) {
|
10727 |
+
for (const emitterOptions of this.emitters) {
|
10728 |
+
this.addEmitter(emitterOptions);
|
10729 |
+
}
|
10730 |
+
} else {
|
10731 |
+
this.addEmitter(this.emitters);
|
10732 |
+
}
|
10733 |
+
}
|
10734 |
+
|
10735 |
+
play() {
|
10736 |
+
for (const emitter of this.array) {
|
10737 |
+
emitter.play();
|
10738 |
+
}
|
10739 |
+
}
|
10740 |
+
|
10741 |
+
pause() {
|
10742 |
+
for (const emitter of this.array) {
|
10743 |
+
emitter.pause();
|
10744 |
+
}
|
10745 |
+
}
|
10746 |
+
|
10747 |
+
stop() {
|
10748 |
+
this.array = [];
|
10749 |
+
}
|
10750 |
+
|
10751 |
+
update(delta) {
|
10752 |
+
for (const emitter of this.array) {
|
10753 |
+
emitter.update(delta);
|
10754 |
+
}
|
10755 |
+
}
|
10756 |
+
|
10757 |
+
handleClickMode(mode) {
|
10758 |
+
const container = this.container;
|
10759 |
+
const emitterOptions = this.emitters;
|
10760 |
+
const modeEmitters = this.interactivityEmitters;
|
10761 |
+
|
10762 |
+
if (mode === EmitterClickMode.emitter) {
|
10763 |
+
let emitterModeOptions;
|
10764 |
+
|
10765 |
+
if (modeEmitters instanceof Array) {
|
10766 |
+
if (modeEmitters.length > 0) {
|
10767 |
+
emitterModeOptions = Utils.itemFromArray(modeEmitters);
|
10768 |
+
}
|
10769 |
+
} else {
|
10770 |
+
emitterModeOptions = modeEmitters;
|
10771 |
+
}
|
10772 |
+
|
10773 |
+
const emittersOptions = emitterModeOptions !== null && emitterModeOptions !== void 0 ? emitterModeOptions : emitterOptions instanceof Array ? Utils.itemFromArray(emitterOptions) : emitterOptions;
|
10774 |
+
const ePosition = container.interactivity.mouse.clickPosition;
|
10775 |
+
this.addEmitter(Utils.deepExtend({}, emittersOptions), ePosition);
|
10776 |
+
}
|
10777 |
+
}
|
10778 |
+
|
10779 |
+
resize() {
|
10780 |
+
for (const emitter of this.array) {
|
10781 |
+
emitter.resize();
|
10782 |
+
}
|
10783 |
+
}
|
10784 |
+
|
10785 |
+
addEmitter(options, position) {
|
10786 |
+
const emitter = new EmitterInstance(this, this.container, options, position);
|
10787 |
+
this.array.push(emitter);
|
10788 |
+
return emitter;
|
10789 |
+
}
|
10790 |
+
|
10791 |
+
removeEmitter(emitter) {
|
10792 |
+
const index = this.array.indexOf(emitter);
|
10793 |
+
|
10794 |
+
if (index >= 0) {
|
10795 |
+
this.array.splice(index, 1);
|
10796 |
+
}
|
10797 |
+
}
|
10798 |
+
|
10799 |
+
}
|
10800 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/Emitters/EmittersPlugin.js
|
10801 |
+
|
10802 |
+
|
10803 |
+
|
10804 |
+
|
10805 |
+
|
10806 |
+
class EmittersPlugin {
|
10807 |
+
constructor() {
|
10808 |
+
this.id = "emitters";
|
10809 |
+
}
|
10810 |
+
|
10811 |
+
getPlugin(container) {
|
10812 |
+
return new Emitters(container);
|
10813 |
+
}
|
10814 |
+
|
10815 |
+
needsPlugin(options) {
|
10816 |
+
var _a, _b, _c;
|
10817 |
+
|
10818 |
+
if (options === undefined) {
|
10819 |
+
return false;
|
10820 |
+
}
|
10821 |
+
|
10822 |
+
const emitters = options.emitters;
|
10823 |
+
let loadEmitters = false;
|
10824 |
+
|
10825 |
+
if (emitters instanceof Array) {
|
10826 |
+
if (emitters.length) {
|
10827 |
+
loadEmitters = true;
|
10828 |
+
}
|
10829 |
+
} else if (emitters !== undefined) {
|
10830 |
+
loadEmitters = true;
|
10831 |
+
} else if (((_c = (_b = (_a = options.interactivity) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.onClick) === null || _c === void 0 ? void 0 : _c.mode) && Utils.isInArray(EmitterClickMode.emitter, options.interactivity.events.onClick.mode)) {
|
10832 |
+
loadEmitters = true;
|
10833 |
+
}
|
10834 |
+
|
10835 |
+
return loadEmitters;
|
10836 |
+
}
|
10837 |
+
|
10838 |
+
loadOptions(options, source) {
|
10839 |
+
var _a, _b;
|
10840 |
+
|
10841 |
+
if (!this.needsPlugin(options) && !this.needsPlugin(source)) {
|
10842 |
+
return;
|
10843 |
+
}
|
10844 |
+
|
10845 |
+
const optionsCast = options;
|
10846 |
+
|
10847 |
+
if (source === null || source === void 0 ? void 0 : source.emitters) {
|
10848 |
+
if ((source === null || source === void 0 ? void 0 : source.emitters) instanceof Array) {
|
10849 |
+
optionsCast.emitters = source === null || source === void 0 ? void 0 : source.emitters.map(s => {
|
10850 |
+
const tmp = new Emitter();
|
10851 |
+
tmp.load(s);
|
10852 |
+
return tmp;
|
10853 |
+
});
|
10854 |
+
} else {
|
10855 |
+
let emitterOptions = optionsCast.emitters;
|
10856 |
+
|
10857 |
+
if ((emitterOptions === null || emitterOptions === void 0 ? void 0 : emitterOptions.load) === undefined) {
|
10858 |
+
optionsCast.emitters = emitterOptions = new Emitter();
|
10859 |
+
}
|
10860 |
+
|
10861 |
+
emitterOptions.load(source === null || source === void 0 ? void 0 : source.emitters);
|
10862 |
+
}
|
10863 |
+
}
|
10864 |
+
|
10865 |
+
const interactivityEmitters = (_b = (_a = source === null || source === void 0 ? void 0 : source.interactivity) === null || _a === void 0 ? void 0 : _a.modes) === null || _b === void 0 ? void 0 : _b.emitters;
|
10866 |
+
|
10867 |
+
if (interactivityEmitters) {
|
10868 |
+
if (interactivityEmitters instanceof Array) {
|
10869 |
+
optionsCast.interactivity.modes.emitters = interactivityEmitters.map(s => {
|
10870 |
+
const tmp = new Emitter();
|
10871 |
+
tmp.load(s);
|
10872 |
+
return tmp;
|
10873 |
+
});
|
10874 |
+
} else {
|
10875 |
+
let emitterOptions = optionsCast.interactivity.modes.emitters;
|
10876 |
+
|
10877 |
+
if ((emitterOptions === null || emitterOptions === void 0 ? void 0 : emitterOptions.load) === undefined) {
|
10878 |
+
optionsCast.interactivity.modes.emitters = emitterOptions = new Emitter();
|
10879 |
+
}
|
10880 |
+
|
10881 |
+
emitterOptions.load(interactivityEmitters);
|
10882 |
+
}
|
10883 |
+
}
|
10884 |
+
}
|
10885 |
+
|
10886 |
+
}
|
10887 |
+
|
10888 |
+
const EmittersPlugin_plugin = new EmittersPlugin();
|
10889 |
+
|
10890 |
+
|
10891 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Enums/InlineArrangement.js
|
10892 |
+
var InlineArrangement;
|
10893 |
+
|
10894 |
+
(function (InlineArrangement) {
|
10895 |
+
InlineArrangement["equidistant"] = "equidistant";
|
10896 |
+
InlineArrangement["onePerPoint"] = "one-per-point";
|
10897 |
+
InlineArrangement["perPoint"] = "per-point";
|
10898 |
+
InlineArrangement["randomLength"] = "random-length";
|
10899 |
+
InlineArrangement["randomPoint"] = "random-point";
|
10900 |
+
})(InlineArrangement || (InlineArrangement = {}));
|
10901 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Enums/MoveType.js
|
10902 |
+
var MoveType;
|
10903 |
+
|
10904 |
+
(function (MoveType) {
|
10905 |
+
MoveType["path"] = "path";
|
10906 |
+
MoveType["radius"] = "radius";
|
10907 |
+
})(MoveType || (MoveType = {}));
|
10908 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Enums/Type.js
|
10909 |
+
var Type;
|
10910 |
+
|
10911 |
+
(function (Type) {
|
10912 |
+
Type["inline"] = "inline";
|
10913 |
+
Type["inside"] = "inside";
|
10914 |
+
Type["outside"] = "outside";
|
10915 |
+
Type["none"] = "none";
|
10916 |
+
})(Type || (Type = {}));
|
10917 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Enums/index.js
|
10918 |
+
|
10919 |
+
|
10920 |
+
|
10921 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/DrawStroke.js
|
10922 |
+
|
10923 |
+
|
10924 |
+
class DrawStroke {
|
10925 |
+
constructor() {
|
10926 |
+
this.color = new OptionsColor();
|
10927 |
+
this.width = 0.5;
|
10928 |
+
this.opacity = 1;
|
10929 |
+
}
|
10930 |
+
|
10931 |
+
load(data) {
|
10932 |
+
var _a;
|
10933 |
+
|
10934 |
+
if (data !== undefined) {
|
10935 |
+
this.color = OptionsColor.create(this.color, data.color);
|
10936 |
+
|
10937 |
+
if (typeof this.color.value === "string") {
|
10938 |
+
this.opacity = (_a = ColorUtils.stringToAlpha(this.color.value)) !== null && _a !== void 0 ? _a : this.opacity;
|
10939 |
+
}
|
10940 |
+
|
10941 |
+
if (data.opacity !== undefined) {
|
10942 |
+
this.opacity = data.opacity;
|
10943 |
+
}
|
10944 |
+
|
10945 |
+
if (data.width !== undefined) {
|
10946 |
+
this.width = data.width;
|
10947 |
+
}
|
10948 |
+
}
|
10949 |
+
}
|
10950 |
+
|
10951 |
+
}
|
10952 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/Draw.js
|
10953 |
+
|
10954 |
+
|
10955 |
+
class Draw {
|
10956 |
+
constructor() {
|
10957 |
+
this.enable = false;
|
10958 |
+
this.stroke = new DrawStroke();
|
10959 |
+
}
|
10960 |
+
|
10961 |
+
get lineWidth() {
|
10962 |
+
return this.stroke.width;
|
10963 |
+
}
|
10964 |
+
|
10965 |
+
set lineWidth(value) {
|
10966 |
+
this.stroke.width = value;
|
10967 |
+
}
|
10968 |
+
|
10969 |
+
get lineColor() {
|
10970 |
+
return this.stroke.color;
|
10971 |
+
}
|
10972 |
+
|
10973 |
+
set lineColor(value) {
|
10974 |
+
this.stroke.color = OptionsColor.create(this.stroke.color, value);
|
10975 |
+
}
|
10976 |
+
|
10977 |
+
load(data) {
|
10978 |
+
var _a;
|
10979 |
+
|
10980 |
+
if (data !== undefined) {
|
10981 |
+
if (data.enable !== undefined) {
|
10982 |
+
this.enable = data.enable;
|
10983 |
+
}
|
10984 |
+
|
10985 |
+
const stroke = (_a = data.stroke) !== null && _a !== void 0 ? _a : {
|
10986 |
+
color: data.lineColor,
|
10987 |
+
width: data.lineWidth
|
10988 |
+
};
|
10989 |
+
this.stroke.load(stroke);
|
10990 |
+
}
|
10991 |
+
}
|
10992 |
+
|
10993 |
+
}
|
10994 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/Move.js
|
10995 |
+
|
10996 |
+
class Move_Move {
|
10997 |
+
constructor() {
|
10998 |
+
this.radius = 10;
|
10999 |
+
this.type = MoveType.path;
|
11000 |
+
}
|
11001 |
+
|
11002 |
+
load(data) {
|
11003 |
+
if (data !== undefined) {
|
11004 |
+
if (data.radius !== undefined) {
|
11005 |
+
this.radius = data.radius;
|
11006 |
+
}
|
11007 |
+
|
11008 |
+
if (data.type !== undefined) {
|
11009 |
+
this.type = data.type;
|
11010 |
+
}
|
11011 |
+
}
|
11012 |
+
}
|
11013 |
+
|
11014 |
+
}
|
11015 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/Inline.js
|
11016 |
+
|
11017 |
+
class Inline {
|
11018 |
+
constructor() {
|
11019 |
+
this.arrangement = InlineArrangement.onePerPoint;
|
11020 |
+
}
|
11021 |
+
|
11022 |
+
load(data) {
|
11023 |
+
if (data !== undefined) {
|
11024 |
+
if (data.arrangement !== undefined) {
|
11025 |
+
this.arrangement = data.arrangement;
|
11026 |
+
}
|
11027 |
+
}
|
11028 |
+
}
|
11029 |
+
|
11030 |
+
}
|
11031 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/LocalSvg.js
|
11032 |
+
class LocalSvg {
|
11033 |
+
constructor() {
|
11034 |
+
this.path = [];
|
11035 |
+
this.size = {
|
11036 |
+
height: 0,
|
11037 |
+
width: 0
|
11038 |
+
};
|
11039 |
+
}
|
11040 |
+
|
11041 |
+
load(data) {
|
11042 |
+
if (data !== undefined) {
|
11043 |
+
if (data.path !== undefined) {
|
11044 |
+
this.path = data.path;
|
11045 |
+
}
|
11046 |
+
|
11047 |
+
if (data.size !== undefined) {
|
11048 |
+
if (data.size.width !== undefined) {
|
11049 |
+
this.size.width = data.size.width;
|
11050 |
+
}
|
11051 |
+
|
11052 |
+
if (data.size.height !== undefined) {
|
11053 |
+
this.size.height = data.size.height;
|
11054 |
+
}
|
11055 |
+
}
|
11056 |
+
}
|
11057 |
+
}
|
11058 |
+
|
11059 |
+
}
|
11060 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/Options/Classes/PolygonMask.js
|
11061 |
+
|
11062 |
+
|
11063 |
+
|
11064 |
+
|
11065 |
+
|
11066 |
+
|
11067 |
+
class PolygonMask {
|
11068 |
+
constructor() {
|
11069 |
+
this.draw = new Draw();
|
11070 |
+
this.enable = false;
|
11071 |
+
this.inline = new Inline();
|
11072 |
+
this.move = new Move_Move();
|
11073 |
+
this.scale = 1;
|
11074 |
+
this.type = Type.none;
|
11075 |
+
}
|
11076 |
+
|
11077 |
+
get inlineArrangement() {
|
11078 |
+
return this.inline.arrangement;
|
11079 |
+
}
|
11080 |
+
|
11081 |
+
set inlineArrangement(value) {
|
11082 |
+
this.inline.arrangement = value;
|
11083 |
+
}
|
11084 |
+
|
11085 |
+
load(data) {
|
11086 |
+
var _a;
|
11087 |
+
|
11088 |
+
if (data !== undefined) {
|
11089 |
+
this.draw.load(data.draw);
|
11090 |
+
const inline = (_a = data.inline) !== null && _a !== void 0 ? _a : {
|
11091 |
+
arrangement: data.inlineArrangement
|
11092 |
+
};
|
11093 |
+
|
11094 |
+
if (inline !== undefined) {
|
11095 |
+
this.inline.load(inline);
|
11096 |
+
}
|
11097 |
+
|
11098 |
+
this.move.load(data.move);
|
11099 |
+
|
11100 |
+
if (data.scale !== undefined) {
|
11101 |
+
this.scale = data.scale;
|
11102 |
+
}
|
11103 |
+
|
11104 |
+
if (data.type !== undefined) {
|
11105 |
+
this.type = data.type;
|
11106 |
+
}
|
11107 |
+
|
11108 |
+
if (data.enable !== undefined) {
|
11109 |
+
this.enable = data.enable;
|
11110 |
+
} else {
|
11111 |
+
this.enable = this.type !== Type.none;
|
11112 |
+
}
|
11113 |
+
|
11114 |
+
if (data.url !== undefined) {
|
11115 |
+
this.url = data.url;
|
11116 |
+
}
|
11117 |
+
|
11118 |
+
if (data.data !== undefined) {
|
11119 |
+
if (typeof data.data === "string") {
|
11120 |
+
this.data = data.data;
|
11121 |
+
} else {
|
11122 |
+
this.data = new LocalSvg();
|
11123 |
+
this.data.load(data.data);
|
11124 |
+
}
|
11125 |
+
}
|
11126 |
+
|
11127 |
+
if (data.position !== undefined) {
|
11128 |
+
this.position = Utils.deepExtend({}, data.position);
|
11129 |
+
}
|
11130 |
+
}
|
11131 |
+
}
|
11132 |
+
|
11133 |
+
}
|
11134 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/PolygonMaskInstance.js
|
11135 |
+
var PolygonMaskInstance_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {
|
11136 |
+
function adopt(value) {
|
11137 |
+
return value instanceof P ? value : new P(function (resolve) {
|
11138 |
+
resolve(value);
|
11139 |
+
});
|
11140 |
+
}
|
11141 |
+
|
11142 |
+
return new (P || (P = Promise))(function (resolve, reject) {
|
11143 |
+
function fulfilled(value) {
|
11144 |
+
try {
|
11145 |
+
step(generator.next(value));
|
11146 |
+
} catch (e) {
|
11147 |
+
reject(e);
|
11148 |
+
}
|
11149 |
+
}
|
11150 |
+
|
11151 |
+
function rejected(value) {
|
11152 |
+
try {
|
11153 |
+
step(generator["throw"](value));
|
11154 |
+
} catch (e) {
|
11155 |
+
reject(e);
|
11156 |
+
}
|
11157 |
+
}
|
11158 |
+
|
11159 |
+
function step(result) {
|
11160 |
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
11161 |
+
}
|
11162 |
+
|
11163 |
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
11164 |
+
});
|
11165 |
+
};
|
11166 |
+
|
11167 |
+
|
11168 |
+
|
11169 |
+
|
11170 |
+
|
11171 |
+
function polygonBounce(particle) {
|
11172 |
+
particle.velocity.horizontal = particle.velocity.vertical / 2 - particle.velocity.horizontal;
|
11173 |
+
particle.velocity.vertical = particle.velocity.horizontal / 2 - particle.velocity.vertical;
|
11174 |
+
}
|
11175 |
+
|
11176 |
+
function drawPolygonMask(context, rawData, stroke) {
|
11177 |
+
const color = ColorUtils.colorToRgb(stroke.color);
|
11178 |
+
|
11179 |
+
if (!color) {
|
11180 |
+
return;
|
11181 |
+
}
|
11182 |
+
|
11183 |
+
context.beginPath();
|
11184 |
+
context.moveTo(rawData[0].x, rawData[0].y);
|
11185 |
+
|
11186 |
+
for (const item of rawData) {
|
11187 |
+
context.lineTo(item.x, item.y);
|
11188 |
+
}
|
11189 |
+
|
11190 |
+
context.closePath();
|
11191 |
+
context.strokeStyle = ColorUtils.getStyleFromRgb(color);
|
11192 |
+
context.lineWidth = stroke.width;
|
11193 |
+
context.stroke();
|
11194 |
+
}
|
11195 |
+
|
11196 |
+
function drawPolygonMaskPath(context, path, stroke, position) {
|
11197 |
+
context.translate(position.x, position.y);
|
11198 |
+
const color = ColorUtils.colorToRgb(stroke.color);
|
11199 |
+
|
11200 |
+
if (!color) {
|
11201 |
+
return;
|
11202 |
+
}
|
11203 |
+
|
11204 |
+
context.strokeStyle = ColorUtils.getStyleFromRgb(color, stroke.opacity);
|
11205 |
+
context.lineWidth = stroke.width;
|
11206 |
+
context.stroke(path);
|
11207 |
+
}
|
11208 |
+
|
11209 |
+
function parsePaths(paths, scale, offset) {
|
11210 |
+
const res = [];
|
11211 |
+
|
11212 |
+
for (const path of paths) {
|
11213 |
+
const segments = path.element.pathSegList;
|
11214 |
+
const len = segments.numberOfItems;
|
11215 |
+
const p = {
|
11216 |
+
x: 0,
|
11217 |
+
y: 0
|
11218 |
+
};
|
11219 |
+
|
11220 |
+
for (let i = 0; i < len; i++) {
|
11221 |
+
const segment = segments.getItem(i);
|
11222 |
+
const svgPathSeg = window.SVGPathSeg;
|
11223 |
+
|
11224 |
+
switch (segment.pathSegType) {
|
11225 |
+
case svgPathSeg.PATHSEG_MOVETO_ABS:
|
11226 |
+
case svgPathSeg.PATHSEG_LINETO_ABS:
|
11227 |
+
case svgPathSeg.PATHSEG_CURVETO_CUBIC_ABS:
|
11228 |
+
case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:
|
11229 |
+
case svgPathSeg.PATHSEG_ARC_ABS:
|
11230 |
+
case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:
|
11231 |
+
case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:
|
11232 |
+
{
|
11233 |
+
const absSeg = segment;
|
11234 |
+
p.x = absSeg.x;
|
11235 |
+
p.y = absSeg.y;
|
11236 |
+
break;
|
11237 |
+
}
|
11238 |
+
|
11239 |
+
case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:
|
11240 |
+
p.x = segment.x;
|
11241 |
+
break;
|
11242 |
+
|
11243 |
+
case svgPathSeg.PATHSEG_LINETO_VERTICAL_ABS:
|
11244 |
+
p.y = segment.y;
|
11245 |
+
break;
|
11246 |
+
|
11247 |
+
case svgPathSeg.PATHSEG_LINETO_REL:
|
11248 |
+
case svgPathSeg.PATHSEG_MOVETO_REL:
|
11249 |
+
case svgPathSeg.PATHSEG_CURVETO_CUBIC_REL:
|
11250 |
+
case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:
|
11251 |
+
case svgPathSeg.PATHSEG_ARC_REL:
|
11252 |
+
case svgPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:
|
11253 |
+
case svgPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:
|
11254 |
+
{
|
11255 |
+
const relSeg = segment;
|
11256 |
+
p.x += relSeg.x;
|
11257 |
+
p.y += relSeg.y;
|
11258 |
+
break;
|
11259 |
+
}
|
11260 |
+
|
11261 |
+
case svgPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:
|
11262 |
+
p.x += segment.x;
|
11263 |
+
break;
|
11264 |
+
|
11265 |
+
case svgPathSeg.PATHSEG_LINETO_VERTICAL_REL:
|
11266 |
+
p.y += segment.y;
|
11267 |
+
break;
|
11268 |
+
|
11269 |
+
case svgPathSeg.PATHSEG_UNKNOWN:
|
11270 |
+
case svgPathSeg.PATHSEG_CLOSEPATH:
|
11271 |
+
continue;
|
11272 |
+
}
|
11273 |
+
|
11274 |
+
res.push({
|
11275 |
+
x: p.x * scale + offset.x,
|
11276 |
+
y: p.y * scale + offset.y
|
11277 |
+
});
|
11278 |
+
}
|
11279 |
+
}
|
11280 |
+
|
11281 |
+
return res;
|
11282 |
+
}
|
11283 |
+
|
11284 |
+
class PolygonMaskInstance {
|
11285 |
+
constructor(container) {
|
11286 |
+
this.container = container;
|
11287 |
+
this.dimension = {
|
11288 |
+
height: 0,
|
11289 |
+
width: 0
|
11290 |
+
};
|
11291 |
+
this.path2DSupported = !!window.Path2D;
|
11292 |
+
this.options = new PolygonMask();
|
11293 |
+
this.polygonMaskMoveRadius = this.options.move.radius * container.retina.pixelRatio;
|
11294 |
+
}
|
11295 |
+
|
11296 |
+
initAsync(options) {
|
11297 |
+
return PolygonMaskInstance_awaiter(this, void 0, void 0, function* () {
|
11298 |
+
this.options.load(options === null || options === void 0 ? void 0 : options.polygon);
|
11299 |
+
const polygonMaskOptions = this.options;
|
11300 |
+
this.polygonMaskMoveRadius = polygonMaskOptions.move.radius * this.container.retina.pixelRatio;
|
11301 |
+
|
11302 |
+
if (polygonMaskOptions.enable) {
|
11303 |
+
yield this.initRawData();
|
11304 |
+
}
|
11305 |
+
});
|
11306 |
+
}
|
11307 |
+
|
11308 |
+
resize() {
|
11309 |
+
const container = this.container;
|
11310 |
+
const options = this.options;
|
11311 |
+
|
11312 |
+
if (!(options.enable && options.type !== Type.none)) {
|
11313 |
+
return;
|
11314 |
+
}
|
11315 |
+
|
11316 |
+
if (this.redrawTimeout) {
|
11317 |
+
clearTimeout(this.redrawTimeout);
|
11318 |
+
}
|
11319 |
+
|
11320 |
+
this.redrawTimeout = window.setTimeout(() => PolygonMaskInstance_awaiter(this, void 0, void 0, function* () {
|
11321 |
+
yield this.initRawData(true);
|
11322 |
+
container.particles.redraw();
|
11323 |
+
}), 250);
|
11324 |
+
}
|
11325 |
+
|
11326 |
+
stop() {
|
11327 |
+
delete this.raw;
|
11328 |
+
delete this.paths;
|
11329 |
+
}
|
11330 |
+
|
11331 |
+
particlesInitialization() {
|
11332 |
+
const options = this.options;
|
11333 |
+
|
11334 |
+
if (options.enable && options.type === Type.inline && (options.inline.arrangement === InlineArrangement.onePerPoint || options.inline.arrangement === InlineArrangement.perPoint)) {
|
11335 |
+
this.drawPoints();
|
11336 |
+
return true;
|
11337 |
+
}
|
11338 |
+
|
11339 |
+
return false;
|
11340 |
+
}
|
11341 |
+
|
11342 |
+
particlePosition(position) {
|
11343 |
+
var _a, _b;
|
11344 |
+
|
11345 |
+
const options = this.options;
|
11346 |
+
|
11347 |
+
if (!(options.enable && ((_b = (_a = this.raw) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0)) {
|
11348 |
+
return;
|
11349 |
+
}
|
11350 |
+
|
11351 |
+
return Utils.deepExtend({}, position ? position : this.randomPoint());
|
11352 |
+
}
|
11353 |
+
|
11354 |
+
particleBounce(particle) {
|
11355 |
+
const options = this.options;
|
11356 |
+
|
11357 |
+
if (options.enable && options.type !== Type.none && options.type !== Type.inline) {
|
11358 |
+
if (!this.checkInsidePolygon(particle.getPosition())) {
|
11359 |
+
polygonBounce(particle);
|
11360 |
+
return true;
|
11361 |
+
}
|
11362 |
+
} else if (options.enable && options.type === Type.inline && particle.initialPosition) {
|
11363 |
+
const dist = NumberUtils.getDistance(particle.initialPosition, particle.getPosition());
|
11364 |
+
|
11365 |
+
if (dist > this.polygonMaskMoveRadius) {
|
11366 |
+
polygonBounce(particle);
|
11367 |
+
return true;
|
11368 |
+
}
|
11369 |
+
}
|
11370 |
+
|
11371 |
+
return false;
|
11372 |
+
}
|
11373 |
+
|
11374 |
+
clickPositionValid(position) {
|
11375 |
+
const options = this.options;
|
11376 |
+
return options.enable && options.type !== Type.none && options.type !== Type.inline && this.checkInsidePolygon(position);
|
11377 |
+
}
|
11378 |
+
|
11379 |
+
draw(context) {
|
11380 |
+
var _a;
|
11381 |
+
|
11382 |
+
if (!((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {
|
11383 |
+
return;
|
11384 |
+
}
|
11385 |
+
|
11386 |
+
const options = this.options;
|
11387 |
+
const polygonDraw = options.draw;
|
11388 |
+
|
11389 |
+
if (!(options.enable && polygonDraw.enable)) {
|
11390 |
+
return;
|
11391 |
+
}
|
11392 |
+
|
11393 |
+
const rawData = this.raw;
|
11394 |
+
|
11395 |
+
for (const path of this.paths) {
|
11396 |
+
const path2d = path.path2d;
|
11397 |
+
const path2dSupported = this.path2DSupported;
|
11398 |
+
|
11399 |
+
if (!context) {
|
11400 |
+
continue;
|
11401 |
+
}
|
11402 |
+
|
11403 |
+
if (path2dSupported && path2d && this.offset) {
|
11404 |
+
drawPolygonMaskPath(context, path2d, polygonDraw.stroke, this.offset);
|
11405 |
+
} else if (rawData) {
|
11406 |
+
drawPolygonMask(context, rawData, polygonDraw.stroke);
|
11407 |
+
}
|
11408 |
+
}
|
11409 |
+
}
|
11410 |
+
|
11411 |
+
checkInsidePolygon(position) {
|
11412 |
+
var _a, _b;
|
11413 |
+
|
11414 |
+
const container = this.container;
|
11415 |
+
const options = this.options;
|
11416 |
+
|
11417 |
+
if (!options.enable || options.type === Type.none || options.type === Type.inline) {
|
11418 |
+
return true;
|
11419 |
+
}
|
11420 |
+
|
11421 |
+
if (!this.raw) {
|
11422 |
+
throw new Error(Constants.noPolygonFound);
|
11423 |
+
}
|
11424 |
+
|
11425 |
+
const canvasSize = container.canvas.size;
|
11426 |
+
const x = (_a = position === null || position === void 0 ? void 0 : position.x) !== null && _a !== void 0 ? _a : Math.random() * canvasSize.width;
|
11427 |
+
const y = (_b = position === null || position === void 0 ? void 0 : position.y) !== null && _b !== void 0 ? _b : Math.random() * canvasSize.height;
|
11428 |
+
let inside = false;
|
11429 |
+
|
11430 |
+
for (let i = 0, j = this.raw.length - 1; i < this.raw.length; j = i++) {
|
11431 |
+
const pi = this.raw[i];
|
11432 |
+
const pj = this.raw[j];
|
11433 |
+
const intersect = pi.y > y !== pj.y > y && x < (pj.x - pi.x) * (y - pi.y) / (pj.y - pi.y) + pi.x;
|
11434 |
+
|
11435 |
+
if (intersect) {
|
11436 |
+
inside = !inside;
|
11437 |
+
}
|
11438 |
+
}
|
11439 |
+
|
11440 |
+
return options.type === Type.inside ? inside : options.type === Type.outside ? !inside : false;
|
11441 |
+
}
|
11442 |
+
|
11443 |
+
parseSvgPath(xml, force) {
|
11444 |
+
var _a, _b, _c;
|
11445 |
+
|
11446 |
+
const forceDownload = force !== null && force !== void 0 ? force : false;
|
11447 |
+
|
11448 |
+
if (this.paths !== undefined && !forceDownload) {
|
11449 |
+
return this.raw;
|
11450 |
+
}
|
11451 |
+
|
11452 |
+
const container = this.container;
|
11453 |
+
const options = this.options;
|
11454 |
+
const parser = new DOMParser();
|
11455 |
+
const doc = parser.parseFromString(xml, "image/svg+xml");
|
11456 |
+
const svg = doc.getElementsByTagName("svg")[0];
|
11457 |
+
let svgPaths = svg.getElementsByTagName("path");
|
11458 |
+
|
11459 |
+
if (!svgPaths.length) {
|
11460 |
+
svgPaths = doc.getElementsByTagName("path");
|
11461 |
+
}
|
11462 |
+
|
11463 |
+
this.paths = [];
|
11464 |
+
|
11465 |
+
for (let i = 0; i < svgPaths.length; i++) {
|
11466 |
+
const path = svgPaths.item(i);
|
11467 |
+
|
11468 |
+
if (path) {
|
11469 |
+
this.paths.push({
|
11470 |
+
element: path,
|
11471 |
+
length: path.getTotalLength()
|
11472 |
+
});
|
11473 |
+
}
|
11474 |
+
}
|
11475 |
+
|
11476 |
+
const pxRatio = container.retina.pixelRatio;
|
11477 |
+
const scale = options.scale / pxRatio;
|
11478 |
+
this.dimension.width = parseFloat((_a = svg.getAttribute("width")) !== null && _a !== void 0 ? _a : "0") * scale;
|
11479 |
+
this.dimension.height = parseFloat((_b = svg.getAttribute("height")) !== null && _b !== void 0 ? _b : "0") * scale;
|
11480 |
+
const position = (_c = options.position) !== null && _c !== void 0 ? _c : {
|
11481 |
+
x: 50,
|
11482 |
+
y: 50
|
11483 |
+
};
|
11484 |
+
this.offset = {
|
11485 |
+
x: container.canvas.size.width * position.x / (100 * pxRatio) - this.dimension.width / 2,
|
11486 |
+
y: container.canvas.size.height * position.y / (100 * pxRatio) - this.dimension.height / 2
|
11487 |
+
};
|
11488 |
+
return parsePaths(this.paths, scale, this.offset);
|
11489 |
+
}
|
11490 |
+
|
11491 |
+
downloadSvgPath(svgUrl, force) {
|
11492 |
+
return PolygonMaskInstance_awaiter(this, void 0, void 0, function* () {
|
11493 |
+
const options = this.options;
|
11494 |
+
const url = svgUrl || options.url;
|
11495 |
+
const forceDownload = force !== null && force !== void 0 ? force : false;
|
11496 |
+
|
11497 |
+
if (!url || this.paths !== undefined && !forceDownload) {
|
11498 |
+
return this.raw;
|
11499 |
+
}
|
11500 |
+
|
11501 |
+
const req = yield fetch(url);
|
11502 |
+
|
11503 |
+
if (!req.ok) {
|
11504 |
+
throw new Error("tsParticles Error - Error occurred during polygon mask download");
|
11505 |
+
}
|
11506 |
+
|
11507 |
+
return this.parseSvgPath(yield req.text(), force);
|
11508 |
+
});
|
11509 |
+
}
|
11510 |
+
|
11511 |
+
drawPoints() {
|
11512 |
+
if (!this.raw) {
|
11513 |
+
return;
|
11514 |
+
}
|
11515 |
+
|
11516 |
+
for (const item of this.raw) {
|
11517 |
+
this.container.particles.addParticle({
|
11518 |
+
x: item.x,
|
11519 |
+
y: item.y
|
11520 |
+
});
|
11521 |
+
}
|
11522 |
+
}
|
11523 |
+
|
11524 |
+
randomPoint() {
|
11525 |
+
const container = this.container;
|
11526 |
+
const options = this.options;
|
11527 |
+
let position;
|
11528 |
+
|
11529 |
+
if (options.type === Type.inline) {
|
11530 |
+
switch (options.inline.arrangement) {
|
11531 |
+
case InlineArrangement.randomPoint:
|
11532 |
+
position = this.getRandomPoint();
|
11533 |
+
break;
|
11534 |
+
|
11535 |
+
case InlineArrangement.randomLength:
|
11536 |
+
position = this.getRandomPointByLength();
|
11537 |
+
break;
|
11538 |
+
|
11539 |
+
case InlineArrangement.equidistant:
|
11540 |
+
position = this.getEquidistantPointByIndex(container.particles.count);
|
11541 |
+
break;
|
11542 |
+
|
11543 |
+
case InlineArrangement.onePerPoint:
|
11544 |
+
case InlineArrangement.perPoint:
|
11545 |
+
default:
|
11546 |
+
position = this.getPointByIndex(container.particles.count);
|
11547 |
+
}
|
11548 |
+
} else {
|
11549 |
+
position = {
|
11550 |
+
x: Math.random() * container.canvas.size.width,
|
11551 |
+
y: Math.random() * container.canvas.size.height
|
11552 |
+
};
|
11553 |
+
}
|
11554 |
+
|
11555 |
+
if (this.checkInsidePolygon(position)) {
|
11556 |
+
return position;
|
11557 |
+
} else {
|
11558 |
+
return this.randomPoint();
|
11559 |
+
}
|
11560 |
+
}
|
11561 |
+
|
11562 |
+
getRandomPoint() {
|
11563 |
+
if (!this.raw || !this.raw.length) {
|
11564 |
+
throw new Error(Constants.noPolygonDataLoaded);
|
11565 |
+
}
|
11566 |
+
|
11567 |
+
const coords = Utils.itemFromArray(this.raw);
|
11568 |
+
return {
|
11569 |
+
x: coords.x,
|
11570 |
+
y: coords.y
|
11571 |
+
};
|
11572 |
+
}
|
11573 |
+
|
11574 |
+
getRandomPointByLength() {
|
11575 |
+
var _a, _b, _c;
|
11576 |
+
|
11577 |
+
const options = this.options;
|
11578 |
+
|
11579 |
+
if (!this.raw || !this.raw.length || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {
|
11580 |
+
throw new Error(Constants.noPolygonDataLoaded);
|
11581 |
+
}
|
11582 |
+
|
11583 |
+
const path = Utils.itemFromArray(this.paths);
|
11584 |
+
const distance = Math.floor(Math.random() * path.length) + 1;
|
11585 |
+
const point = path.element.getPointAtLength(distance);
|
11586 |
+
return {
|
11587 |
+
x: point.x * options.scale + (((_b = this.offset) === null || _b === void 0 ? void 0 : _b.x) || 0),
|
11588 |
+
y: point.y * options.scale + (((_c = this.offset) === null || _c === void 0 ? void 0 : _c.y) || 0)
|
11589 |
+
};
|
11590 |
+
}
|
11591 |
+
|
11592 |
+
getEquidistantPointByIndex(index) {
|
11593 |
+
var _a, _b, _c, _d, _e, _f, _g;
|
11594 |
+
|
11595 |
+
const options = this.container.actualOptions;
|
11596 |
+
const polygonMaskOptions = this.options;
|
11597 |
+
if (!this.raw || !this.raw.length || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) throw new Error(Constants.noPolygonDataLoaded);
|
11598 |
+
let offset = 0;
|
11599 |
+
let point;
|
11600 |
+
const totalLength = this.paths.reduce((tot, path) => tot + path.length, 0);
|
11601 |
+
const distance = totalLength / options.particles.number.value;
|
11602 |
+
|
11603 |
+
for (const path of this.paths) {
|
11604 |
+
const pathDistance = distance * index - offset;
|
11605 |
+
|
11606 |
+
if (pathDistance <= path.length) {
|
11607 |
+
point = path.element.getPointAtLength(pathDistance);
|
11608 |
+
break;
|
11609 |
+
} else {
|
11610 |
+
offset += path.length;
|
11611 |
+
}
|
11612 |
+
}
|
11613 |
+
|
11614 |
+
return {
|
11615 |
+
x: ((_b = point === null || point === void 0 ? void 0 : point.x) !== null && _b !== void 0 ? _b : 0) * polygonMaskOptions.scale + ((_d = (_c = this.offset) === null || _c === void 0 ? void 0 : _c.x) !== null && _d !== void 0 ? _d : 0),
|
11616 |
+
y: ((_e = point === null || point === void 0 ? void 0 : point.y) !== null && _e !== void 0 ? _e : 0) * polygonMaskOptions.scale + ((_g = (_f = this.offset) === null || _f === void 0 ? void 0 : _f.y) !== null && _g !== void 0 ? _g : 0)
|
11617 |
+
};
|
11618 |
+
}
|
11619 |
+
|
11620 |
+
getPointByIndex(index) {
|
11621 |
+
if (!this.raw || !this.raw.length) {
|
11622 |
+
throw new Error(Constants.noPolygonDataLoaded);
|
11623 |
+
}
|
11624 |
+
|
11625 |
+
const coords = this.raw[index % this.raw.length];
|
11626 |
+
return {
|
11627 |
+
x: coords.x,
|
11628 |
+
y: coords.y
|
11629 |
+
};
|
11630 |
+
}
|
11631 |
+
|
11632 |
+
createPath2D() {
|
11633 |
+
var _a, _b;
|
11634 |
+
|
11635 |
+
const options = this.options;
|
11636 |
+
|
11637 |
+
if (!this.path2DSupported || !((_a = this.paths) === null || _a === void 0 ? void 0 : _a.length)) {
|
11638 |
+
return;
|
11639 |
+
}
|
11640 |
+
|
11641 |
+
for (const path of this.paths) {
|
11642 |
+
const pathData = (_b = path.element) === null || _b === void 0 ? void 0 : _b.getAttribute("d");
|
11643 |
+
|
11644 |
+
if (pathData) {
|
11645 |
+
const path2d = new Path2D(pathData);
|
11646 |
+
const matrix = document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGMatrix();
|
11647 |
+
const finalPath = new Path2D();
|
11648 |
+
const transform = matrix.scale(options.scale);
|
11649 |
+
|
11650 |
+
if (finalPath.addPath) {
|
11651 |
+
finalPath.addPath(path2d, transform);
|
11652 |
+
path.path2d = finalPath;
|
11653 |
+
} else {
|
11654 |
+
delete path.path2d;
|
11655 |
+
}
|
11656 |
+
} else {
|
11657 |
+
delete path.path2d;
|
11658 |
+
}
|
11659 |
+
|
11660 |
+
if (path.path2d || !this.raw) {
|
11661 |
+
continue;
|
11662 |
+
}
|
11663 |
+
|
11664 |
+
path.path2d = new Path2D();
|
11665 |
+
path.path2d.moveTo(this.raw[0].x, this.raw[0].y);
|
11666 |
+
this.raw.forEach((pos, i) => {
|
11667 |
+
var _a;
|
11668 |
+
|
11669 |
+
if (i > 0) {
|
11670 |
+
(_a = path.path2d) === null || _a === void 0 ? void 0 : _a.lineTo(pos.x, pos.y);
|
11671 |
+
}
|
11672 |
+
});
|
11673 |
+
path.path2d.closePath();
|
11674 |
+
}
|
11675 |
+
}
|
11676 |
+
|
11677 |
+
initRawData(force) {
|
11678 |
+
return PolygonMaskInstance_awaiter(this, void 0, void 0, function* () {
|
11679 |
+
const options = this.options;
|
11680 |
+
|
11681 |
+
if (options.url) {
|
11682 |
+
this.raw = yield this.downloadSvgPath(options.url, force);
|
11683 |
+
} else if (options.data) {
|
11684 |
+
const data = options.data;
|
11685 |
+
let svg;
|
11686 |
+
|
11687 |
+
if (typeof data !== "string") {
|
11688 |
+
const path = data.path instanceof Array ? data.path.map(t => `<path d="${t}" />`).join("") : `<path d="${data.path}" />`;
|
11689 |
+
const namespaces = 'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"';
|
11690 |
+
svg = `<svg ${namespaces} width="${data.size.width}" height="${data.size.height}">${path}</svg>`;
|
11691 |
+
} else {
|
11692 |
+
svg = data;
|
11693 |
+
}
|
11694 |
+
|
11695 |
+
this.raw = this.parseSvgPath(svg, force);
|
11696 |
+
}
|
11697 |
+
|
11698 |
+
this.createPath2D();
|
11699 |
+
});
|
11700 |
+
}
|
11701 |
+
|
11702 |
+
}
|
11703 |
+
;// CONCATENATED MODULE: ./dist/browser/Plugins/PolygonMask/PolygonMaskPlugin.js
|
11704 |
+
|
11705 |
+
|
11706 |
+
|
11707 |
+
|
11708 |
+
class PolygonMaskPlugin {
|
11709 |
+
constructor() {
|
11710 |
+
this.id = "polygonMask";
|
11711 |
+
}
|
11712 |
+
|
11713 |
+
getPlugin(container) {
|
11714 |
+
return new PolygonMaskInstance(container);
|
11715 |
+
}
|
11716 |
+
|
11717 |
+
needsPlugin(options) {
|
11718 |
+
var _a, _b, _c;
|
11719 |
+
|
11720 |
+
return (_b = (_a = options === null || options === void 0 ? void 0 : options.polygon) === null || _a === void 0 ? void 0 : _a.enable) !== null && _b !== void 0 ? _b : ((_c = options === null || options === void 0 ? void 0 : options.polygon) === null || _c === void 0 ? void 0 : _c.type) !== undefined && options.polygon.type !== Type.none;
|
11721 |
+
}
|
11722 |
+
|
11723 |
+
loadOptions(options, source) {
|
11724 |
+
if (!this.needsPlugin(source)) {
|
11725 |
+
return;
|
11726 |
+
}
|
11727 |
+
|
11728 |
+
const optionsCast = options;
|
11729 |
+
let polygonOptions = optionsCast.polygon;
|
11730 |
+
|
11731 |
+
if ((polygonOptions === null || polygonOptions === void 0 ? void 0 : polygonOptions.load) === undefined) {
|
11732 |
+
optionsCast.polygon = polygonOptions = new PolygonMask();
|
11733 |
+
}
|
11734 |
+
|
11735 |
+
polygonOptions.load(source === null || source === void 0 ? void 0 : source.polygon);
|
11736 |
+
}
|
11737 |
+
|
11738 |
+
}
|
11739 |
+
|
11740 |
+
const PolygonMaskPlugin_plugin = new PolygonMaskPlugin();
|
11741 |
+
|
11742 |
+
|
11743 |
+
;// CONCATENATED MODULE: ./dist/browser/main.js
|
11744 |
+
|
11745 |
+
|
11746 |
+
|
11747 |
+
|
11748 |
+
class Main extends MainSlim {
|
11749 |
+
constructor() {
|
11750 |
+
super();
|
11751 |
+
this.addPlugin(AbsorbersPlugin_plugin);
|
11752 |
+
this.addPlugin(EmittersPlugin_plugin);
|
11753 |
+
this.addPlugin(PolygonMaskPlugin_plugin);
|
11754 |
+
}
|
11755 |
+
|
11756 |
+
}
|
11757 |
+
;// CONCATENATED MODULE: ./dist/browser/index.js
|
11758 |
+
|
11759 |
+
|
11760 |
+
|
11761 |
+
const tsParticles = new Main();
|
11762 |
+
tsParticles.init();
|
11763 |
+
const {
|
11764 |
+
particlesJS,
|
11765 |
+
pJSDom
|
11766 |
+
} = initPjs(tsParticles);
|
11767 |
+
|
11768 |
+
|
11769 |
+
|
11770 |
+
|
11771 |
+
|
11772 |
+
|
11773 |
+
|
11774 |
+
|
11775 |
+
/******/ return __webpack_exports__;
|
11776 |
+
/******/ })()
|
11777 |
+
;
|
11778 |
+
});
|
assets/js/tsparticles.min.js
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*!
|
2 |
+
* Author : Matteo Bruni - https://www.matteobruni.it
|
3 |
+
* MIT license: https://opensource.org/licenses/MIT
|
4 |
+
* Demo / Generator : https://particles.js.org/
|
5 |
+
* GitHub : https://www.github.com/matteobruni/tsparticles
|
6 |
+
* How to use? : Check the GitHub README
|
7 |
+
* v1.22.1
|
8 |
+
*/
|
9 |
+
!function(t,i){if("object"==typeof exports&&"object"==typeof module)module.exports=i();else if("function"==typeof define&&define.amd)define([],i);else{var e=i();for(var o in e)("object"==typeof exports?exports:t)[o]=e[o]}}(this,(function(){return(()=>{"use strict";var t={d:(i,e)=>{for(var o in e)t.o(e,o)&&!t.o(i,o)&&Object.defineProperty(i,o,{enumerable:!0,get:e[o]})},o:(t,i)=>Object.prototype.hasOwnProperty.call(t,i),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},i={};t.r(i),t.d(i,{AbsorberClickMode:()=>ee,AnimationStatus:()=>p,CanvasUtils:()=>T,ClickMode:()=>r,CollisionMode:()=>d,ColorUtils:()=>R,Constants:()=>M,Container:()=>Ji,DestroyType:()=>y,DivMode:()=>l,DivType:()=>b,EmitterClickMode:()=>ge,HoverMode:()=>c,InlineArrangement:()=>xe,InteractivityDetect:()=>w,Main:()=>Fe,MoveDirection:()=>s,MoveType:()=>ke,OutMode:()=>h,ProcessBubbleType:()=>m,RotateDirection:()=>n,ShapeType:()=>f,SizeMode:()=>u,StartValueType:()=>g,ThemeMode:()=>v,Type:()=>ze,Utils:()=>P,pJSDom:()=>qe,particlesJS:()=>Le,tsParticles:()=>He});class e{getSidesCount(){return 4}draw(t,i,e){t.rect(-e,-e,2*e,2*e)}}var o,s,n;!function(t){t.bottom="bottom",t.left="left",t.right="right",t.top="top"}(o||(o={})),function(t){t.bottom="bottom",t.bottomLeft="bottom-left",t.bottomRight="bottom-right",t.left="left",t.none="none",t.right="right",t.top="top",t.topLeft="top-left",t.topRight="top-right"}(s||(s={})),function(t){t.clockwise="clockwise",t.counterClockwise="counter-clockwise",t.random="random"}(n||(n={}));class a{static clamp(t,i,e){return Math.min(Math.max(t,i),e)}static mix(t,i,e,o){return Math.floor((t*e+i*o)/(e+o))}static randomInRange(t){const i=a.getRangeMax(t);let e=a.getRangeMin(t);return i===e&&(e=0),Math.random()*(i-e)+e}static getRangeValue(t){return"number"==typeof t?t:a.randomInRange(t)}static getRangeMin(t){return"number"==typeof t?t:t.min}static getRangeMax(t){return"number"==typeof t?t:t.max}static setRangeValue(t,i){if(t===i||void 0===i&&"number"==typeof t)return t;const e=a.getRangeMin(t),o=a.getRangeMax(t);return void 0!==i?{min:Math.min(e,i),max:Math.max(o,i)}:a.setRangeValue(e,o)}static getValue(t){const i=t.random,{enable:e,minimumValue:o}="boolean"==typeof i?{enable:i,minimumValue:0}:i;return e?a.randomInRange({min:o,max:t.value}):t.value}static getDistances(t,i){const e=t.x-i.x,o=t.y-i.y;return{dx:e,dy:o,distance:Math.sqrt(e*e+o*o)}}static getDistance(t,i){return a.getDistances(t,i).distance}static getParticleBaseVelocity(t){let i;switch(t.direction){case s.top:i={x:0,y:-1};break;case s.topRight:i={x:.5,y:-.5};break;case s.right:i={x:1,y:-0};break;case s.bottomRight:i={x:.5,y:.5};break;case s.bottom:i={x:0,y:1};break;case s.bottomLeft:i={x:-.5,y:1};break;case s.left:i={x:-1,y:0};break;case s.topLeft:i={x:-.5,y:-.5};break;default:i={x:0,y:0}}return i}static rotateVelocity(t,i){return{horizontal:t.horizontal*Math.cos(i)-t.vertical*Math.sin(i),vertical:t.horizontal*Math.sin(i)+t.vertical*Math.cos(i)}}static collisionVelocity(t,i,e,o){return{horizontal:t.horizontal*(e-o)/(e+o)+2*i.horizontal*o/(e+o),vertical:t.vertical}}}var r,l,c,d,h,u,v,p,y,m,f,g,b,w,x=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};function k(t,i,e,o,s,n){const a={bounced:!1};return i.min>=o.min&&i.min<=o.max&&i.max>=o.min&&i.max<=o.max&&(t.max>=e.min&&t.max<=(e.max+e.min)/2&&s>0||t.min<=e.max&&t.min>(e.max+e.min)/2&&s<0)&&(a.velocity=s*-n,a.bounced=!0),a}function z(t,i){if(i instanceof Array){for(const e of i)if(t.matches(e))return!0;return!1}return t.matches(i)}class P{static isSsr(){return"undefined"==typeof window||!window}static get animate(){return P.isSsr()?t=>setTimeout(t):t=>(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.setTimeout)(t)}static get cancelAnimation(){return P.isSsr()?t=>clearTimeout(t):t=>(window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||window.clearTimeout)(t)}static isInArray(t,i){return t===i||i instanceof Array&&i.indexOf(t)>-1}static loadFont(t){return x(this,void 0,void 0,(function*(){try{yield document.fonts.load(`${t.weight} 36px '${t.font}'`)}catch(t){}}))}static arrayRandomIndex(t){return Math.floor(Math.random()*t.length)}static itemFromArray(t,i,e=!0){return t[void 0!==i&&e?i%t.length:P.arrayRandomIndex(t)]}static isPointInside(t,i,e,o){return P.areBoundsInside(P.calculateBounds(t,null!=e?e:0),i,o)}static areBoundsInside(t,i,e){let s=!0;return e&&e!==o.bottom||(s=t.top<i.height),!s||e&&e!==o.left||(s=t.right>0),!s||e&&e!==o.right||(s=t.left<i.width),!s||e&&e!==o.top||(s=t.bottom>0),s}static calculateBounds(t,i){return{bottom:t.y+i,left:t.x-i,right:t.x+i,top:t.y-i}}static loadImage(t){return new Promise((i,e)=>{if(!t)return void e("Error tsParticles - No image.src");const o={source:t,type:t.substr(t.length-3)},s=new Image;s.addEventListener("load",()=>{o.element=s,i(o)}),s.addEventListener("error",()=>{e("Error tsParticles - loading image: "+t)}),s.src=t})}static downloadSvgImage(t){return x(this,void 0,void 0,(function*(){if(!t)throw new Error("Error tsParticles - No image.src");const i={source:t,type:t.substr(t.length-3)};if("svg"!==i.type)return P.loadImage(t);const e=yield fetch(i.source);if(!e.ok)throw new Error("Error tsParticles - Image not found");return i.svgData=yield e.text(),i}))}static deepExtend(t,...i){for(const e of i){if(null==e)continue;if("object"!=typeof e){t=e;continue}const i=Array.isArray(e);!i||"object"==typeof t&&t&&Array.isArray(t)?i||"object"==typeof t&&t&&!Array.isArray(t)||(t={}):t=[];for(const i in e){if("__proto__"===i)continue;const o=e[i],s="object"==typeof o,n=t;n[i]=s&&Array.isArray(o)?o.map(t=>P.deepExtend(n[i],t)):P.deepExtend(n[i],o)}}return t}static isDivModeEnabled(t,i){return i instanceof Array?!!i.find(i=>i.enable&&P.isInArray(t,i.mode)):P.isInArray(t,i.mode)}static divModeExecute(t,i,e){if(i instanceof Array)for(const o of i){const i=o.mode;o.enable&&P.isInArray(t,i)&&P.singleDivModeExecute(o,e)}else{const o=i.mode;i.enable&&P.isInArray(t,o)&&P.singleDivModeExecute(i,e)}}static singleDivModeExecute(t,i){const e=t.selectors;if(e instanceof Array)for(const o of e)i(o,t);else i(e,t)}static divMode(t,i){if(i&&t)return t instanceof Array?t.find(t=>z(i,t.selectors)):z(i,t.selectors)?t:void 0}static circleBounceDataFromParticle(t){return{position:t.getPosition(),radius:t.getRadius(),velocity:t.velocity,factor:{horizontal:a.getValue(t.options.bounce.horizontal),vertical:a.getValue(t.options.bounce.vertical)}}}static circleBounce(t,i){const e=t.velocity.horizontal,o=t.velocity.vertical,s=t.position,n=i.position;if(e*(n.x-s.x)+o*(n.y-s.y)>=0){const e=-Math.atan2(n.y-s.y,n.x-s.x),o=t.radius,r=i.radius,l=a.rotateVelocity(t.velocity,e),c=a.rotateVelocity(i.velocity,e),d=a.collisionVelocity(l,c,o,r),h=a.collisionVelocity(c,l,o,r),u=a.rotateVelocity(d,-e),v=a.rotateVelocity(h,-e);t.velocity.horizontal=u.horizontal*t.factor.horizontal,t.velocity.vertical=u.vertical*t.factor.vertical,i.velocity.horizontal=v.horizontal*i.factor.horizontal,i.velocity.vertical=v.vertical*i.factor.vertical}}static rectBounce(t,i){const e=t.getPosition(),o=t.getRadius(),s=P.calculateBounds(e,o),n=k({min:s.left,max:s.right},{min:s.top,max:s.bottom},{min:i.left,max:i.right},{min:i.top,max:i.bottom},t.velocity.horizontal,a.getValue(t.options.bounce.horizontal));n.bounced&&(void 0!==n.velocity&&(t.velocity.horizontal=n.velocity),void 0!==n.position&&(t.position.x=n.position));const r=k({min:s.top,max:s.bottom},{min:s.left,max:s.right},{min:i.top,max:i.bottom},{min:i.left,max:i.right},t.velocity.vertical,a.getValue(t.options.bounce.vertical));r.bounced&&(void 0!==r.velocity&&(t.velocity.vertical=r.velocity),void 0!==r.position&&(t.position.y=r.position))}}class M{}function S(t,i,e){let o=e;return o<0&&(o+=1),o>1&&(o-=1),o<1/6?t+6*(i-t)*o:o<.5?i:o<2/3?t+(i-t)*(2/3-o)*6:t}function C(t){if(t.startsWith("rgb")){const i=/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?{a:i.length>4?parseFloat(i[5]):1,b:parseInt(i[3],10),g:parseInt(i[2],10),r:parseInt(i[1],10)}:void 0}if(t.startsWith("hsl")){const i=/hsla?\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?R.hslaToRgba({a:i.length>4?parseFloat(i[5]):1,h:parseInt(i[1],10),l:parseInt(i[3],10),s:parseInt(i[2],10)}):void 0}if(t.startsWith("hsv")){const i=/hsva?\(\s*(\d+)°\s*,\s*(\d+)%\s*,\s*(\d+)%\s*(,\s*([\d.]+)\s*)?\)/i.exec(t);return i?R.hsvaToRgba({a:i.length>4?parseFloat(i[5]):1,h:parseInt(i[1],10),s:parseInt(i[2],10),v:parseInt(i[3],10)}):void 0}{const i=/^#?([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i,e=t.replace(i,(t,i,e,o,s)=>i+i+e+e+o+o+(void 0!==s?s+s:"")),o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i.exec(e);return o?{a:void 0!==o[4]?parseInt(o[4],16)/255:1,b:parseInt(o[3],16),g:parseInt(o[2],16),r:parseInt(o[1],16)}:void 0}}M.canvasClass="tsparticles-canvas-el",M.randomColorValue="random",M.midColorValue="mid",M.touchEndEvent="touchend",M.mouseDownEvent="mousedown",M.mouseUpEvent="mouseup",M.mouseMoveEvent="mousemove",M.touchStartEvent="touchstart",M.touchMoveEvent="touchmove",M.mouseLeaveEvent="mouseleave",M.mouseOutEvent="mouseout",M.touchCancelEvent="touchcancel",M.resizeEvent="resize",M.visibilityChangeEvent="visibilitychange",M.noPolygonDataLoaded="No polygon data loaded.",M.noPolygonFound="No polygon found, you need to specify SVG url in config.";class R{static colorToRgb(t,i,e=!0){var o,s,n;if(void 0===t)return;const a="string"==typeof t?{value:t}:t;let r;if("string"==typeof a.value)r=a.value===M.randomColorValue?R.getRandomRgbColor():R.stringToRgb(a.value);else if(a.value instanceof Array){const t=P.itemFromArray(a.value,i,e);r=R.colorToRgb({value:t})}else{const t=a.value,i=null!==(o=t.rgb)&&void 0!==o?o:a.value;if(void 0!==i.r)r=i;else{const i=null!==(s=t.hsl)&&void 0!==s?s:a.value;if(void 0!==i.h&&void 0!==i.l)r=R.hslToRgb(i);else{const i=null!==(n=t.hsv)&&void 0!==n?n:a.value;void 0!==i.h&&void 0!==i.v&&(r=R.hsvToRgb(i))}}}return r}static colorToHsl(t,i,e=!0){const o=R.colorToRgb(t,i,e);return void 0!==o?R.rgbToHsl(o):void 0}static rgbToHsl(t){const i=t.r/255,e=t.g/255,o=t.b/255,s=Math.max(i,e,o),n=Math.min(i,e,o),a={h:0,l:(s+n)/2,s:0};return s!=n&&(a.s=a.l<.5?(s-n)/(s+n):(s-n)/(2-s-n),a.h=i===s?(e-o)/(s-n):a.h=e===s?2+(o-i)/(s-n):4+(i-e)/(s-n)),a.l*=100,a.s*=100,a.h*=60,a.h<0&&(a.h+=360),a}static stringToAlpha(t){var i;return null===(i=C(t))||void 0===i?void 0:i.a}static stringToRgb(t){return C(t)}static hslToRgb(t){const i={b:0,g:0,r:0},e={h:t.h/360,l:t.l/100,s:t.s/100};if(0===e.s)i.b=e.l,i.g=e.l,i.r=e.l;else{const t=e.l<.5?e.l*(1+e.s):e.l+e.s-e.l*e.s,o=2*e.l-t;i.r=S(o,t,e.h+1/3),i.g=S(o,t,e.h),i.b=S(o,t,e.h-1/3)}return i.r=Math.floor(255*i.r),i.g=Math.floor(255*i.g),i.b=Math.floor(255*i.b),i}static hslaToRgba(t){const i=R.hslToRgb(t);return{a:t.a,b:i.b,g:i.g,r:i.r}}static hslToHsv(t){const i=t.l/100,e=i+t.s/100*Math.min(i,1-i),o=e?2*(1-i/e):0;return{h:t.h,s:100*o,v:100*e}}static hslaToHsva(t){const i=R.hslToHsv(t);return{a:t.a,h:i.h,s:i.s,v:i.v}}static hsvToHsl(t){const i=t.v/100,e=i*(1-t.s/100/2),o=0===e||1===e?0:(i-e)/Math.min(e,1-e);return{h:t.h,l:100*e,s:100*o}}static hsvaToHsla(t){const i=R.hsvToHsl(t);return{a:t.a,h:i.h,l:i.l,s:i.s}}static hsvToRgb(t){const i={b:0,g:0,r:0},e=t.h/60,o=t.s/100,s=t.v/100,n=s*o,a=n*(1-Math.abs(e%2-1));let r;if(e>=0&&e<=1?r={r:n,g:a,b:0}:e>1&&e<=2?r={r:a,g:n,b:0}:e>2&&e<=3?r={r:0,g:n,b:a}:e>3&&e<=4?r={r:0,g:a,b:n}:e>4&&e<=5?r={r:a,g:0,b:n}:e>5&&e<=6&&(r={r:n,g:0,b:a}),r){const t=s-n;i.r=Math.floor(255*(r.r+t)),i.g=Math.floor(255*(r.g+t)),i.b=Math.floor(255*(r.b+t))}return i}static hsvaToRgba(t){const i=R.hsvToRgb(t);return{a:t.a,b:i.b,g:i.g,r:i.r}}static rgbToHsv(t){const i={r:t.r/255,g:t.g/255,b:t.b/255},e=Math.max(i.r,i.g,i.b),o=e-Math.min(i.r,i.g,i.b);let s=0;return e===i.r?s=(i.g-i.b)/o*60:e===i.g?s=60*(2+(i.b-i.r)/o):e===i.b&&(s=60*(4+(i.r-i.g)/o)),{h:s,s:100*(e?o/e:0),v:100*e}}static rgbaToHsva(t){const i=R.rgbToHsv(t);return{a:t.a,h:i.h,s:i.s,v:i.v}}static getRandomRgbColor(t){const i=null!=t?t:0;return{b:Math.floor(a.randomInRange(a.setRangeValue(i,256))),g:Math.floor(a.randomInRange(a.setRangeValue(i,256))),r:Math.floor(a.randomInRange(a.setRangeValue(i,256)))}}static getStyleFromRgb(t,i){return`rgba(${t.r}, ${t.g}, ${t.b}, ${null!=i?i:1})`}static getStyleFromHsl(t,i){return`hsla(${t.h}, ${t.s}%, ${t.l}%, ${null!=i?i:1})`}static getStyleFromHsv(t,i){return R.getStyleFromHsl(R.hsvToHsl(t),i)}static mix(t,i,e,o){let s=t,n=i;return void 0===s.r&&(s=R.hslToRgb(t)),void 0===n.r&&(n=R.hslToRgb(i)),{b:a.mix(s.b,n.b,e,o),g:a.mix(s.g,n.g,e,o),r:a.mix(s.r,n.r,e,o)}}static replaceColorSvg(t,i,e){if(!t.svgData)return"";return t.svgData.replace(/#([0-9A-F]{3,6})/gi,()=>R.getStyleFromHsl(i,e))}static getLinkColor(t,i,e){var o,s;if(e===M.randomColorValue)return R.getRandomRgbColor();if("mid"!==e)return e;{const e=null!==(o=t.getFillColor())&&void 0!==o?o:t.getStrokeColor(),n=null!==(s=null==i?void 0:i.getFillColor())&&void 0!==s?s:null==i?void 0:i.getStrokeColor();if(e&&n&&i)return R.mix(e,n,t.getRadius(),i.getRadius());{const t=null!=e?e:n;if(t)return R.hslToRgb(t)}}}static getLinkRandomColor(t,i,e){const o="string"==typeof t?t:t.value;return o===M.randomColorValue?e?R.colorToRgb({value:o}):i?M.randomColorValue:M.midColorValue:R.colorToRgb({value:o})}static getHslFromAnimation(t){return void 0!==t?{h:t.h.value,s:t.s.value,l:t.l.value}:void 0}}function A(t,i,e){t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(e.x,e.y),t.closePath()}class T{static paintBase(t,i,e){t.save(),t.fillStyle=null!=e?e:"rgba(0,0,0,0)",t.fillRect(0,0,i.width,i.height),t.restore()}static clear(t,i){t.clearRect(0,0,i.width,i.height)}static drawLinkLine(t,i,e,o,s,n,r,l,c,d,h,u){let v=!1;if(a.getDistance(e,o)<=s)A(t,e,o),v=!0;else if(r){let i,r;const l={x:o.x-n.width,y:o.y},c=a.getDistances(e,l);if(c.distance<=s){const t=e.y-c.dy/c.dx*e.x;i={x:0,y:t},r={x:n.width,y:t}}else{const t={x:o.x,y:o.y-n.height},l=a.getDistances(e,t);if(l.distance<=s){const t=-(e.y-l.dy/l.dx*e.x)/(l.dy/l.dx);i={x:t,y:0},r={x:t,y:n.height}}else{const t={x:o.x-n.width,y:o.y-n.height},l=a.getDistances(e,t);if(l.distance<=s){const t=e.y-l.dy/l.dx*e.x;i={x:-t/(l.dy/l.dx),y:t},r={x:i.x+n.width,y:i.y+n.height}}}}i&&r&&(A(t,e,i),A(t,o,r),v=!0)}if(v){if(t.lineWidth=i,l&&(t.globalCompositeOperation=c),t.strokeStyle=R.getStyleFromRgb(d,h),u.enable){const i=R.colorToRgb(u.color);i&&(t.shadowBlur=u.blur,t.shadowColor=R.getStyleFromRgb(i))}t.stroke()}}static drawLinkTriangle(t,i,e,o,s,n,a,r){!function(t,i,e,o){t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(e.x,e.y),t.lineTo(o.x,o.y),t.closePath()}(t,i,e,o),s&&(t.globalCompositeOperation=n),t.fillStyle=R.getStyleFromRgb(a,r),t.fill()}static drawConnectLine(t,i,e,o,s){t.save(),A(t,o,s),t.lineWidth=i,t.strokeStyle=e,t.stroke(),t.restore()}static gradient(t,i,e,o){const s=Math.floor(e.getRadius()/i.getRadius()),n=i.getFillColor(),a=e.getFillColor();if(!n||!a)return;const r=i.getPosition(),l=e.getPosition(),c=R.mix(n,a,i.getRadius(),e.getRadius()),d=t.createLinearGradient(r.x,r.y,l.x,l.y);return d.addColorStop(0,R.getStyleFromHsl(n,o)),d.addColorStop(s>1?1:s,R.getStyleFromRgb(c,o)),d.addColorStop(1,R.getStyleFromHsl(a,o)),d}static drawGrabLine(t,i,e,o,s,n){t.save(),A(t,e,o),t.strokeStyle=R.getStyleFromRgb(s,n),t.lineWidth=i,t.stroke(),t.restore()}static drawLight(t,i,e){const o=t.actualOptions.interactivity.modes.light.area;i.beginPath(),i.arc(e.x,e.y,o.radius,0,2*Math.PI);const s=i.createRadialGradient(e.x,e.y,0,e.x,e.y,o.radius),n=o.gradient,a={start:R.colorToRgb(n.start),stop:R.colorToRgb(n.stop)};a.start&&a.stop&&(s.addColorStop(0,R.getStyleFromRgb(a.start)),s.addColorStop(1,R.getStyleFromRgb(a.stop)),i.fillStyle=s,i.fill())}static drawParticleShadow(t,i,e,o){const s=e.getPosition(),n=t.actualOptions.interactivity.modes.light.shadow;i.save();const a=e.getRadius(),r=e.sides,l=2*Math.PI/r,c=-e.rotate.value+Math.PI/4,d=[];for(let t=0;t<r;t++)d.push({x:s.x+a*Math.sin(c+l*t)*1,y:s.y+a*Math.cos(c+l*t)*1});const h=[],u=n.length;for(const t of d){const i=Math.atan2(o.y-t.y,o.x-t.x),e=t.x+u*Math.sin(-i-Math.PI/2),s=t.y+u*Math.cos(-i-Math.PI/2);h.push({endX:e,endY:s,startX:t.x,startY:t.y})}const v=R.colorToRgb(n.color);if(!v)return;const p=R.getStyleFromRgb(v);for(let t=h.length-1;t>=0;t--){const e=t==h.length-1?0:t+1;i.beginPath(),i.moveTo(h[t].startX,h[t].startY),i.lineTo(h[e].startX,h[e].startY),i.lineTo(h[e].endX,h[e].endY),i.lineTo(h[t].endX,h[t].endY),i.fillStyle=p,i.fill()}i.restore()}static drawParticle(t,i,e,o,s,n,a,r,l,c,d){const h=e.getPosition();i.save(),i.translate(h.x,h.y),i.beginPath();const u=e.rotate.value+(e.options.rotate.path?e.pathAngle:0);0!==u&&i.rotate(u),a&&(i.globalCompositeOperation=r);const v=e.shadowColor;d.enable&&v&&(i.shadowBlur=d.blur,i.shadowColor=R.getStyleFromRgb(v),i.shadowOffsetX=d.offset.x,i.shadowOffsetY=d.offset.y),s&&(i.fillStyle=s);const p=e.stroke;i.lineWidth=e.strokeWidth,n&&(i.strokeStyle=n),T.drawShape(t,i,e,l,c,o),p.width>0&&i.stroke(),e.close&&i.closePath(),e.fill&&i.fill(),i.restore(),i.save(),i.translate(h.x,h.y),0!==u&&i.rotate(u),a&&(i.globalCompositeOperation=r),T.drawShapeAfterEffect(t,i,e,l,c,o),i.restore()}static drawShape(t,i,e,o,s,n){if(!e.shape)return;const a=t.drawers.get(e.shape);a&&a.draw(i,e,o,s,n.value,t.retina.pixelRatio)}static drawShapeAfterEffect(t,i,e,o,s,n){if(!e.shape)return;const a=t.drawers.get(e.shape);(null==a?void 0:a.afterEffect)&&a.afterEffect(i,e,o,s,n.value,t.retina.pixelRatio)}static drawPlugin(t,i,e){void 0!==i.draw&&(t.save(),i.draw(t,e),t.restore())}}class D{constructor(t,i){this.position={x:t,y:i}}}class O extends D{constructor(t,i,e){super(t,i),this.radius=e}contains(t){return Math.pow(t.x-this.position.x,2)+Math.pow(t.y-this.position.y,2)<=this.radius*this.radius}intersects(t){const i=t,e=t,o=this.position,s=t.position,n=Math.abs(s.x-o.x),a=Math.abs(s.y-o.y),r=this.radius;if(void 0!==e.radius){return r+e.radius>Math.sqrt(n*n+a+a)}if(void 0!==i.size){const t=i.size.width,e=i.size.height,o=Math.pow(n-t,2)+Math.pow(a-e,2);return!(n>r+t||a>r+e)&&(n<=t||a<=e||o<=r*r)}return!1}}class E extends D{constructor(t,i,e,o){super(t,i),this.size={height:o,width:e}}contains(t){const i=this.size.width,e=this.size.height,o=this.position;return t.x>=o.x&&t.x<=o.x+i&&t.y>=o.y&&t.y<=o.y+e}intersects(t){const i=t,e=t,o=this.size.width,s=this.size.height,n=this.position,a=t.position;if(void 0!==e.radius)return e.intersects(this);if(void 0!==i.size){const t=i.size,e=t.width,r=t.height;return a.x<n.x+o&&a.x+e>n.x&&a.y<n.y+s&&a.y+r>n.y}return!1}}class I extends O{constructor(t,i,e,o){super(t,i,e),this.canvasSize=o,this.canvasSize={height:o.height,width:o.width}}contains(t){if(super.contains(t))return!0;const i={x:t.x-this.canvasSize.width,y:t.y};if(super.contains(i))return!0;const e={x:t.x-this.canvasSize.width,y:t.y-this.canvasSize.height};if(super.contains(e))return!0;const o={x:t.x,y:t.y-this.canvasSize.height};return super.contains(o)}intersects(t){if(super.intersects(t))return!0;const i=t,e=t,o={x:t.position.x-this.canvasSize.width,y:t.position.y-this.canvasSize.height};if(void 0!==e.radius){const t=new O(o.x,o.y,2*e.radius);return super.intersects(t)}if(void 0!==i.size){const t=new E(o.x,o.y,2*i.size.width,2*i.size.height);return super.intersects(t)}return!1}}function V(t,i,e,o,s){if(o){let o={passive:!0};"boolean"==typeof s?o.capture=s:void 0!==s&&(o=s),t.addEventListener(i,e,o)}else{const o=s;t.removeEventListener(i,e,o)}}!function(t){t.attract="attract",t.bubble="bubble",t.push="push",t.remove="remove",t.repulse="repulse",t.pause="pause",t.trail="trail"}(r||(r={})),function(t){t.bounce="bounce",t.bubble="bubble",t.repulse="repulse"}(l||(l={})),function(t){t.attract="attract",t.bounce="bounce",t.bubble="bubble",t.connect="connect",t.grab="grab",t.light="light",t.repulse="repulse",t.slow="slow",t.trail="trail"}(c||(c={})),function(t){t.absorb="absorb",t.bounce="bounce",t.destroy="destroy"}(d||(d={})),function(t){t.bounce="bounce",t.bounceHorizontal="bounce-horizontal",t.bounceVertical="bounce-vertical",t.none="none",t.out="out",t.destroy="destroy"}(h||(h={})),function(t){t.precise="precise",t.percent="percent"}(u||(u={})),function(t){t.any="any",t.dark="dark",t.light="light"}(v||(v={})),function(t){t[t.increasing=0]="increasing",t[t.decreasing=1]="decreasing"}(p||(p={})),function(t){t.none="none",t.max="max",t.min="min"}(y||(y={})),function(t){t.color="color",t.opacity="opacity",t.size="size"}(m||(m={})),function(t){t.char="char",t.character="character",t.circle="circle",t.edge="edge",t.image="image",t.images="images",t.line="line",t.polygon="polygon",t.square="square",t.star="star",t.triangle="triangle"}(f||(f={})),function(t){t.max="max",t.min="min",t.random="random"}(g||(g={})),function(t){t.circle="circle",t.rectangle="rectangle"}(b||(b={})),function(t){t.canvas="canvas",t.parent="parent",t.window="window"}(w||(w={}));class F{constructor(t){this.container=t,this.canPush=!0,this.mouseMoveHandler=t=>this.mouseTouchMove(t),this.touchStartHandler=t=>this.mouseTouchMove(t),this.touchMoveHandler=t=>this.mouseTouchMove(t),this.touchEndHandler=()=>this.mouseTouchFinish(),this.mouseLeaveHandler=()=>this.mouseTouchFinish(),this.touchCancelHandler=()=>this.mouseTouchFinish(),this.touchEndClickHandler=t=>this.mouseTouchClick(t),this.mouseUpHandler=t=>this.mouseTouchClick(t),this.mouseDownHandler=()=>this.mouseDown(),this.visibilityChangeHandler=()=>this.handleVisibilityChange(),this.resizeHandler=()=>this.handleWindowResize()}addListeners(){this.manageListeners(!0)}removeListeners(){this.manageListeners(!1)}manageListeners(t){var i;const e=this.container,o=e.actualOptions,s=o.interactivity.detectsOn;let n=M.mouseLeaveEvent;if(s===w.window)e.interactivity.element=window,n=M.mouseOutEvent;else if(s===w.parent&&e.canvas.element){const t=e.canvas.element;e.interactivity.element=null!==(i=t.parentElement)&&void 0!==i?i:t.parentNode}else e.interactivity.element=e.canvas.element;const a=e.interactivity.element;if(!a)return;const r=a;(o.interactivity.events.onHover.enable||o.interactivity.events.onClick.enable)&&(V(a,M.mouseMoveEvent,this.mouseMoveHandler,t),V(a,M.touchStartEvent,this.touchStartHandler,t),V(a,M.touchMoveEvent,this.touchMoveHandler,t),o.interactivity.events.onClick.enable?(V(a,M.touchEndEvent,this.touchEndClickHandler,t),V(a,M.mouseUpEvent,this.mouseUpHandler,t),V(a,M.mouseDownEvent,this.mouseDownHandler,t)):V(a,M.touchEndEvent,this.touchEndHandler,t),V(a,n,this.mouseLeaveHandler,t),V(a,M.touchCancelEvent,this.touchCancelHandler,t)),e.canvas.element&&(e.canvas.element.style.pointerEvents=r===e.canvas.element?"initial":"none"),o.interactivity.events.resize&&V(window,M.resizeEvent,this.resizeHandler,t),document&&V(document,M.visibilityChangeEvent,this.visibilityChangeHandler,t,!1)}handleWindowResize(){var t;null===(t=this.container.canvas)||void 0===t||t.windowResize()}handleVisibilityChange(){const t=this.container,i=t.actualOptions;this.mouseTouchFinish(),i.pauseOnBlur&&((null===document||void 0===document?void 0:document.hidden)?(t.pageHidden=!0,t.pause()):(t.pageHidden=!1,t.getAnimationStatus()?t.play(!0):t.draw()))}mouseDown(){const t=this.container.interactivity;if(t){const i=t.mouse;i.clicking=!0,i.downPosition=i.position}}mouseTouchMove(t){var i,e,o,s,n,a,r;const l=this.container,c=l.actualOptions;if(void 0===(null===(i=l.interactivity)||void 0===i?void 0:i.element))return;let d;l.interactivity.mouse.inside=!0;const h=l.canvas.element;if(t.type.startsWith("mouse")){this.canPush=!0;const i=t;if(l.interactivity.element===window){if(h){const t=h.getBoundingClientRect();d={x:i.clientX-t.left,y:i.clientY-t.top}}}else if(c.interactivity.detectsOn===w.parent){const t=i.target,s=i.currentTarget,n=l.canvas.element;if(t&&s&&n){const e=t.getBoundingClientRect(),o=s.getBoundingClientRect(),a=n.getBoundingClientRect();d={x:i.offsetX+2*e.left-(o.left+a.left),y:i.offsetY+2*e.top-(o.top+a.top)}}else d={x:null!==(e=i.offsetX)&&void 0!==e?e:i.clientX,y:null!==(o=i.offsetY)&&void 0!==o?o:i.clientY}}else i.target===l.canvas.element&&(d={x:null!==(s=i.offsetX)&&void 0!==s?s:i.clientX,y:null!==(n=i.offsetY)&&void 0!==n?n:i.clientY})}else{this.canPush="touchmove"!==t.type;const i=t,e=i.touches[i.touches.length-1],o=null==h?void 0:h.getBoundingClientRect();d={x:e.clientX-(null!==(a=null==o?void 0:o.left)&&void 0!==a?a:0),y:e.clientY-(null!==(r=null==o?void 0:o.top)&&void 0!==r?r:0)}}const u=l.retina.pixelRatio;d&&(d.x*=u,d.y*=u),l.interactivity.mouse.position=d,l.interactivity.status=M.mouseMoveEvent}mouseTouchFinish(){const t=this.container.interactivity;if(void 0===t)return;const i=t.mouse;delete i.position,delete i.clickPosition,delete i.downPosition,t.status=M.mouseLeaveEvent,i.inside=!1,i.clicking=!1}mouseTouchClick(t){const i=this.container,e=i.actualOptions,o=i.interactivity.mouse;o.inside=!0;let s=!1;const n=o.position;if(void 0!==n&&e.interactivity.events.onClick.enable){for(const[,t]of i.plugins)if(void 0!==t.clickPositionValid&&(s=t.clickPositionValid(n),s))break;s||this.doMouseTouchClick(t),o.clicking=!1}}doMouseTouchClick(t){const i=this.container,e=i.actualOptions;if(this.canPush){const t=i.interactivity.mouse.position;if(!t)return;i.interactivity.mouse.clickPosition={x:t.x,y:t.y},i.interactivity.mouse.clickTime=(new Date).getTime();const o=e.interactivity.events.onClick;if(o.mode instanceof Array)for(const t of o.mode)this.handleClickMode(t);else this.handleClickMode(o.mode)}"touchend"===t.type&&setTimeout(()=>this.mouseTouchFinish(),500)}handleClickMode(t){const i=this.container,e=i.actualOptions,o=e.interactivity.modes.push.quantity,s=e.interactivity.modes.remove.quantity;switch(t){case r.push:o>0&&i.particles.push(o,i.interactivity.mouse);break;case r.remove:i.particles.removeQuantity(s);break;case r.bubble:i.bubble.clicking=!0;break;case r.repulse:i.repulse.clicking=!0,i.repulse.count=0;for(const t of i.repulse.particles)t.velocity.horizontal=t.initialVelocity.horizontal,t.velocity.vertical=t.initialVelocity.vertical;i.repulse.particles=[],i.repulse.finish=!1,setTimeout(()=>{i.destroyed||(i.repulse.clicking=!1)},1e3*e.interactivity.modes.repulse.duration);break;case r.attract:i.attract.clicking=!0,i.attract.count=0;for(const t of i.attract.particles)t.velocity.horizontal=t.initialVelocity.horizontal,t.velocity.vertical=t.initialVelocity.vertical;i.attract.particles=[],i.attract.finish=!1,setTimeout(()=>{i.destroyed||(i.attract.clicking=!1)},1e3*e.interactivity.modes.attract.duration);break;case r.pause:i.getAnimationStatus()?i.pause():i.play()}for(const[,e]of i.plugins)e.handleClickMode&&e.handleClickMode(t)}}const H=[],L=new Map,q=new Map,_=new Map;class B{static getPlugin(t){return H.find(i=>i.id===t)}static addPlugin(t){B.getPlugin(t.id)||H.push(t)}static getAvailablePlugins(t){const i=new Map;for(const e of H)e.needsPlugin(t.actualOptions)&&i.set(e.id,e.getPlugin(t));return i}static loadOptions(t,i){for(const e of H)e.loadOptions(t,i)}static getPreset(t){return L.get(t)}static addPreset(t,i){B.getPreset(t)||L.set(t,i)}static addShapeDrawer(t,i){B.getShapeDrawer(t)||q.set(t,i)}static getShapeDrawer(t){return q.get(t)}static getSupportedShapes(){return q.keys()}static getPathGenerator(t){return _.get(t)}static addPathGenerator(t,i){B.getPathGenerator(t)||_.set(t,i)}}class W{constructor(t,i){this.position=t,this.particle=i}}class G{constructor(t,i){this.rectangle=t,this.capacity=i,this.points=[],this.divided=!1}subdivide(){const t=this.rectangle.position.x,i=this.rectangle.position.y,e=this.rectangle.size.width,o=this.rectangle.size.height,s=this.capacity;this.northEast=new G(new E(t,i,e/2,o/2),s),this.northWest=new G(new E(t+e/2,i,e/2,o/2),s),this.southEast=new G(new E(t,i+o/2,e/2,o/2),s),this.southWest=new G(new E(t+e/2,i+o/2,e/2,o/2),s),this.divided=!0}insert(t){var i,e,o,s,n;return!!this.rectangle.contains(t.position)&&(this.points.length<this.capacity?(this.points.push(t),!0):(this.divided||this.subdivide(),null!==(n=(null===(i=this.northEast)||void 0===i?void 0:i.insert(t))||(null===(e=this.northWest)||void 0===e?void 0:e.insert(t))||(null===(o=this.southEast)||void 0===o?void 0:o.insert(t))||(null===(s=this.southWest)||void 0===s?void 0:s.insert(t)))&&void 0!==n&&n))}queryCircle(t,i){return this.query(new O(t.x,t.y,i))}queryCircleWarp(t,i,e){const o=e,s=e;return this.query(new I(t.x,t.y,i,void 0!==o.canvas?o.canvas.size:s))}queryRectangle(t,i){return this.query(new E(t.x,t.y,i.width,i.height))}query(t,i){var e,o,s,n;const a=null!=i?i:[];if(!t.intersects(this.rectangle))return[];for(const i of this.points)t.contains(i.position)&&a.push(i.particle);return this.divided&&(null===(e=this.northEast)||void 0===e||e.query(t,a),null===(o=this.northWest)||void 0===o||o.query(t,a),null===(s=this.southEast)||void 0===s||s.query(t,a),null===(n=this.southWest)||void 0===n||n.query(t,a)),a}}var N=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};class U{getSidesCount(){return 12}init(t){var i;return N(this,void 0,void 0,(function*(){const e=t.actualOptions;if(P.isInArray(f.char,e.particles.shape.type)||P.isInArray(f.character,e.particles.shape.type)){const t=null!==(i=e.particles.shape.options[f.character])&&void 0!==i?i:e.particles.shape.options[f.char];if(t instanceof Array)for(const i of t)yield P.loadFont(i);else void 0!==t&&(yield P.loadFont(t))}}))}draw(t,i,e){const o=i.shapeData;if(void 0===o)return;const s=o.value;if(void 0===s)return;const n=i;void 0===n.text&&(n.text=s instanceof Array?P.itemFromArray(s,i.randomIndexData):s);const a=n.text,r=o.style,l=o.weight,c=2*Math.round(e),d=o.font,h=i.fill,u=a.length*e/2;t.font=`${r} ${l} ${c}px "${d}"`;const v={x:-u,y:e/2};h?t.fillText(a,v.x,v.y):t.strokeText(a,v.x,v.y)}}var $=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};class j{constructor(){this.images=[]}getSidesCount(){return 12}getImages(t){const i=this.images.filter(i=>i.id===t.id);return i.length?i[0]:(this.images.push({id:t.id,images:[]}),this.getImages(t))}addImage(t,i){const e=this.getImages(t);null==e||e.images.push(i)}init(t){var i;return $(this,void 0,void 0,(function*(){const e=t.actualOptions.particles.shape;if(!P.isInArray(f.image,e.type)&&!P.isInArray(f.images,e.type))return;const o=null!==(i=e.options[f.images])&&void 0!==i?i:e.options[f.image];if(o instanceof Array)for(const i of o)yield this.loadImageShape(t,i);else yield this.loadImageShape(t,o)}))}destroy(){this.images=[]}loadImageShape(t,i){return $(this,void 0,void 0,(function*(){try{const e=i.replaceColor?yield P.downloadSvgImage(i.src):yield P.loadImage(i.src);e&&this.addImage(t,e)}catch(t){console.warn(`tsParticles error - ${i.src} not found`)}}))}draw(t,i,e,o){var s,n;if(!t)return;const a=i.image,r=null===(s=null==a?void 0:a.data)||void 0===s?void 0:s.element;if(!r)return;const l=null!==(n=null==a?void 0:a.ratio)&&void 0!==n?n:1,c={x:-e,y:-e};(null==a?void 0:a.data.svgData)&&(null==a?void 0:a.replaceColor)||(t.globalAlpha=o),t.drawImage(r,c.x,c.y,2*e,2*e/l),(null==a?void 0:a.data.svgData)&&(null==a?void 0:a.replaceColor)||(t.globalAlpha=1)}}class X{getSidesCount(){return 1}draw(t,i,e){t.moveTo(0,-e/2),t.lineTo(0,e/2)}}class Y{getSidesCount(){return 12}draw(t,i,e){t.arc(0,0,e,0,2*Math.PI,!1)}}class J{getSidesCount(t){var i,e;const o=t.shapeData;return null!==(e=null!==(i=null==o?void 0:o.sides)&&void 0!==i?i:null==o?void 0:o.nb_sides)&&void 0!==e?e:5}draw(t,i,e){const o=this.getCenter(i,e),s=this.getSidesData(i,e),n=s.count.numerator*s.count.denominator,a=s.count.numerator/s.count.denominator,r=180*(a-2)/a,l=Math.PI-Math.PI*r/180;if(t){t.beginPath(),t.translate(o.x,o.y),t.moveTo(0,0);for(let i=0;i<n;i++)t.lineTo(s.length,0),t.translate(s.length,0),t.rotate(l)}}}class Q extends J{getSidesCount(){return 3}getSidesData(t,i){return{count:{denominator:2,numerator:3},length:2*i}}getCenter(t,i){return{x:-i,y:i/1.66}}}class Z{getSidesCount(t){var i,e;const o=t.shapeData;return null!==(e=null!==(i=null==o?void 0:o.sides)&&void 0!==i?i:null==o?void 0:o.nb_sides)&&void 0!==e?e:5}draw(t,i,e){var o;const s=i.shapeData,n=this.getSidesCount(i),a=null!==(o=null==s?void 0:s.inset)&&void 0!==o?o:2;t.moveTo(0,0-e);for(let i=0;i<n;i++)t.rotate(Math.PI/n),t.lineTo(0,0-e*a),t.rotate(Math.PI/n),t.lineTo(0,0-e)}}class K extends J{getSidesData(t,i){var e,o;const s=t.shapeData,n=null!==(o=null!==(e=null==s?void 0:s.sides)&&void 0!==e?e:null==s?void 0:s.nb_sides)&&void 0!==o?o:5;return{count:{denominator:1,numerator:n},length:2.66*i/(n/3)}}getCenter(t,i){return{x:-i/(this.getSidesCount(t)/3.5),y:-i/.76}}}class tt{constructor(t){this.container=t,this.size={height:0,width:0},this.context=null,this.generatedCanvas=!1}init(){var t,i,e,o,s,n,a,r,l,c,d,h;this.resize();const u=this.container.actualOptions,v=this.element;v&&(u.fullScreen.enable?(this.originalStyle=P.deepExtend({},v.style),v.style.position="fixed",v.style.zIndex=u.fullScreen.zIndex.toString(10),v.style.top="0",v.style.left="0",v.style.width="100%",v.style.height="100%"):(v.style.position=null!==(i=null===(t=this.originalStyle)||void 0===t?void 0:t.position)&&void 0!==i?i:"",v.style.zIndex=null!==(o=null===(e=this.originalStyle)||void 0===e?void 0:e.zIndex)&&void 0!==o?o:"",v.style.top=null!==(n=null===(s=this.originalStyle)||void 0===s?void 0:s.top)&&void 0!==n?n:"",v.style.left=null!==(r=null===(a=this.originalStyle)||void 0===a?void 0:a.left)&&void 0!==r?r:"",v.style.width=null!==(c=null===(l=this.originalStyle)||void 0===l?void 0:l.width)&&void 0!==c?c:"",v.style.height=null!==(h=null===(d=this.originalStyle)||void 0===d?void 0:d.height)&&void 0!==h?h:""));const p=u.backgroundMask.cover,y=p.color,m=u.particles.move.trail,f=R.colorToRgb(y);this.coverColor=void 0!==f?{r:f.r,g:f.g,b:f.b,a:p.opacity}:void 0,this.trailFillColor=R.colorToRgb(m.fillColor),this.initBackground(),this.paint()}loadCanvas(t,i){var e;t.className||(t.className=M.canvasClass),this.generatedCanvas&&(null===(e=this.element)||void 0===e||e.remove()),this.generatedCanvas=null!=i?i:this.generatedCanvas,this.element=t,this.originalStyle=P.deepExtend({},this.element.style),this.size.height=t.offsetHeight,this.size.width=t.offsetWidth,this.context=this.element.getContext("2d"),this.container.retina.init(),this.initBackground()}destroy(){var t;this.generatedCanvas&&(null===(t=this.element)||void 0===t||t.remove()),this.context&&T.clear(this.context,this.size)}paint(){const t=this.container.actualOptions;this.context&&(t.backgroundMask.enable&&t.backgroundMask.cover&&this.coverColor?(T.clear(this.context,this.size),this.paintBase(R.getStyleFromRgb(this.coverColor,this.coverColor.a))):this.paintBase())}clear(){const t=this.container.actualOptions,i=t.particles.move.trail;t.backgroundMask.enable?this.paint():i.enable&&i.length>0&&this.trailFillColor?this.paintBase(R.getStyleFromRgb(this.trailFillColor,1/i.length)):this.context&&T.clear(this.context,this.size)}windowResize(){if(!this.element)return;const t=this.container;t.canvas.resize(),t.actualOptions.setResponsive(this.size.width,t.retina.pixelRatio,t.options),t.particles.setDensity();for(const[,i]of t.plugins)void 0!==i.resize&&i.resize()}resize(){if(!this.element)return;const t=this.container,i=t.retina.pixelRatio,e=t.canvas.size,o=e.width,s=e.height;e.width=this.element.offsetWidth*i,e.height=this.element.offsetHeight*i,this.element.width=e.width,this.element.height=e.height,this.resizeFactor={width:e.width/o,height:e.height/s}}drawConnectLine(t,i){var e;const o=this.lineStyle(t,i);if(!o)return;const s=this.context;if(!s)return;const n=t.getPosition(),a=i.getPosition();T.drawConnectLine(s,null!==(e=t.linksWidth)&&void 0!==e?e:this.container.retina.linksWidth,o,n,a)}drawGrabLine(t,i,e,o){var s;const n=this.container,a=n.canvas.context;if(!a)return;const r=t.getPosition();T.drawGrabLine(a,null!==(s=t.linksWidth)&&void 0!==s?s:n.retina.linksWidth,r,o,i,e)}drawParticleShadow(t,i){this.context&&T.drawParticleShadow(this.container,this.context,t,i)}drawLinkTriangle(t,i,e){var o;const s=this.container,n=s.actualOptions,r=i.destination,l=e.destination,c=t.options.links.triangles,d=null!==(o=c.opacity)&&void 0!==o?o:(i.opacity+e.opacity)/2;if(d<=0)return;const h=t.getPosition(),u=r.getPosition(),v=l.getPosition(),p=this.context;if(!p)return;if(a.getDistance(h,u)>s.retina.linksDistance||a.getDistance(v,u)>s.retina.linksDistance||a.getDistance(v,h)>s.retina.linksDistance)return;let y=R.colorToRgb(c.color);if(!y){const i=t.options.links,e=void 0!==i.id?s.particles.linksColors.get(i.id):s.particles.linksColor;y=R.getLinkColor(t,r,e)}y&&T.drawLinkTriangle(p,h,u,v,n.backgroundMask.enable,n.backgroundMask.composite,y,d)}drawLinkLine(t,i){var e,o;const s=this.container,n=s.actualOptions,a=i.destination;let r=i.opacity;const l=t.getPosition(),c=a.getPosition(),d=this.context;if(!d)return;let h;const u=t.options.twinkle.lines;if(u.enable){const t=u.frequency,i=R.colorToRgb(u.color);Math.random()<t&&void 0!==i&&(h=i,r=u.opacity)}if(!h){const i=t.options.links,e=void 0!==i.id?s.particles.linksColors.get(i.id):s.particles.linksColor;h=R.getLinkColor(t,a,e)}if(!h)return;const v=null!==(e=t.linksWidth)&&void 0!==e?e:s.retina.linksWidth,p=null!==(o=t.linksDistance)&&void 0!==o?o:s.retina.linksDistance;T.drawLinkLine(d,v,l,c,p,s.canvas.size,t.options.links.warp,n.backgroundMask.enable,n.backgroundMask.composite,h,r,t.options.links.shadow)}drawParticle(t,i){var e,o,s,n;if(!1===(null===(e=t.image)||void 0===e?void 0:e.loaded)||t.spawning||t.destroyed)return;const a=t.getFillColor(),r=null!==(o=t.getStrokeColor())&&void 0!==o?o:a;if(!a&&!r)return;const l=this.container.actualOptions,c=t.options.twinkle.particles,d=c.frequency,h=R.colorToRgb(c.color),u=c.enable&&Math.random()<d,v=t.getRadius(),p=u?c.opacity:null!==(s=t.bubble.opacity)&&void 0!==s?s:t.opacity.value,y=t.infecter.infectionStage,m=l.infection.stages,f=void 0!==y?m[y].color:void 0,g=R.colorToRgb(f),b=u&&void 0!==h?h:null!=g?g:a?R.hslToRgb(a):void 0,w=u&&void 0!==h?h:null!=g?g:r?R.hslToRgb(r):void 0,x=void 0!==b?R.getStyleFromRgb(b,p):void 0;if(!this.context||!x&&!w)return;const k=void 0!==w?R.getStyleFromRgb(w,null!==(n=t.stroke.opacity)&&void 0!==n?n:p):x;this.drawParticleLinks(t),v>0&&T.drawParticle(this.container,this.context,t,i,x,k,l.backgroundMask.enable,l.backgroundMask.composite,v,p,t.options.shadow)}drawParticleLinks(t){if(!this.context)return;const i=this.container,e=i.particles,o=t.options;if(t.links.length>0){this.context.save();const s=t.links.filter(e=>i.particles.getLinkFrequency(t,e.destination)<=o.links.frequency);for(const n of s){const a=n.destination;if(o.links.triangles.enable){const r=s.map(t=>t.destination),l=a.links.filter(t=>i.particles.getLinkFrequency(a,t.destination)<=a.options.links.frequency&&r.indexOf(t.destination)>=0);if(l.length)for(const i of l){const s=i.destination;e.getTriangleFrequency(t,a,s)>o.links.triangles.frequency||this.drawLinkTriangle(t,n,i)}}n.opacity>0&&i.retina.linksWidth>0&&this.drawLinkLine(t,n)}this.context.restore()}}drawPlugin(t,i){this.context&&T.drawPlugin(this.context,t,i)}drawLight(t){this.context&&T.drawLight(this.container,this.context,t)}paintBase(t){this.context&&T.paintBase(this.context,this.size,t)}lineStyle(t,i){const e=this.container.actualOptions.interactivity.modes.connect;if(this.context)return T.gradient(this.context,t,i,e.links.opacity)}initBackground(){const t=this.container.actualOptions.background,i=this.element;if(!i)return;const e=i.style;if(t.color){const i=R.colorToRgb(t.color);i&&(e.backgroundColor=R.getStyleFromRgb(i,t.opacity))}t.image&&(e.backgroundImage=t.image),t.position&&(e.backgroundPosition=t.position),t.repeat&&(e.backgroundRepeat=t.repeat),t.size&&(e.backgroundSize=t.size)}}function it(t,i,e,o,s){switch(i){case y.max:e>=s&&t.destroy();break;case y.min:e<=o&&t.destroy()}}class et{constructor(t,i){this.container=t,this.particle=i}update(t){this.particle.destroyed||(this.updateLife(t),this.particle.destroyed||this.particle.spawning||(this.updateOpacity(t),this.updateSize(t),this.updateAngle(t),this.updateColor(t),this.updateStrokeColor(t),this.updateOutModes(t)))}updateLife(t){const i=this.particle;let e=!1;if(i.spawning&&(i.lifeDelayTime+=t.value,i.lifeDelayTime>=i.lifeDelay&&(e=!0,i.spawning=!1,i.lifeDelayTime=0,i.lifeTime=0)),-1!==i.lifeDuration&&!i.spawning&&(e?i.lifeTime=0:i.lifeTime+=t.value,i.lifeTime>=i.lifeDuration)){if(i.lifeTime=0,i.livesRemaining>0&&i.livesRemaining--,0===i.livesRemaining)return void i.destroy();const t=this.container.canvas.size;i.position.x=a.randomInRange(a.setRangeValue(0,t.width)),i.position.y=a.randomInRange(a.setRangeValue(0,t.height)),i.spawning=!0,i.lifeDelayTime=0,i.lifeTime=0,i.reset();const e=i.options.life;i.lifeDelay=1e3*a.getValue(e.delay),i.lifeDuration=1e3*a.getValue(e.duration)}}updateOpacity(t){var i,e;const o=this.particle,s=o.options.opacity.anim,n=s.minimumValue,r=o.options.opacity.value;if(!o.destroyed&&s.enable&&(s.count<=0||o.loops.size<s.count)){switch(o.opacity.status){case p.increasing:o.opacity.value>=r?(o.opacity.status=p.decreasing,o.loops.opacity++):o.opacity.value+=(null!==(i=o.opacity.velocity)&&void 0!==i?i:0)*t.factor;break;case p.decreasing:o.opacity.value<=n?(o.opacity.status=p.increasing,o.loops.opacity++):o.opacity.value-=(null!==(e=o.opacity.velocity)&&void 0!==e?e:0)*t.factor}it(o,s.destroy,o.opacity.value,n,r),o.destroyed||(o.opacity.value=a.clamp(o.opacity.value,n,r))}}updateSize(t){var i,e;const o=this.container,s=this.particle,n=s.options.size.animation,r=(null!==(i=s.size.velocity)&&void 0!==i?i:0)*t.factor,l=null!==(e=s.sizeValue)&&void 0!==e?e:o.retina.sizeValue,c=n.minimumValue*o.retina.pixelRatio;if(!s.destroyed&&n.enable&&(n.count<=0||s.loops.size<n.count)){switch(s.size.status){case p.increasing:s.size.value>=l?(s.size.status=p.decreasing,s.loops.size++):s.size.value+=r;break;case p.decreasing:s.size.value<=c?(s.size.status=p.increasing,s.loops.size++):s.size.value-=r}it(s,n.destroy,s.size.value,c,l),s.destroyed||(s.size.value=a.clamp(s.size.value,c,l))}}updateAngle(t){var i;const e=this.particle,o=e.options.rotate,s=o.animation,n=(null!==(i=e.rotate.velocity)&&void 0!==i?i:0)*t.factor,a=2*Math.PI;if(o.path)e.pathAngle=Math.atan2(e.velocity.vertical,e.velocity.horizontal);else if(s.enable)switch(e.rotate.status){case p.increasing:e.rotate.value+=n,e.rotate.value>a&&(e.rotate.value-=a);break;case p.decreasing:default:e.rotate.value-=n,e.rotate.value<0&&(e.rotate.value+=a)}}updateColor(t){var i,e,o;const s=this.particle,n=s.options.color.animation;void 0!==(null===(i=s.color)||void 0===i?void 0:i.h)&&this.updateColorValue(s,t,s.color.h,n.h,360,!1),void 0!==(null===(e=s.color)||void 0===e?void 0:e.s)&&this.updateColorValue(s,t,s.color.s,n.s,100,!0),void 0!==(null===(o=s.color)||void 0===o?void 0:o.l)&&this.updateColorValue(s,t,s.color.l,n.l,100,!0)}updateStrokeColor(t){var i,e,o,s,n,a,r,l,c,d,h,u;const v=this.particle;if(!v.stroke.color)return;const p=v.stroke.color.animation,y=p;if(void 0!==y.enable){const s=null!==(e=null===(i=v.strokeColor)||void 0===i?void 0:i.h)&&void 0!==e?e:null===(o=v.color)||void 0===o?void 0:o.h;s&&this.updateColorValue(v,t,s,y,360,!1)}else{const i=p,e=null!==(n=null===(s=v.strokeColor)||void 0===s?void 0:s.h)&&void 0!==n?n:null===(a=v.color)||void 0===a?void 0:a.h;e&&this.updateColorValue(v,t,e,i.h,360,!1);const o=null!==(l=null===(r=v.strokeColor)||void 0===r?void 0:r.s)&&void 0!==l?l:null===(c=v.color)||void 0===c?void 0:c.s;o&&this.updateColorValue(v,t,o,i.s,100,!0);const y=null!==(h=null===(d=v.strokeColor)||void 0===d?void 0:d.l)&&void 0!==h?h:null===(u=v.color)||void 0===u?void 0:u.l;y&&this.updateColorValue(v,t,y,i.l,100,!0)}}updateColorValue(t,i,e,o,s,n){var r;const l=e;if(!l||!o.enable)return;const c=a.randomInRange(o.offset),d=(null!==(r=e.velocity)&&void 0!==r?r:0)*i.factor+3.6*c;n&&l.status!==p.increasing?(l.value-=d,l.value<0&&(l.status=p.increasing,l.value+=l.value)):(l.value+=d,n&&l.value>s&&(l.status=p.decreasing,l.value-=l.value%s)),l.value>s&&(l.value%=s)}updateOutModes(t){var i,e,s,n;const a=this.particle.options.move.outModes;this.updateOutMode(t,null!==(i=a.bottom)&&void 0!==i?i:a.default,o.bottom),this.updateOutMode(t,null!==(e=a.left)&&void 0!==e?e:a.default,o.left),this.updateOutMode(t,null!==(s=a.right)&&void 0!==s?s:a.default,o.right),this.updateOutMode(t,null!==(n=a.top)&&void 0!==n?n:a.default,o.top)}updateOutMode(t,i,e){const o=this.container,s=this.particle;switch(i){case h.bounce:case h.bounceVertical:case h.bounceHorizontal:case"bounceVertical":case"bounceHorizontal":this.updateBounce(t,e,i);break;case h.destroy:P.isPointInside(s.position,o.canvas.size,s.getRadius(),e)||o.particles.remove(s);break;case h.out:P.isPointInside(s.position,o.canvas.size,s.getRadius(),e)||this.fixOutOfCanvasPosition(e);break;case h.none:this.bounceNone(e)}}fixOutOfCanvasPosition(t){const i=this.container,e=this.particle,s=e.options.move.warp,n=i.canvas.size,a={bottom:n.height+e.getRadius()-e.offset.y,left:-e.getRadius()-e.offset.x,right:n.width+e.getRadius()+e.offset.x,top:-e.getRadius()-e.offset.y},r=e.getRadius(),l=P.calculateBounds(e.position,r);t===o.right&&l.left>n.width-e.offset.x?(e.position.x=a.left,s||(e.position.y=Math.random()*n.height)):t===o.left&&l.right<-e.offset.x&&(e.position.x=a.right,s||(e.position.y=Math.random()*n.height)),t===o.bottom&&l.top>n.height-e.offset.y?(s||(e.position.x=Math.random()*n.width),e.position.y=a.top):t===o.top&&l.bottom<-e.offset.y&&(s||(e.position.x=Math.random()*n.width),e.position.y=a.bottom)}updateBounce(t,i,e){const s=this.container,n=this.particle;let r=!1;for(const[,e]of s.plugins)if(void 0!==e.particleBounce&&(r=e.particleBounce(n,t,i)),r)break;if(r)return;const l=n.getPosition(),c=n.offset,d=n.getRadius(),u=P.calculateBounds(l,d),v=s.canvas.size;!function(t){if(t.outMode===h.bounce||t.outMode===h.bounceHorizontal||"bounceHorizontal"===t.outMode){const i=t.particle.velocity.horizontal;let e=!1;if(t.direction===o.right&&t.bounds.right>=t.canvasSize.width&&i>0||t.direction===o.left&&t.bounds.left<=0&&i<0){const i=a.getValue(t.particle.options.bounce.horizontal);t.particle.velocity.horizontal*=-i,e=!0}if(e){const i=t.offset.x+t.size;t.bounds.right>=t.canvasSize.width?t.particle.position.x=t.canvasSize.width-i:t.bounds.left<=0&&(t.particle.position.x=i)}}}({particle:n,outMode:e,direction:i,bounds:u,canvasSize:v,offset:c,size:d}),function(t){if(t.outMode===h.bounce||t.outMode===h.bounceVertical||"bounceVertical"===t.outMode){const i=t.particle.velocity.vertical;let e=!1;if(t.direction===o.bottom&&t.bounds.bottom>=t.canvasSize.height&&i>0||t.direction===o.top&&t.bounds.top<=0&&i<0){const i=a.getValue(t.particle.options.bounce.vertical);t.particle.velocity.vertical*=-i,e=!0}if(e){const i=t.offset.y+t.size;t.bounds.bottom>=t.canvasSize.height?t.particle.position.y=t.canvasSize.height-i:t.bounds.top<=0&&(t.particle.position.y=i)}}}({particle:n,outMode:e,direction:i,bounds:u,canvasSize:v,offset:c,size:d})}bounceNone(t){const i=this.particle;if(i.options.move.distance)return;const e=i.options.move.gravity,s=this.container;if(e.enable){const n=i.position;(e.acceleration>=0&&n.y>s.canvas.size.height&&t===o.bottom||e.acceleration<0&&n.y<0&&t===o.top)&&s.particles.remove(i)}else P.isPointInside(i.position,s.canvas.size,i.getRadius(),t)||s.particles.remove(i)}}class ot{constructor(){this.value="#fff"}static create(t,i){const e=null!=t?t:new ot;return void 0!==i&&e.load("string"==typeof i?{value:i}:i),e}load(t){void 0!==(null==t?void 0:t.value)&&(this.value=t.value)}}class st{constructor(){this.blur=5,this.color=new ot,this.enable=!1,this.color.value="#00ff00"}load(t){void 0!==t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=ot.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable))}}class nt{constructor(){this.enable=!1,this.frequency=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity))}}class at{constructor(){this.blink=!1,this.color=new ot,this.consent=!1,this.distance=100,this.enable=!1,this.frequency=1,this.opacity=1,this.shadow=new st,this.triangles=new nt,this.width=1,this.warp=!1}load(t){void 0!==t&&(void 0!==t.id&&(this.id=t.id),void 0!==t.blink&&(this.blink=t.blink),this.color=ot.create(this.color,t.color),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.distance&&(this.distance=t.distance),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity),this.shadow.load(t.shadow),this.triangles.load(t.triangles),void 0!==t.width&&(this.width=t.width),void 0!==t.warp&&(this.warp=t.warp))}}class rt{constructor(){this.enable=!1,this.rotate={x:3e3,y:3e3}}get rotateX(){return this.rotate.x}set rotateX(t){this.rotate.x=t}get rotateY(){return this.rotate.y}set rotateY(t){this.rotate.y=t}load(t){var i,e,o,s;if(void 0===t)return;void 0!==t.enable&&(this.enable=t.enable);const n=null!==(e=null===(i=t.rotate)||void 0===i?void 0:i.x)&&void 0!==e?e:t.rotateX;void 0!==n&&(this.rotate.x=n);const a=null!==(s=null===(o=t.rotate)||void 0===o?void 0:o.y)&&void 0!==s?s:t.rotateY;void 0!==a&&(this.rotate.y=a)}}class lt{constructor(){this.enable=!1,this.length=10,this.fillColor=new ot,this.fillColor.value="#000000"}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),this.fillColor=ot.create(this.fillColor,t.fillColor),void 0!==t.length&&(this.length=t.length))}}class ct{constructor(){this.enable=!1,this.minimumValue=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.minimumValue&&(this.minimumValue=t.minimumValue))}}class dt{constructor(){this.random=new ct,this.value=0}load(t){t&&("boolean"==typeof t.random?this.random.enable=t.random:this.random.load(t.random),void 0!==t.value&&(this.value=t.value))}}class ht extends dt{constructor(){super()}}class ut{constructor(){this.clamp=!0,this.delay=new ht,this.enable=!1}load(t){void 0!==t&&(void 0!==t.clamp&&(this.clamp=t.clamp),this.delay.load(t.delay),void 0!==t.enable&&(this.enable=t.enable),this.generator=t.generator)}}class vt{constructor(){this.offset=45,this.value=90}load(t){void 0!==t&&(void 0!==t.offset&&(this.offset=t.offset),void 0!==t.value&&(this.value=t.value))}}class pt{constructor(){this.acceleration=9.81,this.enable=!1,this.maxSpeed=50}load(t){t&&(void 0!==t.acceleration&&(this.acceleration=t.acceleration),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.maxSpeed&&(this.maxSpeed=t.maxSpeed))}}class yt{constructor(){this.default=h.out}load(t){var i,e,o,s;t&&(void 0!==t.default&&(this.default=t.default),this.bottom=null!==(i=t.bottom)&&void 0!==i?i:t.default,this.left=null!==(e=t.left)&&void 0!==e?e:t.default,this.right=null!==(o=t.right)&&void 0!==o?o:t.default,this.top=null!==(s=t.top)&&void 0!==s?s:t.default)}}class mt{constructor(){this.angle=new vt,this.attract=new rt,this.decay=0,this.direction=s.none,this.distance=0,this.enable=!1,this.gravity=new pt,this.path=new ut,this.outModes=new yt,this.random=!1,this.size=!1,this.speed=2,this.straight=!1,this.trail=new lt,this.vibrate=!1,this.warp=!1}get collisions(){return!1}set collisions(t){}get bounce(){return this.collisions}set bounce(t){this.collisions=t}get out_mode(){return this.outMode}set out_mode(t){this.outMode=t}get outMode(){return this.outModes.default}set outMode(t){this.outModes.default=t}get noise(){return this.path}set noise(t){this.path=t}load(t){var i,e,o;if(void 0===t)return;void 0!==t.angle&&("number"==typeof t.angle?this.angle.value=t.angle:this.angle.load(t.angle)),this.attract.load(t.attract),void 0!==t.decay&&(this.decay=t.decay),void 0!==t.direction&&(this.direction=t.direction),void 0!==t.distance&&(this.distance=t.distance),void 0!==t.enable&&(this.enable=t.enable),this.gravity.load(t.gravity);const s=null!==(i=t.outMode)&&void 0!==i?i:t.out_mode;void 0===t.outModes&&void 0===s||("string"==typeof t.outModes||void 0===t.outModes&&void 0!==s?this.outModes.load({default:null!==(e=t.outModes)&&void 0!==e?e:s}):this.outModes.load(t.outModes)),this.path.load(null!==(o=t.path)&&void 0!==o?o:t.noise),void 0!==t.random&&(this.random=t.random),void 0!==t.size&&(this.size=t.size),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.straight&&(this.straight=t.straight),this.trail.load(t.trail),void 0!==t.vibrate&&(this.vibrate=t.vibrate),void 0!==t.warp&&(this.warp=t.warp)}}class ft{constructor(){this.enable=!1,this.area=800,this.factor=1e3}get value_area(){return this.area}set value_area(t){this.area=t}load(t){var i;if(void 0===t)return;void 0!==t.enable&&(this.enable=t.enable);const e=null!==(i=t.area)&&void 0!==i?i:t.value_area;void 0!==e&&(this.area=e),void 0!==t.factor&&(this.factor=t.factor)}}class gt{constructor(){this.density=new ft,this.limit=0,this.value=100}get max(){return this.limit}set max(t){this.limit=t}load(t){var i;if(void 0===t)return;this.density.load(t.density);const e=null!==(i=t.limit)&&void 0!==i?i:t.max;void 0!==e&&(this.limit=e),void 0!==t.value&&(this.value=t.value)}}class bt{constructor(){this.count=0,this.enable=!1,this.speed=1,this.sync=!1}load(t){t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class wt extends bt{constructor(){super(),this.destroy=y.none,this.enable=!1,this.minimumValue=0,this.speed=2,this.startValue=g.random,this.sync=!1}get opacity_min(){return this.minimumValue}set opacity_min(t){this.minimumValue=t}load(t){var i;if(void 0===t)return;super.load(t),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.enable&&(this.enable=t.enable);const e=null!==(i=t.minimumValue)&&void 0!==i?i:t.opacity_min;void 0!==e&&(this.minimumValue=e),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.startValue&&(this.startValue=t.startValue),void 0!==t.sync&&(this.sync=t.sync)}}class xt extends dt{constructor(){super(),this.animation=new wt,this.random.minimumValue=.1,this.value=1}get anim(){return this.animation}set anim(t){this.animation=t}load(t){var i;t&&(super.load(t),this.animation.load(null!==(i=t.animation)&&void 0!==i?i:t.anim))}}class kt{constructor(){this.options={},this.type=f.circle}get image(){var t;return null!==(t=this.options[f.image])&&void 0!==t?t:this.options[f.images]}set image(t){this.options[f.image]=t,this.options[f.images]=t}get custom(){return this.options}set custom(t){this.options=t}get images(){return this.image instanceof Array?this.image:[this.image]}set images(t){this.image=t}get stroke(){return[]}set stroke(t){}get character(){var t;return null!==(t=this.options[f.character])&&void 0!==t?t:this.options[f.char]}set character(t){this.options[f.character]=t,this.options[f.char]=t}get polygon(){var t;return null!==(t=this.options[f.polygon])&&void 0!==t?t:this.options[f.star]}set polygon(t){this.options[f.polygon]=t,this.options[f.star]=t}load(t){var i,e,o;if(void 0===t)return;const s=null!==(i=t.options)&&void 0!==i?i:t.custom;if(void 0!==s)for(const t in s){const i=s[t];void 0!==i&&(this.options[t]=P.deepExtend(null!==(e=this.options[t])&&void 0!==e?e:{},i))}this.loadShape(t.character,f.character,f.char,!0),this.loadShape(t.polygon,f.polygon,f.star,!1),this.loadShape(null!==(o=t.image)&&void 0!==o?o:t.images,f.image,f.images,!0),void 0!==t.type&&(this.type=t.type)}loadShape(t,i,e,o){var s,n,a,r;void 0!==t&&(t instanceof Array?(this.options[i]instanceof Array||(this.options[i]=[],this.options[e]&&!o||(this.options[e]=[])),this.options[i]=P.deepExtend(null!==(s=this.options[i])&&void 0!==s?s:[],t),this.options[e]&&!o||(this.options[e]=P.deepExtend(null!==(n=this.options[e])&&void 0!==n?n:[],t))):(this.options[i]instanceof Array&&(this.options[i]={},this.options[e]&&!o||(this.options[e]={})),this.options[i]=P.deepExtend(null!==(a=this.options[i])&&void 0!==a?a:{},t),this.options[e]&&!o||(this.options[e]=P.deepExtend(null!==(r=this.options[e])&&void 0!==r?r:{},t))))}}class zt extends bt{constructor(){super(),this.destroy=y.none,this.enable=!1,this.minimumValue=0,this.speed=5,this.startValue=g.random,this.sync=!1}get size_min(){return this.minimumValue}set size_min(t){this.minimumValue=t}load(t){var i;if(void 0===t)return;super.load(t),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.enable&&(this.enable=t.enable);const e=null!==(i=t.minimumValue)&&void 0!==i?i:t.size_min;void 0!==e&&(this.minimumValue=e),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.startValue&&(this.startValue=t.startValue),void 0!==t.sync&&(this.sync=t.sync)}}class Pt extends dt{constructor(){super(),this.animation=new zt,this.random.minimumValue=1,this.value=3}get anim(){return this.animation}set anim(t){this.animation=t}load(t){var i;if(!t)return;super.load(t);const e=null!==(i=t.animation)&&void 0!==i?i:t.anim;void 0!==e&&this.animation.load(e)}}class Mt{constructor(){this.enable=!1,this.speed=0,this.sync=!1}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class St extends dt{constructor(){super(),this.animation=new Mt,this.direction=n.clockwise,this.path=!1}load(t){t&&(super.load(t),void 0!==t.direction&&(this.direction=t.direction),this.animation.load(t.animation),void 0!==t.path&&(this.path=t.path))}}class Ct{constructor(){this.blur=0,this.color=new ot,this.enable=!1,this.offset={x:0,y:0},this.color.value="#000000"}load(t){void 0!==t&&(void 0!==t.blur&&(this.blur=t.blur),this.color=ot.create(this.color,t.color),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.offset&&(void 0!==t.offset.x&&(this.offset.x=t.offset.x),void 0!==t.offset.y&&(this.offset.y=t.offset.y)))}}class Rt{constructor(){this.count=0,this.enable=!1,this.offset=0,this.speed=1,this.sync=!0}load(t){void 0!==t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.offset&&(this.offset=a.setRangeValue(t.offset)),void 0!==t.speed&&(this.speed=t.speed),void 0!==t.sync&&(this.sync=t.sync))}}class At{constructor(){this.h=new Rt,this.s=new Rt,this.l=new Rt}load(t){t&&(this.h.load(t.h),this.s.load(t.s),this.l.load(t.l))}}class Tt extends ot{constructor(){super(),this.animation=new At}static create(t,i){const e=null!=t?t:new Tt;return void 0!==i&&e.load("string"==typeof i?{value:i}:i),e}load(t){if(super.load(t),!t)return;const i=t.animation;void 0!==i&&(void 0!==i.enable?this.animation.h.load(i):this.animation.load(t.animation))}}class Dt{constructor(){this.width=0}load(t){void 0!==t&&(void 0!==t.color&&(this.color=Tt.create(this.color,t.color)),void 0!==t.width&&(this.width=t.width),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Ot extends dt{constructor(){super(),this.random.minimumValue=.1,this.value=1}}class Et{constructor(){this.horizontal=new Ot,this.vertical=new Ot}load(t){t&&(this.horizontal.load(t.horizontal),this.vertical.load(t.vertical))}}class It{constructor(){this.enable=!0,this.retries=0}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.retries&&(this.retries=t.retries))}}class Vt{constructor(){this.bounce=new Et,this.enable=!1,this.mode=d.bounce,this.overlap=new It}load(t){void 0!==t&&(this.bounce.load(t.bounce),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.overlap.load(t.overlap))}}class Ft{constructor(){this.enable=!1,this.frequency=.05,this.opacity=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.frequency&&(this.frequency=t.frequency),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Ht{constructor(){this.lines=new Ft,this.particles=new Ft}load(t){void 0!==t&&(this.lines.load(t.lines),this.particles.load(t.particles))}}class Lt extends dt{constructor(){super(),this.sync=!1}load(t){t&&(super.load(t),void 0!==t.sync&&(this.sync=t.sync))}}class qt extends dt{constructor(){super(),this.random.minimumValue=1e-4,this.sync=!1}load(t){void 0!==t&&(super.load(t),void 0!==t.sync&&(this.sync=t.sync))}}class _t{constructor(){this.count=0,this.delay=new Lt,this.duration=new qt}load(t){void 0!==t&&(void 0!==t.count&&(this.count=t.count),this.delay.load(t.delay),this.duration.load(t.duration))}}class Bt{constructor(){this.bounce=new Et,this.collisions=new Vt,this.color=new Tt,this.life=new _t,this.links=new at,this.move=new mt,this.number=new gt,this.opacity=new xt,this.reduceDuplicates=!1,this.rotate=new St,this.shadow=new Ct,this.shape=new kt,this.size=new Pt,this.stroke=new Dt,this.twinkle=new Ht}get line_linked(){return this.links}set line_linked(t){this.links=t}get lineLinked(){return this.links}set lineLinked(t){this.links=t}load(t){var i,e,o,s,n,a,r;if(void 0===t)return;this.bounce.load(t.bounce),this.color=Tt.create(this.color,t.color),this.life.load(t.life);const l=null!==(e=null!==(i=t.links)&&void 0!==i?i:t.lineLinked)&&void 0!==e?e:t.line_linked;void 0!==l&&this.links.load(l),this.move.load(t.move),this.number.load(t.number),this.opacity.load(t.opacity),void 0!==t.reduceDuplicates&&(this.reduceDuplicates=t.reduceDuplicates),this.rotate.load(t.rotate),this.shape.load(t.shape),this.size.load(t.size),this.shadow.load(t.shadow),this.twinkle.load(t.twinkle);const c=null!==(s=null===(o=t.move)||void 0===o?void 0:o.collisions)&&void 0!==s?s:null===(n=t.move)||void 0===n?void 0:n.bounce;void 0!==c&&(this.collisions.enable=c),this.collisions.load(t.collisions);const d=null!==(a=t.stroke)&&void 0!==a?a:null===(r=t.shape)||void 0===r?void 0:r.stroke;void 0!==d&&(d instanceof Array?this.stroke=d.map(t=>{const i=new Dt;return i.load(t),i}):(this.stroke instanceof Array&&(this.stroke=new Dt),this.stroke.load(d)))}}class Wt{constructor(t){this.container=t}startInfection(t){t>this.container.actualOptions.infection.stages.length||t<0||(this.infectionDelay=0,this.infectionDelayStage=t)}updateInfectionStage(t){t>this.container.actualOptions.infection.stages.length||t<0||void 0!==this.infectionStage&&this.infectionStage>t||(this.infectionStage=t,this.infectionTime=0)}updateInfection(t){const i=this.container.actualOptions,e=i.infection,o=i.infection.stages,s=o.length;if(void 0!==this.infectionDelay&&void 0!==this.infectionDelayStage){const i=this.infectionDelayStage;if(i>s||i<0)return;this.infectionDelay>1e3*e.delay?(this.infectionStage=i,this.infectionTime=0,delete this.infectionDelay,delete this.infectionDelayStage):this.infectionDelay+=t}else delete this.infectionDelay,delete this.infectionDelayStage;if(void 0!==this.infectionStage&&void 0!==this.infectionTime){const i=o[this.infectionStage];void 0!==i.duration&&i.duration>=0&&this.infectionTime>1e3*i.duration?this.nextInfectionStage():this.infectionTime+=t}else delete this.infectionStage,delete this.infectionTime}nextInfectionStage(){const t=this.container.actualOptions,i=t.infection.stages.length;if(!(i<=0||void 0===this.infectionStage)&&(this.infectionTime=0,i<=++this.infectionStage)){if(t.infection.cure)return delete this.infectionStage,void delete this.infectionTime;this.infectionStage=0,this.infectionTime=0}}}class Gt{constructor(t,i){this.container=t,this.particle=i}move(t){const i=this.particle;i.bubble.inRange=!1,i.links=[];for(const[,e]of this.container.plugins){if(i.destroyed)break;e.particleUpdate&&e.particleUpdate(i,t)}i.destroyed||(this.moveParticle(t),this.moveParallax())}moveParticle(t){var i,e;const o=this.particle,s=o.options;if(!s.move.enable)return;const n=this.container,r=this.getProximitySpeedFactor(),l=(null!==(i=o.moveSpeed)&&void 0!==i?i:n.retina.moveSpeed)*n.retina.reduceFactor,c=null!==(e=o.sizeValue)&&void 0!==e?e:n.retina.sizeValue,d=l/2*(s.move.size?o.getRadius()/c:1)*r*t.factor;this.applyPath(t);const h=s.move.gravity;h.enable&&(o.velocity.vertical+=h.acceleration*t.factor/(60*d));const u=1-o.options.move.decay;o.velocity.horizontal*=u,o.velocity.vertical*=u;const v={horizontal:o.velocity.horizontal*d,vertical:o.velocity.vertical*d};h.enable&&v.vertical>=h.maxSpeed&&h.maxSpeed>0&&(v.vertical=h.maxSpeed,o.velocity.vertical=v.vertical/d),o.position.x+=v.horizontal,o.position.y+=v.vertical,s.move.vibrate&&(o.position.x+=Math.sin(o.position.x*Math.cos(o.position.y)),o.position.y+=Math.cos(o.position.y*Math.sin(o.position.x)));const p=o.initialPosition,y=a.getDistance(p,o.position);o.maxDistance&&(y>=o.maxDistance&&!o.misplaced?(o.misplaced=y>o.maxDistance,o.velocity.horizontal=o.velocity.vertical/2-o.velocity.horizontal,o.velocity.vertical=o.velocity.horizontal/2-o.velocity.vertical):y<o.maxDistance&&o.misplaced?o.misplaced=!1:o.misplaced&&((o.position.x<p.x&&o.velocity.horizontal<0||o.position.x>p.x&&o.velocity.horizontal>0)&&(o.velocity.horizontal*=-Math.random()),(o.position.y<p.y&&o.velocity.vertical<0||o.position.y>p.y&&o.velocity.vertical>0)&&(o.velocity.vertical*=-Math.random())))}applyPath(t){const i=this.particle,e=i.options.move.path;if(!e.enable)return;const o=this.container;if(i.lastPathTime<=i.pathDelay)return void(i.lastPathTime+=t.value);let s=o.pathGenerator;if(e.generator){const t=B.getPathGenerator(e.generator);t&&(s=t)}const n=s.generate(i);i.velocity.horizontal+=Math.cos(n.angle)*n.length,i.velocity.vertical+=Math.sin(n.angle)*n.length,e.clamp&&(i.velocity.horizontal=a.clamp(i.velocity.horizontal,-1,1),i.velocity.vertical=a.clamp(i.velocity.vertical,-1,1)),i.lastPathTime-=i.pathDelay}moveParallax(){const t=this.container,i=t.actualOptions;if(P.isSsr()||!i.interactivity.events.onHover.parallax.enable)return;const e=this.particle,o=i.interactivity.events.onHover.parallax.force,s=t.interactivity.mouse.position;if(!s)return;const n=t.canvas.size.width/2,a=t.canvas.size.height/2,r=i.interactivity.events.onHover.parallax.smooth,l=e.getRadius()/o,c=(s.x-n)*l,d=(s.y-a)*l;e.offset.x+=(c-e.offset.x)/r,e.offset.y+=(d-e.offset.y)/r}getProximitySpeedFactor(){const t=this.container,i=t.actualOptions;if(!P.isInArray(c.slow,i.interactivity.events.onHover.mode))return 1;const e=this.container.interactivity.mouse.position;if(!e)return 1;const o=this.particle.getPosition(),s=a.getDistance(e,o),n=t.retina.slowModeRadius;return s>n?1:(s/n||0)/i.interactivity.modes.slow.factor}}class Nt{constructor(t,i,e,o){var s,r,l,c,d,h,u,v,y;this.id=t,this.container=i,this.links=[],this.fill=!0,this.close=!0,this.lastPathTime=0,this.destroyed=!1,this.misplaced=!1,this.loops={opacity:0,size:0};const m=i.retina.pixelRatio,f=i.actualOptions,b=new Bt;b.load(f.particles);const w=b.shape.type,x=b.reduceDuplicates;if(this.shape=w instanceof Array?P.itemFromArray(w,this.id,x):w,null==o?void 0:o.shape){if(o.shape.type){const t=o.shape.type;this.shape=t instanceof Array?P.itemFromArray(t,this.id,x):t}const t=new kt;if(t.load(o.shape),this.shape){const i=t.options[this.shape];i&&(this.shapeData=P.deepExtend({},i instanceof Array?P.itemFromArray(i,this.id,x):i))}}else{const t=b.shape.options[this.shape];t&&(this.shapeData=P.deepExtend({},t instanceof Array?P.itemFromArray(t,this.id,x):t))}void 0!==o&&b.load(o),void 0!==(null===(s=this.shapeData)||void 0===s?void 0:s.particles)&&b.load(null===(r=this.shapeData)||void 0===r?void 0:r.particles),this.fill=null!==(c=null===(l=this.shapeData)||void 0===l?void 0:l.fill)&&void 0!==c?c:this.fill,this.close=null!==(h=null===(d=this.shapeData)||void 0===d?void 0:d.close)&&void 0!==h?h:this.close,this.options=b,this.pathDelay=1e3*a.getValue(this.options.move.path.delay),i.retina.initParticle(this);const k=this.options.color,z=this.options.size,M=a.getValue(z)*i.retina.pixelRatio,S="boolean"==typeof z.random?z.random:z.random.enable;this.size={value:M},this.direction=this.options.move.direction,this.bubble={inRange:!1},this.initialVelocity=this.calculateVelocity(),this.velocity={horizontal:this.initialVelocity.horizontal,vertical:this.initialVelocity.vertical},this.pathAngle=Math.atan2(this.initialVelocity.vertical,this.initialVelocity.horizontal);const C=this.options.rotate;this.rotate={value:(C.random.enable?360*Math.random():C.value)*Math.PI/180};let A=C.direction;if(A===n.random){A=Math.floor(2*Math.random())>0?n.counterClockwise:n.clockwise}switch(A){case n.counterClockwise:case"counterClockwise":this.rotate.status=p.decreasing;break;case n.clockwise:this.rotate.status=p.increasing}const T=this.options.rotate.animation;T.enable&&(this.rotate.velocity=T.speed/360*i.retina.reduceFactor,T.sync||(this.rotate.velocity*=Math.random()));const D=this.options.size.animation;if(D.enable){if(this.size.status=p.increasing,!S)switch(D.startValue){case g.min:this.size.value=D.minimumValue*m;break;case g.random:this.size.value=a.randomInRange(a.setRangeValue(D.minimumValue*m,this.size.value));break;case g.max:default:this.size.status=p.decreasing}this.size.velocity=(null!==(u=this.sizeAnimationSpeed)&&void 0!==u?u:i.retina.sizeAnimationSpeed)/100*i.retina.reduceFactor,D.sync||(this.size.velocity*=Math.random())}const O=R.colorToHsl(k,this.id,x);if(O){this.color={h:{value:O.h},s:{value:O.s},l:{value:O.l}};const t=this.options.color.animation;this.setColorAnimation(t.h,this.color.h),this.setColorAnimation(t.s,this.color.s),this.setColorAnimation(t.l,this.color.l)}this.position=this.calcPosition(this.container,e),this.initialPosition={x:this.position.x,y:this.position.y},this.offset={x:0,y:0};const E=this.options.opacity,I="boolean"==typeof E.random?E.random:E.random.enable;this.opacity={value:a.getValue(E)};const V=E.animation;if(V.enable){if(this.opacity.status=p.increasing,!I)switch(V.startValue){case g.min:this.opacity.value=V.minimumValue;break;case g.random:this.opacity.value=a.randomInRange(a.setRangeValue(V.minimumValue,this.opacity.value));break;case g.max:default:this.opacity.status=p.decreasing}this.opacity.velocity=V.speed/100*i.retina.reduceFactor,V.sync||(this.opacity.velocity*=Math.random())}this.sides=24;let F=i.drawers.get(this.shape);F||(F=B.getShapeDrawer(this.shape),F&&i.drawers.set(this.shape,F));const H=null==F?void 0:F.getSidesCount;H&&(this.sides=H(this));const L=this.loadImageShape(i,F);L&&(this.image=L.image,this.fill=L.fill,this.close=L.close),this.stroke=this.options.stroke instanceof Array?P.itemFromArray(this.options.stroke,this.id,x):this.options.stroke,this.strokeWidth=this.stroke.width*i.retina.pixelRatio;const q=null!==(v=R.colorToHsl(this.stroke.color))&&void 0!==v?v:this.getFillColor();if(q){this.strokeColor={h:{value:q.h},s:{value:q.s},l:{value:q.l}};const t=null===(y=this.stroke.color)||void 0===y?void 0:y.animation;t&&this.strokeColor&&(this.setColorAnimation(t.h,this.strokeColor.h),this.setColorAnimation(t.s,this.strokeColor.s),this.setColorAnimation(t.l,this.strokeColor.l))}const _=b.life;this.lifeDelay=i.retina.reduceFactor?a.getValue(_.delay)*(_.delay.sync?1:Math.random())/i.retina.reduceFactor*1e3:0,this.lifeDelayTime=0,this.lifeDuration=i.retina.reduceFactor?a.getValue(_.duration)*(_.duration.sync?1:Math.random())/i.retina.reduceFactor*1e3:0,this.lifeTime=0,this.livesRemaining=b.life.count,this.spawning=this.lifeDelay>0,this.lifeDuration<=0&&(this.lifeDuration=-1),this.livesRemaining<=0&&(this.livesRemaining=-1),this.shadowColor=R.colorToRgb(this.options.shadow.color),this.updater=new et(i,this),this.infecter=new Wt(i),this.mover=new Gt(i,this)}move(t){this.mover.move(t)}update(t){this.updater.update(t)}draw(t){this.container.canvas.drawParticle(this,t)}getPosition(){return{x:this.position.x+this.offset.x,y:this.position.y+this.offset.y}}getRadius(){return this.bubble.radius||this.size.value}getFillColor(){var t;return null!==(t=this.bubble.color)&&void 0!==t?t:R.getHslFromAnimation(this.color)}getStrokeColor(){var t,i;return null!==(i=null!==(t=this.bubble.color)&&void 0!==t?t:R.getHslFromAnimation(this.strokeColor))&&void 0!==i?i:this.getFillColor()}destroy(){this.destroyed=!0,this.bubble.inRange=!1,this.links=[]}reset(){this.loops.opacity=0,this.loops.size=0}setColorAnimation(t,i){if(t.enable){if(i.velocity=t.speed/100*this.container.retina.reduceFactor,t.sync)return;i.status=p.increasing,i.velocity*=Math.random(),i.value&&(i.value*=Math.random())}else i.velocity=0}calcPosition(t,i,e=0){var o,s;for(const[,e]of t.plugins){const t=void 0!==e.particlePosition?e.particlePosition(i,this):void 0;if(void 0!==t)return P.deepExtend({},t)}const n={x:null!==(o=null==i?void 0:i.x)&&void 0!==o?o:Math.random()*t.canvas.size.width,y:null!==(s=null==i?void 0:i.y)&&void 0!==s?s:Math.random()*t.canvas.size.height},a=this.options.move.outMode;return(P.isInArray(a,h.bounce)||P.isInArray(a,h.bounceHorizontal))&&(n.x>t.canvas.size.width-2*this.size.value?n.x-=this.size.value:n.x<2*this.size.value&&(n.x+=this.size.value)),(P.isInArray(a,h.bounce)||P.isInArray(a,h.bounceVertical))&&(n.y>t.canvas.size.height-2*this.size.value?n.y-=this.size.value:n.y<2*this.size.value&&(n.y+=this.size.value)),this.checkOverlap(n,e)?this.calcPosition(t,void 0,e+1):n}checkOverlap(t,i=0){const e=this.options.collisions.overlap;if(!e.enable){const o=e.retries;if(o>=0&&i>o)throw new Error("Particle is overlapping and can't be placed");let s=!1;for(const i of this.container.particles.array)if(a.getDistance(t,i.position)<this.size.value+i.size.value){s=!0;break}return s}return!1}calculateVelocity(){const t=a.getParticleBaseVelocity(this),i={horizontal:0,vertical:0},e=this.options.move;let o,s=Math.PI/4;"number"==typeof e.angle?o=Math.PI/180*e.angle:(o=Math.PI/180*e.angle.value,s=Math.PI/180*e.angle.offset);const n={left:Math.sin(s+o/2)-Math.sin(s-o/2),right:Math.cos(s+o/2)-Math.cos(s-o/2)};return e.straight?(i.horizontal=t.x,i.vertical=t.y,e.random&&(i.horizontal+=a.randomInRange(a.setRangeValue(n.left,n.right))/2,i.vertical+=a.randomInRange(a.setRangeValue(n.left,n.right))/2)):(i.horizontal=t.x+a.randomInRange(a.setRangeValue(n.left,n.right))/2,i.vertical=t.y+a.randomInRange(a.setRangeValue(n.left,n.right))/2),i}loadImageShape(t,i){var e,o,s,n,a;if(this.shape!==f.image&&this.shape!==f.images)return;const r=i.getImages(t).images,l=this.shapeData,c=null!==(e=r.find(t=>t.source===l.src))&&void 0!==e?e:r[0],d=this.getFillColor();let h;if(!c)return;if(void 0!==c.svgData&&l.replaceColor&&d){const t=R.replaceColorSvg(c,d,this.opacity.value),i=new Blob([t],{type:"image/svg+xml"}),e=URL||window.URL||window.webkitURL||window,s=e.createObjectURL(i),n=new Image;h={data:c,loaded:!1,ratio:l.width/l.height,replaceColor:null!==(o=l.replaceColor)&&void 0!==o?o:l.replace_color,source:l.src},n.addEventListener("load",()=>{this.image&&(this.image.loaded=!0,c.element=n),e.revokeObjectURL(s)}),n.addEventListener("error",()=>{e.revokeObjectURL(s),P.loadImage(l.src).then(t=>{this.image&&t&&(c.element=t.element,this.image.loaded=!0)})}),n.src=s}else h={data:c,loaded:!0,ratio:l.width/l.height,replaceColor:null!==(s=l.replaceColor)&&void 0!==s?s:l.replace_color,source:l.src};return h.ratio||(h.ratio=1),{image:h,fill:null!==(n=l.fill)&&void 0!==n?n:this.fill,close:null!==(a=l.close)&&void 0!==a?a:this.close}}}class Ut{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.interactivity.mouse,e=t.actualOptions.interactivity.events;if(!e.onHover.enable||!i.position)return!1;const o=e.onHover.mode;return P.isInArray(c.grab,o)}reset(){}interact(){var t;const i=this.container,e=i.actualOptions.interactivity;if(e.events.onHover.enable&&i.interactivity.status===M.mouseMoveEvent){const o=i.interactivity.mouse.position;if(void 0===o)return;const s=i.retina.grabModeDistance,n=i.particles.quadTree.queryCircle(o,s);for(const r of n){const n=r.getPosition(),l=a.getDistance(n,o);if(l<=s){const n=e.modes.grab.links,a=n.opacity,c=a-l*a/s;if(c>0){const e=null!==(t=n.color)&&void 0!==t?t:r.options.links.color;if(!i.particles.grabLineColor){const t=i.actualOptions.interactivity.modes.grab.links;i.particles.grabLineColor=R.getLinkRandomColor(e,t.blink,t.consent)}const s=R.getLinkColor(r,void 0,i.particles.grabLineColor);if(void 0===s)return;i.canvas.drawGrabLine(r,s,c,o)}}}}}}class $t{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.actualOptions,e=t.interactivity.mouse,o=i.interactivity.events,s=o.onDiv,n=P.isDivModeEnabled(l.repulse,s);if(!(n||o.onHover.enable&&e.position||o.onClick.enable&&e.clickPosition))return!1;const a=o.onHover.mode,d=o.onClick.mode;return P.isInArray(c.repulse,a)||P.isInArray(r.repulse,d)||n}reset(){}interact(){const t=this.container,i=t.actualOptions,e=t.interactivity.status===M.mouseMoveEvent,o=i.interactivity.events,s=o.onHover.enable,n=o.onHover.mode,a=o.onClick.enable,d=o.onClick.mode,h=o.onDiv;e&&s&&P.isInArray(c.repulse,n)?this.hoverRepulse():a&&P.isInArray(r.repulse,d)?this.clickRepulse():P.divModeExecute(l.repulse,h,(t,i)=>this.singleSelectorRepulse(t,i))}singleSelectorRepulse(t,i){const e=this.container,o=document.querySelectorAll(t);o.length&&o.forEach(t=>{const o=t,s=e.retina.pixelRatio,n={x:(o.offsetLeft+o.offsetWidth/2)*s,y:(o.offsetTop+o.offsetHeight/2)*s},a=o.offsetWidth/2*s,r=i.type===b.circle?new O(n.x,n.y,a):new E(o.offsetLeft*s,o.offsetTop*s,o.offsetWidth*s,o.offsetHeight*s),l=e.actualOptions.interactivity.modes.repulse.divs,c=P.divMode(l,o);this.processRepulse(n,a,r,c)})}hoverRepulse(){const t=this.container,i=t.interactivity.mouse.position;if(!i)return;const e=t.retina.repulseModeDistance;this.processRepulse(i,e,new O(i.x,i.y,e))}processRepulse(t,i,e,o){var s;const n=this.container,r=n.particles.quadTree.query(e);for(const e of r){const{dx:r,dy:l,distance:c}=a.getDistances(e.position,t),d={x:r/c,y:l/c},h=100*(null!==(s=null==o?void 0:o.speed)&&void 0!==s?s:n.actualOptions.interactivity.modes.repulse.speed),u=a.clamp((1-Math.pow(c/i,2))*h,0,50);e.position.x=e.position.x+d.x*u,e.position.y=e.position.y+d.y*u}}clickRepulse(){const t=this.container;if(t.repulse.finish||(t.repulse.count||(t.repulse.count=0),t.repulse.count++,t.repulse.count===t.particles.count&&(t.repulse.finish=!0)),t.repulse.clicking){const i=t.retina.repulseModeDistance,e=Math.pow(i/6,3),o=t.interactivity.mouse.clickPosition;if(void 0===o)return;const s=new O(o.x,o.y,e),n=t.particles.quadTree.query(s);for(const i of n){const{dx:s,dy:n,distance:r}=a.getDistances(o,i.position),l=r*r,c=t.actualOptions.interactivity.modes.repulse.speed,d=-e*c/l;if(l<=e){t.repulse.particles.push(i);const e=Math.atan2(n,s);i.velocity.horizontal=d*Math.cos(e),i.velocity.vertical=d*Math.sin(e)}}}else if(!1===t.repulse.clicking){for(const i of t.repulse.particles)i.velocity.horizontal=i.initialVelocity.horizontal,i.velocity.vertical=i.initialVelocity.vertical;t.repulse.particles=[]}}}function jt(t,i,e,o){if(i>e){const s=t+(i-e)*o;return a.clamp(s,t,i)}if(i<e){const s=t-(e-i)*o;return a.clamp(s,i,t)}}class Xt{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.actualOptions,e=t.interactivity.mouse,o=i.interactivity.events,s=o.onDiv,n=P.isDivModeEnabled(l.bubble,s);if(!(n||o.onHover.enable&&e.position||o.onClick.enable&&e.clickPosition))return!1;const a=o.onHover.mode,d=o.onClick.mode;return P.isInArray(c.bubble,a)||P.isInArray(r.bubble,d)||n}reset(t,i){t.bubble.inRange&&!i||(delete t.bubble.div,delete t.bubble.opacity,delete t.bubble.radius,delete t.bubble.color)}interact(){const t=this.container.actualOptions.interactivity.events,i=t.onHover,e=t.onClick,o=i.enable,s=i.mode,n=e.enable,a=e.mode,d=t.onDiv;o&&P.isInArray(c.bubble,s)?this.hoverBubble():n&&P.isInArray(r.bubble,a)?this.clickBubble():P.divModeExecute(l.bubble,d,(t,i)=>this.singleSelectorHover(t,i))}singleSelectorHover(t,i){const e=this.container,o=document.querySelectorAll(t);o.length&&o.forEach(t=>{const o=t,s=e.retina.pixelRatio,n={x:(o.offsetLeft+o.offsetWidth/2)*s,y:(o.offsetTop+o.offsetHeight/2)*s},a=o.offsetWidth/2*s,r=i.type===b.circle?new O(n.x,n.y,a):new E(o.offsetLeft*s,o.offsetTop*s,o.offsetWidth*s,o.offsetHeight*s),l=e.particles.quadTree.query(r);for(const t of l){if(!r.contains(t.getPosition()))continue;t.bubble.inRange=!0;const i=e.actualOptions.interactivity.modes.bubble.divs,s=P.divMode(i,o);t.bubble.div&&t.bubble.div===o||(this.reset(t,!0),t.bubble.div=o),this.hoverBubbleSize(t,1,s),this.hoverBubbleOpacity(t,1,s),this.hoverBubbleColor(t,s)}})}process(t,i,e,o){const s=this.container,n=o.bubbleObj.optValue;if(void 0===n)return;const a=s.actualOptions.interactivity.modes.bubble.duration,r=s.retina.bubbleModeDistance,l=o.particlesObj.optValue,c=o.bubbleObj.value,d=o.particlesObj.value||0,h=o.type;if(n!==l)if(s.bubble.durationEnd)c&&(h===m.size&&delete t.bubble.radius,h===m.opacity&&delete t.bubble.opacity);else if(i<=r){if((null!=c?c:d)!==n){const i=d-e*(d-n)/a;h===m.size&&(t.bubble.radius=i),h===m.opacity&&(t.bubble.opacity=i)}}else h===m.size&&delete t.bubble.radius,h===m.opacity&&delete t.bubble.opacity}clickBubble(){var t;const i=this.container,e=i.actualOptions,o=i.interactivity.mouse.clickPosition;if(void 0===o)return;const s=i.retina.bubbleModeDistance,n=i.particles.quadTree.queryCircle(o,s);for(const s of n){if(!i.bubble.clicking)continue;s.bubble.inRange=!i.bubble.durationEnd;const n=s.getPosition(),r=a.getDistance(n,o),l=((new Date).getTime()-(i.interactivity.mouse.clickTime||0))/1e3;l>e.interactivity.modes.bubble.duration&&(i.bubble.durationEnd=!0),l>2*e.interactivity.modes.bubble.duration&&(i.bubble.clicking=!1,i.bubble.durationEnd=!1);const c={bubbleObj:{optValue:i.retina.bubbleModeSize,value:s.bubble.radius},particlesObj:{optValue:null!==(t=s.sizeValue)&&void 0!==t?t:i.retina.sizeValue,value:s.size.value},type:m.size};this.process(s,r,l,c);const d={bubbleObj:{optValue:e.interactivity.modes.bubble.opacity,value:s.bubble.opacity},particlesObj:{optValue:s.options.opacity.value,value:s.opacity.value},type:m.opacity};this.process(s,r,l,d),i.bubble.durationEnd?delete s.bubble.color:r<=i.retina.bubbleModeDistance?this.hoverBubbleColor(s):delete s.bubble.color}}hoverBubble(){const t=this.container,i=t.interactivity.mouse.position;if(void 0===i)return;const e=t.retina.bubbleModeDistance,o=t.particles.quadTree.queryCircle(i,e);for(const s of o){s.bubble.inRange=!0;const o=s.getPosition(),n=a.getDistance(o,i),r=1-n/e;n<=e?r>=0&&t.interactivity.status===M.mouseMoveEvent&&(this.hoverBubbleSize(s,r),this.hoverBubbleOpacity(s,r),this.hoverBubbleColor(s)):this.reset(s),t.interactivity.status===M.mouseLeaveEvent&&this.reset(s)}}hoverBubbleSize(t,i,e){var o;const s=this.container,n=(null==e?void 0:e.size)?e.size*s.retina.pixelRatio:s.retina.bubbleModeSize;if(void 0===n)return;const a=null!==(o=t.sizeValue)&&void 0!==o?o:s.retina.sizeValue,r=jt(t.size.value,n,a,i);void 0!==r&&(t.bubble.radius=r)}hoverBubbleOpacity(t,i,e){var o;const s=this.container.actualOptions,n=null!==(o=null==e?void 0:e.opacity)&&void 0!==o?o:s.interactivity.modes.bubble.opacity;if(void 0===n)return;const a=t.options.opacity.value,r=jt(t.opacity.value,n,a,i);void 0!==r&&(t.bubble.opacity=r)}hoverBubbleColor(t,i){var e;const o=this.container.actualOptions;if(void 0===t.bubble.color){const s=null!==(e=null==i?void 0:i.color)&&void 0!==e?e:o.interactivity.modes.bubble.color;if(void 0===s)return;const n=s instanceof Array?P.itemFromArray(s):s;t.bubble.color=R.colorToHsl(n)}}}class Yt{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.interactivity.mouse,e=t.actualOptions.interactivity.events;if(!e.onHover.enable||!i.position)return!1;const o=e.onHover.mode;return P.isInArray(c.connect,o)}reset(){}interact(){const t=this.container;if(t.actualOptions.interactivity.events.onHover.enable&&"mousemove"===t.interactivity.status){const i=t.interactivity.mouse.position;if(!i)return;const e=Math.abs(t.retina.connectModeRadius),o=t.particles.quadTree.queryCircle(i,e);let s=0;for(const i of o){const e=i.getPosition();for(const n of o.slice(s+1)){const o=n.getPosition(),s=Math.abs(t.retina.connectModeDistance),a=Math.abs(e.x-o.x),r=Math.abs(e.y-o.y);a<s&&r<s&&t.canvas.drawConnectLine(i,n)}++s}}}}class Jt{constructor(t){this.container=t}isEnabled(t){return t.options.links.enable}reset(){}interact(t){var i;const e=this.container,o=t.options.links,s=o.opacity,n=null!==(i=t.linksDistance)&&void 0!==i?i:e.retina.linksDistance,r=e.canvas.size,l=o.warp,c=t.getPosition(),d=l?new I(c.x,c.y,n,r):new O(c.x,c.y,n),h=e.particles.quadTree.query(d);for(const i of h){const d=i.options.links;if(t===i||!d.enable||o.id!==d.id||i.spawning||i.destroyed)continue;const h=i.getPosition();let u=a.getDistance(c,h);if(l&&u>n){const t={x:h.x-r.width,y:h.y};if(u=a.getDistance(c,t),u>n){const t={x:h.x-r.width,y:h.y-r.height};if(u=a.getDistance(c,t),u>n){const t={x:h.x,y:h.y-r.height};u=a.getDistance(c,t)}}}if(u>n)return;const v=(1-u/n)*s,p=t.options.links;let y=void 0!==p.id?e.particles.linksColors.get(p.id):e.particles.linksColor;if(!y){const t=p.color;y=R.getLinkRandomColor(t,p.blink,p.consent),void 0!==p.id?e.particles.linksColors.set(p.id,y):e.particles.linksColor=y}-1===i.links.map(t=>t.destination).indexOf(t)&&-1===t.links.map(t=>t.destination).indexOf(i)&&t.links.push({destination:i,opacity:v})}}}class Qt{constructor(t){this.container=t}interact(t){var i;const e=this.container,o=null!==(i=t.linksDistance)&&void 0!==i?i:e.retina.linksDistance,s=t.getPosition(),n=e.particles.quadTree.queryCircle(s,o);for(const i of n){if(t===i||!i.options.move.attract.enable||i.destroyed||i.spawning)continue;const e=i.getPosition(),{dx:o,dy:n}=a.getDistances(s,e),r=t.options.move.attract.rotate,l=o/(1e3*r.x),c=n/(1e3*r.y);t.velocity.horizontal-=l,t.velocity.vertical-=c,i.velocity.horizontal+=l,i.velocity.vertical+=c}}isEnabled(t){return t.options.move.attract.enable}reset(){}}class Zt{constructor(t){this.container=t}isEnabled(t){return t.options.collisions.enable}reset(){}interact(t){const i=this.container,e=t.getPosition(),o=i.particles.quadTree.queryCircle(e,2*t.getRadius());for(const i of o){if(t===i||!i.options.collisions.enable||t.options.collisions.mode!==i.options.collisions.mode||i.destroyed||i.spawning)continue;const o=i.getPosition();a.getDistance(e,o)<=t.getRadius()+i.getRadius()&&this.resolveCollision(t,i)}}resolveCollision(t,i){switch(t.options.collisions.mode){case d.absorb:this.absorb(t,i);break;case d.bounce:!function(t,i){P.circleBounce(P.circleBounceDataFromParticle(t),P.circleBounceDataFromParticle(i))}(t,i);break;case d.destroy:!function(t,i){void 0===t.getRadius()&&void 0!==i.getRadius()?t.destroy():void 0!==t.getRadius()&&void 0===i.getRadius()?i.destroy():void 0!==t.getRadius()&&void 0!==i.getRadius()&&(t.getRadius()>=i.getRadius()?i.destroy():t.destroy())}(t,i)}}absorb(t,i){const e=this.container,o=e.actualOptions.fpsLimit/1e3;if(void 0===t.getRadius()&&void 0!==i.getRadius())t.destroy();else if(void 0!==t.getRadius()&&void 0===i.getRadius())i.destroy();else if(void 0!==t.getRadius()&&void 0!==i.getRadius())if(t.getRadius()>=i.getRadius()){const s=a.clamp(t.getRadius()/i.getRadius(),0,i.getRadius())*o;t.size.value+=s,i.size.value-=s,i.getRadius()<=e.retina.pixelRatio&&(i.size.value=0,i.destroy())}else{const s=a.clamp(i.getRadius()/t.getRadius(),0,t.getRadius())*o;t.size.value-=s,i.size.value+=s,t.getRadius()<=e.retina.pixelRatio&&(t.size.value=0,t.destroy())}}}class Kt{constructor(t){this.container=t}isEnabled(){return this.container.actualOptions.infection.enable}reset(){}interact(t,i){var e,o;const s=t.infecter;if(s.updateInfection(i.value),void 0===s.infectionStage)return;const n=this.container,a=n.actualOptions.infection;if(!a.enable||a.stages.length<1)return;const r=a.stages[s.infectionStage],l=n.retina.pixelRatio,c=2*t.getRadius()+r.radius*l,d=t.getPosition(),h=null!==(e=r.infectedStage)&&void 0!==e?e:s.infectionStage,u=n.particles.quadTree.queryCircle(d,c),v=r.rate,p=u.length;for(const i of u){if(i===t||i.destroyed||i.spawning||void 0!==i.infecter.infectionStage&&i.infecter.infectionStage===s.infectionStage)continue;const e=i.infecter;if(Math.random()<v/p)if(void 0===e.infectionStage)e.startInfection(h);else if(e.infectionStage<s.infectionStage)e.updateInfectionStage(h);else if(e.infectionStage>s.infectionStage){const t=a.stages[e.infectionStage],i=null!==(o=null==t?void 0:t.infectedStage)&&void 0!==o?o:e.infectionStage;s.updateInfectionStage(i)}}}}class ti{constructor(t){this.container=t,this.delay=0}interact(t){if(!this.container.retina.reduceFactor)return;const i=this.container,e=i.actualOptions.interactivity.modes.trail,o=1e3*e.delay/this.container.retina.reduceFactor;this.delay<o&&(this.delay+=t.value),this.delay>=o&&(i.particles.push(e.quantity,i.interactivity.mouse,e.particles),this.delay-=o)}isEnabled(){const t=this.container,i=t.actualOptions,e=t.interactivity.mouse,o=i.interactivity.events;return e.clicking&&e.inside&&!!e.position&&P.isInArray(r.trail,o.onClick.mode)||e.inside&&!!e.position&&P.isInArray(c.trail,o.onHover.mode)}reset(){}}class ii{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.actualOptions,e=t.interactivity.mouse,o=i.interactivity.events;if(!(o.onHover.enable&&e.position||o.onClick.enable&&e.clickPosition))return!1;const s=o.onHover.mode,n=o.onClick.mode;return P.isInArray(c.attract,s)||P.isInArray(r.attract,n)}reset(){}interact(){const t=this.container,i=t.actualOptions,e=t.interactivity.status===M.mouseMoveEvent,o=i.interactivity.events,s=o.onHover.enable,n=o.onHover.mode,a=o.onClick.enable,l=o.onClick.mode;e&&s&&P.isInArray(c.attract,n)?this.hoverAttract():a&&P.isInArray(r.attract,l)&&this.clickAttract()}hoverAttract(){const t=this.container,i=t.interactivity.mouse.position;if(!i)return;const e=t.retina.attractModeDistance;this.processAttract(i,e,new O(i.x,i.y,e))}processAttract(t,i,e){const o=this.container,s=o.particles.quadTree.query(e);for(const e of s){const{dx:s,dy:n,distance:r}=a.getDistances(e.position,t),l={x:s/r,y:n/r},c=o.actualOptions.interactivity.modes.attract.speed,d=a.clamp((1-Math.pow(r/i,2))*c,0,50);e.position.x=e.position.x-l.x*d,e.position.y=e.position.y-l.y*d}}clickAttract(){const t=this.container;if(t.attract.finish||(t.attract.count||(t.attract.count=0),t.attract.count++,t.attract.count===t.particles.count&&(t.attract.finish=!0)),t.attract.clicking){const i=t.interactivity.mouse.clickPosition;if(!i)return;const e=t.retina.attractModeDistance;this.processAttract(i,e,new O(i.x,i.y,e))}else!1===t.attract.clicking&&(t.attract.particles=[])}}class ei{constructor(t){this.container=t}interact(t){const i=this.container;if(i.actualOptions.interactivity.events.onHover.enable&&"mousemove"===i.interactivity.status){const e=this.container.interactivity.mouse.position;e&&i.canvas.drawParticleShadow(t,e)}}isEnabled(){const t=this.container,i=t.interactivity.mouse,e=t.actualOptions.interactivity.events;if(!e.onHover.enable||!i.position)return!1;const o=e.onHover.mode;return P.isInArray(c.light,o)}reset(){}}class oi{constructor(t){this.container=t}interact(){const t=this.container;if(t.actualOptions.interactivity.events.onHover.enable&&"mousemove"===t.interactivity.status){const i=t.interactivity.mouse.position;if(!i)return;t.canvas.drawLight(i)}}isEnabled(){const t=this.container,i=t.interactivity.mouse,e=t.actualOptions.interactivity.events;if(!e.onHover.enable||!i.position)return!1;const o=e.onHover.mode;return P.isInArray(c.light,o)}reset(){}}class si{constructor(t){this.container=t}isEnabled(){const t=this.container,i=t.actualOptions,e=t.interactivity.mouse,o=i.interactivity.events,s=o.onDiv;return e.position&&o.onHover.enable&&P.isInArray(c.bounce,o.onHover.mode)||P.isDivModeEnabled(l.bounce,s)}interact(){const t=this.container,i=t.actualOptions.interactivity.events,e=t.interactivity.status===M.mouseMoveEvent,o=i.onHover.enable,s=i.onHover.mode,n=i.onDiv;e&&o&&P.isInArray(c.bounce,s)?this.processMouseBounce():P.divModeExecute(l.bounce,n,(t,i)=>this.singleSelectorBounce(t,i))}reset(){}processMouseBounce(){const t=this.container,i=10*t.retina.pixelRatio,e=t.interactivity.mouse.position,o=t.retina.bounceModeDistance;e&&this.processBounce(e,o,new O(e.x,e.y,o+i))}singleSelectorBounce(t,i){const e=this.container,o=document.querySelectorAll(t);o.length&&o.forEach(t=>{const o=t,s=e.retina.pixelRatio,n={x:(o.offsetLeft+o.offsetWidth/2)*s,y:(o.offsetTop+o.offsetHeight/2)*s},a=o.offsetWidth/2*s,r=10*s,l=i.type===b.circle?new O(n.x,n.y,a+r):new E(o.offsetLeft*s-r,o.offsetTop*s-r,o.offsetWidth*s+2*r,o.offsetHeight*s+2*r);this.processBounce(n,a,l)})}processBounce(t,i,e){const o=this.container.particles.quadTree.query(e);for(const s of o)e instanceof O?P.circleBounce(P.circleBounceDataFromParticle(s),{position:t,radius:i,velocity:{horizontal:0,vertical:0},factor:{horizontal:0,vertical:0}}):e instanceof E&&P.rectBounce(s,P.calculateBounds(t,i))}}class ni{constructor(t){this.container=t,this.externalInteractors=[new si(t),new Xt(t),new Yt(t),new Ut(t),new oi(t),new ii(t),new $t(t),new ti(t)],this.particleInteractors=[new Qt(t),new ei(t),new Zt(t),new Kt(t),new Jt(t)]}init(){}externalInteract(t){for(const i of this.externalInteractors)i.isEnabled()&&i.interact(t)}particlesInteract(t,i){for(const i of this.externalInteractors)i.reset(t);for(const e of this.particleInteractors)e.isEnabled(t)&&e.interact(t,i)}}class ai{constructor(t){this.container=t,this.nextId=0,this.array=[],this.limit=0,this.linksFreq=new Map,this.trianglesFreq=new Map,this.interactionManager=new ni(t);const i=this.container.canvas.size;this.linksColors=new Map,this.quadTree=new G(new E(-i.width/4,-i.height/4,3*i.width/2,3*i.height/2),4)}get count(){return this.array.length}init(){const t=this.container,i=t.actualOptions;this.linksFreq=new Map,this.trianglesFreq=new Map;let e=!1;for(const e of i.manualParticles){const i=e.position?{x:e.position.x*t.canvas.size.width/100,y:e.position.y*t.canvas.size.height/100}:void 0;this.addParticle(i,e.options)}for(const[,i]of t.plugins)if(void 0!==i.particlesInitialization&&(e=i.particlesInitialization()),e)break;if(!e)for(let t=this.count;t<i.particles.number.value;t++)this.addParticle();if(i.infection.enable)for(let t=0;t<i.infection.infections;t++){const t=this.array.filter(t=>void 0===t.infecter.infectionStage);P.itemFromArray(t).infecter.startInfection(0)}this.interactionManager.init(),t.pathGenerator.init()}redraw(){this.clear(),this.init(),this.draw({value:0,factor:0})}removeAt(t,i){if(t>=0&&t<=this.count)for(const e of this.array.splice(t,null!=i?i:1))e.destroy()}remove(t){this.removeAt(this.array.indexOf(t))}update(t){const i=this.container,e=[];i.pathGenerator.update();for(const[,e]of i.plugins)void 0!==e.update&&e.update(t);for(const i of this.array){const o=this.container.canvas.resizeFactor;o&&(i.position.x*=o.width,i.position.y*=o.height),i.move(t),i.destroyed?e.push(i):this.quadTree.insert(new W(i.getPosition(),i))}for(const t of e)this.remove(t);this.interactionManager.externalInteract(t);for(const i of this.container.particles.array)i.update(t),i.destroyed||i.spawning||this.interactionManager.particlesInteract(i,t);delete i.canvas.resizeFactor}draw(t){const i=this.container;i.canvas.clear();const e=this.container.canvas.size;this.quadTree=new G(new E(-e.width/4,-e.height/4,3*e.width/2,3*e.height/2),4),this.update(t);for(const[,e]of i.plugins)i.canvas.drawPlugin(e,t);for(const i of this.array)i.draw(t)}clear(){this.array=[]}push(t,i,e){const o=this.container,s=o.actualOptions.particles.number.limit*o.density;if(this.pushing=!0,s>0){const i=this.count+t-s;i>0&&this.removeQuantity(i)}for(let o=0;o<t;o++)this.addParticle(null==i?void 0:i.position,e);this.pushing=!1}addParticle(t,i){try{const e=new Nt(this.nextId,this.container,t,i);return this.array.push(e),this.nextId++,e}catch(t){return void console.warn("error adding particle")}}removeQuantity(t){this.removeAt(0,t)}getLinkFrequency(t,i){const e=`${Math.min(t.id,i.id)}_${Math.max(t.id,i.id)}`;let o=this.linksFreq.get(e);return void 0===o&&(o=Math.random(),this.linksFreq.set(e,o)),o}getTriangleFrequency(t,i,e){let[o,s,n]=[t.id,i.id,e.id];o>s&&([s,o]=[o,s]),s>n&&([n,s]=[s,n]),o>n&&([n,o]=[o,n]);const a=`${o}_${s}_${n}`;let r=this.trianglesFreq.get(a);return void 0===r&&(r=Math.random(),this.trianglesFreq.set(a,r)),r}setDensity(){const t=this.container.actualOptions;this.applyDensity(t.particles)}applyDensity(t){var i;if(!(null===(i=t.number.density)||void 0===i?void 0:i.enable))return;const e=t.number,o=this.initDensityFactor(e.density),s=e.value,n=e.limit>0?e.limit:s,a=Math.min(s,n)*o,r=this.count;this.limit=e.limit*o,r<a?this.push(Math.abs(a-r),void 0,t):r>a&&this.removeQuantity(r-a)}initDensityFactor(t){const i=this.container;if(!i.canvas.element||!t.enable)return 1;const e=i.canvas.element,o=i.retina.pixelRatio;return e.width*e.height/(t.factor*o*o*t.area)}}class ri{constructor(t){this.container=t}init(){const t=this.container,i=t.actualOptions;i.detectRetina?this.pixelRatio=P.isSsr()?1:window.devicePixelRatio:this.pixelRatio=1;const e=this.container.actualOptions.motion;if(e&&(e.disable||e.reduce.value))if(P.isSsr()||"undefined"==typeof matchMedia||!matchMedia)this.reduceFactor=1;else{const i=matchMedia("(prefers-reduced-motion: reduce)");if(i){this.handleMotionChange(i);const e=()=>{this.handleMotionChange(i),t.refresh().catch(()=>{})};void 0!==i.addEventListener?i.addEventListener("change",e):void 0!==i.addListener&&i.addListener(e)}}else this.reduceFactor=1;const o=this.pixelRatio;if(t.canvas.element){const i=t.canvas.element;t.canvas.size.width=i.offsetWidth*o,t.canvas.size.height=i.offsetHeight*o}const s=i.particles;this.linksDistance=s.links.distance*o,this.linksWidth=s.links.width*o,this.moveSpeed=s.move.speed*o,this.sizeValue=s.size.value*o,this.sizeAnimationSpeed=s.size.animation.speed*o;const n=i.interactivity.modes;this.connectModeDistance=n.connect.distance*o,this.connectModeRadius=n.connect.radius*o,this.grabModeDistance=n.grab.distance*o,this.repulseModeDistance=n.repulse.distance*o,this.bounceModeDistance=n.bounce.distance*o,this.attractModeDistance=n.attract.distance*o,this.slowModeRadius=n.slow.radius*o,this.bubbleModeDistance=n.bubble.distance*o,n.bubble.size&&(this.bubbleModeSize=n.bubble.size*o)}initParticle(t){const i=t.options,e=this.pixelRatio;t.linksDistance=i.links.distance*e,t.linksWidth=i.links.width*e,t.moveSpeed=i.move.speed*e,t.sizeValue=i.size.value*e,t.sizeAnimationSpeed=i.size.animation.speed*e,t.maxDistance=i.move.distance*e}handleMotionChange(t){const i=this.container.actualOptions;if(t.matches){const t=i.motion;this.reduceFactor=t.disable?0:t.reduce.value?1/t.reduce.factor:1}else this.reduceFactor=1}}class li{constructor(t){this.container=t}nextFrame(t){try{const i=this.container;if(void 0!==i.lastFrameTime&&t<i.lastFrameTime+1e3/i.fpsLimit)return void i.draw();const e=t-i.lastFrameTime,o={value:e,factor:60*e/1e3};i.lastFrameTime=t,i.particles.draw(o),i.getAnimationStatus()&&i.draw()}catch(t){console.error("tsParticles error in animation loop",t)}}}class ci{constructor(){this.enable=!1,this.mode=[]}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode))}}class di{constructor(){this.selectors=[],this.enable=!1,this.mode=[],this.type=b.circle}get elementId(){return this.ids}set elementId(t){this.ids=t}get el(){return this.elementId}set el(t){this.elementId=t}get ids(){return this.selectors instanceof Array?this.selectors.map(t=>t.replace("#","")):this.selectors.replace("#","")}set ids(t){this.selectors=t instanceof Array?t.map(t=>"#"+t):"#"+t}load(t){var i,e;if(void 0===t)return;const o=null!==(e=null!==(i=t.ids)&&void 0!==i?i:t.elementId)&&void 0!==e?e:t.el;void 0!==o&&(this.ids=o),void 0!==t.selectors&&(this.selectors=t.selectors),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),void 0!==t.type&&(this.type=t.type)}}class hi{constructor(){this.enable=!1,this.force=2,this.smooth=10}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.force&&(this.force=t.force),void 0!==t.smooth&&(this.smooth=t.smooth))}}class ui{constructor(){this.enable=!1,this.mode=[],this.parallax=new hi}load(t){void 0!==t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.mode&&(this.mode=t.mode),this.parallax.load(t.parallax))}}class vi{constructor(){this.onClick=new ci,this.onDiv=new di,this.onHover=new ui,this.resize=!0}get onclick(){return this.onClick}set onclick(t){this.onClick=t}get ondiv(){return this.onDiv}set ondiv(t){this.onDiv=t}get onhover(){return this.onHover}set onhover(t){this.onHover=t}load(t){var i,e,o;if(void 0===t)return;this.onClick.load(null!==(i=t.onClick)&&void 0!==i?i:t.onclick);const s=null!==(e=t.onDiv)&&void 0!==e?e:t.ondiv;void 0!==s&&(s instanceof Array?this.onDiv=s.map(t=>{const i=new di;return i.load(t),i}):(this.onDiv=new di,this.onDiv.load(s))),this.onHover.load(null!==(o=t.onHover)&&void 0!==o?o:t.onhover),void 0!==t.resize&&(this.resize=t.resize)}}class pi{constructor(){this.distance=200,this.duration=.4}load(t){void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.color&&(t.color instanceof Array?this.color=t.color.map(t=>ot.create(void 0,t)):(this.color instanceof Array&&(this.color=new ot),this.color=ot.create(this.color,t.color))),void 0!==t.size&&(this.size=t.size))}}class yi extends pi{constructor(){super(),this.selectors=[]}get ids(){return this.selectors instanceof Array?this.selectors.map(t=>t.replace("#","")):this.selectors.replace("#","")}set ids(t){this.selectors=t instanceof Array?t.map(t=>"#"+t):"#"+t}load(t){super.load(t),void 0!==t&&(void 0!==t.ids&&(this.ids=t.ids),void 0!==t.selectors&&(this.selectors=t.selectors))}}class mi extends pi{load(t){super.load(t),void 0!==t&&void 0!==t.divs&&(t.divs instanceof Array?this.divs=t.divs.map(t=>{const i=new yi;return i.load(t),i}):((this.divs instanceof Array||!this.divs)&&(this.divs=new yi),this.divs.load(t.divs)))}}class fi{constructor(){this.opacity=.5}load(t){void 0!==t&&void 0!==t.opacity&&(this.opacity=t.opacity)}}class gi{constructor(){this.distance=80,this.links=new fi,this.radius=60}get line_linked(){return this.links}set line_linked(t){this.links=t}get lineLinked(){return this.links}set lineLinked(t){this.links=t}load(t){var i,e;void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),this.links.load(null!==(e=null!==(i=t.links)&&void 0!==i?i:t.lineLinked)&&void 0!==e?e:t.line_linked),void 0!==t.radius&&(this.radius=t.radius))}}class bi{constructor(){this.blink=!1,this.consent=!1,this.opacity=1}load(t){void 0!==t&&(void 0!==t.blink&&(this.blink=t.blink),void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.consent&&(this.consent=t.consent),void 0!==t.opacity&&(this.opacity=t.opacity))}}class wi{constructor(){this.distance=100,this.links=new bi}get line_linked(){return this.links}set line_linked(t){this.links=t}get lineLinked(){return this.links}set lineLinked(t){this.links=t}load(t){var i,e;void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),this.links.load(null!==(e=null!==(i=t.links)&&void 0!==i?i:t.lineLinked)&&void 0!==e?e:t.line_linked))}}class xi{constructor(){this.quantity=2}get particles_nb(){return this.quantity}set particles_nb(t){this.quantity=t}load(t){var i;if(void 0===t)return;const e=null!==(i=t.quantity)&&void 0!==i?i:t.particles_nb;void 0!==e&&(this.quantity=e)}}class ki{constructor(){this.quantity=4}get particles_nb(){return this.quantity}set particles_nb(t){this.quantity=t}load(t){var i;if(void 0===t)return;const e=null!==(i=t.quantity)&&void 0!==i?i:t.particles_nb;void 0!==e&&(this.quantity=e)}}class zi{constructor(){this.distance=200,this.duration=.4,this.speed=1}load(t){void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.speed&&(this.speed=t.speed))}}class Pi extends zi{constructor(){super(),this.selectors=[]}get ids(){return this.selectors instanceof Array?this.selectors.map(t=>t.replace("#","")):this.selectors.replace("#","")}set ids(t){this.selectors=t instanceof Array?t.map(()=>"#"+t):"#"+t}load(t){super.load(t),void 0!==t&&(void 0!==t.ids&&(this.ids=t.ids),void 0!==t.selectors&&(this.selectors=t.selectors))}}class Mi extends zi{load(t){super.load(t),void 0!==(null==t?void 0:t.divs)&&(t.divs instanceof Array?this.divs=t.divs.map(t=>{const i=new Pi;return i.load(t),i}):((this.divs instanceof Array||!this.divs)&&(this.divs=new Pi),this.divs.load(t.divs)))}}class Si{constructor(){this.factor=3,this.radius=200}get active(){return!1}set active(t){}load(t){void 0!==t&&(void 0!==t.factor&&(this.factor=t.factor),void 0!==t.radius&&(this.radius=t.radius))}}class Ci{constructor(){this.delay=1,this.quantity=1}load(t){void 0!==t&&(void 0!==t.delay&&(this.delay=t.delay),void 0!==t.quantity&&(this.quantity=t.quantity),void 0!==t.particles&&(this.particles=P.deepExtend({},t.particles)))}}class Ri{constructor(){this.distance=200,this.duration=.4,this.speed=1}load(t){void 0!==t&&(void 0!==t.distance&&(this.distance=t.distance),void 0!==t.duration&&(this.duration=t.duration),void 0!==t.speed&&(this.speed=t.speed))}}class Ai{constructor(){this.start=new ot,this.stop=new ot,this.start.value="#ffffff",this.stop.value="#000000"}load(t){void 0!==t&&(this.start=ot.create(this.start,t.start),this.stop=ot.create(this.stop,t.stop))}}class Ti{constructor(){this.gradient=new Ai,this.radius=1e3}load(t){void 0!==t&&(this.gradient.load(t.gradient),void 0!==t.radius&&(this.radius=t.radius))}}class Di{constructor(){this.color=new ot,this.color.value="#000000",this.length=2e3}load(t){void 0!==t&&(this.color=ot.create(this.color,t.color),void 0!==t.length&&(this.length=t.length))}}class Oi{constructor(){this.area=new Ti,this.shadow=new Di}load(t){void 0!==t&&(this.area.load(t.area),this.shadow.load(t.shadow))}}class Ei{constructor(){this.distance=200}load(t){t&&void 0!==t.distance&&(this.distance=t.distance)}}class Ii{constructor(){this.attract=new Ri,this.bounce=new Ei,this.bubble=new mi,this.connect=new gi,this.grab=new wi,this.light=new Oi,this.push=new ki,this.remove=new xi,this.repulse=new Mi,this.slow=new Si,this.trail=new Ci}load(t){void 0!==t&&(this.attract.load(t.attract),this.bubble.load(t.bubble),this.connect.load(t.connect),this.grab.load(t.grab),this.light.load(t.light),this.push.load(t.push),this.remove.load(t.remove),this.repulse.load(t.repulse),this.slow.load(t.slow),this.trail.load(t.trail))}}class Vi{constructor(){this.detectsOn=w.canvas,this.events=new vi,this.modes=new Ii}get detect_on(){return this.detectsOn}set detect_on(t){this.detectsOn=t}load(t){var i,e,o;if(void 0===t)return;const s=null!==(i=t.detectsOn)&&void 0!==i?i:t.detect_on;void 0!==s&&(this.detectsOn=s),this.events.load(t.events),this.modes.load(t.modes),!0===(null===(o=null===(e=t.modes)||void 0===e?void 0:e.slow)||void 0===o?void 0:o.active)&&(this.events.onHover.mode instanceof Array?this.events.onHover.mode.indexOf(c.slow)<0&&this.events.onHover.mode.push(c.slow):this.events.onHover.mode!==c.slow&&(this.events.onHover.mode=[this.events.onHover.mode,c.slow]))}}class Fi{constructor(){this.color=new ot,this.opacity=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.opacity&&(this.opacity=t.opacity))}}class Hi{constructor(){this.composite="destination-out",this.cover=new Fi,this.enable=!1}load(t){if(void 0!==t){if(void 0!==t.composite&&(this.composite=t.composite),void 0!==t.cover){const i=t.cover,e="string"==typeof t.cover?{color:t.cover}:t.cover;this.cover.load(void 0!==i.color?i:{color:e})}void 0!==t.enable&&(this.enable=t.enable)}}}class Li{constructor(){this.color=new ot,this.color.value="",this.image="",this.position="",this.repeat="",this.size="",this.opacity=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.image&&(this.image=t.image),void 0!==t.position&&(this.position=t.position),void 0!==t.repeat&&(this.repeat=t.repeat),void 0!==t.size&&(this.size=t.size),void 0!==t.opacity&&(this.opacity=t.opacity))}}class qi{constructor(){this.color=new ot,this.color.value="#ff0000",this.radius=0,this.rate=1}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),this.duration=t.duration,this.infectedStage=t.infectedStage,void 0!==t.radius&&(this.radius=t.radius),void 0!==t.rate&&(this.rate=t.rate))}}class _i{constructor(){this.cure=!1,this.delay=0,this.enable=!1,this.infections=0,this.stages=[]}load(t){void 0!==t&&(void 0!==t.cure&&(this.cure=t.cure),void 0!==t.delay&&(this.delay=t.delay),void 0!==t.enable&&(this.enable=t.enable),void 0!==t.infections&&(this.infections=t.infections),void 0!==t.stages&&(this.stages=t.stages.map(t=>{const i=new qi;return i.load(t),i})))}}class Bi{constructor(){this.mode=v.any,this.value=!1}load(t){void 0!==t&&(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.value&&(this.value=t.value))}}class Wi{constructor(){this.name="",this.default=new Bi}load(t){void 0!==t&&(void 0!==t.name&&(this.name=t.name),this.default.load(t.default),void 0!==t.options&&(this.options=P.deepExtend({},t.options)))}}class Gi{constructor(){this.enable=!1,this.zIndex=-1}load(t){t&&(void 0!==t.enable&&(this.enable=t.enable),void 0!==t.zIndex&&(this.zIndex=t.zIndex))}}class Ni{constructor(){this.factor=4,this.value=!0}load(t){t&&(void 0!==t.factor&&(this.factor=t.factor),void 0!==t.value&&(this.value=t.value))}}class Ui{constructor(){this.disable=!1,this.reduce=new Ni}load(t){t&&(void 0!==t.disable&&(this.disable=t.disable),this.reduce.load(t.reduce))}}class $i{load(t){var i,e;t&&(void 0!==t.position&&(this.position={x:null!==(i=t.position.x)&&void 0!==i?i:50,y:null!==(e=t.position.y)&&void 0!==e?e:50}),void 0!==t.options&&(this.options=P.deepExtend({},t.options)))}}class ji{constructor(){this.maxWidth=1/0,this.options={}}load(t){t&&(void 0!==t.maxWidth&&(this.maxWidth=t.maxWidth),void 0!==t.options&&(this.options=P.deepExtend({},t.options)))}}class Xi{constructor(){this.autoPlay=!0,this.background=new Li,this.backgroundMask=new Hi,this.fullScreen=new Gi,this.detectRetina=!0,this.fpsLimit=60,this.infection=new _i,this.interactivity=new Vi,this.manualParticles=[],this.motion=new Ui,this.particles=new Bt,this.pauseOnBlur=!0,this.pauseOnOutsideViewport=!1,this.responsive=[],this.themes=[]}get fps_limit(){return this.fpsLimit}set fps_limit(t){this.fpsLimit=t}get retina_detect(){return this.detectRetina}set retina_detect(t){this.detectRetina=t}get backgroundMode(){return this.fullScreen}set backgroundMode(t){this.fullScreen.load(t)}load(t){var i,e,o;if(void 0===t)return;if(void 0!==t.preset)if(t.preset instanceof Array)for(const i of t.preset)this.importPreset(i);else this.importPreset(t.preset);void 0!==t.autoPlay&&(this.autoPlay=t.autoPlay);const s=null!==(i=t.detectRetina)&&void 0!==i?i:t.retina_detect;void 0!==s&&(this.detectRetina=s);const n=null!==(e=t.fpsLimit)&&void 0!==e?e:t.fps_limit;if(void 0!==n&&(this.fpsLimit=n),void 0!==t.pauseOnBlur&&(this.pauseOnBlur=t.pauseOnBlur),void 0!==t.pauseOnOutsideViewport&&(this.pauseOnOutsideViewport=t.pauseOnOutsideViewport),this.background.load(t.background),this.fullScreen.load(null!==(o=t.fullScreen)&&void 0!==o?o:t.backgroundMode),this.backgroundMask.load(t.backgroundMask),this.infection.load(t.infection),this.interactivity.load(t.interactivity),void 0!==t.manualParticles&&(this.manualParticles=t.manualParticles.map(t=>{const i=new $i;return i.load(t),i})),this.motion.load(t.motion),this.particles.load(t.particles),B.loadOptions(this,t),void 0!==t.responsive)for(const i of t.responsive){const t=new ji;t.load(i),this.responsive.push(t)}if(this.responsive.sort((t,i)=>t.maxWidth-i.maxWidth),void 0!==t.themes)for(const i of t.themes){const t=new Wi;t.load(i),this.themes.push(t)}}setTheme(t){if(t){const i=this.themes.find(i=>i.name===t);i&&this.load(i.options)}else{const t="undefined"!=typeof matchMedia&&matchMedia("(prefers-color-scheme: dark)").matches;let i=this.themes.find(i=>i.default.value&&(i.default.mode===v.dark&&t||i.default.mode===v.light&&!t));i||(i=this.themes.find(t=>t.default.value&&t.default.mode===v.any)),i&&this.load(i.options)}}importPreset(t){this.load(B.getPreset(t))}setResponsive(t,i,e){var o;this.load(e),this.load(null===(o=this.responsive.find(e=>e.maxWidth*i>t))||void 0===o?void 0:o.options)}}var Yi=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};class Ji{constructor(t,i,...e){this.id=t,this.sourceOptions=i,this.fpsLimit=60,this.firstStart=!0,this.started=!1,this.destroyed=!1,this.paused=!0,this.lastFrameTime=0,this.pageHidden=!1,this.retina=new ri(this),this.canvas=new tt(this),this.particles=new ai(this),this.drawer=new li(this),this.pathGenerator={generate:()=>({angle:Math.random()*Math.PI*2,length:Math.random()}),init:()=>{},update:()=>{}},this.interactivity={mouse:{clicking:!1,inside:!1}},this.bubble={},this.repulse={particles:[]},this.attract={particles:[]},this.plugins=new Map,this.drawers=new Map,this.density=1,this.options=new Xi,this.actualOptions=new Xi;for(const t of e)this.options.load(B.getPreset(t));const o=B.getSupportedShapes();for(const t of o){const i=B.getShapeDrawer(t);i&&this.drawers.set(t,i)}this.options&&this.options.load(this.sourceOptions),this.eventListeners=new F(this),"undefined"!=typeof IntersectionObserver&&IntersectionObserver&&(this.intersectionObserver=new IntersectionObserver(t=>this.intersectionManager(t)))}play(t){const i=this.paused||t;if(!this.firstStart||this.actualOptions.autoPlay){if(this.paused&&(this.paused=!1),i){for(const[,t]of this.plugins)t.play&&t.play();this.lastFrameTime=performance.now()}this.draw()}else this.firstStart=!1}pause(){if(void 0!==this.drawAnimationFrame&&(P.cancelAnimation(this.drawAnimationFrame),delete this.drawAnimationFrame),!this.paused){for(const[,t]of this.plugins)t.pause&&t.pause();this.pageHidden||(this.paused=!0)}}draw(){this.drawAnimationFrame=P.animate(t=>this.drawer.nextFrame(t))}getAnimationStatus(){return!this.paused}setNoise(t,i,e){this.setPath(t,i,e)}setPath(t,i,e){t&&("function"==typeof t?(this.pathGenerator.generate=t,i&&(this.pathGenerator.init=i),e&&(this.pathGenerator.update=e)):(t.generate&&(this.pathGenerator.generate=t.generate),t.init&&(this.pathGenerator.init=t.init),t.update&&(this.pathGenerator.update=t.update)))}destroy(){this.stop(),this.canvas.destroy();for(const[,t]of this.drawers)t.destroy&&t.destroy(this);for(const t of this.drawers.keys())this.drawers.delete(t);this.destroyed=!0}exportImg(t){this.exportImage(t)}exportImage(t,i,e){var o;return null===(o=this.canvas.element)||void 0===o?void 0:o.toBlob(t,null!=i?i:"image/png",e)}exportConfiguration(){return JSON.stringify(this.actualOptions,void 0,2)}refresh(){return Yi(this,void 0,void 0,(function*(){this.stop(),yield this.start()}))}stop(){if(this.started){this.firstStart=!0,this.started=!1,this.eventListeners.removeListeners(),this.pause(),this.particles.clear(),this.canvas.clear(),this.interactivity.element instanceof HTMLElement&&this.intersectionObserver&&this.intersectionObserver.observe(this.interactivity.element);for(const[,t]of this.plugins)t.stop&&t.stop();for(const t of this.plugins.keys())this.plugins.delete(t);this.particles.linksColors=new Map,delete this.particles.grabLineColor,delete this.particles.linksColor}}loadTheme(t){return Yi(this,void 0,void 0,(function*(){this.actualOptions.setTheme(t),yield this.refresh()}))}start(){return Yi(this,void 0,void 0,(function*(){if(!this.started){yield this.init(),this.started=!0,this.eventListeners.addListeners(),this.interactivity.element instanceof HTMLElement&&this.intersectionObserver&&this.intersectionObserver.observe(this.interactivity.element);for(const[,t]of this.plugins)void 0!==t.startAsync?yield t.startAsync():void 0!==t.start&&t.start();this.play()}}))}init(){return Yi(this,void 0,void 0,(function*(){this.actualOptions=new Xi,this.actualOptions.load(this.options),this.retina.init(),this.canvas.init(),this.actualOptions.setResponsive(this.canvas.size.width,this.retina.pixelRatio,this.options),this.actualOptions.setTheme(void 0),this.fpsLimit=this.actualOptions.fpsLimit>0?this.actualOptions.fpsLimit:60;const t=B.getAvailablePlugins(this);for(const[i,e]of t)this.plugins.set(i,e);for(const[,t]of this.drawers)t.init&&(yield t.init(this));for(const[,t]of this.plugins)t.init?t.init(this.actualOptions):void 0!==t.initAsync&&(yield t.initAsync(this.actualOptions));this.canvas.resize(),this.particles.init(),this.particles.setDensity()}))}intersectionManager(t){if(this.actualOptions.pauseOnOutsideViewport)for(const i of t)i.target===this.interactivity.element&&(i.isIntersecting?this.play():this.pause())}}var Qi=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};const Zi=[];function Ki(t){console.error("Error tsParticles - fetch status: "+t),console.error("Error tsParticles - File config not found")}class te{static dom(){return Zi}static domItem(t){const i=te.dom(),e=i[t];if(e&&!e.destroyed)return e;i.splice(t,1)}static load(t,i,e){return Qi(this,void 0,void 0,(function*(){const o=document.getElementById(t);if(o)return te.set(t,o,i,e)}))}static set(t,i,e,o){return Qi(this,void 0,void 0,(function*(){const s=e instanceof Array?P.itemFromArray(e,o):e,n=te.dom(),a=n.findIndex(i=>i.id===t);if(a>=0){const t=te.domItem(a);t&&!t.destroyed&&(t.destroy(),n.splice(a,1))}let r,l;if("canvas"===i.tagName.toLowerCase())r=i,l=!1;else{const t=i.getElementsByTagName("canvas");t.length?(r=t[0],r.className||(r.className=M.canvasClass),l=!1):(l=!0,r=document.createElement("canvas"),r.className=M.canvasClass,r.style.width="100%",r.style.height="100%",i.appendChild(r))}const c=new Ji(t,s);return a>=0?n.splice(a,0,c):n.push(c),c.canvas.loadCanvas(r,l),yield c.start(),c}))}static loadJSON(t,i,e){return Qi(this,void 0,void 0,(function*(){const o=i instanceof Array?P.itemFromArray(i,e):i,s=yield fetch(o);if(s.ok)return te.load(t,yield s.json());Ki(s.status)}))}static setJSON(t,i,e){return Qi(this,void 0,void 0,(function*(){const o=yield fetch(e);if(o.ok){const e=yield o.json();return te.set(t,i,e)}Ki(o.status)}))}static setOnClickHandler(t){const i=te.dom();if(0===i.length)throw new Error("Can only set click handlers after calling tsParticles.load() or tsParticles.loadJSON()");for(const e of i){const i=e.interactivity.element;if(!i)continue;const o=(i,o)=>{if(e.destroyed)return;const s=e.retina.pixelRatio,n={x:o.x*s,y:o.y*s},a=e.particles.quadTree.queryCircle(n,e.retina.sizeValue);t(i,a)},s=t=>{if(e.destroyed)return;const i=t,s={x:i.offsetX||i.clientX,y:i.offsetY||i.clientY};o(t,s)},n=()=>{e.destroyed||(c=!0,d=!1)},a=()=>{e.destroyed||(d=!0)},r=t=>{var i,s,n;if(!e.destroyed){if(c&&!d){const a=t,r=a.touches[a.touches.length-1],l=null===(i=e.canvas.element)||void 0===i?void 0:i.getBoundingClientRect(),c={x:r.clientX-(null!==(s=null==l?void 0:l.left)&&void 0!==s?s:0),y:r.clientY-(null!==(n=null==l?void 0:l.top)&&void 0!==n?n:0)};o(t,c)}c=!1,d=!1}},l=()=>{e.destroyed||(c=!1,d=!1)};let c=!1,d=!1;i.addEventListener("click",s),i.addEventListener("touchstart",n),i.addEventListener("touchmove",a),i.addEventListener("touchend",r),i.addEventListener("touchcancel",l)}}}var ie,ee,oe=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))},se=function(t,i,e){if(!i.has(t))throw new TypeError("attempted to set private field on non-instance");return i.set(t,e),e},ne=function(t,i){if(!i.has(t))throw new TypeError("attempted to get private field on non-instance");return i.get(t)};ie=new WeakMap;class ae{constructor(t,i,e,o){var s,n;this.absorbers=t,this.container=i,this.initialPosition=o,this.options=e,this.dragging=!1,this.name=this.options.name,this.opacity=this.options.opacity,this.size=a.getValue(e.size)*i.retina.pixelRatio,this.mass=this.size*e.size.density*i.retina.reduceFactor;const r=e.size.limit;this.limit=void 0!==r?r*i.retina.pixelRatio*i.retina.reduceFactor:r;const l="string"==typeof e.color?{value:e.color}:e.color;this.color=null!==(s=R.colorToRgb(l))&&void 0!==s?s:{b:0,g:0,r:0},this.position=null!==(n=this.initialPosition)&&void 0!==n?n:this.calcPosition()}attract(t){const i=this.options;if(i.draggable){const t=this.container.interactivity.mouse;if(t.clicking&&t.downPosition){a.getDistance(this.position,t.downPosition)<=this.size&&(this.dragging=!0)}else this.dragging=!1;this.dragging&&t.position&&(this.position.x=t.position.x,this.position.y=t.position.y)}const e=t.getPosition(),{dx:o,dy:s,distance:n}=a.getDistances(this.position,e),r=Math.atan2(o,s),l=this.mass/Math.pow(n,2)*this.container.retina.reduceFactor;if(n<this.size+t.getRadius()){const e=.033*t.getRadius()*this.container.retina.pixelRatio;this.size>t.getRadius()&&n<this.size-t.getRadius()?i.destroy?t.destroy():(t.needsNewPosition=!0,this.updateParticlePosition(t,r,l)):(i.destroy&&(t.size.value-=e),this.updateParticlePosition(t,r,l)),(void 0===this.limit||this.size<this.limit)&&(this.size+=e),this.mass+=e*this.options.size.density*this.container.retina.reduceFactor}else this.updateParticlePosition(t,r,l)}resize(){const t=this.initialPosition;this.position=t&&P.isPointInside(t,this.container.canvas.size)?t:this.calcPosition()}draw(t){t.translate(this.position.x,this.position.y),t.beginPath(),t.arc(0,0,this.size,0,2*Math.PI,!1),t.closePath(),t.fillStyle=R.getStyleFromRgb(this.color,this.opacity),t.fill()}calcPosition(){var t,i;const e=this.container,o=this.options.position;return{x:(null!==(t=null==o?void 0:o.x)&&void 0!==t?t:100*Math.random())/100*e.canvas.size.width,y:(null!==(i=null==o?void 0:o.y)&&void 0!==i?i:100*Math.random())/100*e.canvas.size.height}}updateParticlePosition(t,i,e){var o;if(t.destroyed)return;const s=this.container.canvas.size;if(t.needsNewPosition){const i=t.getRadius();t.position.x=Math.random()*(s.width-2*i)+i,t.position.y=Math.random()*(s.height-2*i)+i,t.needsNewPosition=!1}if(this.options.orbits){void 0===t.orbitRadius&&(t.orbitRadius=a.getDistance(t.getPosition(),this.position)),t.orbitRadius<=this.size&&!this.options.destroy&&(t.orbitRadius=Math.random()*Math.max(s.width,s.height)),void 0===t.orbitAngle&&(t.orbitAngle=Math.random()*Math.PI*2);const i=t.orbitRadius,n=t.orbitAngle;t.velocity.horizontal=0,t.velocity.vertical=0,t.position.x=this.position.x+i*Math.cos(n),t.position.y=this.position.y+i*Math.sin(n),t.orbitRadius-=e,t.orbitAngle+=(null!==(o=t.moveSpeed)&&void 0!==o?o:this.container.retina.moveSpeed)/100*this.container.retina.reduceFactor}else t.velocity.horizontal+=Math.sin(i)*e,t.velocity.vertical+=Math.cos(i)*e}}class re extends dt{constructor(){super(),this.density=5,this.random.minimumValue=1,this.value=50}load(t){t&&(super.load(t),void 0!==t.density&&(this.density=t.density),void 0!==t.limit&&(this.limit=t.limit),void 0!==t.limit&&(this.limit=t.limit))}}class le{constructor(){this.color=new ot,this.color.value="#000000",this.draggable=!1,this.opacity=1,this.destroy=!0,this.orbits=!1,this.size=new re}load(t){void 0!==t&&(void 0!==t.color&&(this.color=ot.create(this.color,t.color)),void 0!==t.draggable&&(this.draggable=t.draggable),this.name=t.name,void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.position&&(this.position={x:t.position.x,y:t.position.y}),void 0!==t.size&&this.size.load(t.size),void 0!==t.destroy&&(this.destroy=t.destroy),void 0!==t.orbits&&(this.orbits=t.orbits))}}!function(t){t.absorber="absorber"}(ee||(ee={}));class ce{constructor(t){this.container=t,this.array=[],this.absorbers=[],this.interactivityAbsorbers=[],t.addAbsorber=(t,i)=>this.addAbsorber(t,i)}init(t){var i,e;if(!t)return;t.absorbers&&(t.absorbers instanceof Array?this.absorbers=t.absorbers.map(t=>{const i=new le;return i.load(t),i}):(this.absorbers instanceof Array&&(this.absorbers=new le),this.absorbers.load(t.absorbers)));const o=null===(e=null===(i=t.interactivity)||void 0===i?void 0:i.modes)||void 0===e?void 0:e.absorbers;if(o&&(o instanceof Array?this.interactivityAbsorbers=o.map(t=>{const i=new le;return i.load(t),i}):(this.interactivityAbsorbers instanceof Array&&(this.interactivityAbsorbers=new le),this.interactivityAbsorbers.load(o))),this.absorbers instanceof Array)for(const t of this.absorbers)this.addAbsorber(t);else this.addAbsorber(this.absorbers)}particleUpdate(t){for(const i of this.array)if(i.attract(t),t.destroyed)break}draw(t){for(const i of this.array)t.save(),i.draw(t),t.restore()}stop(){this.array=[]}resize(){for(const t of this.array)t.resize()}handleClickMode(t){const i=this.container,e=this.absorbers,o=this.interactivityAbsorbers;if(t===ee.absorber){let t;o instanceof Array?o.length>0&&(t=P.itemFromArray(o)):t=o;const s=null!=t?t:e instanceof Array?P.itemFromArray(e):e,n=i.interactivity.mouse.clickPosition;this.addAbsorber(s,n)}}addAbsorber(t,i){const e=new ae(this,this.container,t,i);return this.array.push(e),e}removeAbsorber(t){const i=this.array.indexOf(t);i>=0&&this.array.splice(i,1)}}const de=new class{constructor(){this.id="absorbers"}getPlugin(t){return new ce(t)}needsPlugin(t){var i,e,o;if(void 0===t)return!1;const s=t.absorbers;let n=!1;return s instanceof Array?s.length&&(n=!0):(void 0!==s||(null===(o=null===(e=null===(i=t.interactivity)||void 0===i?void 0:i.events)||void 0===e?void 0:e.onClick)||void 0===o?void 0:o.mode)&&P.isInArray(ee.absorber,t.interactivity.events.onClick.mode))&&(n=!0),n}loadOptions(t,i){var e,o;if(!this.needsPlugin(t)&&!this.needsPlugin(i))return;const s=t;if(null==i?void 0:i.absorbers)if((null==i?void 0:i.absorbers)instanceof Array)s.absorbers=null==i?void 0:i.absorbers.map(t=>{const i=new le;return i.load(t),i});else{let t=s.absorbers;void 0===(null==t?void 0:t.load)&&(s.absorbers=t=new le),t.load(null==i?void 0:i.absorbers)}const n=null===(o=null===(e=null==i?void 0:i.interactivity)||void 0===e?void 0:e.modes)||void 0===o?void 0:o.absorbers;if(n)if(n instanceof Array)s.interactivity.modes.absorbers=n.map(t=>{const i=new le;return i.load(t),i});else{let t=s.interactivity.modes.absorbers;void 0===(null==t?void 0:t.load)&&(s.interactivity.modes.absorbers=t=new le),t.load(n)}}};class he{constructor(){this.mode=u.percent,this.height=0,this.width=0}load(t){void 0!==t&&(void 0!==t.mode&&(this.mode=t.mode),void 0!==t.height&&(this.height=t.height),void 0!==t.width&&(this.width=t.width))}}function ue(t,i){return t+i*(Math.random()-.5)}function ve(t,i){return{x:ue(t.x,i.x),y:ue(t.y,i.y)}}class pe{constructor(t,i,e,o){var s,n,a;this.emitters=t,this.container=i,this.currentDuration=0,this.currentEmitDelay=0,this.currentSpawnDelay=0,this.initialPosition=o,this.emitterOptions=P.deepExtend({},e),this.position=null!==(s=this.initialPosition)&&void 0!==s?s:this.calcPosition(),this.name=e.name;let r=P.deepExtend({},this.emitterOptions.particles);void 0===r&&(r={}),void 0===r.move&&(r.move={}),void 0===r.move.direction&&(r.move.direction=this.emitterOptions.direction),void 0!==this.emitterOptions.spawnColor&&(this.spawnColor=R.colorToHsl(this.emitterOptions.spawnColor)),this.particlesOptions=r,this.size=null!==(n=this.emitterOptions.size)&&void 0!==n?n:(()=>{const t=new he;return t.load({height:0,mode:u.percent,width:0}),t})(),this.lifeCount=null!==(a=this.emitterOptions.life.count)&&void 0!==a?a:-1,this.immortal=this.lifeCount<=0,this.play()}play(){this.container.retina.reduceFactor&&(this.lifeCount>0||this.immortal||!this.emitterOptions.life.count)&&(void 0===this.emitDelay&&(this.emitDelay=1e3*this.emitterOptions.rate.delay/this.container.retina.reduceFactor),(this.lifeCount>0||this.immortal)&&this.prepareToDie())}pause(){delete this.emitDelay}resize(){const t=this.initialPosition;this.position=t&&P.isPointInside(t,this.container.canvas.size)?t:this.calcPosition()}update(t){var i;void 0!==this.duration&&(this.currentDuration+=t.value,this.currentDuration>=this.duration&&(this.pause(),void 0!==this.spawnDelay&&delete this.spawnDelay,this.immortal||this.lifeCount--,this.lifeCount>0||this.immortal?(this.position=this.calcPosition(),this.spawnDelay=1e3*(null!==(i=this.emitterOptions.life.delay)&&void 0!==i?i:0)/this.container.retina.reduceFactor):this.destroy(),this.currentDuration-=this.duration,delete this.duration)),void 0!==this.spawnDelay&&(this.currentSpawnDelay+=t.value,this.currentSpawnDelay>=this.spawnDelay&&(this.play(),this.currentSpawnDelay-=this.currentSpawnDelay,delete this.spawnDelay)),void 0!==this.emitDelay&&(this.currentEmitDelay+=t.value,this.currentEmitDelay>=this.emitDelay&&(this.emit(),this.currentEmitDelay-=this.emitDelay))}prepareToDie(){var t;const i=null===(t=this.emitterOptions.life)||void 0===t?void 0:t.duration;this.container.retina.reduceFactor&&(this.lifeCount>0||this.immortal)&&void 0!==i&&i>0&&(this.duration=1e3*i)}destroy(){this.emitters.removeEmitter(this)}calcPosition(){var t,i;const e=this.container,o=this.emitterOptions.position;return{x:(null!==(t=null==o?void 0:o.x)&&void 0!==t?t:100*Math.random())/100*e.canvas.size.width,y:(null!==(i=null==o?void 0:o.y)&&void 0!==i?i:100*Math.random())/100*e.canvas.size.height}}emit(){var t;const i=this.container,e=this.position,o={x:this.size.mode===u.percent?i.canvas.size.width*this.size.width/100:this.size.width,y:this.size.mode===u.percent?i.canvas.size.height*this.size.height/100:this.size.height};for(let s=0;s<this.emitterOptions.rate.quantity;s++){const s=P.deepExtend({},this.particlesOptions);if(void 0!==this.spawnColor){const i=null===(t=this.emitterOptions.spawnColor)||void 0===t?void 0:t.animation;if(i){const t=i;if(t.enable)this.spawnColor.h=this.setColorAnimation(t,this.spawnColor.h,360);else{const t=i;this.spawnColor.h=this.setColorAnimation(t.h,this.spawnColor.h,360),this.spawnColor.s=this.setColorAnimation(t.s,this.spawnColor.s,100),this.spawnColor.l=this.setColorAnimation(t.l,this.spawnColor.l,100)}}s.color?s.color.value=this.spawnColor:s.color={value:this.spawnColor}}i.particles.addParticle(ve(e,o),s)}}setColorAnimation(t,i,e){var o;const s=this.container;if(!t.enable)return i;const n=a.randomInRange(t.offset),r=1e3*this.emitterOptions.rate.delay/s.retina.reduceFactor;return(i+(null!==(o=t.speed)&&void 0!==o?o:0)*s.fpsLimit/r+3.6*n)%e}}class ye{constructor(){this.quantity=1,this.delay=.1}load(t){void 0!==t&&(void 0!==t.quantity&&(this.quantity=t.quantity),void 0!==t.delay&&(this.delay=t.delay))}}class me{load(t){void 0!==t&&(void 0!==t.count&&(this.count=t.count),void 0!==t.delay&&(this.delay=t.delay),void 0!==t.duration&&(this.duration=t.duration))}}class fe{constructor(){this.direction=s.none,this.life=new me,this.rate=new ye}load(t){void 0!==t&&(void 0!==t.size&&(void 0===this.size&&(this.size=new he),this.size.load(t.size)),void 0!==t.direction&&(this.direction=t.direction),this.life.load(t.life),this.name=t.name,void 0!==t.particles&&(this.particles=P.deepExtend({},t.particles)),this.rate.load(t.rate),void 0!==t.position&&(this.position={x:t.position.x,y:t.position.y}),void 0!==t.spawnColor&&(void 0===this.spawnColor&&(this.spawnColor=new Tt),this.spawnColor.load(t.spawnColor)))}}var ge;!function(t){t.emitter="emitter"}(ge||(ge={}));class be{constructor(t){this.container=t,this.array=[],this.emitters=[],this.interactivityEmitters=[];const i=t;i.addEmitter=(t,i)=>this.addEmitter(t,i),i.playEmitter=t=>{const i=void 0===t||"number"==typeof t?this.array[t||0]:this.array.find(i=>i.name===t);i&&i.play()},i.pauseEmitter=t=>{const i=void 0===t||"number"==typeof t?this.array[t||0]:this.array.find(i=>i.name===t);i&&i.pause()}}init(t){var i,e;if(!t)return;t.emitters&&(t.emitters instanceof Array?this.emitters=t.emitters.map(t=>{const i=new fe;return i.load(t),i}):(this.emitters instanceof Array&&(this.emitters=new fe),this.emitters.load(t.emitters)));const o=null===(e=null===(i=t.interactivity)||void 0===i?void 0:i.modes)||void 0===e?void 0:e.emitters;if(o&&(o instanceof Array?this.interactivityEmitters=o.map(t=>{const i=new fe;return i.load(t),i}):(this.interactivityEmitters instanceof Array&&(this.interactivityEmitters=new fe),this.interactivityEmitters.load(o))),this.emitters instanceof Array)for(const t of this.emitters)this.addEmitter(t);else this.addEmitter(this.emitters)}play(){for(const t of this.array)t.play()}pause(){for(const t of this.array)t.pause()}stop(){this.array=[]}update(t){for(const i of this.array)i.update(t)}handleClickMode(t){const i=this.container,e=this.emitters,o=this.interactivityEmitters;if(t===ge.emitter){let t;o instanceof Array?o.length>0&&(t=P.itemFromArray(o)):t=o;const s=null!=t?t:e instanceof Array?P.itemFromArray(e):e,n=i.interactivity.mouse.clickPosition;this.addEmitter(P.deepExtend({},s),n)}}resize(){for(const t of this.array)t.resize()}addEmitter(t,i){const e=new pe(this,this.container,t,i);return this.array.push(e),e}removeEmitter(t){const i=this.array.indexOf(t);i>=0&&this.array.splice(i,1)}}const we=new class{constructor(){this.id="emitters"}getPlugin(t){return new be(t)}needsPlugin(t){var i,e,o;if(void 0===t)return!1;const s=t.emitters;let n=!1;return s instanceof Array?s.length&&(n=!0):(void 0!==s||(null===(o=null===(e=null===(i=t.interactivity)||void 0===i?void 0:i.events)||void 0===e?void 0:e.onClick)||void 0===o?void 0:o.mode)&&P.isInArray(ge.emitter,t.interactivity.events.onClick.mode))&&(n=!0),n}loadOptions(t,i){var e,o;if(!this.needsPlugin(t)&&!this.needsPlugin(i))return;const s=t;if(null==i?void 0:i.emitters)if((null==i?void 0:i.emitters)instanceof Array)s.emitters=null==i?void 0:i.emitters.map(t=>{const i=new fe;return i.load(t),i});else{let t=s.emitters;void 0===(null==t?void 0:t.load)&&(s.emitters=t=new fe),t.load(null==i?void 0:i.emitters)}const n=null===(o=null===(e=null==i?void 0:i.interactivity)||void 0===e?void 0:e.modes)||void 0===o?void 0:o.emitters;if(n)if(n instanceof Array)s.interactivity.modes.emitters=n.map(t=>{const i=new fe;return i.load(t),i});else{let t=s.interactivity.modes.emitters;void 0===(null==t?void 0:t.load)&&(s.interactivity.modes.emitters=t=new fe),t.load(n)}}};var xe,ke,ze;!function(t){t.equidistant="equidistant",t.onePerPoint="one-per-point",t.perPoint="per-point",t.randomLength="random-length",t.randomPoint="random-point"}(xe||(xe={})),function(t){t.path="path",t.radius="radius"}(ke||(ke={})),function(t){t.inline="inline",t.inside="inside",t.outside="outside",t.none="none"}(ze||(ze={}));class Pe{constructor(){this.color=new ot,this.width=.5,this.opacity=1}load(t){var i;void 0!==t&&(this.color=ot.create(this.color,t.color),"string"==typeof this.color.value&&(this.opacity=null!==(i=R.stringToAlpha(this.color.value))&&void 0!==i?i:this.opacity),void 0!==t.opacity&&(this.opacity=t.opacity),void 0!==t.width&&(this.width=t.width))}}class Me{constructor(){this.enable=!1,this.stroke=new Pe}get lineWidth(){return this.stroke.width}set lineWidth(t){this.stroke.width=t}get lineColor(){return this.stroke.color}set lineColor(t){this.stroke.color=ot.create(this.stroke.color,t)}load(t){var i;if(void 0!==t){void 0!==t.enable&&(this.enable=t.enable);const e=null!==(i=t.stroke)&&void 0!==i?i:{color:t.lineColor,width:t.lineWidth};this.stroke.load(e)}}}class Se{constructor(){this.radius=10,this.type=ke.path}load(t){void 0!==t&&(void 0!==t.radius&&(this.radius=t.radius),void 0!==t.type&&(this.type=t.type))}}class Ce{constructor(){this.arrangement=xe.onePerPoint}load(t){void 0!==t&&void 0!==t.arrangement&&(this.arrangement=t.arrangement)}}class Re{constructor(){this.path=[],this.size={height:0,width:0}}load(t){void 0!==t&&(void 0!==t.path&&(this.path=t.path),void 0!==t.size&&(void 0!==t.size.width&&(this.size.width=t.size.width),void 0!==t.size.height&&(this.size.height=t.size.height)))}}class Ae{constructor(){this.draw=new Me,this.enable=!1,this.inline=new Ce,this.move=new Se,this.scale=1,this.type=ze.none}get inlineArrangement(){return this.inline.arrangement}set inlineArrangement(t){this.inline.arrangement=t}load(t){var i;if(void 0!==t){this.draw.load(t.draw);const e=null!==(i=t.inline)&&void 0!==i?i:{arrangement:t.inlineArrangement};void 0!==e&&this.inline.load(e),this.move.load(t.move),void 0!==t.scale&&(this.scale=t.scale),void 0!==t.type&&(this.type=t.type),void 0!==t.enable?this.enable=t.enable:this.enable=this.type!==ze.none,void 0!==t.url&&(this.url=t.url),void 0!==t.data&&("string"==typeof t.data?this.data=t.data:(this.data=new Re,this.data.load(t.data))),void 0!==t.position&&(this.position=P.deepExtend({},t.position))}}}var Te=function(t,i,e,o){return new(e||(e=Promise))((function(s,n){function a(t){try{l(o.next(t))}catch(t){n(t)}}function r(t){try{l(o.throw(t))}catch(t){n(t)}}function l(t){var i;t.done?s(t.value):(i=t.value,i instanceof e?i:new e((function(t){t(i)}))).then(a,r)}l((o=o.apply(t,i||[])).next())}))};function De(t){t.velocity.horizontal=t.velocity.vertical/2-t.velocity.horizontal,t.velocity.vertical=t.velocity.horizontal/2-t.velocity.vertical}function Oe(t,i,e){const o=R.colorToRgb(e.color);if(o){t.beginPath(),t.moveTo(i[0].x,i[0].y);for(const e of i)t.lineTo(e.x,e.y);t.closePath(),t.strokeStyle=R.getStyleFromRgb(o),t.lineWidth=e.width,t.stroke()}}function Ee(t,i,e,o){t.translate(o.x,o.y);const s=R.colorToRgb(e.color);s&&(t.strokeStyle=R.getStyleFromRgb(s,e.opacity),t.lineWidth=e.width,t.stroke(i))}class Ie{constructor(t){this.container=t,this.dimension={height:0,width:0},this.path2DSupported=!!window.Path2D,this.options=new Ae,this.polygonMaskMoveRadius=this.options.move.radius*t.retina.pixelRatio}initAsync(t){return Te(this,void 0,void 0,(function*(){this.options.load(null==t?void 0:t.polygon);const i=this.options;this.polygonMaskMoveRadius=i.move.radius*this.container.retina.pixelRatio,i.enable&&(yield this.initRawData())}))}resize(){const t=this.container,i=this.options;i.enable&&i.type!==ze.none&&(this.redrawTimeout&&clearTimeout(this.redrawTimeout),this.redrawTimeout=window.setTimeout(()=>Te(this,void 0,void 0,(function*(){yield this.initRawData(!0),t.particles.redraw()})),250))}stop(){delete this.raw,delete this.paths}particlesInitialization(){const t=this.options;return!(!t.enable||t.type!==ze.inline||t.inline.arrangement!==xe.onePerPoint&&t.inline.arrangement!==xe.perPoint)&&(this.drawPoints(),!0)}particlePosition(t){var i,e;if(this.options.enable&&(null!==(e=null===(i=this.raw)||void 0===i?void 0:i.length)&&void 0!==e?e:0)>0)return P.deepExtend({},t||this.randomPoint())}particleBounce(t){const i=this.options;if(i.enable&&i.type!==ze.none&&i.type!==ze.inline){if(!this.checkInsidePolygon(t.getPosition()))return De(t),!0}else if(i.enable&&i.type===ze.inline&&t.initialPosition){if(a.getDistance(t.initialPosition,t.getPosition())>this.polygonMaskMoveRadius)return De(t),!0}return!1}clickPositionValid(t){const i=this.options;return i.enable&&i.type!==ze.none&&i.type!==ze.inline&&this.checkInsidePolygon(t)}draw(t){var i;if(!(null===(i=this.paths)||void 0===i?void 0:i.length))return;const e=this.options,o=e.draw;if(!e.enable||!o.enable)return;const s=this.raw;for(const i of this.paths){const e=i.path2d,n=this.path2DSupported;t&&(n&&e&&this.offset?Ee(t,e,o.stroke,this.offset):s&&Oe(t,s,o.stroke))}}checkInsidePolygon(t){var i,e;const o=this.container,s=this.options;if(!s.enable||s.type===ze.none||s.type===ze.inline)return!0;if(!this.raw)throw new Error(M.noPolygonFound);const n=o.canvas.size,a=null!==(i=null==t?void 0:t.x)&&void 0!==i?i:Math.random()*n.width,r=null!==(e=null==t?void 0:t.y)&&void 0!==e?e:Math.random()*n.height;let l=!1;for(let t=0,i=this.raw.length-1;t<this.raw.length;i=t++){const e=this.raw[t],o=this.raw[i];e.y>r!=o.y>r&&a<(o.x-e.x)*(r-e.y)/(o.y-e.y)+e.x&&(l=!l)}return s.type===ze.inside?l:s.type===ze.outside&&!l}parseSvgPath(t,i){var e,o,s;const n=null!=i&&i;if(void 0!==this.paths&&!n)return this.raw;const a=this.container,r=this.options,l=(new DOMParser).parseFromString(t,"image/svg+xml"),c=l.getElementsByTagName("svg")[0];let d=c.getElementsByTagName("path");d.length||(d=l.getElementsByTagName("path")),this.paths=[];for(let t=0;t<d.length;t++){const i=d.item(t);i&&this.paths.push({element:i,length:i.getTotalLength()})}const h=a.retina.pixelRatio,u=r.scale/h;this.dimension.width=parseFloat(null!==(e=c.getAttribute("width"))&&void 0!==e?e:"0")*u,this.dimension.height=parseFloat(null!==(o=c.getAttribute("height"))&&void 0!==o?o:"0")*u;const v=null!==(s=r.position)&&void 0!==s?s:{x:50,y:50};return this.offset={x:a.canvas.size.width*v.x/(100*h)-this.dimension.width/2,y:a.canvas.size.height*v.y/(100*h)-this.dimension.height/2},function(t,i,e){const o=[];for(const s of t){const t=s.element.pathSegList,n=t.numberOfItems,a={x:0,y:0};for(let s=0;s<n;s++){const n=t.getItem(s),r=window.SVGPathSeg;switch(n.pathSegType){case r.PATHSEG_MOVETO_ABS:case r.PATHSEG_LINETO_ABS:case r.PATHSEG_CURVETO_CUBIC_ABS:case r.PATHSEG_CURVETO_QUADRATIC_ABS:case r.PATHSEG_ARC_ABS:case r.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:case r.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:{const t=n;a.x=t.x,a.y=t.y;break}case r.PATHSEG_LINETO_HORIZONTAL_ABS:a.x=n.x;break;case r.PATHSEG_LINETO_VERTICAL_ABS:a.y=n.y;break;case r.PATHSEG_LINETO_REL:case r.PATHSEG_MOVETO_REL:case r.PATHSEG_CURVETO_CUBIC_REL:case r.PATHSEG_CURVETO_QUADRATIC_REL:case r.PATHSEG_ARC_REL:case r.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:case r.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:{const t=n;a.x+=t.x,a.y+=t.y;break}case r.PATHSEG_LINETO_HORIZONTAL_REL:a.x+=n.x;break;case r.PATHSEG_LINETO_VERTICAL_REL:a.y+=n.y;break;case r.PATHSEG_UNKNOWN:case r.PATHSEG_CLOSEPATH:continue}o.push({x:a.x*i+e.x,y:a.y*i+e.y})}}return o}(this.paths,u,this.offset)}downloadSvgPath(t,i){return Te(this,void 0,void 0,(function*(){const e=this.options,o=t||e.url,s=null!=i&&i;if(!o||void 0!==this.paths&&!s)return this.raw;const n=yield fetch(o);if(!n.ok)throw new Error("tsParticles Error - Error occurred during polygon mask download");return this.parseSvgPath(yield n.text(),i)}))}drawPoints(){if(this.raw)for(const t of this.raw)this.container.particles.addParticle({x:t.x,y:t.y})}randomPoint(){const t=this.container,i=this.options;let e;if(i.type===ze.inline)switch(i.inline.arrangement){case xe.randomPoint:e=this.getRandomPoint();break;case xe.randomLength:e=this.getRandomPointByLength();break;case xe.equidistant:e=this.getEquidistantPointByIndex(t.particles.count);break;case xe.onePerPoint:case xe.perPoint:default:e=this.getPointByIndex(t.particles.count)}else e={x:Math.random()*t.canvas.size.width,y:Math.random()*t.canvas.size.height};return this.checkInsidePolygon(e)?e:this.randomPoint()}getRandomPoint(){if(!this.raw||!this.raw.length)throw new Error(M.noPolygonDataLoaded);const t=P.itemFromArray(this.raw);return{x:t.x,y:t.y}}getRandomPointByLength(){var t,i,e;const o=this.options;if(!this.raw||!this.raw.length||!(null===(t=this.paths)||void 0===t?void 0:t.length))throw new Error(M.noPolygonDataLoaded);const s=P.itemFromArray(this.paths),n=Math.floor(Math.random()*s.length)+1,a=s.element.getPointAtLength(n);return{x:a.x*o.scale+((null===(i=this.offset)||void 0===i?void 0:i.x)||0),y:a.y*o.scale+((null===(e=this.offset)||void 0===e?void 0:e.y)||0)}}getEquidistantPointByIndex(t){var i,e,o,s,n,a,r;const l=this.container.actualOptions,c=this.options;if(!this.raw||!this.raw.length||!(null===(i=this.paths)||void 0===i?void 0:i.length))throw new Error(M.noPolygonDataLoaded);let d,h=0;const u=this.paths.reduce((t,i)=>t+i.length,0)/l.particles.number.value;for(const i of this.paths){const e=u*t-h;if(e<=i.length){d=i.element.getPointAtLength(e);break}h+=i.length}return{x:(null!==(e=null==d?void 0:d.x)&&void 0!==e?e:0)*c.scale+(null!==(s=null===(o=this.offset)||void 0===o?void 0:o.x)&&void 0!==s?s:0),y:(null!==(n=null==d?void 0:d.y)&&void 0!==n?n:0)*c.scale+(null!==(r=null===(a=this.offset)||void 0===a?void 0:a.y)&&void 0!==r?r:0)}}getPointByIndex(t){if(!this.raw||!this.raw.length)throw new Error(M.noPolygonDataLoaded);const i=this.raw[t%this.raw.length];return{x:i.x,y:i.y}}createPath2D(){var t,i;const e=this.options;if(this.path2DSupported&&(null===(t=this.paths)||void 0===t?void 0:t.length))for(const t of this.paths){const o=null===(i=t.element)||void 0===i?void 0:i.getAttribute("d");if(o){const i=new Path2D(o),s=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix(),n=new Path2D,a=s.scale(e.scale);n.addPath?(n.addPath(i,a),t.path2d=n):delete t.path2d}else delete t.path2d;!t.path2d&&this.raw&&(t.path2d=new Path2D,t.path2d.moveTo(this.raw[0].x,this.raw[0].y),this.raw.forEach((i,e)=>{var o;e>0&&(null===(o=t.path2d)||void 0===o||o.lineTo(i.x,i.y))}),t.path2d.closePath())}}initRawData(t){return Te(this,void 0,void 0,(function*(){const i=this.options;if(i.url)this.raw=yield this.downloadSvgPath(i.url,t);else if(i.data){const e=i.data;let o;if("string"!=typeof e){const t=e.path instanceof Array?e.path.map(t=>`<path d="${t}" />`).join(""):`<path d="${e.path}" />`;o=`<svg ${'xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"'} width="${e.size.width}" height="${e.size.height}">${t}</svg>`}else o=e;this.raw=this.parseSvgPath(o,t)}this.createPath2D()}))}}const Ve=new class{constructor(){this.id="polygonMask"}getPlugin(t){return new Ie(t)}needsPlugin(t){var i,e,o;return null!==(e=null===(i=null==t?void 0:t.polygon)||void 0===i?void 0:i.enable)&&void 0!==e?e:void 0!==(null===(o=null==t?void 0:t.polygon)||void 0===o?void 0:o.type)&&t.polygon.type!==ze.none}loadOptions(t,i){if(!this.needsPlugin(i))return;const e=t;let o=e.polygon;void 0===(null==o?void 0:o.load)&&(e.polygon=o=new Ae),o.load(null==i?void 0:i.polygon)}};class Fe extends class{constructor(){ie.set(this,void 0),se(this,ie,!1);const t=new e,i=new U,o=new j;B.addShapeDrawer(f.line,new X),B.addShapeDrawer(f.circle,new Y),B.addShapeDrawer(f.edge,t),B.addShapeDrawer(f.square,t),B.addShapeDrawer(f.triangle,new Q),B.addShapeDrawer(f.star,new Z),B.addShapeDrawer(f.polygon,new K),B.addShapeDrawer(f.char,i),B.addShapeDrawer(f.character,i),B.addShapeDrawer(f.image,o),B.addShapeDrawer(f.images,o)}init(){ne(this,ie)||se(this,ie,!0)}loadFromArray(t,i,e){return oe(this,void 0,void 0,(function*(){return te.load(t,i,e)}))}load(t,i){return oe(this,void 0,void 0,(function*(){return te.load(t,i)}))}set(t,i,e){return oe(this,void 0,void 0,(function*(){return te.set(t,i,e)}))}loadJSON(t,i,e){return te.loadJSON(t,i,e)}setOnClickHandler(t){te.setOnClickHandler(t)}dom(){return te.dom()}domItem(t){return te.domItem(t)}addShape(t,i,e,o,s){let n;n="function"==typeof i?{afterEffect:o,destroy:s,draw:i,init:e}:i,B.addShapeDrawer(t,n)}addPreset(t,i){B.addPreset(t,i)}addPlugin(t){B.addPlugin(t)}addPathGenerator(t,i){B.addPathGenerator(t,i)}}{constructor(){super(),this.addPlugin(de),this.addPlugin(we),this.addPlugin(Ve)}}const He=new Fe;He.init();const{particlesJS:Le,pJSDom:qe}=(t=>{const i=(i,e)=>t.load(i,e);return i.load=(i,e,o)=>{t.loadJSON(i,e).then(t=>{t&&o(t)})},i.setOnClickHandler=i=>{t.setOnClickHandler(i)},{particlesJS:i,pJSDom:t.dom()}})(He);return i})()}));
|
base/eae-widget-base.php
CHANGED
@@ -4,9 +4,9 @@ namespace WTS_EAE\Base;
|
|
4 |
Â
|
5 |
Â
use Elementor\Widget_Base;
|
6 |
Â
|
7 |
-
abstract class EAE_Widget_Base extends Widget_Base{
|
8 |
Â
|
9 |
Â
public function get_categories() {
|
10 |
Â
return [ 'wts-eae' ];
|
11 |
Â
}
|
12 |
-
}
|
4 |
Â
|
5 |
Â
use Elementor\Widget_Base;
|
6 |
Â
|
7 |
+
abstract class EAE_Widget_Base extends Widget_Base {
|
8 |
Â
|
9 |
Â
public function get_categories() {
|
10 |
Â
return [ 'wts-eae' ];
|
11 |
Â
}
|
12 |
+
}
|
base/module-base.php
CHANGED
@@ -25,6 +25,7 @@ abstract class Module_Base {
|
|
25 |
Â
/**
|
26 |
Â
* @var Module_Base
|
27 |
Â
*/
|
Â
|
|
28 |
Â
protected static $_instances = [];
|
29 |
Â
|
30 |
Â
/**
|
@@ -128,7 +129,6 @@ abstract class Module_Base {
|
|
128 |
Â
return [];
|
129 |
Â
}
|
130 |
Â
|
131 |
-
public function add_dependent_js_css(){
|
132 |
-
|
133 |
Â
}
|
134 |
Â
}
|
25 |
Â
/**
|
26 |
Â
* @var Module_Base
|
27 |
Â
*/
|
28 |
+
// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
29 |
Â
protected static $_instances = [];
|
30 |
Â
|
31 |
Â
/**
|
129 |
Â
return [];
|
130 |
Â
}
|
131 |
Â
|
132 |
+
public function add_dependent_js_css() {
|
Â
|
|
133 |
Â
}
|
134 |
Â
}
|
classes/helper.php
CHANGED
@@ -10,11 +10,10 @@ use Elementor\Group_Control_Border;
|
|
10 |
Â
use Elementor\Group_Control_Box_Shadow;
|
11 |
Â
use Elementor\Icons_Manager;
|
12 |
Â
|
13 |
-
class Helper
|
14 |
-
|
15 |
-
function eae_get_post_data($args)
|
16 |
-
|
17 |
-
$defaults = array(
|
18 |
Â
'posts_per_page' => 5,
|
19 |
Â
'offset' => 0,
|
20 |
Â
'category' => '',
|
@@ -31,34 +30,32 @@ class Helper
|
|
31 |
Â
'author' => '',
|
32 |
Â
'author_name' => '',
|
33 |
Â
'post_status' => 'publish',
|
34 |
-
'suppress_filters' => false
|
35 |
-
|
36 |
Â
|
37 |
-
$atts = wp_parse_args($args, $defaults);
|
38 |
Â
|
39 |
-
$posts = get_posts($atts);
|
40 |
Â
|
41 |
Â
return $posts;
|
42 |
Â
}
|
43 |
Â
|
44 |
-
function eae_get_post_types()
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
);
|
49 |
Â
|
50 |
-
$skip_post_types = ['attachment'];
|
51 |
Â
|
52 |
-
$post_types = get_post_types($args);
|
53 |
Â
|
54 |
Â
return $post_types;
|
55 |
Â
}
|
56 |
Â
|
57 |
-
function eae_get_post_settings($settings)
|
58 |
-
{
|
59 |
Â
$post_args['post_type'] = $settings['post_type'];
|
60 |
Â
|
61 |
-
if ($settings['post_type']
|
62 |
Â
$post_args['category'] = $settings['category'];
|
63 |
Â
}
|
64 |
Â
|
@@ -70,43 +67,37 @@ class Helper
|
|
70 |
Â
return $post_args;
|
71 |
Â
}
|
72 |
Â
|
73 |
-
function eae_get_excerpt_by_id($post_id, $excerpt_length)
|
74 |
-
|
75 |
-
$the_post = get_post($post_id); //Gets post ID
|
76 |
Â
|
77 |
Â
$the_excerpt = null;
|
78 |
-
if ($the_post) {
|
79 |
Â
$the_excerpt = $the_post->post_excerpt ? $the_post->post_excerpt : $the_post->post_content;
|
80 |
Â
}
|
81 |
Â
|
82 |
-
|
83 |
-
|
84 |
-
$the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images
|
85 |
-
$words = explode(' ', $the_excerpt, $excerpt_length + 1);
|
86 |
Â
|
87 |
-
if (count($words) > $excerpt_length) :
|
88 |
-
array_pop($words);
|
89 |
-
|
90 |
-
$the_excerpt = implode(' ', $words);
|
91 |
Â
$the_excerpt .= '...'; // Don't put a space before
|
92 |
Â
endif;
|
93 |
Â
|
94 |
Â
return $the_excerpt;
|
95 |
Â
}
|
96 |
Â
|
97 |
-
function eae_get_thumbnail_sizes()
|
98 |
-
{
|
99 |
Â
$sizes = get_intermediate_image_sizes();
|
100 |
-
foreach ($sizes as $s) {
|
101 |
-
$ret[$s] = $s;
|
102 |
Â
}
|
103 |
Â
|
104 |
Â
return $ret;
|
105 |
Â
}
|
106 |
Â
|
107 |
-
function eae_get_post_orderby_options()
|
108 |
-
|
109 |
-
$orderby = array(
|
110 |
Â
'ID' => 'Post Id',
|
111 |
Â
'author' => 'Post Author',
|
112 |
Â
'title' => 'Title',
|
@@ -116,30 +107,28 @@ class Helper
|
|
116 |
Â
'rand' => 'Random',
|
117 |
Â
'comment_count' => 'Comment Count',
|
118 |
Â
'menu_order' => 'Menu Order',
|
119 |
-
|
120 |
Â
|
121 |
Â
return $orderby;
|
122 |
Â
}
|
123 |
Â
|
124 |
-
public function get_icon_html($settings, $control_name, $default, $all_settings)
|
125 |
-
{
|
126 |
Â
|
127 |
Â
$icon_html = '';
|
128 |
Â
$skin_type = $all_settings['_skin'];
|
129 |
-
//echo '<pre>'; print_r($settings); echo '</pre>';die();
|
130 |
Â
// --------------New Work-----------------
|
131 |
Â
|
132 |
-
$view
|
133 |
Â
$shape = 'eae-icon-shape-' . $default['shape'];
|
134 |
Â
|
135 |
-
$icon_migrated = isset($all_settings['__fa4_migrated'][$skin_type . '_global_icon_new']);
|
136 |
-
$icon_is_new
|
137 |
Â
|
138 |
-
$item_icon_migrated = isset($settings['__fa4_migrated'][$control_name . '_icon_new']);
|
139 |
-
$item_icon_is_new
|
140 |
-
if (!isset($settings[$control_name . '_eae_icon']) ||
|
141 |
Â
|
142 |
-
switch ($default['icon_type']) {
|
143 |
Â
|
144 |
Â
case 'image':
|
145 |
Â
$icon_html = '<i><img src="' . $default['image']['url'] . '"/></i>';
|
@@ -150,116 +139,119 @@ class Helper
|
|
150 |
Â
break;
|
151 |
Â
}
|
152 |
Â
|
153 |
-
$view
|
154 |
-
$shape
|
155 |
Â
$icon_type = 'eae-icon-type-' . $default['icon_type'];
|
156 |
Â
$icon_name = 'eae-icon-' . $control_name;
|
157 |
Â
|
158 |
-
if ($default['icon_new'] !== '') {
|
159 |
-
?>
|
160 |
Â
<div class="eae-icon <?php echo $icon_name . ' ' . $view . ' ' . $shape . ' ' . $icon_type; ?>">
|
161 |
Â
<div class="eae-icon-wrap">
|
162 |
-
<?php if ($default['icon_type']
|
163 |
-
<?php
|
164 |
-
|
165 |
-
|
Â
|
|
Â
|
|
166 |
Â
<i class="<?php echo $default['icon']; ?>"></i>
|
167 |
Â
<?php endif; ?>
|
168 |
-
|
Â
|
|
169 |
Â
echo $icon_html;
|
170 |
-
}
|
Â
|
|
171 |
Â
</div>
|
172 |
Â
</div>
|
173 |
-
|
174 |
Â
}
|
175 |
Â
} else {
|
176 |
-
|
177 |
-
switch ($settings[$control_name . '_icon_type']) {
|
178 |
-
|
179 |
Â
|
180 |
Â
case 'image':
|
181 |
-
$icon_html = '<i><img src="' . $settings[$control_name . '_image']['url'] . '" /></i>';
|
182 |
Â
break;
|
183 |
Â
|
184 |
Â
case 'text':
|
185 |
-
$icon_html = '<i class="">' . $settings[$control_name . '_text'] . '</i>';
|
186 |
Â
break;
|
187 |
Â
}
|
188 |
Â
|
189 |
-
if ($settings[$control_name . '_view']
|
190 |
-
$view = 'eae-icon-view-' . $settings[$control_name . '_view'];
|
191 |
Â
}
|
192 |
Â
|
193 |
-
if ($settings[$control_name . '_shape']
|
194 |
-
$shape = 'eae-icon-shape-' . $settings[$control_name . '_shape'];
|
195 |
Â
}
|
196 |
Â
|
197 |
-
$icon_type = 'eae-icon-type-' . $settings[$control_name . '_icon_type'];
|
198 |
Â
|
199 |
Â
$icon_name = 'eae-icon-' . $control_name;
|
200 |
Â
}
|
201 |
-
if (isset($settings[$control_name . '_eae_icon'])
|
202 |
Â
?>
|
203 |
Â
<div class="eae-icon <?php echo $icon_name . ' ' . $view . ' ' . $shape . ' ' . $icon_type; ?>">
|
204 |
Â
<div class="eae-icon-wrap">
|
205 |
Â
<?php
|
206 |
-
if ($settings[$control_name . '_icon_type']
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
Â
|
|
Â
|
|
Â
|
|
211 |
Â
<?php endif; ?>
|
212 |
-
|
Â
|
|
213 |
Â
echo $icon_html;
|
214 |
-
}
|
Â
|
|
215 |
Â
</div>
|
216 |
Â
</div>
|
217 |
-
<?php
|
218 |
Â
}
|
219 |
-
//return $icon_html;
|
220 |
Â
}
|
221 |
Â
|
222 |
-
public function get_icon_timeline_html($settings, $control_name)
|
223 |
-
{
|
224 |
Â
|
225 |
Â
$icon_html = '';
|
226 |
-
//echo '<pre>'; print_r($settings); echo '</pre>';
|
227 |
Â
$icon_data = '';
|
228 |
Â
|
229 |
-
if ($settings[$control_name . '_eae_icon']
|
230 |
-
$settings[$control_name . '_icon']
|
231 |
-
$settings[$control_name . '_view']
|
232 |
-
$settings[$control_name . '_shape']
|
233 |
-
$settings[$control_name . '_icon_type'] = 'icon';
|
234 |
-
$icon_data
|
235 |
Â
} else {
|
236 |
Â
|
237 |
-
if ($settings[$control_name . '_icon_type']
|
238 |
-
if ($settings[$control_name . '_icon']
|
239 |
-
$settings[$control_name . '_icon'] = 'fa fa-star';
|
240 |
-
$settings[$control_name . '_view'] = 'stacked';
|
241 |
-
$settings[$control_name . '_shape'] = '';
|
242 |
Â
}
|
243 |
-
if ($settings[$control_name . '_icon']
|
244 |
-
$icon_data = '<i class="' . $settings[$control_name . '_icon'] . ' hvr-icon"></i>';
|
245 |
Â
}
|
246 |
-
} elseif ($settings[$control_name . '_icon_type']
|
247 |
-
if ($settings[$control_name . '_image']['id']
|
248 |
-
$icon_data = wp_get_attachment_image($settings[$control_name . '_image']['id']);
|
249 |
Â
}
|
250 |
-
} elseif ($settings[$control_name . '_icon_type']
|
251 |
-
if ($settings[$control_name . '_text']
|
252 |
-
$icon_data = $settings[$control_name . '_text'];
|
253 |
Â
}
|
254 |
Â
} else {
|
255 |
Â
$icon_data = '';
|
256 |
Â
}
|
257 |
Â
}
|
258 |
Â
|
259 |
-
|
260 |
-
|
261 |
-
$icon_html .= '<span class="
|
262 |
-
$icon_html .= '<span class="elementor-icon eae-icon elementor-animation-' . $settings[$control_name . '_icon_hover_animation'] . '">';
|
263 |
Â
$icon_html .= $icon_data;
|
264 |
Â
$icon_html .= '</span>';
|
265 |
Â
$icon_html .= '</span>';
|
@@ -270,8 +262,7 @@ class Helper
|
|
270 |
Â
|
271 |
Â
|
272 |
Â
|
273 |
-
public function group_icon_styles($widget, $args)
|
274 |
-
{
|
275 |
Â
|
276 |
Â
$defaults = [
|
277 |
Â
'primary_color' => true,
|
@@ -293,39 +284,26 @@ class Helper
|
|
293 |
Â
'focus_item_class' => '',
|
294 |
Â
];
|
295 |
Â
|
296 |
-
$args = wp_parse_args($args, $defaults);
|
297 |
-
|
298 |
-
$control_name = $args['name'];
|
299 |
-
|
300 |
-
//$control_label = $args['label'];
|
301 |
Â
|
302 |
-
|
303 |
-
'section_style_' . $control_name . '_icon',
|
304 |
-
[
|
305 |
-
'label' => __( $control_label . ' Icon', 'wts-eae' ),
|
306 |
-
'tab' => Controls_Manager::TAB_STYLE,
|
307 |
-
'condition' => [
|
308 |
-
$control_name . '_icon!' => '',
|
309 |
-
],
|
310 |
-
]
|
311 |
-
);*/
|
312 |
Â
|
313 |
-
$widget->start_controls_tabs($control_name . 'icon_colors');
|
314 |
Â
|
315 |
Â
$widget->start_controls_tab(
|
316 |
Â
$control_name . '_icon_colors_normal',
|
317 |
Â
[
|
318 |
-
'label' => __('Normal', 'wts-eae'),
|
319 |
Â
]
|
320 |
Â
);
|
321 |
Â
|
322 |
-
if ($args['primary_color']) {
|
323 |
Â
$widget->add_control(
|
324 |
Â
$control_name . '_icon_primary_color',
|
325 |
Â
[
|
326 |
-
'label' => __('Primary Color', 'wts-eae'),
|
327 |
Â
'type' => Controls_Manager::COLOR,
|
328 |
-
'global'
|
329 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
330 |
Â
],
|
331 |
Â
'selectors' => [
|
@@ -340,16 +318,13 @@ class Helper
|
|
340 |
Â
);
|
341 |
Â
}
|
342 |
Â
|
343 |
-
if ($args['secondary_color']) {
|
344 |
Â
$widget->add_control(
|
345 |
Â
$control_name . '_icon_secondary_color',
|
346 |
Â
[
|
347 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
348 |
Â
'type' => Controls_Manager::COLOR,
|
349 |
Â
'default' => '#fff',
|
350 |
-
//'condition' => [
|
351 |
-
// $control_name . '_view!' => 'default',
|
352 |
-
//],
|
353 |
Â
'selectors' => [
|
354 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
355 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked i' => 'color: {{VALUE}};',
|
@@ -361,19 +336,19 @@ class Helper
|
|
361 |
Â
|
362 |
Â
$widget->end_controls_tab();
|
363 |
Â
|
364 |
-
if ($args['hover_primary_color'] || $args['hover_secondary_color']) {
|
365 |
Â
$widget->start_controls_tab(
|
366 |
Â
$control_name . '_icon_colors_hover',
|
367 |
Â
[
|
368 |
-
'label' => __('Hover', 'wts-eae'),
|
369 |
Â
]
|
370 |
Â
);
|
371 |
Â
}
|
372 |
-
if ($args['hover_primary_color']) {
|
373 |
Â
$widget->add_control(
|
374 |
Â
$control_name . '_icon_hover_primary_color',
|
375 |
Â
[
|
376 |
-
'label' => __('Primary Color', 'wts-eae'),
|
377 |
Â
'type' => Controls_Manager::COLOR,
|
378 |
Â
'default' => '',
|
379 |
Â
'selectors' => [
|
@@ -388,16 +363,13 @@ class Helper
|
|
388 |
Â
);
|
389 |
Â
}
|
390 |
Â
|
391 |
-
if ($args['hover_secondary_color']) {
|
392 |
Â
$widget->add_control(
|
393 |
Â
$control_name . '_icon_hover_secondary_color',
|
394 |
Â
[
|
395 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
396 |
Â
'type' => Controls_Manager::COLOR,
|
397 |
Â
'default' => '',
|
398 |
-
//'condition' => [
|
399 |
-
// $control_name . '_view!' => 'default',
|
400 |
-
//],
|
401 |
Â
'selectors' => [
|
402 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked:hover i' => 'color: {{VALUE}};',
|
403 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked:hover svg' => 'fill: {{VALUE}};',
|
@@ -407,11 +379,11 @@ class Helper
|
|
407 |
Â
);
|
408 |
Â
}
|
409 |
Â
|
410 |
-
if ($args['hover_animation']) {
|
411 |
Â
$widget->add_control(
|
412 |
Â
$control_name . '_icon_hover_animation',
|
413 |
Â
[
|
414 |
-
'label' => __('Hover Animation', 'wts-eae'),
|
415 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
416 |
Â
]
|
417 |
Â
);
|
@@ -419,23 +391,22 @@ class Helper
|
|
419 |
Â
|
420 |
Â
$widget->end_controls_tab();
|
421 |
Â
|
422 |
-
if ($args['focus_item_class']
|
423 |
Â
|
424 |
Â
$widget->start_controls_tab(
|
425 |
Â
$control_name . '_icon_colors_focus',
|
426 |
Â
[
|
427 |
-
'label' => __('Focus', 'wts-eae'),
|
428 |
Â
]
|
429 |
Â
);
|
430 |
Â
|
431 |
-
|
432 |
-
if ($args['focus_primary_color']) {
|
433 |
Â
$widget->add_control(
|
434 |
Â
$control_name . '_icon_focus_primary_color',
|
435 |
Â
[
|
436 |
-
'label' => __('Primary Color', 'wts-eae'),
|
437 |
Â
'type' => Controls_Manager::COLOR,
|
438 |
-
'global'
|
439 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
440 |
Â
],
|
441 |
Â
'selectors' => [
|
@@ -450,18 +421,15 @@ class Helper
|
|
450 |
Â
);
|
451 |
Â
}
|
452 |
Â
|
453 |
-
if ($args['focus_secondary_color']) {
|
454 |
Â
$widget->add_control(
|
455 |
Â
$control_name . '_icon_focus_secondary_color',
|
456 |
Â
[
|
457 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
458 |
Â
'type' => Controls_Manager::COLOR,
|
459 |
-
'global'
|
460 |
Â
'default' => Global_Colors::COLOR_ACCENT,
|
461 |
Â
],
|
462 |
-
//'condition' => [
|
463 |
-
// $control_name . '_view!' => 'default',
|
464 |
-
//],
|
465 |
Â
'selectors' => [
|
466 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
467 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-stacked i ' => 'color: {{VALUE}};',
|
@@ -471,18 +439,16 @@ class Helper
|
|
471 |
Â
);
|
472 |
Â
}
|
473 |
Â
|
474 |
-
|
475 |
Â
$widget->end_controls_tab();
|
476 |
Â
}
|
477 |
Â
|
478 |
-
|
479 |
Â
$widget->end_controls_tabs();
|
480 |
Â
|
481 |
-
if ($args['icon_size']) {
|
482 |
Â
$widget->add_responsive_control(
|
483 |
Â
$control_name . '_icon_size',
|
484 |
Â
[
|
485 |
-
'label' => __('Size', 'wts-eae'),
|
486 |
Â
'type' => Controls_Manager::SLIDER,
|
487 |
Â
'range' => [
|
488 |
Â
'px' => [
|
@@ -499,11 +465,11 @@ class Helper
|
|
499 |
Â
);
|
500 |
Â
}
|
501 |
Â
|
502 |
-
if ($args['icon_padding']) {
|
503 |
Â
$widget->add_control(
|
504 |
Â
$control_name . '_icon_padding',
|
505 |
Â
[
|
506 |
-
'label' => __('Padding', 'wts-eae'),
|
507 |
Â
'type' => Controls_Manager::SLIDER,
|
508 |
Â
'selectors' => [
|
509 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
@@ -514,19 +480,15 @@ class Helper
|
|
514 |
Â
'max' => 100,
|
515 |
Â
],
|
516 |
Â
],
|
517 |
-
|
518 |
-
//'condition' => [
|
519 |
-
// $control_name . '_view!' => 'default',
|
520 |
-
//],
|
521 |
Â
]
|
522 |
Â
);
|
523 |
Â
}
|
524 |
Â
|
525 |
-
if ($args['rotate']) {
|
526 |
Â
$widget->add_control(
|
527 |
Â
$control_name . '_icon_rotate',
|
528 |
Â
[
|
529 |
-
'label' => __('Rotate', 'wts-eae'),
|
530 |
Â
'type' => Controls_Manager::SLIDER,
|
531 |
Â
'default' => [
|
532 |
Â
'size' => 0,
|
@@ -539,20 +501,20 @@ class Helper
|
|
539 |
Â
);
|
540 |
Â
}
|
541 |
Â
|
542 |
-
if ($args['border_style']) {
|
543 |
Â
$widget->add_control(
|
544 |
Â
$control_name . '_border_style',
|
545 |
Â
[
|
546 |
-
'label' => __('Border Style', 'wts-eae'),
|
547 |
Â
'type' => Controls_Manager::SELECT,
|
548 |
-
'options'
|
549 |
-
'none'
|
550 |
-
'solid'
|
551 |
-
'double' => __('Double', 'wts-eae'),
|
552 |
-
'dotted' => __('Dotted', 'wts-eae'),
|
553 |
-
'dashed' => __('Dashed', 'wts-eae'),
|
554 |
-
],
|
555 |
-
'default'
|
556 |
Â
'selectors' => [
|
557 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'border-style: {{VALUE}};',
|
558 |
Â
],
|
@@ -561,11 +523,11 @@ class Helper
|
|
561 |
Â
);
|
562 |
Â
}
|
563 |
Â
|
564 |
-
if ($args['border_width']) {
|
565 |
Â
$widget->add_control(
|
566 |
Â
$control_name . '_border_width',
|
567 |
Â
[
|
568 |
-
'label' => __('Border Width', 'wts-eae'),
|
569 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
570 |
Â
'default' => [
|
571 |
Â
'value' => 20,
|
@@ -578,25 +540,22 @@ class Helper
|
|
578 |
Â
);
|
579 |
Â
}
|
580 |
Â
|
581 |
-
if ($args['border_radius']) {
|
582 |
Â
$widget->add_control(
|
583 |
Â
$control_name . '_icon_border_radius',
|
584 |
Â
[
|
585 |
-
'label' => __('Border Radius', 'wts-eae'),
|
586 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
587 |
-
'size_units' => ['px', '%'],
|
588 |
Â
'selectors' => [
|
589 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
590 |
Â
],
|
591 |
Â
]
|
592 |
Â
);
|
593 |
Â
}
|
594 |
-
|
595 |
-
/*$widget->end_controls_section();*/
|
596 |
Â
}
|
597 |
Â
|
598 |
-
public function group_icon_styles_repeater($widget, $args)
|
599 |
-
{
|
600 |
Â
|
601 |
Â
$defaults = [
|
602 |
Â
'primary_color' => true,
|
@@ -620,40 +579,29 @@ class Helper
|
|
620 |
Â
|
621 |
Â
];
|
622 |
Â
|
623 |
-
$args = wp_parse_args($args, $defaults);
|
624 |
Â
|
625 |
Â
$control_name = $args['name'];
|
626 |
Â
$control_label = $args['label'];
|
627 |
Â
|
628 |
-
/*$widget->start_controls_section(
|
629 |
-
'section_style_' . $control_name . '_icon',
|
630 |
-
[
|
631 |
-
'label' => __( $control_label . ' Icon', 'wts-eae' ),
|
632 |
-
'tab' => Controls_Manager::TAB_STYLE,
|
633 |
-
'condition' => [
|
634 |
-
$control_name . '_icon!' => '',
|
635 |
-
],
|
636 |
-
]
|
637 |
-
);*/
|
638 |
-
|
639 |
Â
$widget->add_control(
|
640 |
Â
$control_name . 'custom_styles',
|
641 |
Â
[
|
642 |
-
'label' => __('Custom Icon Style', 'wts-eae'),
|
643 |
Â
'type' => Controls_Manager::SWITCHER,
|
644 |
-
'label_off' => __('No', 'wts-eae'),
|
645 |
-
'label_on' => __('Yes', 'wts-eae'),
|
646 |
Â
'default' => '',
|
647 |
Â
]
|
648 |
Â
);
|
649 |
Â
|
650 |
-
if ($args['tabs']) {
|
651 |
-
$widget->start_controls_tabs($control_name . 'icon_colors');
|
652 |
Â
|
653 |
Â
$widget->start_controls_tab(
|
654 |
Â
$control_name . '_icon_colors_normal',
|
655 |
Â
[
|
656 |
-
'label' => __('Normal', 'wts-eae'),
|
657 |
Â
]
|
658 |
Â
);
|
659 |
Â
} else {
|
@@ -661,20 +609,20 @@ class Helper
|
|
661 |
Â
$widget->add_control(
|
662 |
Â
$control_name . '_icon_colors_normal',
|
663 |
Â
[
|
664 |
-
'label' => __('Normal', 'wts-eae'),
|
665 |
Â
'type' => Controls_Manager::HEADING,
|
666 |
Â
'condition' => [
|
667 |
-
$control_name . 'custom_styles' => 'yes'
|
668 |
-
]
|
669 |
Â
]
|
670 |
Â
);
|
671 |
Â
}
|
672 |
Â
|
673 |
-
if ($args['primary_color']) {
|
674 |
Â
$widget->add_control(
|
675 |
Â
$control_name . '_icon_primary_color',
|
676 |
Â
[
|
677 |
-
'label' => __('Primary Color', 'wts-eae'),
|
678 |
Â
'type' => Controls_Manager::COLOR,
|
679 |
Â
'default' => '',
|
680 |
Â
'selectors' => [
|
@@ -686,17 +634,17 @@ class Helper
|
|
686 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default svg' => 'fill: {{VALUE}};',
|
687 |
Â
],
|
688 |
Â
'condition' => [
|
689 |
-
$control_name . 'custom_styles' => 'yes'
|
690 |
-
]
|
691 |
Â
]
|
692 |
Â
);
|
693 |
Â
}
|
694 |
Â
|
695 |
-
if ($args['secondary_color']) {
|
696 |
Â
$widget->add_control(
|
697 |
Â
$control_name . '_icon_secondary_color',
|
698 |
Â
[
|
699 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
700 |
Â
'type' => Controls_Manager::COLOR,
|
701 |
Â
'default' => '',
|
702 |
Â
'condition' => [
|
@@ -708,47 +656,47 @@ class Helper
|
|
708 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-stacked svg' => 'color: {{VALUE}};',
|
709 |
Â
],
|
710 |
Â
'condition' => [
|
711 |
-
$control_name . 'custom_styles' => 'yes'
|
712 |
-
]
|
713 |
Â
]
|
714 |
Â
);
|
715 |
Â
}
|
716 |
Â
|
717 |
-
if ($args['tabs']) {
|
718 |
Â
|
719 |
Â
$widget->end_controls_tab();
|
720 |
Â
}
|
721 |
Â
|
722 |
-
if ($args['tabs']) {
|
723 |
Â
$widget->start_controls_tab(
|
724 |
Â
$control_name . '_icon_colors_hover',
|
725 |
Â
[
|
726 |
-
'label' => __('Hover', 'wts-eae'),
|
727 |
Â
'condition' => [
|
728 |
-
$control_name . 'custom_styles' => 'yes'
|
729 |
-
]
|
730 |
Â
]
|
731 |
Â
);
|
732 |
Â
} else {
|
733 |
-
if ($args['hover_primary_color'] || $args['hover_secondary_color']) {
|
734 |
Â
$widget->add_control(
|
735 |
Â
$control_name . '_icon_colors_hover',
|
736 |
Â
[
|
737 |
-
'label' => __('Hover', 'wts-eae'),
|
738 |
Â
'type' => Controls_Manager::HEADING,
|
739 |
Â
'condition' => [
|
740 |
-
$control_name . 'custom_styles' => 'yes'
|
741 |
-
]
|
742 |
Â
]
|
743 |
Â
);
|
744 |
Â
}
|
745 |
Â
}
|
746 |
Â
|
747 |
-
if ($args['hover_primary_color']) {
|
748 |
Â
$widget->add_control(
|
749 |
Â
$control_name . '_icon_hover_primary_color',
|
750 |
Â
[
|
751 |
-
'label' => __('Primary Color', 'wts-eae'),
|
752 |
Â
'type' => Controls_Manager::COLOR,
|
753 |
Â
'default' => '',
|
754 |
Â
'selectors' => [
|
@@ -760,17 +708,17 @@ class Helper
|
|
760 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default:hover svg' => 'fill: {{VALUE}}; border-color: {{VALUE}};',
|
761 |
Â
],
|
762 |
Â
'condition' => [
|
763 |
-
$control_name . 'custom_styles' => 'yes'
|
764 |
-
]
|
765 |
Â
]
|
766 |
Â
);
|
767 |
Â
}
|
768 |
Â
|
769 |
-
if ($args['hover_secondary_color']) {
|
770 |
Â
$widget->add_control(
|
771 |
Â
$control_name . '_icon_hover_secondary_color',
|
772 |
Â
[
|
773 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
774 |
Â
'type' => Controls_Manager::COLOR,
|
775 |
Â
'default' => '',
|
776 |
Â
'condition' => [
|
@@ -784,38 +732,37 @@ class Helper
|
|
784 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default:hover svg' => 'fill: {{VALUE}};',
|
785 |
Â
],
|
786 |
Â
'condition' => [
|
787 |
-
$control_name . 'custom_styles' => 'yes'
|
788 |
-
]
|
789 |
Â
]
|
790 |
Â
);
|
791 |
Â
}
|
792 |
Â
|
793 |
-
if ($args['hover_animation']) {
|
794 |
Â
$widget->add_control(
|
795 |
Â
$control_name . '_icon_hover_animation',
|
796 |
Â
[
|
797 |
-
'label' => __('Hover Animation', 'wts-eae'),
|
798 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
799 |
Â
'condition' => [
|
800 |
-
$control_name . 'custom_styles' => 'yes'
|
801 |
-
]
|
802 |
Â
]
|
803 |
Â
);
|
804 |
Â
}
|
805 |
Â
|
806 |
-
|
807 |
-
if ($args['tabs']) {
|
808 |
Â
|
809 |
Â
$widget->end_controls_tab();
|
810 |
Â
}
|
811 |
Â
|
812 |
-
if ($args['focus_item_class']
|
813 |
-
if ($args['tabs']) {
|
814 |
Â
|
815 |
Â
$widget->start_controls_tab(
|
816 |
Â
$control_name . '_icon_colors_focus',
|
817 |
Â
[
|
818 |
-
'label' => __('Focus', 'wts-eae'),
|
819 |
Â
]
|
820 |
Â
);
|
821 |
Â
} else {
|
@@ -823,20 +770,20 @@ class Helper
|
|
823 |
Â
$widget->add_control(
|
824 |
Â
$control_name . '_icon_colors_focus',
|
825 |
Â
[
|
826 |
-
'label' => __('Focus', 'wts-eae'),
|
827 |
Â
'type' => Controls_Manager::HEADING,
|
828 |
Â
'condition' => [
|
829 |
-
$control_name . 'custom_styles' => 'yes'
|
830 |
-
]
|
831 |
Â
]
|
832 |
Â
);
|
833 |
Â
}
|
834 |
Â
|
835 |
-
if ($args['focus_primary_color']) {
|
836 |
Â
$widget->add_control(
|
837 |
Â
$control_name . '_icon_focus_primary_color',
|
838 |
Â
[
|
839 |
-
'label' => __('Primary Color', 'wts-eae'),
|
840 |
Â
'type' => Controls_Manager::COLOR,
|
841 |
Â
'default' => '',
|
842 |
Â
'selectors' => [
|
@@ -848,17 +795,17 @@ class Helper
|
|
848 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}}.' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-default svg' => 'fill: {{VALUE}}; border-color: {{VALUE}};',
|
849 |
Â
],
|
850 |
Â
'condition' => [
|
851 |
-
$control_name . 'custom_styles' => 'yes'
|
852 |
-
]
|
853 |
Â
]
|
854 |
Â
);
|
855 |
Â
}
|
856 |
Â
|
857 |
-
if ($args['focus_secondary_color']) {
|
858 |
Â
$widget->add_control(
|
859 |
Â
$control_name . '_icon_focus_secondary_color',
|
860 |
Â
[
|
861 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
862 |
Â
'type' => Controls_Manager::COLOR,
|
863 |
Â
'default' => '',
|
864 |
Â
'condition' => [
|
@@ -870,27 +817,27 @@ class Helper
|
|
870 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}}.' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-stacked svg' => 'fill: {{VALUE}};',
|
871 |
Â
],
|
872 |
Â
'condition' => [
|
873 |
-
$control_name . 'custom_styles' => 'yes'
|
874 |
-
]
|
875 |
Â
]
|
876 |
Â
);
|
877 |
Â
}
|
878 |
Â
|
879 |
-
if ($args['tabs']) {
|
880 |
Â
|
881 |
Â
$widget->end_controls_tab();
|
882 |
Â
}
|
883 |
Â
}
|
884 |
-
if ($args['tabs']) {
|
885 |
Â
|
886 |
Â
$widget->end_controls_tabs();
|
887 |
Â
}
|
888 |
Â
|
889 |
-
if ($args['icon_size']) {
|
890 |
Â
$widget->add_responsive_control(
|
891 |
Â
$control_name . '_icon_size',
|
892 |
Â
[
|
893 |
-
'label' => __('Size', 'wts-eae'),
|
894 |
Â
'type' => Controls_Manager::SLIDER,
|
895 |
Â
'range' => [
|
896 |
Â
'px' => [
|
@@ -902,23 +849,21 @@ class Helper
|
|
902 |
Â
'selectors' => [
|
903 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon i, {{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'font-size: {{SIZE}}{{UNIT}};',
|
904 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon svg' => 'width: {{SIZE}}{{UNIT}};',
|
905 |
-
//'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '_wrapper.eae-icon-type-text' => 'display: inline-block; height: calc({{SIZE}}{{UNIT}} * 1); width: calc({{SIZE}}{{UNIT}} * 1); text-align: center;',
|
906 |
Â
],
|
907 |
Â
'condition' => [
|
908 |
-
$control_name . 'custom_styles' => 'yes'
|
909 |
-
]
|
910 |
Â
]
|
911 |
Â
);
|
912 |
Â
}
|
913 |
Â
|
914 |
-
if ($args['icon_padding']) {
|
915 |
Â
$widget->add_control(
|
916 |
Â
$control_name . '_icon_padding',
|
917 |
Â
[
|
918 |
-
'label' => __('Padding', 'wts-eae'),
|
919 |
Â
'type' => Controls_Manager::SLIDER,
|
920 |
Â
'selectors' => [
|
921 |
-
//'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '_wrapper .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
922 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
923 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .bpe-layout-left .bpe-timline-progress-bar' => 'left: calc({{SIZE}}{{UNIT}} / 2); right: auto;',
|
924 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .bpe-layout-right .bpe-timline-progress-bar' => 'left: auto; right: calc({{SIZE}}{{UNIT}} / 2);',
|
@@ -931,17 +876,17 @@ class Helper
|
|
931 |
Â
],
|
932 |
Â
'condition' => [
|
933 |
Â
$control_name . '_view!' => 'default',
|
934 |
-
$control_name . 'custom_styles' => 'yes'
|
935 |
-
]
|
936 |
Â
]
|
937 |
Â
);
|
938 |
Â
}
|
939 |
Â
|
940 |
-
if ($args['rotate']) {
|
941 |
Â
$widget->add_control(
|
942 |
Â
$control_name . '_icon_rotate',
|
943 |
Â
[
|
944 |
-
'label' => __('Rotate', 'wts-eae'),
|
945 |
Â
'type' => Controls_Manager::SLIDER,
|
946 |
Â
'default' => [
|
947 |
Â
'size' => 0,
|
@@ -952,75 +897,72 @@ class Helper
|
|
952 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
|
953 |
Â
],
|
954 |
Â
'condition' => [
|
955 |
-
$control_name . 'custom_styles' => 'yes'
|
956 |
-
]
|
957 |
Â
]
|
958 |
Â
);
|
959 |
Â
}
|
960 |
-
if ($args['border_style']) {
|
961 |
Â
$widget->add_control(
|
962 |
Â
$control_name . '_border_style',
|
963 |
Â
[
|
964 |
-
'label' => __('Border Style', 'wts-eae'),
|
965 |
Â
'type' => Controls_Manager::SELECT,
|
966 |
-
'options'
|
967 |
-
'none'
|
968 |
-
'solid'
|
969 |
-
'double' => __('Double', 'wts-eae'),
|
970 |
-
'dotted' => __('Dotted', 'wts-eae'),
|
971 |
-
'dashed' => __('Dashed', 'wts-eae'),
|
972 |
-
],
|
973 |
-
'default'
|
974 |
Â
'selectors' => [
|
975 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-style: {{VALUE}};',
|
976 |
Â
],
|
977 |
Â
'condition' => [
|
978 |
-
$control_name . 'custom_styles' => 'yes'
|
979 |
-
]
|
980 |
Â
|
981 |
Â
]
|
982 |
Â
);
|
983 |
Â
}
|
984 |
Â
|
985 |
-
if ($args['border_width']) {
|
986 |
Â
$widget->add_control(
|
987 |
Â
$control_name . '_border_width',
|
988 |
Â
[
|
989 |
-
'label' => __('Border Width', 'wts-eae'),
|
990 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
991 |
Â
'selectors' => [
|
992 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
993 |
Â
],
|
994 |
Â
'condition' => [
|
995 |
-
$control_name . 'custom_styles' => 'yes'
|
996 |
-
]
|
997 |
Â
]
|
998 |
Â
);
|
999 |
Â
}
|
1000 |
Â
|
1001 |
-
if ($args['border_radius']) {
|
1002 |
Â
$widget->add_control(
|
1003 |
Â
$control_name . '_icon_border_radius',
|
1004 |
Â
[
|
1005 |
-
'label' => __('Border Radius', 'wts-eae'),
|
1006 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
1007 |
-
'size_units' => ['px', '%'],
|
1008 |
Â
'selectors' => [
|
1009 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1010 |
Â
],
|
1011 |
Â
'condition' => [
|
1012 |
Â
$control_name . '_view!' => 'default',
|
1013 |
-
$control_name . 'custom_styles' => 'yes'
|
1014 |
-
]
|
1015 |
Â
]
|
1016 |
Â
);
|
1017 |
Â
}
|
1018 |
-
|
1019 |
-
/*$widget->end_controls_section();*/
|
1020 |
Â
}
|
1021 |
Â
|
1022 |
-
public function group_icon_timeline_styles($widget, $args)
|
1023 |
-
{
|
1024 |
Â
|
1025 |
Â
$defaults = [
|
1026 |
Â
'primary_color' => true,
|
@@ -1041,36 +983,23 @@ class Helper
|
|
1041 |
Â
'focus_item_class' => '',
|
1042 |
Â
];
|
1043 |
Â
|
1044 |
-
$args = wp_parse_args($args, $defaults);
|
1045 |
-
|
1046 |
-
$control_name = $args['name'];
|
1047 |
-
//$control_label = $args['label'];
|
1048 |
Â
|
1049 |
-
|
1050 |
-
|
1051 |
-
[
|
1052 |
-
'label' => __( $control_label . ' Icon', 'wts-eae' ),
|
1053 |
-
'tab' => Controls_Manager::TAB_STYLE,
|
1054 |
-
'condition' => [
|
1055 |
-
$control_name . '_icon!' => '',
|
1056 |
-
],
|
1057 |
-
]
|
1058 |
-
);*/
|
1059 |
-
|
1060 |
-
$widget->start_controls_tabs($control_name . 'icon_colors');
|
1061 |
Â
|
1062 |
Â
$widget->start_controls_tab(
|
1063 |
Â
$control_name . '_icon_colors_normal',
|
1064 |
Â
[
|
1065 |
-
'label' => __('Normal', 'wts-eae'),
|
1066 |
Â
]
|
1067 |
Â
);
|
1068 |
Â
|
1069 |
-
if ($args['primary_color']) {
|
1070 |
Â
$widget->add_control(
|
1071 |
Â
$control_name . '_icon_primary_color',
|
1072 |
Â
[
|
1073 |
-
'label' => __('Primary Color', 'wts-eae'),
|
1074 |
Â
'type' => Controls_Manager::COLOR,
|
1075 |
Â
'default' => '#6ec1e4',
|
1076 |
Â
'selectors' => [
|
@@ -1082,16 +1011,13 @@ class Helper
|
|
1082 |
Â
);
|
1083 |
Â
}
|
1084 |
Â
|
1085 |
-
if ($args['secondary_color']) {
|
1086 |
Â
$widget->add_control(
|
1087 |
Â
$control_name . '_icon_secondary_color',
|
1088 |
Â
[
|
1089 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
1090 |
Â
'type' => Controls_Manager::COLOR,
|
1091 |
Â
'default' => '#ffffff',
|
1092 |
-
//'condition' => [
|
1093 |
-
// $control_name . '_view!' => 'default',
|
1094 |
-
//],
|
1095 |
Â
'selectors' => [
|
1096 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
1097 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon' => 'color: {{VALUE}};',
|
@@ -1105,15 +1031,15 @@ class Helper
|
|
1105 |
Â
$widget->start_controls_tab(
|
1106 |
Â
$control_name . '_icon_colors_hover',
|
1107 |
Â
[
|
1108 |
-
'label' => __('Hover', 'wts-eae'),
|
1109 |
Â
]
|
1110 |
Â
);
|
1111 |
Â
|
1112 |
-
if ($args['hover_primary_color']) {
|
1113 |
Â
$widget->add_control(
|
1114 |
Â
$control_name . '_icon_hover_primary_color',
|
1115 |
Â
[
|
1116 |
-
'label' => __('Primary Color', 'wts-eae'),
|
1117 |
Â
'type' => Controls_Manager::COLOR,
|
1118 |
Â
'default' => '',
|
1119 |
Â
'selectors' => [
|
@@ -1125,16 +1051,13 @@ class Helper
|
|
1125 |
Â
);
|
1126 |
Â
}
|
1127 |
Â
|
1128 |
-
if ($args['hover_secondary_color']) {
|
1129 |
Â
$widget->add_control(
|
1130 |
Â
$control_name . '_icon_hover_secondary_color',
|
1131 |
Â
[
|
1132 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
1133 |
Â
'type' => Controls_Manager::COLOR,
|
1134 |
Â
'default' => '',
|
1135 |
-
//'condition' => [
|
1136 |
-
// $control_name . '_view!' => 'default',
|
1137 |
-
//],
|
1138 |
Â
'selectors' => [
|
1139 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed:hover' => 'background-color: {{VALUE}};',
|
1140 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon:hover' => 'color: {{VALUE}};',
|
@@ -1143,11 +1066,11 @@ class Helper
|
|
1143 |
Â
);
|
1144 |
Â
}
|
1145 |
Â
|
1146 |
-
if ($args['hover_animation']) {
|
1147 |
Â
$widget->add_control(
|
1148 |
Â
$control_name . '_icon_hover_animation',
|
1149 |
Â
[
|
1150 |
-
'label' => __('Hover Animation', 'wts-eae'),
|
1151 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
1152 |
Â
]
|
1153 |
Â
);
|
@@ -1155,21 +1078,20 @@ class Helper
|
|
1155 |
Â
|
1156 |
Â
$widget->end_controls_tab();
|
1157 |
Â
|
1158 |
-
if ($args['focus_item_class']
|
1159 |
Â
|
1160 |
Â
$widget->start_controls_tab(
|
1161 |
Â
$control_name . '_icon_colors_focus',
|
1162 |
Â
[
|
1163 |
-
'label' => __('Focus', 'wts-eae'),
|
1164 |
Â
]
|
1165 |
Â
);
|
1166 |
Â
|
1167 |
-
|
1168 |
-
if ($args['focus_primary_color']) {
|
1169 |
Â
$widget->add_control(
|
1170 |
Â
$control_name . '_icon_focus_primary_color',
|
1171 |
Â
[
|
1172 |
-
'label' => __('Primary Color', 'wts-eae'),
|
1173 |
Â
'type' => Controls_Manager::COLOR,
|
1174 |
Â
'default' => '',
|
1175 |
Â
'selectors' => [
|
@@ -1181,16 +1103,13 @@ class Helper
|
|
1181 |
Â
);
|
1182 |
Â
}
|
1183 |
Â
|
1184 |
-
if ($args['focus_secondary_color']) {
|
1185 |
Â
$widget->add_control(
|
1186 |
Â
$control_name . '_icon_focus_secondary_color',
|
1187 |
Â
[
|
1188 |
-
'label' => __('Secondary Color', 'wts-eae'),
|
1189 |
Â
'type' => Controls_Manager::COLOR,
|
1190 |
Â
'default' => '',
|
1191 |
-
//'condition' => [
|
1192 |
-
// $control_name . '_view!' => 'default',
|
1193 |
-
//],
|
1194 |
Â
'selectors' => [
|
1195 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
1196 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon' => 'color: {{VALUE}};',
|
@@ -1199,18 +1118,16 @@ class Helper
|
|
1199 |
Â
);
|
1200 |
Â
}
|
1201 |
Â
|
1202 |
-
|
1203 |
Â
$widget->end_controls_tab();
|
1204 |
Â
}
|
1205 |
Â
|
1206 |
-
|
1207 |
Â
$widget->end_controls_tabs();
|
1208 |
Â
|
1209 |
-
if ($args['icon_size']) {
|
1210 |
Â
$widget->add_responsive_control(
|
1211 |
Â
$control_name . '_icon_size',
|
1212 |
Â
[
|
1213 |
-
'label' => __('Size', 'wts-eae'),
|
1214 |
Â
'type' => Controls_Manager::SLIDER,
|
1215 |
Â
'range' => [
|
1216 |
Â
'px' => [
|
@@ -1225,11 +1142,11 @@ class Helper
|
|
1225 |
Â
);
|
1226 |
Â
}
|
1227 |
Â
|
1228 |
-
if ($args['icon_padding']) {
|
1229 |
Â
$widget->add_control(
|
1230 |
Â
$control_name . '_icon_padding',
|
1231 |
Â
[
|
1232 |
-
'label' => __('Background Size', 'wts-eae'),
|
1233 |
Â
'type' => Controls_Manager::SLIDER,
|
1234 |
Â
'selectors' => [
|
1235 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-wrapper' => 'display: inline-block; min-height: {{SIZE}}{{UNIT}}; min-width: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
|
@@ -1242,18 +1159,15 @@ class Helper
|
|
1242 |
Â
'max' => 100,
|
1243 |
Â
],
|
1244 |
Â
],
|
1245 |
-
//'condition' => [
|
1246 |
-
// $control_name . '_view!' => 'default',
|
1247 |
-
//],
|
1248 |
Â
]
|
1249 |
Â
);
|
1250 |
Â
}
|
1251 |
Â
|
1252 |
-
if ($args['rotate']) {
|
1253 |
Â
$widget->add_control(
|
1254 |
Â
$control_name . '_icon_rotate',
|
1255 |
Â
[
|
1256 |
-
'label' => __('Rotate', 'wts-eae'),
|
1257 |
Â
'type' => Controls_Manager::SLIDER,
|
1258 |
Â
'default' => [
|
1259 |
Â
'size' => 0,
|
@@ -1266,253 +1180,358 @@ class Helper
|
|
1266 |
Â
);
|
1267 |
Â
}
|
1268 |
Â
|
1269 |
-
if ($args['border_width']) {
|
1270 |
Â
$widget->add_control(
|
1271 |
Â
$control_name . '_border_width',
|
1272 |
Â
[
|
1273 |
-
'label' => __('Border Width', 'wts-eae'),
|
1274 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
1275 |
Â
'selectors' => [
|
1276 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper .elementor-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1277 |
Â
],
|
1278 |
-
//'condition' => [
|
1279 |
-
// $control_name . '_view' => 'framed',
|
1280 |
-
//],
|
1281 |
Â
]
|
1282 |
Â
);
|
1283 |
Â
}
|
1284 |
Â
|
1285 |
-
if ($args['border_radius']) {
|
1286 |
Â
$widget->add_control(
|
1287 |
Â
$control_name . '_icon_border_radius',
|
1288 |
Â
[
|
1289 |
-
'label' => __('Border Radius', 'wts-eae'),
|
1290 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
1291 |
-
'size_units' => ['px', '%'],
|
1292 |
Â
'selectors' => [
|
1293 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1294 |
Â
],
|
1295 |
-
//'condition' => [
|
1296 |
-
// $control_name . '_view!' => 'default',
|
1297 |
-
//],
|
1298 |
Â
]
|
1299 |
Â
);
|
1300 |
Â
}
|
1301 |
-
|
1302 |
-
/*$widget->end_controls_section();*/
|
1303 |
Â
}
|
1304 |
Â
|
1305 |
Â
|
1306 |
-
function box_model_controls($widget, $args)
|
1307 |
-
{
|
1308 |
Â
|
1309 |
Â
$defaults = [
|
1310 |
-
'border'
|
1311 |
Â
'border-radius' => true,
|
1312 |
-
'margin'
|
1313 |
-
'padding'
|
1314 |
-
'box-shadow'
|
1315 |
Â
];
|
1316 |
Â
|
1317 |
-
$args = wp_parse_args($args, $defaults);
|
1318 |
Â
|
1319 |
-
if ($args['border']) {
|
1320 |
Â
$widget->add_group_control(
|
1321 |
Â
Group_Control_Border::get_type(),
|
1322 |
Â
[
|
1323 |
-
'name'
|
1324 |
-
'label'
|
1325 |
-
'selector'
|
1326 |
Â
'condition' => [
|
1327 |
-
'ribbons_badges_switcher!' => ''
|
1328 |
-
]
|
1329 |
Â
]
|
1330 |
Â
);
|
1331 |
Â
}
|
1332 |
Â
|
1333 |
-
if ($args['border-radius']) {
|
1334 |
Â
$widget->add_control(
|
1335 |
Â
$args['name'] . '_border_radius',
|
1336 |
Â
[
|
1337 |
-
'label'
|
1338 |
-
'type'
|
1339 |
-
'size_units' => ['px', '%'],
|
1340 |
-
'selectors'
|
1341 |
Â
$args['selector'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1342 |
Â
],
|
1343 |
-
'condition'
|
1344 |
-
'ribbons_badges_switcher!' => ''
|
1345 |
-
]
|
1346 |
Â
]
|
1347 |
Â
);
|
1348 |
Â
}
|
1349 |
Â
|
1350 |
-
if ($args['box-shadow']) {
|
1351 |
Â
$widget->add_group_control(
|
1352 |
Â
Group_Control_Box_Shadow::get_type(),
|
1353 |
Â
[
|
1354 |
-
'name'
|
1355 |
-
'label'
|
1356 |
-
'selector'
|
1357 |
Â
'condition' => [
|
1358 |
-
'ribbons_badges_switcher!' => ''
|
1359 |
-
]
|
1360 |
Â
]
|
1361 |
Â
);
|
1362 |
Â
}
|
1363 |
Â
|
1364 |
-
if ($args['padding']) {
|
1365 |
Â
$widget->add_control(
|
1366 |
Â
$args['name'] . '_padding',
|
1367 |
Â
[
|
1368 |
-
'label'
|
1369 |
-
'type'
|
1370 |
-
'size_units' => ['px', '%'],
|
1371 |
-
'selectors'
|
1372 |
Â
$args['selector'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1373 |
Â
],
|
1374 |
-
'condition'
|
1375 |
-
'ribbons_badges_switcher!' => ''
|
1376 |
-
]
|
1377 |
Â
]
|
1378 |
Â
);
|
1379 |
Â
}
|
1380 |
Â
|
1381 |
-
|
1382 |
-
if ($args['margin']) {
|
1383 |
Â
$widget->add_control(
|
1384 |
Â
$args['name'] . '_margin',
|
1385 |
Â
[
|
1386 |
-
'label'
|
1387 |
-
'type'
|
1388 |
-
'size_units' => ['px', '%'],
|
1389 |
-
'selectors'
|
1390 |
Â
$args['selector'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1391 |
Â
],
|
1392 |
-
'condition'
|
1393 |
-
'ribbons_badges_switcher!' => ''
|
1394 |
-
]
|
1395 |
Â
]
|
1396 |
Â
);
|
1397 |
Â
}
|
1398 |
Â
}
|
1399 |
Â
|
1400 |
-
function get_eae_modules()
|
1401 |
-
{
|
1402 |
Â
$modules = [
|
1403 |
-
'timeline'
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
'
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
'
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
'
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
'
|
1424 |
-
|
1425 |
-
|
1426 |
-
|
1427 |
-
|
1428 |
-
'
|
1429 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1430 |
Â
];
|
1431 |
Â
|
1432 |
-
$saved_modules = get_option('wts_eae_elements');
|
1433 |
Â
|
1434 |
-
if ($saved_modules !== false) {
|
1435 |
-
foreach ($modules as $key => $module_name) {
|
1436 |
-
if (array_key_exists($key, $saved_modules)) {
|
1437 |
-
$modules[$key]['enabled'] = $saved_modules[$key];
|
1438 |
Â
} else {
|
1439 |
-
$modules[$key]['enabled'] = true;
|
1440 |
Â
}
|
1441 |
Â
}
|
1442 |
Â
}
|
1443 |
Â
|
1444 |
-
$modules = apply_filters('wts_eae_active_modules', $modules);
|
1445 |
Â
|
1446 |
Â
return $modules;
|
1447 |
Â
}
|
1448 |
Â
|
1449 |
-
public function get_current_url_non_paged()
|
1450 |
-
{
|
1451 |
-
|
1452 |
Â
global $wp;
|
1453 |
-
$url = get_pagenum_link(1);
|
1454 |
Â
|
1455 |
-
return trailingslashit($url);
|
1456 |
Â
}
|
1457 |
Â
|
1458 |
Â
|
1459 |
-
public static function select_elementor_page( $type
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
Â
|
1473 |
-
|
1474 |
-
|
Â
|
|
Â
|
|
1475 |
Â
|
Â
|
|
Â
|
|
Â
|
|
1476 |
Â
|
1477 |
-
|
1478 |
-
|
1479 |
-
}
|
1480 |
Â
|
1481 |
-
|
1482 |
-
|
1483 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1484 |
Â
|
1485 |
-
|
1486 |
-
|
Â
|
|
Â
|
|
1487 |
Â
|
1488 |
-
|
1489 |
-
|
1490 |
-
|
1491 |
-
|
1492 |
-
|
1493 |
-
|
1494 |
-
|
1495 |
-
|
1496 |
-
|
1497 |
-
|
1498 |
-
|
1499 |
-
|
1500 |
-
|
1501 |
-
|
1502 |
-
|
1503 |
-
|
1504 |
-
|
1505 |
-
|
1506 |
-
|
1507 |
-
|
1508 |
-
|
1509 |
-
|
1510 |
-
|
1511 |
-
|
1512 |
-
|
1513 |
-
|
1514 |
-
|
1515 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
1516 |
Â
|
1517 |
Â
|
1518 |
Â
}
|
10 |
Â
use Elementor\Group_Control_Box_Shadow;
|
11 |
Â
use Elementor\Icons_Manager;
|
12 |
Â
|
13 |
+
class Helper {
|
14 |
+
|
15 |
+
public function eae_get_post_data( $args ) {
|
16 |
+
$defaults = [
|
Â
|
|
17 |
Â
'posts_per_page' => 5,
|
18 |
Â
'offset' => 0,
|
19 |
Â
'category' => '',
|
30 |
Â
'author' => '',
|
31 |
Â
'author_name' => '',
|
32 |
Â
'post_status' => 'publish',
|
33 |
+
'suppress_filters' => false,
|
34 |
+
];
|
35 |
Â
|
36 |
+
$atts = wp_parse_args( $args, $defaults );
|
37 |
Â
|
38 |
+
$posts = get_posts( $atts );
|
39 |
Â
|
40 |
Â
return $posts;
|
41 |
Â
}
|
42 |
Â
|
43 |
+
public function eae_get_post_types() {
|
44 |
+
$args = [
|
45 |
+
'public' => true,
|
46 |
+
];
|
Â
|
|
47 |
Â
|
48 |
+
$skip_post_types = [ 'attachment' ];
|
49 |
Â
|
50 |
+
$post_types = get_post_types( $args );
|
51 |
Â
|
52 |
Â
return $post_types;
|
53 |
Â
}
|
54 |
Â
|
55 |
+
public function eae_get_post_settings( $settings ) {
|
Â
|
|
56 |
Â
$post_args['post_type'] = $settings['post_type'];
|
57 |
Â
|
58 |
+
if ( $settings['post_type'] === 'post' ) {
|
59 |
Â
$post_args['category'] = $settings['category'];
|
60 |
Â
}
|
61 |
Â
|
67 |
Â
return $post_args;
|
68 |
Â
}
|
69 |
Â
|
70 |
+
public function eae_get_excerpt_by_id( $post_id, $excerpt_length ) {
|
71 |
+
$the_post = get_post( $post_id ); //Gets post ID
|
Â
|
|
72 |
Â
|
73 |
Â
$the_excerpt = null;
|
74 |
+
if ( $the_post ) {
|
75 |
Â
$the_excerpt = $the_post->post_excerpt ? $the_post->post_excerpt : $the_post->post_content;
|
76 |
Â
}
|
77 |
Â
|
78 |
+
$the_excerpt = wp_strip_all_tags( strip_shortcodes( $the_excerpt ) ); //Strips tags and images
|
79 |
+
$words = explode( ' ', $the_excerpt, $excerpt_length + 1 );
|
Â
|
|
Â
|
|
80 |
Â
|
81 |
+
if ( count( $words ) > $excerpt_length ) :
|
82 |
+
array_pop( $words );
|
83 |
+
$the_excerpt = implode( ' ', $words );
|
Â
|
|
84 |
Â
$the_excerpt .= '...'; // Don't put a space before
|
85 |
Â
endif;
|
86 |
Â
|
87 |
Â
return $the_excerpt;
|
88 |
Â
}
|
89 |
Â
|
90 |
+
public function eae_get_thumbnail_sizes() {
|
Â
|
|
91 |
Â
$sizes = get_intermediate_image_sizes();
|
92 |
+
foreach ( $sizes as $s ) {
|
93 |
+
$ret[ $s ] = $s;
|
94 |
Â
}
|
95 |
Â
|
96 |
Â
return $ret;
|
97 |
Â
}
|
98 |
Â
|
99 |
+
public function eae_get_post_orderby_options() {
|
100 |
+
$orderby = [
|
Â
|
|
101 |
Â
'ID' => 'Post Id',
|
102 |
Â
'author' => 'Post Author',
|
103 |
Â
'title' => 'Title',
|
107 |
Â
'rand' => 'Random',
|
108 |
Â
'comment_count' => 'Comment Count',
|
109 |
Â
'menu_order' => 'Menu Order',
|
110 |
+
];
|
111 |
Â
|
112 |
Â
return $orderby;
|
113 |
Â
}
|
114 |
Â
|
115 |
+
public function get_icon_html( $settings, $control_name, $default, $all_settings ) {
|
Â
|
|
116 |
Â
|
117 |
Â
$icon_html = '';
|
118 |
Â
$skin_type = $all_settings['_skin'];
|
Â
|
|
119 |
Â
// --------------New Work-----------------
|
120 |
Â
|
121 |
+
$view = 'eae-icon-view-' . $default['view'];
|
122 |
Â
$shape = 'eae-icon-shape-' . $default['shape'];
|
123 |
Â
|
124 |
+
$icon_migrated = isset( $all_settings['__fa4_migrated'][ $skin_type . '_global_icon_new' ] );
|
125 |
+
$icon_is_new = empty( $all_settings[ $skin_type . '_global_icon' ] );
|
126 |
Â
|
127 |
+
$item_icon_migrated = isset( $settings['__fa4_migrated'][ $control_name . '_icon_new' ] );
|
128 |
+
$item_icon_is_new = empty( $settings[ $control_name . '_icon' ] );
|
129 |
+
if ( ! isset( $settings[ $control_name . '_eae_icon' ] ) || $settings[ $control_name . '_eae_icon' ] === '' ) {
|
130 |
Â
|
131 |
+
switch ( $default['icon_type'] ) {
|
132 |
Â
|
133 |
Â
case 'image':
|
134 |
Â
$icon_html = '<i><img src="' . $default['image']['url'] . '"/></i>';
|
139 |
Â
break;
|
140 |
Â
}
|
141 |
Â
|
142 |
+
$view = 'eae-icon-view-' . $default['view'];
|
143 |
+
$shape = 'eae-icon-shape-' . $default['shape'];
|
144 |
Â
$icon_type = 'eae-icon-type-' . $default['icon_type'];
|
145 |
Â
$icon_name = 'eae-icon-' . $control_name;
|
146 |
Â
|
147 |
+
if ( $default['icon_new'] !== '' ) {
|
148 |
+
?>
|
149 |
Â
<div class="eae-icon <?php echo $icon_name . ' ' . $view . ' ' . $shape . ' ' . $icon_type; ?>">
|
150 |
Â
<div class="eae-icon-wrap">
|
151 |
+
<?php if ( $default['icon_type'] === 'icon' ) { ?>
|
152 |
+
<?php
|
153 |
+
if ( $icon_migrated || $icon_is_new ) :
|
154 |
+
Icons_Manager::render_icon( $all_settings[ $skin_type . '_global_icon_new' ], [ 'aria-hidden' => 'true' ] );
|
155 |
+
else :
|
156 |
+
?>
|
157 |
Â
<i class="<?php echo $default['icon']; ?>"></i>
|
158 |
Â
<?php endif; ?>
|
159 |
+
<?php
|
160 |
+
} else {
|
161 |
Â
echo $icon_html;
|
162 |
+
}
|
163 |
+
?>
|
164 |
Â
</div>
|
165 |
Â
</div>
|
166 |
+
<?php
|
167 |
Â
}
|
168 |
Â
} else {
|
169 |
+
switch ( $settings[ $control_name . '_icon_type' ] ) {
|
Â
|
|
Â
|
|
170 |
Â
|
171 |
Â
case 'image':
|
172 |
+
$icon_html = '<i><img src="' . $settings[ $control_name . '_image' ]['url'] . '" /></i>';
|
173 |
Â
break;
|
174 |
Â
|
175 |
Â
case 'text':
|
176 |
+
$icon_html = '<i class="">' . $settings[ $control_name . '_text' ] . '</i>';
|
177 |
Â
break;
|
178 |
Â
}
|
179 |
Â
|
180 |
+
if ( $settings[ $control_name . '_view' ] !== 'global' ) {
|
181 |
+
$view = 'eae-icon-view-' . $settings[ $control_name . '_view' ];
|
182 |
Â
}
|
183 |
Â
|
184 |
+
if ( $settings[ $control_name . '_shape' ] !== 'global' ) {
|
185 |
+
$shape = 'eae-icon-shape-' . $settings[ $control_name . '_shape' ];
|
186 |
Â
}
|
187 |
Â
|
188 |
+
$icon_type = 'eae-icon-type-' . $settings[ $control_name . '_icon_type' ];
|
189 |
Â
|
190 |
Â
$icon_name = 'eae-icon-' . $control_name;
|
191 |
Â
}
|
192 |
+
if ( isset( $settings[ $control_name . '_eae_icon' ] ) && $settings[ $control_name . '_eae_icon' ] !== '' ) {
|
193 |
Â
?>
|
194 |
Â
<div class="eae-icon <?php echo $icon_name . ' ' . $view . ' ' . $shape . ' ' . $icon_type; ?>">
|
195 |
Â
<div class="eae-icon-wrap">
|
196 |
Â
<?php
|
197 |
+
if ( $settings[ $control_name . '_icon_type' ] === 'icon' ) {
|
198 |
+
?>
|
199 |
+
<?php
|
200 |
+
if ( $item_icon_migrated || $item_icon_is_new ) :
|
201 |
+
Icons_Manager::render_icon( $settings[ $control_name . '_icon_new' ], [ 'aria-hidden' => 'true' ] );
|
202 |
+
else :
|
203 |
+
?>
|
204 |
+
<i class="<?php echo $settings[ $control_name . '_icon' ]; ?>"></i>
|
205 |
Â
<?php endif; ?>
|
206 |
+
<?php
|
207 |
+
} else {
|
208 |
Â
echo $icon_html;
|
209 |
+
}
|
210 |
+
?>
|
211 |
Â
</div>
|
212 |
Â
</div>
|
213 |
+
<?php
|
214 |
Â
}
|
Â
|
|
215 |
Â
}
|
216 |
Â
|
217 |
+
public function get_icon_timeline_html( $settings, $control_name ) {
|
Â
|
|
218 |
Â
|
219 |
Â
$icon_html = '';
|
Â
|
|
220 |
Â
$icon_data = '';
|
221 |
Â
|
222 |
+
if ( $settings[ $control_name . '_eae_icon' ] === '' ) {
|
223 |
+
$settings[ $control_name . '_icon' ] = 'fa fa-star';
|
224 |
+
$settings[ $control_name . '_view' ] = 'stacked';
|
225 |
+
$settings[ $control_name . '_shape' ] = 'cricle';
|
226 |
+
$settings[ $control_name . '_icon_type' ] = 'icon';
|
227 |
+
$icon_data = '<i class="' . $settings[ $control_name . '_icon' ] . ' hvr-icon"></i>';
|
228 |
Â
} else {
|
229 |
Â
|
230 |
+
if ( $settings[ $control_name . '_icon_type' ] === 'icon' ) {
|
231 |
+
if ( $settings[ $control_name . '_icon' ] === '' ) {
|
232 |
+
$settings[ $control_name . '_icon' ] = 'fa fa-star';
|
233 |
+
$settings[ $control_name . '_view' ] = 'stacked';
|
234 |
+
$settings[ $control_name . '_shape' ] = '';
|
235 |
Â
}
|
236 |
+
if ( $settings[ $control_name . '_icon' ] !== '' ) {
|
237 |
+
$icon_data = '<i class="' . $settings[ $control_name . '_icon' ] . ' hvr-icon"></i>';
|
238 |
Â
}
|
239 |
+
} elseif ( $settings[ $control_name . '_icon_type' ] === 'image' ) {
|
240 |
+
if ( $settings[ $control_name . '_image' ]['id'] !== '' ) {
|
241 |
+
$icon_data = wp_get_attachment_image( $settings[ $control_name . '_image' ]['id'] );
|
242 |
Â
}
|
243 |
+
} elseif ( $settings[ $control_name . '_icon_type' ] === 'text' ) {
|
244 |
+
if ( $settings[ $control_name . '_text' ] !== '' ) {
|
245 |
+
$icon_data = $settings[ $control_name . '_text' ];
|
246 |
Â
}
|
247 |
Â
} else {
|
248 |
Â
$icon_data = '';
|
249 |
Â
}
|
250 |
Â
}
|
251 |
Â
|
252 |
+
if ( $icon_data !== '' ) {
|
253 |
+
$icon_html .= '<span class="eae-icon-wrapper eae-icon-' . $control_name . '_wrapper eae-icon-view-stacked elementor-shape-' . $settings[ $control_name . '_shape' ] . ' eae-icon-type-' . $settings[ $control_name . '_icon_type' ] . '">';
|
254 |
+
$icon_html .= '<span class="elementor-icon eae-icon elementor-animation-' . $settings[ $control_name . '_icon_hover_animation' ] . '">';
|
Â
|
|
255 |
Â
$icon_html .= $icon_data;
|
256 |
Â
$icon_html .= '</span>';
|
257 |
Â
$icon_html .= '</span>';
|
262 |
Â
|
263 |
Â
|
264 |
Â
|
265 |
+
public function group_icon_styles( $widget, $args ) {
|
Â
|
|
266 |
Â
|
267 |
Â
$defaults = [
|
268 |
Â
'primary_color' => true,
|
284 |
Â
'focus_item_class' => '',
|
285 |
Â
];
|
286 |
Â
|
287 |
+
$args = wp_parse_args( $args, $defaults );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
288 |
Â
|
289 |
+
$control_name = $args['name'];
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
290 |
Â
|
291 |
+
$widget->start_controls_tabs( $control_name . 'icon_colors' );
|
292 |
Â
|
293 |
Â
$widget->start_controls_tab(
|
294 |
Â
$control_name . '_icon_colors_normal',
|
295 |
Â
[
|
296 |
+
'label' => __( 'Normal', 'wts-eae' ),
|
297 |
Â
]
|
298 |
Â
);
|
299 |
Â
|
300 |
+
if ( $args['primary_color'] ) {
|
301 |
Â
$widget->add_control(
|
302 |
Â
$control_name . '_icon_primary_color',
|
303 |
Â
[
|
304 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
305 |
Â
'type' => Controls_Manager::COLOR,
|
306 |
+
'global' => [
|
307 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
308 |
Â
],
|
309 |
Â
'selectors' => [
|
318 |
Â
);
|
319 |
Â
}
|
320 |
Â
|
321 |
+
if ( $args['secondary_color'] ) {
|
322 |
Â
$widget->add_control(
|
323 |
Â
$control_name . '_icon_secondary_color',
|
324 |
Â
[
|
325 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
326 |
Â
'type' => Controls_Manager::COLOR,
|
327 |
Â
'default' => '#fff',
|
Â
|
|
Â
|
|
Â
|
|
328 |
Â
'selectors' => [
|
329 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
330 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked i' => 'color: {{VALUE}};',
|
336 |
Â
|
337 |
Â
$widget->end_controls_tab();
|
338 |
Â
|
339 |
+
if ( $args['hover_primary_color'] || $args['hover_secondary_color'] ) {
|
340 |
Â
$widget->start_controls_tab(
|
341 |
Â
$control_name . '_icon_colors_hover',
|
342 |
Â
[
|
343 |
+
'label' => __( 'Hover', 'wts-eae' ),
|
344 |
Â
]
|
345 |
Â
);
|
346 |
Â
}
|
347 |
+
if ( $args['hover_primary_color'] ) {
|
348 |
Â
$widget->add_control(
|
349 |
Â
$control_name . '_icon_hover_primary_color',
|
350 |
Â
[
|
351 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
352 |
Â
'type' => Controls_Manager::COLOR,
|
353 |
Â
'default' => '',
|
354 |
Â
'selectors' => [
|
363 |
Â
);
|
364 |
Â
}
|
365 |
Â
|
366 |
+
if ( $args['hover_secondary_color'] ) {
|
367 |
Â
$widget->add_control(
|
368 |
Â
$control_name . '_icon_hover_secondary_color',
|
369 |
Â
[
|
370 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
371 |
Â
'type' => Controls_Manager::COLOR,
|
372 |
Â
'default' => '',
|
Â
|
|
Â
|
|
Â
|
|
373 |
Â
'selectors' => [
|
374 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked:hover i' => 'color: {{VALUE}};',
|
375 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon-view-stacked:hover svg' => 'fill: {{VALUE}};',
|
379 |
Â
);
|
380 |
Â
}
|
381 |
Â
|
382 |
+
if ( $args['hover_animation'] ) {
|
383 |
Â
$widget->add_control(
|
384 |
Â
$control_name . '_icon_hover_animation',
|
385 |
Â
[
|
386 |
+
'label' => __( 'Hover Animation', 'wts-eae' ),
|
387 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
388 |
Â
]
|
389 |
Â
);
|
391 |
Â
|
392 |
Â
$widget->end_controls_tab();
|
393 |
Â
|
394 |
+
if ( $args['focus_item_class'] !== '' ) {
|
395 |
Â
|
396 |
Â
$widget->start_controls_tab(
|
397 |
Â
$control_name . '_icon_colors_focus',
|
398 |
Â
[
|
399 |
+
'label' => __( 'Focus', 'wts-eae' ),
|
400 |
Â
]
|
401 |
Â
);
|
402 |
Â
|
403 |
+
if ( $args['focus_primary_color'] ) {
|
Â
|
|
404 |
Â
$widget->add_control(
|
405 |
Â
$control_name . '_icon_focus_primary_color',
|
406 |
Â
[
|
407 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
408 |
Â
'type' => Controls_Manager::COLOR,
|
409 |
+
'global' => [
|
410 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
411 |
Â
],
|
412 |
Â
'selectors' => [
|
421 |
Â
);
|
422 |
Â
}
|
423 |
Â
|
424 |
+
if ( $args['focus_secondary_color'] ) {
|
425 |
Â
$widget->add_control(
|
426 |
Â
$control_name . '_icon_focus_secondary_color',
|
427 |
Â
[
|
428 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
429 |
Â
'type' => Controls_Manager::COLOR,
|
430 |
+
'global' => [
|
431 |
Â
'default' => Global_Colors::COLOR_ACCENT,
|
432 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
433 |
Â
'selectors' => [
|
434 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
435 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-stacked i ' => 'color: {{VALUE}};',
|
439 |
Â
);
|
440 |
Â
}
|
441 |
Â
|
Â
|
|
442 |
Â
$widget->end_controls_tab();
|
443 |
Â
}
|
444 |
Â
|
Â
|
|
445 |
Â
$widget->end_controls_tabs();
|
446 |
Â
|
447 |
+
if ( $args['icon_size'] ) {
|
448 |
Â
$widget->add_responsive_control(
|
449 |
Â
$control_name . '_icon_size',
|
450 |
Â
[
|
451 |
+
'label' => __( 'Size', 'wts-eae' ),
|
452 |
Â
'type' => Controls_Manager::SLIDER,
|
453 |
Â
'range' => [
|
454 |
Â
'px' => [
|
465 |
Â
);
|
466 |
Â
}
|
467 |
Â
|
468 |
+
if ( $args['icon_padding'] ) {
|
469 |
Â
$widget->add_control(
|
470 |
Â
$control_name . '_icon_padding',
|
471 |
Â
[
|
472 |
+
'label' => __( 'Padding', 'wts-eae' ),
|
473 |
Â
'type' => Controls_Manager::SLIDER,
|
474 |
Â
'selectors' => [
|
475 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
480 |
Â
'max' => 100,
|
481 |
Â
],
|
482 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
483 |
Â
]
|
484 |
Â
);
|
485 |
Â
}
|
486 |
Â
|
487 |
+
if ( $args['rotate'] ) {
|
488 |
Â
$widget->add_control(
|
489 |
Â
$control_name . '_icon_rotate',
|
490 |
Â
[
|
491 |
+
'label' => __( 'Rotate', 'wts-eae' ),
|
492 |
Â
'type' => Controls_Manager::SLIDER,
|
493 |
Â
'default' => [
|
494 |
Â
'size' => 0,
|
501 |
Â
);
|
502 |
Â
}
|
503 |
Â
|
504 |
+
if ( $args['border_style'] ) {
|
505 |
Â
$widget->add_control(
|
506 |
Â
$control_name . '_border_style',
|
507 |
Â
[
|
508 |
+
'label' => __( 'Border Style', 'wts-eae' ),
|
509 |
Â
'type' => Controls_Manager::SELECT,
|
510 |
+
'options' => [
|
511 |
+
'none' => __( 'None', 'wts-eae' ),
|
512 |
+
'solid' => __( 'Solid', 'wts-eae' ),
|
513 |
+
'double' => __( 'Double', 'wts-eae' ),
|
514 |
+
'dotted' => __( 'Dotted', 'wts-eae' ),
|
515 |
+
'dashed' => __( 'Dashed', 'wts-eae' ),
|
516 |
+
],
|
517 |
+
'default' => 'solid',
|
518 |
Â
'selectors' => [
|
519 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'border-style: {{VALUE}};',
|
520 |
Â
],
|
523 |
Â
);
|
524 |
Â
}
|
525 |
Â
|
526 |
+
if ( $args['border_width'] ) {
|
527 |
Â
$widget->add_control(
|
528 |
Â
$control_name . '_border_width',
|
529 |
Â
[
|
530 |
+
'label' => __( 'Border Width', 'wts-eae' ),
|
531 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
532 |
Â
'default' => [
|
533 |
Â
'value' => 20,
|
540 |
Â
);
|
541 |
Â
}
|
542 |
Â
|
543 |
+
if ( $args['border_radius'] ) {
|
544 |
Â
$widget->add_control(
|
545 |
Â
$control_name . '_icon_border_radius',
|
546 |
Â
[
|
547 |
+
'label' => __( 'Border Radius', 'wts-eae' ),
|
548 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
549 |
+
'size_units' => [ 'px', '%' ],
|
550 |
Â
'selectors' => [
|
551 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '.eae-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
552 |
Â
],
|
553 |
Â
]
|
554 |
Â
);
|
555 |
Â
}
|
Â
|
|
Â
|
|
556 |
Â
}
|
557 |
Â
|
558 |
+
public function group_icon_styles_repeater( $widget, $args ) {
|
Â
|
|
559 |
Â
|
560 |
Â
$defaults = [
|
561 |
Â
'primary_color' => true,
|
579 |
Â
|
580 |
Â
];
|
581 |
Â
|
582 |
+
$args = wp_parse_args( $args, $defaults );
|
583 |
Â
|
584 |
Â
$control_name = $args['name'];
|
585 |
Â
$control_label = $args['label'];
|
586 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
587 |
Â
$widget->add_control(
|
588 |
Â
$control_name . 'custom_styles',
|
589 |
Â
[
|
590 |
+
'label' => __( 'Custom Icon Style', 'wts-eae' ),
|
591 |
Â
'type' => Controls_Manager::SWITCHER,
|
592 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
593 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
594 |
Â
'default' => '',
|
595 |
Â
]
|
596 |
Â
);
|
597 |
Â
|
598 |
+
if ( $args['tabs'] ) {
|
599 |
+
$widget->start_controls_tabs( $control_name . 'icon_colors' );
|
600 |
Â
|
601 |
Â
$widget->start_controls_tab(
|
602 |
Â
$control_name . '_icon_colors_normal',
|
603 |
Â
[
|
604 |
+
'label' => __( 'Normal', 'wts-eae' ),
|
605 |
Â
]
|
606 |
Â
);
|
607 |
Â
} else {
|
609 |
Â
$widget->add_control(
|
610 |
Â
$control_name . '_icon_colors_normal',
|
611 |
Â
[
|
612 |
+
'label' => __( 'Normal', 'wts-eae' ),
|
613 |
Â
'type' => Controls_Manager::HEADING,
|
614 |
Â
'condition' => [
|
615 |
+
$control_name . 'custom_styles' => 'yes',
|
616 |
+
],
|
617 |
Â
]
|
618 |
Â
);
|
619 |
Â
}
|
620 |
Â
|
621 |
+
if ( $args['primary_color'] ) {
|
622 |
Â
$widget->add_control(
|
623 |
Â
$control_name . '_icon_primary_color',
|
624 |
Â
[
|
625 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
626 |
Â
'type' => Controls_Manager::COLOR,
|
627 |
Â
'default' => '',
|
628 |
Â
'selectors' => [
|
634 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default svg' => 'fill: {{VALUE}};',
|
635 |
Â
],
|
636 |
Â
'condition' => [
|
637 |
+
$control_name . 'custom_styles' => 'yes',
|
638 |
+
],
|
639 |
Â
]
|
640 |
Â
);
|
641 |
Â
}
|
642 |
Â
|
643 |
+
if ( $args['secondary_color'] ) {
|
644 |
Â
$widget->add_control(
|
645 |
Â
$control_name . '_icon_secondary_color',
|
646 |
Â
[
|
647 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
648 |
Â
'type' => Controls_Manager::COLOR,
|
649 |
Â
'default' => '',
|
650 |
Â
'condition' => [
|
656 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-stacked svg' => 'color: {{VALUE}};',
|
657 |
Â
],
|
658 |
Â
'condition' => [
|
659 |
+
$control_name . 'custom_styles' => 'yes',
|
660 |
+
],
|
661 |
Â
]
|
662 |
Â
);
|
663 |
Â
}
|
664 |
Â
|
665 |
+
if ( $args['tabs'] ) {
|
666 |
Â
|
667 |
Â
$widget->end_controls_tab();
|
668 |
Â
}
|
669 |
Â
|
670 |
+
if ( $args['tabs'] ) {
|
671 |
Â
$widget->start_controls_tab(
|
672 |
Â
$control_name . '_icon_colors_hover',
|
673 |
Â
[
|
674 |
+
'label' => __( 'Hover', 'wts-eae' ),
|
675 |
Â
'condition' => [
|
676 |
+
$control_name . 'custom_styles' => 'yes',
|
677 |
+
],
|
678 |
Â
]
|
679 |
Â
);
|
680 |
Â
} else {
|
681 |
+
if ( $args['hover_primary_color'] || $args['hover_secondary_color'] ) {
|
682 |
Â
$widget->add_control(
|
683 |
Â
$control_name . '_icon_colors_hover',
|
684 |
Â
[
|
685 |
+
'label' => __( 'Hover', 'wts-eae' ),
|
686 |
Â
'type' => Controls_Manager::HEADING,
|
687 |
Â
'condition' => [
|
688 |
+
$control_name . 'custom_styles' => 'yes',
|
689 |
+
],
|
690 |
Â
]
|
691 |
Â
);
|
692 |
Â
}
|
693 |
Â
}
|
694 |
Â
|
695 |
+
if ( $args['hover_primary_color'] ) {
|
696 |
Â
$widget->add_control(
|
697 |
Â
$control_name . '_icon_hover_primary_color',
|
698 |
Â
[
|
699 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
700 |
Â
'type' => Controls_Manager::COLOR,
|
701 |
Â
'default' => '',
|
702 |
Â
'selectors' => [
|
708 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default:hover svg' => 'fill: {{VALUE}}; border-color: {{VALUE}};',
|
709 |
Â
],
|
710 |
Â
'condition' => [
|
711 |
+
$control_name . 'custom_styles' => 'yes',
|
712 |
+
],
|
713 |
Â
]
|
714 |
Â
);
|
715 |
Â
}
|
716 |
Â
|
717 |
+
if ( $args['hover_secondary_color'] ) {
|
718 |
Â
$widget->add_control(
|
719 |
Â
$control_name . '_icon_hover_secondary_color',
|
720 |
Â
[
|
721 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
722 |
Â
'type' => Controls_Manager::COLOR,
|
723 |
Â
'default' => '',
|
724 |
Â
'condition' => [
|
732 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon-view-default:hover svg' => 'fill: {{VALUE}};',
|
733 |
Â
],
|
734 |
Â
'condition' => [
|
735 |
+
$control_name . 'custom_styles' => 'yes',
|
736 |
+
],
|
737 |
Â
]
|
738 |
Â
);
|
739 |
Â
}
|
740 |
Â
|
741 |
+
if ( $args['hover_animation'] ) {
|
742 |
Â
$widget->add_control(
|
743 |
Â
$control_name . '_icon_hover_animation',
|
744 |
Â
[
|
745 |
+
'label' => __( 'Hover Animation', 'wts-eae' ),
|
746 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
747 |
Â
'condition' => [
|
748 |
+
$control_name . 'custom_styles' => 'yes',
|
749 |
+
],
|
750 |
Â
]
|
751 |
Â
);
|
752 |
Â
}
|
753 |
Â
|
754 |
+
if ( $args['tabs'] ) {
|
Â
|
|
755 |
Â
|
756 |
Â
$widget->end_controls_tab();
|
757 |
Â
}
|
758 |
Â
|
759 |
+
if ( $args['focus_item_class'] !== '' ) {
|
760 |
+
if ( $args['tabs'] ) {
|
761 |
Â
|
762 |
Â
$widget->start_controls_tab(
|
763 |
Â
$control_name . '_icon_colors_focus',
|
764 |
Â
[
|
765 |
+
'label' => __( 'Focus', 'wts-eae' ),
|
766 |
Â
]
|
767 |
Â
);
|
768 |
Â
} else {
|
770 |
Â
$widget->add_control(
|
771 |
Â
$control_name . '_icon_colors_focus',
|
772 |
Â
[
|
773 |
+
'label' => __( 'Focus', 'wts-eae' ),
|
774 |
Â
'type' => Controls_Manager::HEADING,
|
775 |
Â
'condition' => [
|
776 |
+
$control_name . 'custom_styles' => 'yes',
|
777 |
+
],
|
778 |
Â
]
|
779 |
Â
);
|
780 |
Â
}
|
781 |
Â
|
782 |
+
if ( $args['focus_primary_color'] ) {
|
783 |
Â
$widget->add_control(
|
784 |
Â
$control_name . '_icon_focus_primary_color',
|
785 |
Â
[
|
786 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
787 |
Â
'type' => Controls_Manager::COLOR,
|
788 |
Â
'default' => '',
|
789 |
Â
'selectors' => [
|
795 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}}.' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-default svg' => 'fill: {{VALUE}}; border-color: {{VALUE}};',
|
796 |
Â
],
|
797 |
Â
'condition' => [
|
798 |
+
$control_name . 'custom_styles' => 'yes',
|
799 |
+
],
|
800 |
Â
]
|
801 |
Â
);
|
802 |
Â
}
|
803 |
Â
|
804 |
+
if ( $args['focus_secondary_color'] ) {
|
805 |
Â
$widget->add_control(
|
806 |
Â
$control_name . '_icon_focus_secondary_color',
|
807 |
Â
[
|
808 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
809 |
Â
'type' => Controls_Manager::COLOR,
|
810 |
Â
'default' => '',
|
811 |
Â
'condition' => [
|
817 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}}.' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '.eae-icon-view-stacked svg' => 'fill: {{VALUE}};',
|
818 |
Â
],
|
819 |
Â
'condition' => [
|
820 |
+
$control_name . 'custom_styles' => 'yes',
|
821 |
+
],
|
822 |
Â
]
|
823 |
Â
);
|
824 |
Â
}
|
825 |
Â
|
826 |
+
if ( $args['tabs'] ) {
|
827 |
Â
|
828 |
Â
$widget->end_controls_tab();
|
829 |
Â
}
|
830 |
Â
}
|
831 |
+
if ( $args['tabs'] ) {
|
832 |
Â
|
833 |
Â
$widget->end_controls_tabs();
|
834 |
Â
}
|
835 |
Â
|
836 |
+
if ( $args['icon_size'] ) {
|
837 |
Â
$widget->add_responsive_control(
|
838 |
Â
$control_name . '_icon_size',
|
839 |
Â
[
|
840 |
+
'label' => __( 'Size', 'wts-eae' ),
|
841 |
Â
'type' => Controls_Manager::SLIDER,
|
842 |
Â
'range' => [
|
843 |
Â
'px' => [
|
849 |
Â
'selectors' => [
|
850 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon i, {{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'font-size: {{SIZE}}{{UNIT}};',
|
851 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon svg' => 'width: {{SIZE}}{{UNIT}};',
|
Â
|
|
852 |
Â
],
|
853 |
Â
'condition' => [
|
854 |
+
$control_name . 'custom_styles' => 'yes',
|
855 |
+
],
|
856 |
Â
]
|
857 |
Â
);
|
858 |
Â
}
|
859 |
Â
|
860 |
+
if ( $args['icon_padding'] ) {
|
861 |
Â
$widget->add_control(
|
862 |
Â
$control_name . '_icon_padding',
|
863 |
Â
[
|
864 |
+
'label' => __( 'Padding', 'wts-eae' ),
|
865 |
Â
'type' => Controls_Manager::SLIDER,
|
866 |
Â
'selectors' => [
|
Â
|
|
867 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'padding: {{SIZE}}{{UNIT}};',
|
868 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .bpe-layout-left .bpe-timline-progress-bar' => 'left: calc({{SIZE}}{{UNIT}} / 2); right: auto;',
|
869 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .bpe-layout-right .bpe-timline-progress-bar' => 'left: auto; right: calc({{SIZE}}{{UNIT}} / 2);',
|
876 |
Â
],
|
877 |
Â
'condition' => [
|
878 |
Â
$control_name . '_view!' => 'default',
|
879 |
+
$control_name . 'custom_styles' => 'yes',
|
880 |
+
],
|
881 |
Â
]
|
882 |
Â
);
|
883 |
Â
}
|
884 |
Â
|
885 |
+
if ( $args['rotate'] ) {
|
886 |
Â
$widget->add_control(
|
887 |
Â
$control_name . '_icon_rotate',
|
888 |
Â
[
|
889 |
+
'label' => __( 'Rotate', 'wts-eae' ),
|
890 |
Â
'type' => Controls_Manager::SLIDER,
|
891 |
Â
'default' => [
|
892 |
Â
'size' => 0,
|
897 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
|
898 |
Â
],
|
899 |
Â
'condition' => [
|
900 |
+
$control_name . 'custom_styles' => 'yes',
|
901 |
+
],
|
902 |
Â
]
|
903 |
Â
);
|
904 |
Â
}
|
905 |
+
if ( $args['border_style'] ) {
|
906 |
Â
$widget->add_control(
|
907 |
Â
$control_name . '_border_style',
|
908 |
Â
[
|
909 |
+
'label' => __( 'Border Style', 'wts-eae' ),
|
910 |
Â
'type' => Controls_Manager::SELECT,
|
911 |
+
'options' => [
|
912 |
+
'none' => __( 'None', 'wts-eae' ),
|
913 |
+
'solid' => __( 'Solid', 'wts-eae' ),
|
914 |
+
'double' => __( 'Double', 'wts-eae' ),
|
915 |
+
'dotted' => __( 'Dotted', 'wts-eae' ),
|
916 |
+
'dashed' => __( 'Dashed', 'wts-eae' ),
|
917 |
+
],
|
918 |
+
'default' => 'solid',
|
919 |
Â
'selectors' => [
|
920 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-style: {{VALUE}};',
|
921 |
Â
],
|
922 |
Â
'condition' => [
|
923 |
+
$control_name . 'custom_styles' => 'yes',
|
924 |
+
],
|
925 |
Â
|
926 |
Â
]
|
927 |
Â
);
|
928 |
Â
}
|
929 |
Â
|
930 |
+
if ( $args['border_width'] ) {
|
931 |
Â
$widget->add_control(
|
932 |
Â
$control_name . '_border_width',
|
933 |
Â
[
|
934 |
+
'label' => __( 'Border Width', 'wts-eae' ),
|
935 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
936 |
Â
'selectors' => [
|
937 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
938 |
Â
],
|
939 |
Â
'condition' => [
|
940 |
+
$control_name . 'custom_styles' => 'yes',
|
941 |
+
],
|
942 |
Â
]
|
943 |
Â
);
|
944 |
Â
}
|
945 |
Â
|
946 |
+
if ( $args['border_radius'] ) {
|
947 |
Â
$widget->add_control(
|
948 |
Â
$control_name . '_icon_border_radius',
|
949 |
Â
[
|
950 |
+
'label' => __( 'Border Radius', 'wts-eae' ),
|
951 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
952 |
+
'size_units' => [ 'px', '%' ],
|
953 |
Â
'selectors' => [
|
954 |
Â
'{{WRAPPER}} {{CURRENT_ITEM}} .eae-icon-' . $control_name . '.eae-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
955 |
Â
],
|
956 |
Â
'condition' => [
|
957 |
Â
$control_name . '_view!' => 'default',
|
958 |
+
$control_name . 'custom_styles' => 'yes',
|
959 |
+
],
|
960 |
Â
]
|
961 |
Â
);
|
962 |
Â
}
|
Â
|
|
Â
|
|
963 |
Â
}
|
964 |
Â
|
965 |
+
public function group_icon_timeline_styles( $widget, $args ) {
|
Â
|
|
966 |
Â
|
967 |
Â
$defaults = [
|
968 |
Â
'primary_color' => true,
|
983 |
Â
'focus_item_class' => '',
|
984 |
Â
];
|
985 |
Â
|
986 |
+
$args = wp_parse_args( $args, $defaults );
|
Â
|
|
Â
|
|
Â
|
|
987 |
Â
|
988 |
+
$control_name = $args['name'];
|
989 |
+
$widget->start_controls_tabs( $control_name . 'icon_colors' );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
990 |
Â
|
991 |
Â
$widget->start_controls_tab(
|
992 |
Â
$control_name . '_icon_colors_normal',
|
993 |
Â
[
|
994 |
+
'label' => __( 'Normal', 'wts-eae' ),
|
995 |
Â
]
|
996 |
Â
);
|
997 |
Â
|
998 |
+
if ( $args['primary_color'] ) {
|
999 |
Â
$widget->add_control(
|
1000 |
Â
$control_name . '_icon_primary_color',
|
1001 |
Â
[
|
1002 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
1003 |
Â
'type' => Controls_Manager::COLOR,
|
1004 |
Â
'default' => '#6ec1e4',
|
1005 |
Â
'selectors' => [
|
1011 |
Â
);
|
1012 |
Â
}
|
1013 |
Â
|
1014 |
+
if ( $args['secondary_color'] ) {
|
1015 |
Â
$widget->add_control(
|
1016 |
Â
$control_name . '_icon_secondary_color',
|
1017 |
Â
[
|
1018 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
1019 |
Â
'type' => Controls_Manager::COLOR,
|
1020 |
Â
'default' => '#ffffff',
|
Â
|
|
Â
|
|
Â
|
|
1021 |
Â
'selectors' => [
|
1022 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
1023 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon' => 'color: {{VALUE}};',
|
1031 |
Â
$widget->start_controls_tab(
|
1032 |
Â
$control_name . '_icon_colors_hover',
|
1033 |
Â
[
|
1034 |
+
'label' => __( 'Hover', 'wts-eae' ),
|
1035 |
Â
]
|
1036 |
Â
);
|
1037 |
Â
|
1038 |
+
if ( $args['hover_primary_color'] ) {
|
1039 |
Â
$widget->add_control(
|
1040 |
Â
$control_name . '_icon_hover_primary_color',
|
1041 |
Â
[
|
1042 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
1043 |
Â
'type' => Controls_Manager::COLOR,
|
1044 |
Â
'default' => '',
|
1045 |
Â
'selectors' => [
|
1051 |
Â
);
|
1052 |
Â
}
|
1053 |
Â
|
1054 |
+
if ( $args['hover_secondary_color'] ) {
|
1055 |
Â
$widget->add_control(
|
1056 |
Â
$control_name . '_icon_hover_secondary_color',
|
1057 |
Â
[
|
1058 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
1059 |
Â
'type' => Controls_Manager::COLOR,
|
1060 |
Â
'default' => '',
|
Â
|
|
Â
|
|
Â
|
|
1061 |
Â
'selectors' => [
|
1062 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed:hover' => 'background-color: {{VALUE}};',
|
1063 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon:hover' => 'color: {{VALUE}};',
|
1066 |
Â
);
|
1067 |
Â
}
|
1068 |
Â
|
1069 |
+
if ( $args['hover_animation'] ) {
|
1070 |
Â
$widget->add_control(
|
1071 |
Â
$control_name . '_icon_hover_animation',
|
1072 |
Â
[
|
1073 |
+
'label' => __( 'Hover Animation', 'wts-eae' ),
|
1074 |
Â
'type' => Controls_Manager::HOVER_ANIMATION,
|
1075 |
Â
]
|
1076 |
Â
);
|
1078 |
Â
|
1079 |
Â
$widget->end_controls_tab();
|
1080 |
Â
|
1081 |
+
if ( $args['focus_item_class'] !== '' ) {
|
1082 |
Â
|
1083 |
Â
$widget->start_controls_tab(
|
1084 |
Â
$control_name . '_icon_colors_focus',
|
1085 |
Â
[
|
1086 |
+
'label' => __( 'Focus', 'wts-eae' ),
|
1087 |
Â
]
|
1088 |
Â
);
|
1089 |
Â
|
1090 |
+
if ( $args['focus_primary_color'] ) {
|
Â
|
|
1091 |
Â
$widget->add_control(
|
1092 |
Â
$control_name . '_icon_focus_primary_color',
|
1093 |
Â
[
|
1094 |
+
'label' => __( 'Primary Color', 'wts-eae' ),
|
1095 |
Â
'type' => Controls_Manager::COLOR,
|
1096 |
Â
'default' => '',
|
1097 |
Â
'selectors' => [
|
1103 |
Â
);
|
1104 |
Â
}
|
1105 |
Â
|
1106 |
+
if ( $args['focus_secondary_color'] ) {
|
1107 |
Â
$widget->add_control(
|
1108 |
Â
$control_name . '_icon_focus_secondary_color',
|
1109 |
Â
[
|
1110 |
+
'label' => __( 'Secondary Color', 'wts-eae' ),
|
1111 |
Â
'type' => Controls_Manager::COLOR,
|
1112 |
Â
'default' => '',
|
Â
|
|
Â
|
|
Â
|
|
1113 |
Â
'selectors' => [
|
1114 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '_wrapper.eae-icon-view-framed' => 'background-color: {{VALUE}};',
|
1115 |
Â
'{{WRAPPER}} .' . $args['focus_item_class'] . ' .eae-icon-' . $control_name . '_wrapper.eae-icon-view-stacked .elementor-icon' => 'color: {{VALUE}};',
|
1118 |
Â
);
|
1119 |
Â
}
|
1120 |
Â
|
Â
|
|
1121 |
Â
$widget->end_controls_tab();
|
1122 |
Â
}
|
1123 |
Â
|
Â
|
|
1124 |
Â
$widget->end_controls_tabs();
|
1125 |
Â
|
1126 |
+
if ( $args['icon_size'] ) {
|
1127 |
Â
$widget->add_responsive_control(
|
1128 |
Â
$control_name . '_icon_size',
|
1129 |
Â
[
|
1130 |
+
'label' => __( 'Size', 'wts-eae' ),
|
1131 |
Â
'type' => Controls_Manager::SLIDER,
|
1132 |
Â
'range' => [
|
1133 |
Â
'px' => [
|
1142 |
Â
);
|
1143 |
Â
}
|
1144 |
Â
|
1145 |
+
if ( $args['icon_padding'] ) {
|
1146 |
Â
$widget->add_control(
|
1147 |
Â
$control_name . '_icon_padding',
|
1148 |
Â
[
|
1149 |
+
'label' => __( 'Background Size', 'wts-eae' ),
|
1150 |
Â
'type' => Controls_Manager::SLIDER,
|
1151 |
Â
'selectors' => [
|
1152 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper.eae-icon-wrapper' => 'display: inline-block; min-height: {{SIZE}}{{UNIT}}; min-width: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
|
1159 |
Â
'max' => 100,
|
1160 |
Â
],
|
1161 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
1162 |
Â
]
|
1163 |
Â
);
|
1164 |
Â
}
|
1165 |
Â
|
1166 |
+
if ( $args['rotate'] ) {
|
1167 |
Â
$widget->add_control(
|
1168 |
Â
$control_name . '_icon_rotate',
|
1169 |
Â
[
|
1170 |
+
'label' => __( 'Rotate', 'wts-eae' ),
|
1171 |
Â
'type' => Controls_Manager::SLIDER,
|
1172 |
Â
'default' => [
|
1173 |
Â
'size' => 0,
|
1180 |
Â
);
|
1181 |
Â
}
|
1182 |
Â
|
1183 |
+
if ( $args['border_width'] ) {
|
1184 |
Â
$widget->add_control(
|
1185 |
Â
$control_name . '_border_width',
|
1186 |
Â
[
|
1187 |
+
'label' => __( 'Border Width', 'wts-eae' ),
|
1188 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
1189 |
Â
'selectors' => [
|
1190 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper .elementor-icon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1191 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
1192 |
Â
]
|
1193 |
Â
);
|
1194 |
Â
}
|
1195 |
Â
|
1196 |
+
if ( $args['border_radius'] ) {
|
1197 |
Â
$widget->add_control(
|
1198 |
Â
$control_name . '_icon_border_radius',
|
1199 |
Â
[
|
1200 |
+
'label' => __( 'Border Radius', 'wts-eae' ),
|
1201 |
Â
'type' => Controls_Manager::DIMENSIONS,
|
1202 |
+
'size_units' => [ 'px', '%' ],
|
1203 |
Â
'selectors' => [
|
1204 |
Â
'{{WRAPPER}} .eae-icon-' . $control_name . '_wrapper .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1205 |
Â
],
|
Â
|
|
Â
|
|
Â
|
|
1206 |
Â
]
|
1207 |
Â
);
|
1208 |
Â
}
|
Â
|
|
Â
|
|
1209 |
Â
}
|
1210 |
Â
|
1211 |
Â
|
1212 |
+
public function box_model_controls( $widget, $args ) {
|
Â
|
|
1213 |
Â
|
1214 |
Â
$defaults = [
|
1215 |
+
'border' => true,
|
1216 |
Â
'border-radius' => true,
|
1217 |
+
'margin' => true,
|
1218 |
+
'padding' => true,
|
1219 |
+
'box-shadow' => true,
|
1220 |
Â
];
|
1221 |
Â
|
1222 |
+
$args = wp_parse_args( $args, $defaults );
|
1223 |
Â
|
1224 |
+
if ( $args['border'] ) {
|
1225 |
Â
$widget->add_group_control(
|
1226 |
Â
Group_Control_Border::get_type(),
|
1227 |
Â
[
|
1228 |
+
'name' => $args['name'] . '_border',
|
1229 |
+
'label' => $args['label'] . ' Border',
|
1230 |
+
'selector' => $args['selector'],
|
1231 |
Â
'condition' => [
|
1232 |
+
'ribbons_badges_switcher!' => '',
|
1233 |
+
],
|
1234 |
Â
]
|
1235 |
Â
);
|
1236 |
Â
}
|
1237 |
Â
|
1238 |
+
if ( $args['border-radius'] ) {
|
1239 |
Â
$widget->add_control(
|
1240 |
Â
$args['name'] . '_border_radius',
|
1241 |
Â
[
|
1242 |
+
'label' => __( 'Border Radius', 'wts-eae' ),
|
1243 |
+
'type' => Controls_Manager::DIMENSIONS,
|
1244 |
+
'size_units' => [ 'px', '%' ],
|
1245 |
+
'selectors' => [
|
1246 |
Â
$args['selector'] => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1247 |
Â
],
|
1248 |
+
'condition' => [
|
1249 |
+
'ribbons_badges_switcher!' => '',
|
1250 |
+
],
|
1251 |
Â
]
|
1252 |
Â
);
|
1253 |
Â
}
|
1254 |
Â
|
1255 |
+
if ( $args['box-shadow'] ) {
|
1256 |
Â
$widget->add_group_control(
|
1257 |
Â
Group_Control_Box_Shadow::get_type(),
|
1258 |
Â
[
|
1259 |
+
'name' => $args['name'] . '_box_shadow',
|
1260 |
+
'label' => __( 'Box Shadow', 'wts-eae' ),
|
1261 |
+
'selector' => $args['selector'],
|
1262 |
Â
'condition' => [
|
1263 |
+
'ribbons_badges_switcher!' => '',
|
1264 |
+
],
|
1265 |
Â
]
|
1266 |
Â
);
|
1267 |
Â
}
|
1268 |
Â
|
1269 |
+
if ( $args['padding'] ) {
|
1270 |
Â
$widget->add_control(
|
1271 |
Â
$args['name'] . '_padding',
|
1272 |
Â
[
|
1273 |
+
'label' => __( 'Padding', 'wts-eae' ),
|
1274 |
+
'type' => Controls_Manager::DIMENSIONS,
|
1275 |
+
'size_units' => [ 'px', '%' ],
|
1276 |
+
'selectors' => [
|
1277 |
Â
$args['selector'] => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1278 |
Â
],
|
1279 |
+
'condition' => [
|
1280 |
+
'ribbons_badges_switcher!' => '',
|
1281 |
+
],
|
1282 |
Â
]
|
1283 |
Â
);
|
1284 |
Â
}
|
1285 |
Â
|
1286 |
+
if ( $args['margin'] ) {
|
Â
|
|
1287 |
Â
$widget->add_control(
|
1288 |
Â
$args['name'] . '_margin',
|
1289 |
Â
[
|
1290 |
+
'label' => __( 'Margin', 'wts-eae' ),
|
1291 |
+
'type' => Controls_Manager::DIMENSIONS,
|
1292 |
+
'size_units' => [ 'px', '%' ],
|
1293 |
+
'selectors' => [
|
1294 |
Â
$args['selector'] => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
1295 |
Â
],
|
1296 |
+
'condition' => [
|
1297 |
+
'ribbons_badges_switcher!' => '',
|
1298 |
+
],
|
1299 |
Â
]
|
1300 |
Â
);
|
1301 |
Â
}
|
1302 |
Â
}
|
1303 |
Â
|
1304 |
+
public function get_eae_modules() {
|
Â
|
|
1305 |
Â
$modules = [
|
1306 |
+
'timeline' => [
|
1307 |
+
'name' => 'Timeline',
|
1308 |
+
'enabled' => true,
|
1309 |
+
'type' => 'widget',
|
1310 |
+
],
|
1311 |
+
'info-circle' => [
|
1312 |
+
'name' => 'Info Circle',
|
1313 |
+
'enabled' => true,
|
1314 |
+
'type' => 'widget',
|
1315 |
+
],
|
1316 |
+
'comparison-table' => [
|
1317 |
+
'name' => 'Comparison Table',
|
1318 |
+
'enabled' => true,
|
1319 |
+
'type' => 'widget',
|
1320 |
+
],
|
1321 |
+
'image-compare' => [
|
1322 |
+
'name' => 'Image Compare',
|
1323 |
+
'enabled' => true,
|
1324 |
+
'type' => 'widget',
|
1325 |
+
],
|
1326 |
+
'animated-text' => [
|
1327 |
+
'name' => 'Animated Text',
|
1328 |
+
'enabled' => true,
|
1329 |
+
'type' => 'widget',
|
1330 |
+
],
|
1331 |
+
'dual-button' => [
|
1332 |
+
'name' => 'Dual Button',
|
1333 |
+
'enabled' => true,
|
1334 |
+
'type' => 'widget',
|
1335 |
+
],
|
1336 |
+
'particles' => [
|
1337 |
+
'name' => 'Particles',
|
1338 |
+
'enabled' => true,
|
1339 |
+
'type' => 'feature',
|
1340 |
+
],
|
1341 |
+
'wrapper-links' => [
|
1342 |
+
'name' => 'Wrapper Link',
|
1343 |
+
'enabled' => true,
|
1344 |
+
'type' => 'feature',
|
1345 |
+
],
|
1346 |
+
'modal-popup' => [
|
1347 |
+
'name' => 'Modal Popup',
|
1348 |
+
'enabled' => true,
|
1349 |
+
'type' => 'widget',
|
1350 |
+
],
|
1351 |
+
'progress-bar' => [
|
1352 |
+
'name' => 'Progress Bar',
|
1353 |
+
'enabled' => true,
|
1354 |
+
'type' => 'widget',
|
1355 |
+
],
|
1356 |
+
'flip-box' => [
|
1357 |
+
'name' => 'Flip Box',
|
1358 |
+
'enabled' => true,
|
1359 |
+
'type' => 'widget',
|
1360 |
+
],
|
1361 |
+
'split-text' => [
|
1362 |
+
'name' => 'Split Text',
|
1363 |
+
'enabled' => true,
|
1364 |
+
'type' => 'widget',
|
1365 |
+
],
|
1366 |
+
'gmap' => [
|
1367 |
+
'name' => 'Google Map',
|
1368 |
+
'enabled' => true,
|
1369 |
+
'type' => 'widget',
|
1370 |
+
],
|
1371 |
+
'text-separator' => [
|
1372 |
+
'name' => 'Text Separator',
|
1373 |
+
'enabled' => true,
|
1374 |
+
'type' => 'widget',
|
1375 |
+
],
|
1376 |
+
'price-table' => [
|
1377 |
+
'name' => 'Price Table',
|
1378 |
+
'enabled' => true,
|
1379 |
+
'type' => 'widget',
|
1380 |
+
],
|
1381 |
+
'twitter' => [
|
1382 |
+
'name' => 'Twitter',
|
1383 |
+
'enabled' => true,
|
1384 |
+
'type' => 'widget',
|
1385 |
+
],
|
1386 |
+
'bg-slider' => [
|
1387 |
+
'name' => 'Background Slider',
|
1388 |
+
'enabled' => true,
|
1389 |
+
'type' => 'feature',
|
1390 |
+
],
|
1391 |
+
'animated-gradient' => [
|
1392 |
+
'name' => 'Animated Gradient',
|
1393 |
+
'enabled' => true,
|
1394 |
+
'type' => 'feature',
|
1395 |
+
],
|
1396 |
+
'post-list' => [
|
1397 |
+
'name' => 'Post List',
|
1398 |
+
'enabled' => true,
|
1399 |
+
'type' => 'widget',
|
1400 |
+
],
|
1401 |
+
'shape-separator' => [
|
1402 |
+
'name' => 'Shape Separator',
|
1403 |
+
'enabled' => true,
|
1404 |
+
'type' => 'widget',
|
1405 |
+
],
|
1406 |
+
'filterable-gallery' => [
|
1407 |
+
'name' => 'Filterable Gallery',
|
1408 |
+
'enabled' => true,
|
1409 |
+
'type' => 'widget',
|
1410 |
+
],
|
1411 |
+
'content-switcher' => [
|
1412 |
+
'name' => 'Content Switcher',
|
1413 |
+
'enabled' => true,
|
1414 |
+
'type' => 'widget',
|
1415 |
+
],
|
1416 |
+
'chart' => [
|
1417 |
+
'name' => 'Chart',
|
1418 |
+
'enabled' => true,
|
1419 |
+
'type' => 'widget',
|
1420 |
+
],
|
1421 |
+
'thumb-gallery' => [
|
1422 |
+
'name' => 'Thumbnail Slider',
|
1423 |
+
'enabled' => true,
|
1424 |
+
'type' => 'widget',
|
1425 |
+
],
|
1426 |
+
'data-table' => [
|
1427 |
+
'name' => 'Data Table',
|
1428 |
+
'enabled' => true,
|
1429 |
+
'type' => 'widget',
|
1430 |
+
],
|
1431 |
Â
];
|
1432 |
Â
|
1433 |
+
$saved_modules = get_option( 'wts_eae_elements' );
|
1434 |
Â
|
1435 |
+
if ( $saved_modules !== false ) {
|
1436 |
+
foreach ( $modules as $key => $module_name ) {
|
1437 |
+
if ( array_key_exists( $key, $saved_modules ) ) {
|
1438 |
+
$modules[ $key ]['enabled'] = $saved_modules[ $key ];
|
1439 |
Â
} else {
|
1440 |
+
$modules[ $key ]['enabled'] = true;
|
1441 |
Â
}
|
1442 |
Â
}
|
1443 |
Â
}
|
1444 |
Â
|
1445 |
+
$modules = apply_filters( 'wts_eae_active_modules', $modules );
|
1446 |
Â
|
1447 |
Â
return $modules;
|
1448 |
Â
}
|
1449 |
Â
|
1450 |
+
public function get_current_url_non_paged() {
|
Â
|
|
Â
|
|
1451 |
Â
global $wp;
|
1452 |
+
$url = get_pagenum_link( 1 );
|
1453 |
Â
|
1454 |
+
return trailingslashit( $url );
|
1455 |
Â
}
|
1456 |
Â
|
1457 |
Â
|
1458 |
+
public static function select_elementor_page( $type ) {
|
1459 |
+
$args = [
|
1460 |
+
'tax_query' => [
|
1461 |
+
[
|
1462 |
+
'taxonomy' => 'elementor_library_type',
|
1463 |
+
'field' => 'slug',
|
1464 |
+
'terms' => $type,
|
1465 |
+
],
|
1466 |
+
],
|
1467 |
+
'post_type' => 'elementor_library',
|
1468 |
+
'posts_per_page' => -1,
|
1469 |
+
];
|
1470 |
+
$query = new \WP_Query( $args );
|
1471 |
Â
|
1472 |
+
$posts = $query->posts;
|
1473 |
+
foreach ( $posts as $post ) {
|
1474 |
+
$items[ $post->ID ] = $post->post_title;
|
1475 |
+
}
|
1476 |
Â
|
1477 |
+
if ( empty( $items ) ) {
|
1478 |
+
$items = [];
|
1479 |
+
}
|
1480 |
Â
|
1481 |
+
return $items;
|
1482 |
+
}
|
Â
|
|
1483 |
Â
|
1484 |
+
public static function select_ae_templates() {
|
1485 |
+
$ae_id = [];
|
1486 |
+
if ( wp_verify_nonce( isset( $_GET['post'] ) ) ) {
|
1487 |
+
$ae_id = wp_verify_nonce( [ $_GET['post'] ] );
|
1488 |
+
}
|
1489 |
+
$args = [
|
1490 |
+
'post_type' => 'ae_global_templates',
|
1491 |
+
'meta_key' => 'ae_render_mode',
|
1492 |
+
'meta_value' => 'block_layout',
|
1493 |
+
'posts_per_page' => -1,
|
1494 |
+
'post__not_in' => $ae_id,
|
1495 |
+
];
|
1496 |
+
$query = new \WP_Query( $args );
|
1497 |
Â
|
1498 |
+
$posts = $query->posts;
|
1499 |
+
foreach ( $posts as $post ) {
|
1500 |
+
$items[ $post->ID ] = $post->post_title;
|
1501 |
+
}
|
1502 |
Â
|
1503 |
+
if ( empty( $items ) ) {
|
1504 |
+
$items = [];
|
1505 |
+
}
|
1506 |
+
|
1507 |
+
return $items;
|
1508 |
+
}
|
1509 |
+
|
1510 |
+
public static function validate_html_tag( $tag, $allowed_tags = [], $fallback = 'div' ) {
|
1511 |
+
|
1512 |
+
if(empty($allowed_tags)){
|
1513 |
+
$allowed_tags = [
|
1514 |
+
'article',
|
1515 |
+
'aside',
|
1516 |
+
'div',
|
1517 |
+
'footer',
|
1518 |
+
'h1',
|
1519 |
+
'h2',
|
1520 |
+
'h3',
|
1521 |
+
'h4',
|
1522 |
+
'h5',
|
1523 |
+
'h6',
|
1524 |
+
'header',
|
1525 |
+
'main',
|
1526 |
+
'nav',
|
1527 |
+
'p',
|
1528 |
+
'section',
|
1529 |
+
'span',
|
1530 |
+
];
|
1531 |
+
}
|
1532 |
+
|
1533 |
+
return in_array( strtolower( $tag ), $allowed_tags ) ? $tag : $fallback;
|
1534 |
+
}
|
1535 |
Â
|
1536 |
Â
|
1537 |
Â
}
|
classes/post-helper.php
CHANGED
@@ -2,14 +2,13 @@
|
|
2 |
Â
|
3 |
Â
namespace WTS_EAE\Classes;
|
4 |
Â
|
5 |
-
//use WTS_EAE\Modules\Posts\Widgets\Postgrid;
|
6 |
Â
use WTS_EAE\Plugin;
|
7 |
Â
use Elementor\Controls_Manager;
|
8 |
Â
|
9 |
Â
class Post_Helper {
|
10 |
Â
|
11 |
Â
|
12 |
-
function query_controls( $widget ) {
|
13 |
Â
|
14 |
Â
$widget->add_control(
|
15 |
Â
'source',
|
@@ -17,11 +16,10 @@ class Post_Helper {
|
|
17 |
Â
'label' => __( 'Source', 'wts-eae' ),
|
18 |
Â
'type' => Controls_Manager::SELECT,
|
19 |
Â
'options' => self::get_post_types(),
|
20 |
-
'default' => 'post'
|
21 |
Â
]
|
22 |
Â
);
|
23 |
Â
|
24 |
-
|
25 |
Â
$taxonomies = $this->get_taxonomies();
|
26 |
Â
|
27 |
Â
foreach ( $taxonomies as $taxonomy => $tax_object ) {
|
@@ -43,8 +41,8 @@ class Post_Helper {
|
|
43 |
Â
'label' => __( 'Filter Mode', 'wts-eae' ),
|
44 |
Â
'type' => Controls_Manager::SELECT,
|
45 |
Â
'options' => [
|
46 |
-
'IN'
|
47 |
-
'NOT IN' => __( 'Excludes', 'wts-eae' )
|
48 |
Â
],
|
49 |
Â
'condition' => [
|
50 |
Â
'source' => $tax_object->object_type,
|
@@ -67,10 +65,8 @@ class Post_Helper {
|
|
67 |
Â
]
|
68 |
Â
);
|
69 |
Â
|
70 |
-
|
71 |
Â
}
|
72 |
Â
|
73 |
-
|
74 |
Â
// Ordering controls
|
75 |
Â
|
76 |
Â
$widget->add_control(
|
@@ -78,82 +74,79 @@ class Post_Helper {
|
|
78 |
Â
[
|
79 |
Â
'label' => __( 'Order & Limit', 'wts-eae' ),
|
80 |
Â
'type' => Controls_Manager::HEADING,
|
81 |
-
'separator' => 'before'
|
82 |
Â
]
|
83 |
Â
);
|
84 |
Â
|
85 |
Â
$widget->add_control(
|
86 |
Â
'order_by',
|
87 |
Â
[
|
88 |
-
'label'
|
89 |
-
'type'
|
90 |
-
'options'
|
91 |
Â
'ID' => __( 'ID', 'wts-eae' ),
|
92 |
Â
'date' => __( 'Date', 'wts-eae' ),
|
93 |
-
'title'
|
94 |
Â
'menu_order' => __( 'Menu Order', 'wts-eae' ),
|
95 |
Â
'random' => __( 'Random', 'wts-eae' ),
|
96 |
-
'meta_value'
|
97 |
Â
],
|
98 |
-
'default'
|
99 |
Â
]
|
100 |
Â
);
|
101 |
Â
|
102 |
Â
$widget->add_control(
|
103 |
Â
'order_meta_key',
|
104 |
Â
[
|
105 |
-
'label'
|
106 |
-
'type'
|
107 |
Â
'condition' => [
|
108 |
-
'order_by'
|
109 |
-
]
|
110 |
Â
]
|
111 |
Â
);
|
112 |
Â
|
113 |
Â
$widget->add_control(
|
114 |
Â
'order',
|
115 |
Â
[
|
116 |
-
'label'
|
117 |
-
'type'
|
118 |
-
'options'
|
119 |
-
'ASC'
|
120 |
-
'DESC'
|
121 |
Â
],
|
122 |
-
'default'
|
123 |
Â
]
|
124 |
Â
);
|
125 |
Â
|
126 |
Â
$widget->add_control(
|
127 |
Â
'offset',
|
128 |
Â
[
|
129 |
-
'label' => __('Offset', 'wts-eae'),
|
130 |
-
'type' => Controls_Manager::NUMBER
|
131 |
Â
]
|
132 |
Â
);
|
133 |
Â
|
134 |
Â
$widget->add_control(
|
135 |
Â
'post_count',
|
136 |
Â
[
|
137 |
-
'label'
|
138 |
-
'type'
|
139 |
-
'default'
|
140 |
Â
]
|
141 |
Â
);
|
142 |
-
|
143 |
-
|
144 |
Â
}
|
145 |
Â
|
146 |
Â
private function get_post_types() {
|
147 |
Â
|
148 |
Â
$types = [];
|
149 |
Â
|
150 |
-
$post_types = get_post_types(
|
151 |
Â
|
152 |
Â
$exclusions = [ 'attachment', 'elementor_library', 'ae_global_templates' ];
|
153 |
Â
|
154 |
-
|
155 |
Â
foreach ( $post_types as $post_type ) {
|
156 |
-
if ( in_array( $post_type->name, $exclusions ) ) {
|
157 |
Â
continue;
|
158 |
Â
}
|
159 |
Â
$types[ $post_type->name ] = $post_type->label;
|
@@ -172,10 +165,12 @@ class Post_Helper {
|
|
172 |
Â
private function get_taxonomy_terms( $taxonomy ) {
|
173 |
Â
|
174 |
Â
$term_array = [];
|
175 |
-
$terms = get_terms(
|
176 |
-
|
177 |
-
|
178 |
-
|
Â
|
|
Â
|
|
179 |
Â
|
180 |
Â
if ( count( $terms ) ) {
|
181 |
Â
|
@@ -187,19 +182,19 @@ class Post_Helper {
|
|
187 |
Â
return $term_array;
|
188 |
Â
}
|
189 |
Â
|
190 |
-
public function get_queried_posts($settings, $page = 1){
|
191 |
Â
|
192 |
Â
$query_vars = [];
|
193 |
Â
|
194 |
-
$query_vars['post_type']
|
195 |
-
$query_vars['orderby']
|
196 |
-
$query_vars['order']
|
197 |
Â
|
198 |
-
$query_vars['posts_per_page']
|
199 |
-
$query_vars['offset']
|
200 |
Â
|
201 |
-
if($query_vars['orderby']
|
202 |
-
$query_vars['meta_key'] =
|
203 |
Â
}
|
204 |
Â
|
205 |
Â
// Taxonomy Query
|
@@ -208,23 +203,21 @@ class Post_Helper {
|
|
208 |
Â
|
209 |
Â
$setting_key = $object->name . '_terms';
|
210 |
Â
|
211 |
-
|
212 |
Â
|
213 |
-
|
214 |
Â
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
Â
}
|
223 |
Â
|
224 |
-
|
225 |
-
$posts = new \WP_Query($query_vars);
|
226 |
Â
|
227 |
Â
return $posts;
|
228 |
-
|
229 |
Â
}
|
230 |
-
}
|
2 |
Â
|
3 |
Â
namespace WTS_EAE\Classes;
|
4 |
Â
|
Â
|
|
5 |
Â
use WTS_EAE\Plugin;
|
6 |
Â
use Elementor\Controls_Manager;
|
7 |
Â
|
8 |
Â
class Post_Helper {
|
9 |
Â
|
10 |
Â
|
11 |
+
public function query_controls( $widget ) {
|
12 |
Â
|
13 |
Â
$widget->add_control(
|
14 |
Â
'source',
|
16 |
Â
'label' => __( 'Source', 'wts-eae' ),
|
17 |
Â
'type' => Controls_Manager::SELECT,
|
18 |
Â
'options' => self::get_post_types(),
|
19 |
+
'default' => 'post',
|
20 |
Â
]
|
21 |
Â
);
|
22 |
Â
|
Â
|
|
23 |
Â
$taxonomies = $this->get_taxonomies();
|
24 |
Â
|
25 |
Â
foreach ( $taxonomies as $taxonomy => $tax_object ) {
|
41 |
Â
'label' => __( 'Filter Mode', 'wts-eae' ),
|
42 |
Â
'type' => Controls_Manager::SELECT,
|
43 |
Â
'options' => [
|
44 |
+
'IN' => __( 'Includes', 'wts-eae' ),
|
45 |
+
'NOT IN' => __( 'Excludes', 'wts-eae' ),
|
46 |
Â
],
|
47 |
Â
'condition' => [
|
48 |
Â
'source' => $tax_object->object_type,
|
65 |
Â
]
|
66 |
Â
);
|
67 |
Â
|
Â
|
|
68 |
Â
}
|
69 |
Â
|
Â
|
|
70 |
Â
// Ordering controls
|
71 |
Â
|
72 |
Â
$widget->add_control(
|
74 |
Â
[
|
75 |
Â
'label' => __( 'Order & Limit', 'wts-eae' ),
|
76 |
Â
'type' => Controls_Manager::HEADING,
|
77 |
+
'separator' => 'before',
|
78 |
Â
]
|
79 |
Â
);
|
80 |
Â
|
81 |
Â
$widget->add_control(
|
82 |
Â
'order_by',
|
83 |
Â
[
|
84 |
+
'label' => __( 'Order By', 'wts-eae' ),
|
85 |
+
'type' => Controls_Manager::SELECT,
|
86 |
+
'options' => [
|
87 |
Â
'ID' => __( 'ID', 'wts-eae' ),
|
88 |
Â
'date' => __( 'Date', 'wts-eae' ),
|
89 |
+
'title' => __( 'Title', 'wts-eae' ),
|
90 |
Â
'menu_order' => __( 'Menu Order', 'wts-eae' ),
|
91 |
Â
'random' => __( 'Random', 'wts-eae' ),
|
92 |
+
'meta_value' => __( 'Custom Field', 'wts-eae' ),
|
93 |
Â
],
|
94 |
+
'default' => 'menu_order',
|
95 |
Â
]
|
96 |
Â
);
|
97 |
Â
|
98 |
Â
$widget->add_control(
|
99 |
Â
'order_meta_key',
|
100 |
Â
[
|
101 |
+
'label' => __( 'Meta Key (Custom Field Name)', 'wts-eae' ),
|
102 |
+
'type' => Controls_Manager::TEXT,
|
103 |
Â
'condition' => [
|
104 |
+
'order_by' => 'meta_value',
|
105 |
+
],
|
106 |
Â
]
|
107 |
Â
);
|
108 |
Â
|
109 |
Â
$widget->add_control(
|
110 |
Â
'order',
|
111 |
Â
[
|
112 |
+
'label' => __( 'Order', 'wts-eae' ),
|
113 |
+
'type' => Controls_Manager::SELECT,
|
114 |
+
'options' => [
|
115 |
+
'ASC' => __( 'Ascending', 'wts-eae' ),
|
116 |
+
'DESC' => __( 'Descending', 'wts-eae' ),
|
117 |
Â
],
|
118 |
+
'default' => 'DESC',
|
119 |
Â
]
|
120 |
Â
);
|
121 |
Â
|
122 |
Â
$widget->add_control(
|
123 |
Â
'offset',
|
124 |
Â
[
|
125 |
+
'label' => __( 'Offset', 'wts-eae' ),
|
126 |
+
'type' => Controls_Manager::NUMBER,
|
127 |
Â
]
|
128 |
Â
);
|
129 |
Â
|
130 |
Â
$widget->add_control(
|
131 |
Â
'post_count',
|
132 |
Â
[
|
133 |
+
'label' => __( 'Post Count', 'wts-eae' ),
|
134 |
+
'type' => Controls_Manager::NUMBER,
|
135 |
+
'default' => '6',
|
136 |
Â
]
|
137 |
Â
);
|
Â
|
|
Â
|
|
138 |
Â
}
|
139 |
Â
|
140 |
Â
private function get_post_types() {
|
141 |
Â
|
142 |
Â
$types = [];
|
143 |
Â
|
144 |
+
$post_types = get_post_types( [ 'public' => true ], 'object' );
|
145 |
Â
|
146 |
Â
$exclusions = [ 'attachment', 'elementor_library', 'ae_global_templates' ];
|
147 |
Â
|
Â
|
|
148 |
Â
foreach ( $post_types as $post_type ) {
|
149 |
+
if ( in_array( $post_type->name, $exclusions, true ) ) {
|
150 |
Â
continue;
|
151 |
Â
}
|
152 |
Â
$types[ $post_type->name ] = $post_type->label;
|
165 |
Â
private function get_taxonomy_terms( $taxonomy ) {
|
166 |
Â
|
167 |
Â
$term_array = [];
|
168 |
+
$terms = get_terms(
|
169 |
+
[
|
170 |
+
'taxonomy' => $taxonomy,
|
171 |
+
'hide_empty' => false,
|
172 |
+
]
|
173 |
+
);
|
174 |
Â
|
175 |
Â
if ( count( $terms ) ) {
|
176 |
Â
|
182 |
Â
return $term_array;
|
183 |
Â
}
|
184 |
Â
|
185 |
+
public function get_queried_posts( $settings, $page = 1 ) {
|
186 |
Â
|
187 |
Â
$query_vars = [];
|
188 |
Â
|
189 |
+
$query_vars['post_type'] = $settings['source'];
|
190 |
+
$query_vars['orderby'] = $settings['order_by'];
|
191 |
+
$query_vars['order'] = $settings['order'];
|
192 |
Â
|
193 |
+
$query_vars['posts_per_page'] = $settings['post_count'];
|
194 |
+
$query_vars['offset'] = $settings['offset'];
|
195 |
Â
|
196 |
+
if ( $query_vars['orderby'] === 'meta_value' ) {
|
197 |
+
$query_vars['meta_key'] = $settings['order_meta_key'];
|
198 |
Â
}
|
199 |
Â
|
200 |
Â
// Taxonomy Query
|
203 |
Â
|
204 |
Â
$setting_key = $object->name . '_terms';
|
205 |
Â
|
206 |
+
if ( ! empty( $settings[ $setting_key ] ) ) {
|
207 |
Â
|
208 |
+
$operator = $settings[ $object->name . '_rule' ];
|
209 |
Â
|
210 |
+
$query_vars['tax_query'][] = [
|
211 |
+
'taxonomy' => $object->name,
|
212 |
+
'field' => 'term_id',
|
213 |
+
'terms' => $settings[ $setting_key ],
|
214 |
+
'operator' => $operator,
|
215 |
+
];
|
216 |
+
}
|
217 |
Â
}
|
218 |
Â
|
219 |
+
$posts = new \WP_Query( $query_vars );
|
Â
|
|
220 |
Â
|
221 |
Â
return $posts;
|
Â
|
|
222 |
Â
}
|
223 |
+
}
|
controls/group/grid-control.php
CHANGED
@@ -31,49 +31,47 @@ class Group_Control_Grid extends Group_Control_Base {
|
|
31 |
Â
],
|
32 |
Â
'default' => '3',
|
33 |
Â
'responsive' => true,
|
34 |
-
'selectors'
|
35 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-template-columns: repeat({{VALUE}}, 1fr)',
|
36 |
-
]
|
37 |
Â
];
|
38 |
Â
|
39 |
Â
$controls['col-gap'] = [
|
40 |
-
'label'
|
41 |
-
'type'
|
42 |
-
'default'
|
43 |
Â
'size' => 30,
|
44 |
Â
],
|
45 |
-
'range'
|
46 |
Â
'px' => [
|
47 |
Â
'min' => 0,
|
48 |
Â
'max' => 100,
|
49 |
Â
],
|
50 |
Â
],
|
51 |
Â
'responsive' => true,
|
52 |
-
'selectors'
|
53 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-column-gap: {{SIZE}}{{UNIT}}',
|
54 |
Â
],
|
55 |
Â
];
|
56 |
Â
|
57 |
Â
$controls['row-gap'] = [
|
58 |
-
'label'
|
59 |
-
'type'
|
60 |
-
'default'
|
61 |
Â
'size' => 30,
|
62 |
Â
],
|
63 |
-
'range'
|
64 |
Â
'px' => [
|
65 |
Â
'min' => 0,
|
66 |
Â
'max' => 100,
|
67 |
Â
],
|
68 |
Â
],
|
69 |
Â
'responsive' => true,
|
70 |
-
'selectors'
|
71 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-row-gap: {{SIZE}}{{UNIT}}',
|
72 |
Â
],
|
73 |
Â
];
|
74 |
Â
|
75 |
-
|
76 |
-
|
77 |
Â
return $controls;
|
78 |
Â
}
|
79 |
Â
|
31 |
Â
],
|
32 |
Â
'default' => '3',
|
33 |
Â
'responsive' => true,
|
34 |
+
'selectors' => [
|
35 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-template-columns: repeat({{VALUE}}, 1fr)',
|
36 |
+
],
|
37 |
Â
];
|
38 |
Â
|
39 |
Â
$controls['col-gap'] = [
|
40 |
+
'label' => __( 'Column Gap', 'wts-eae' ),
|
41 |
+
'type' => Controls_Manager::SLIDER,
|
42 |
+
'default' => [
|
43 |
Â
'size' => 30,
|
44 |
Â
],
|
45 |
+
'range' => [
|
46 |
Â
'px' => [
|
47 |
Â
'min' => 0,
|
48 |
Â
'max' => 100,
|
49 |
Â
],
|
50 |
Â
],
|
51 |
Â
'responsive' => true,
|
52 |
+
'selectors' => [
|
53 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-column-gap: {{SIZE}}{{UNIT}}',
|
54 |
Â
],
|
55 |
Â
];
|
56 |
Â
|
57 |
Â
$controls['row-gap'] = [
|
58 |
+
'label' => __( 'Row Gap', 'wts-eae' ),
|
59 |
+
'type' => Controls_Manager::SLIDER,
|
60 |
+
'default' => [
|
61 |
Â
'size' => 30,
|
62 |
Â
],
|
63 |
+
'range' => [
|
64 |
Â
'px' => [
|
65 |
Â
'min' => 0,
|
66 |
Â
'max' => 100,
|
67 |
Â
],
|
68 |
Â
],
|
69 |
Â
'responsive' => true,
|
70 |
+
'selectors' => [
|
71 |
Â
'{{WRAPPER}} .bepl-grid-container' => 'grid-row-gap: {{SIZE}}{{UNIT}}',
|
72 |
Â
],
|
73 |
Â
];
|
74 |
Â
|
Â
|
|
Â
|
|
75 |
Â
return $controls;
|
76 |
Â
}
|
77 |
Â
|
controls/group/icon.php
CHANGED
@@ -21,7 +21,6 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
21 |
Â
protected function init_fields() {
|
22 |
Â
$controls = [];
|
23 |
Â
|
24 |
-
|
25 |
Â
$controls['icon_type'] = [
|
26 |
Â
'type' => Controls_Manager::CHOOSE,
|
27 |
Â
'label' => __( 'Type', 'wts-eae' ),
|
@@ -43,58 +42,47 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
43 |
Â
'label_block' => false,
|
44 |
Â
'toggle' => false,
|
45 |
Â
'condition' => [
|
46 |
-
'eae_icon!' => ''
|
47 |
-
]
|
48 |
Â
];
|
49 |
Â
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
// ];
|
60 |
-
|
61 |
-
$controls['icon_new'] = [
|
62 |
-
'label' => __( 'Icon', 'wts-eae' ),
|
63 |
-
'type' => Controls_Manager::ICONS,
|
64 |
-
'fa4compatibility' => 'item_icon_icon',
|
65 |
-
'default' => [
|
66 |
-
'value' => 'fas fa-star',
|
67 |
-
'library' => 'fa-solid',
|
68 |
-
],
|
69 |
-
'condition' => [
|
70 |
Â
'eae_icon!' => '',
|
71 |
-
'icon_type'
|
72 |
Â
],
|
73 |
-
|
74 |
Â
|
75 |
Â
$controls['image'] = [
|
76 |
Â
'label' => __( 'Custom Icon', 'wts-eae' ),
|
77 |
Â
'type' => Controls_Manager::MEDIA,
|
78 |
-
'dynamic'
|
79 |
-
|
80 |
-
|
81 |
Â
'label_block' => true,
|
82 |
Â
'condition' => [
|
83 |
Â
'eae_icon!' => '',
|
84 |
-
'icon_type'
|
85 |
Â
],
|
86 |
Â
];
|
87 |
Â
|
88 |
Â
$controls['text'] = [
|
89 |
Â
'label' => __( 'Text', 'wts-eae' ),
|
90 |
Â
'type' => Controls_Manager::TEXT,
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
Â
'label_block' => false,
|
95 |
Â
'condition' => [
|
96 |
Â
'eae_icon!' => '',
|
97 |
-
'icon_type'
|
98 |
Â
],
|
99 |
Â
];
|
100 |
Â
|
@@ -102,7 +90,7 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
102 |
Â
'label' => __( 'View', 'wts-eae' ),
|
103 |
Â
'type' => Controls_Manager::SELECT,
|
104 |
Â
'options' => [
|
105 |
-
'global' => __( 'Global', 'wts-eae'),
|
106 |
Â
'default' => __( 'Default', 'wts-eae' ),
|
107 |
Â
'stacked' => __( 'Stacked', 'wts-eae' ),
|
108 |
Â
'framed' => __( 'Framed', 'wts-eae' ),
|
@@ -110,7 +98,7 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
110 |
Â
'default' => 'global',
|
111 |
Â
'condition' => [
|
112 |
Â
'eae_icon!' => '',
|
113 |
-
'icon_new!'
|
114 |
Â
],
|
115 |
Â
];
|
116 |
Â
|
@@ -118,15 +106,15 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
118 |
Â
'label' => __( 'Shape', 'wts-eae' ),
|
119 |
Â
'type' => Controls_Manager::SELECT,
|
120 |
Â
'options' => [
|
121 |
-
'global'
|
122 |
Â
'circle' => __( 'Circle', 'wts-eae' ),
|
123 |
Â
'square' => __( 'Square', 'wts-eae' ),
|
124 |
Â
],
|
125 |
Â
'default' => 'global',
|
126 |
Â
'condition' => [
|
127 |
-
'view!'
|
128 |
Â
'eae_icon!' => '',
|
129 |
-
'icon_new!'
|
130 |
Â
],
|
131 |
Â
];
|
132 |
Â
|
@@ -136,9 +124,9 @@ class Group_Control_Icon extends Group_Control_Base {
|
|
136 |
Â
protected function get_default_options() {
|
137 |
Â
return [
|
138 |
Â
'popover' => [
|
139 |
-
'starter_title' =>
|
140 |
Â
'starter_name' => 'eae_icon',
|
141 |
-
]
|
142 |
Â
];
|
143 |
Â
}
|
144 |
Â
}
|
21 |
Â
protected function init_fields() {
|
22 |
Â
$controls = [];
|
23 |
Â
|
Â
|
|
24 |
Â
$controls['icon_type'] = [
|
25 |
Â
'type' => Controls_Manager::CHOOSE,
|
26 |
Â
'label' => __( 'Type', 'wts-eae' ),
|
42 |
Â
'label_block' => false,
|
43 |
Â
'toggle' => false,
|
44 |
Â
'condition' => [
|
45 |
+
'eae_icon!' => '',
|
46 |
+
],
|
47 |
Â
];
|
48 |
Â
|
49 |
+
$controls['icon_new'] = [
|
50 |
+
'label' => __( 'Icon', 'wts-eae' ),
|
51 |
+
'type' => Controls_Manager::ICONS,
|
52 |
+
'fa4compatibility' => 'item_icon_icon',
|
53 |
+
'default' => [
|
54 |
+
'value' => 'fas fa-star',
|
55 |
+
'library' => 'fa-solid',
|
56 |
+
],
|
57 |
+
'condition' => [
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
58 |
Â
'eae_icon!' => '',
|
59 |
+
'icon_type' => 'icon',
|
60 |
Â
],
|
61 |
+
];
|
62 |
Â
|
63 |
Â
$controls['image'] = [
|
64 |
Â
'label' => __( 'Custom Icon', 'wts-eae' ),
|
65 |
Â
'type' => Controls_Manager::MEDIA,
|
66 |
+
'dynamic' => [
|
67 |
+
'active' => true,
|
68 |
+
],
|
69 |
Â
'label_block' => true,
|
70 |
Â
'condition' => [
|
71 |
Â
'eae_icon!' => '',
|
72 |
+
'icon_type' => 'image',
|
73 |
Â
],
|
74 |
Â
];
|
75 |
Â
|
76 |
Â
$controls['text'] = [
|
77 |
Â
'label' => __( 'Text', 'wts-eae' ),
|
78 |
Â
'type' => Controls_Manager::TEXT,
|
79 |
+
'dynamic' => [
|
80 |
+
'active' => true,
|
81 |
+
],
|
82 |
Â
'label_block' => false,
|
83 |
Â
'condition' => [
|
84 |
Â
'eae_icon!' => '',
|
85 |
+
'icon_type' => 'text',
|
86 |
Â
],
|
87 |
Â
];
|
88 |
Â
|
90 |
Â
'label' => __( 'View', 'wts-eae' ),
|
91 |
Â
'type' => Controls_Manager::SELECT,
|
92 |
Â
'options' => [
|
93 |
+
'global' => __( 'Global', 'wts-eae' ),
|
94 |
Â
'default' => __( 'Default', 'wts-eae' ),
|
95 |
Â
'stacked' => __( 'Stacked', 'wts-eae' ),
|
96 |
Â
'framed' => __( 'Framed', 'wts-eae' ),
|
98 |
Â
'default' => 'global',
|
99 |
Â
'condition' => [
|
100 |
Â
'eae_icon!' => '',
|
101 |
+
'icon_new!' => '',
|
102 |
Â
],
|
103 |
Â
];
|
104 |
Â
|
106 |
Â
'label' => __( 'Shape', 'wts-eae' ),
|
107 |
Â
'type' => Controls_Manager::SELECT,
|
108 |
Â
'options' => [
|
109 |
+
'global' => __( 'Global', 'wts-eae' ),
|
110 |
Â
'circle' => __( 'Circle', 'wts-eae' ),
|
111 |
Â
'square' => __( 'Square', 'wts-eae' ),
|
112 |
Â
],
|
113 |
Â
'default' => 'global',
|
114 |
Â
'condition' => [
|
115 |
+
'view!' => 'default',
|
116 |
Â
'eae_icon!' => '',
|
117 |
+
'icon_new!' => '',
|
118 |
Â
],
|
119 |
Â
];
|
120 |
Â
|
124 |
Â
protected function get_default_options() {
|
125 |
Â
return [
|
126 |
Â
'popover' => [
|
127 |
+
'starter_title' => __( 'Icon', 'wts-eae' ),
|
128 |
Â
'starter_name' => 'eae_icon',
|
129 |
+
],
|
130 |
Â
];
|
131 |
Â
}
|
132 |
Â
}
|
controls/group/icon_timeline.php
CHANGED
@@ -21,7 +21,6 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
21 |
Â
protected function init_fields() {
|
22 |
Â
$controls = [];
|
23 |
Â
|
24 |
-
|
25 |
Â
$controls['icon_type'] = [
|
26 |
Â
'type' => Controls_Manager::CHOOSE,
|
27 |
Â
'label' => __( 'Type', 'wts-eae' ),
|
@@ -43,18 +42,17 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
43 |
Â
'label_block' => false,
|
44 |
Â
'toggle' => false,
|
45 |
Â
'condition' => [
|
46 |
-
'eae_icon!' => ''
|
47 |
-
]
|
48 |
Â
];
|
49 |
Â
|
50 |
-
|
51 |
Â
$controls['icon'] = [
|
52 |
Â
'label' => __( 'Icon', 'wts-eae' ),
|
53 |
Â
'type' => Controls_Manager::ICON,
|
54 |
Â
'default' => 'fa fa-star',
|
55 |
Â
'condition' => [
|
56 |
Â
'eae_icon!' => '',
|
57 |
-
'icon_type'
|
58 |
Â
],
|
59 |
Â
];
|
60 |
Â
|
@@ -64,7 +62,7 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
64 |
Â
'label_block' => false,
|
65 |
Â
'condition' => [
|
66 |
Â
'eae_icon!' => '',
|
67 |
-
'icon_type'
|
68 |
Â
],
|
69 |
Â
];
|
70 |
Â
|
@@ -74,25 +72,10 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
74 |
Â
'label_block' => false,
|
75 |
Â
'condition' => [
|
76 |
Â
'eae_icon!' => '',
|
77 |
-
'icon_type'
|
78 |
Â
],
|
79 |
Â
];
|
80 |
Â
|
81 |
-
/*$controls['view'] = [
|
82 |
-
'label' => __( 'View', 'wts-eae' ),
|
83 |
-
'type' => Controls_Manager::SELECT,
|
84 |
-
'options' => [
|
85 |
-
//'default' => __( 'Default', 'wts-eae' ),
|
86 |
-
'stacked' => __( 'Stacked', 'wts-eae' ),
|
87 |
-
//'framed' => __( 'Framed', 'wts-eae' ),
|
88 |
-
],
|
89 |
-
'default' => 'stacked',
|
90 |
-
'condition' => [
|
91 |
-
'eae_icon!' => '',
|
92 |
-
'icon!' => ''
|
93 |
-
],
|
94 |
-
];*/
|
95 |
-
|
96 |
Â
$controls['shape'] = [
|
97 |
Â
'label' => __( 'Shape', 'wts-eae' ),
|
98 |
Â
'type' => Controls_Manager::SELECT,
|
@@ -103,7 +86,7 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
103 |
Â
'default' => 'circle',
|
104 |
Â
'condition' => [
|
105 |
Â
'eae_icon!' => '',
|
106 |
-
'icon!'
|
107 |
Â
],
|
108 |
Â
];
|
109 |
Â
|
@@ -113,10 +96,10 @@ class Group_Control_Icon_Timeline extends Group_Control_Base {
|
|
113 |
Â
protected function get_default_options() {
|
114 |
Â
return [
|
115 |
Â
'popover' => [
|
116 |
-
'starter_title' =>
|
117 |
Â
'starter_name' => 'eae_icon',
|
118 |
Â
'starter_value' => 'yes',
|
119 |
-
]
|
120 |
Â
];
|
121 |
Â
}
|
122 |
Â
}
|
21 |
Â
protected function init_fields() {
|
22 |
Â
$controls = [];
|
23 |
Â
|
Â
|
|
24 |
Â
$controls['icon_type'] = [
|
25 |
Â
'type' => Controls_Manager::CHOOSE,
|
26 |
Â
'label' => __( 'Type', 'wts-eae' ),
|
42 |
Â
'label_block' => false,
|
43 |
Â
'toggle' => false,
|
44 |
Â
'condition' => [
|
45 |
+
'eae_icon!' => '',
|
46 |
+
],
|
47 |
Â
];
|
48 |
Â
|
Â
|
|
49 |
Â
$controls['icon'] = [
|
50 |
Â
'label' => __( 'Icon', 'wts-eae' ),
|
51 |
Â
'type' => Controls_Manager::ICON,
|
52 |
Â
'default' => 'fa fa-star',
|
53 |
Â
'condition' => [
|
54 |
Â
'eae_icon!' => '',
|
55 |
+
'icon_type' => 'icon',
|
56 |
Â
],
|
57 |
Â
];
|
58 |
Â
|
62 |
Â
'label_block' => false,
|
63 |
Â
'condition' => [
|
64 |
Â
'eae_icon!' => '',
|
65 |
+
'icon_type' => 'image',
|
66 |
Â
],
|
67 |
Â
];
|
68 |
Â
|
72 |
Â
'label_block' => false,
|
73 |
Â
'condition' => [
|
74 |
Â
'eae_icon!' => '',
|
75 |
+
'icon_type' => 'text',
|
76 |
Â
],
|
77 |
Â
];
|
78 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
79 |
Â
$controls['shape'] = [
|
80 |
Â
'label' => __( 'Shape', 'wts-eae' ),
|
81 |
Â
'type' => Controls_Manager::SELECT,
|
86 |
Â
'default' => 'circle',
|
87 |
Â
'condition' => [
|
88 |
Â
'eae_icon!' => '',
|
89 |
+
'icon!' => '',
|
90 |
Â
],
|
91 |
Â
];
|
92 |
Â
|
96 |
Â
protected function get_default_options() {
|
97 |
Â
return [
|
98 |
Â
'popover' => [
|
99 |
+
'starter_title' => __( 'Icon', 'wts-eae' ),
|
100 |
Â
'starter_name' => 'eae_icon',
|
101 |
Â
'starter_value' => 'yes',
|
102 |
+
],
|
103 |
Â
];
|
104 |
Â
}
|
105 |
Â
}
|
controls/hover-transition.php
CHANGED
@@ -127,7 +127,7 @@ class Hover_Transition extends Base_Data_Control {
|
|
127 |
Â
'hvr-shadow-radial' => __( 'Shadow Radial', 'wts-eae' ),
|
128 |
Â
'hvr-box-shadow-outset' => __( 'Box Shadow Outset', 'wts-eae' ),
|
129 |
Â
'hvr-box-shadow-inset' => __( 'Box Shadow Inset', 'wts-eae' ),
|
130 |
-
]
|
131 |
Â
|
132 |
Â
];
|
133 |
Â
}
|
@@ -137,7 +137,7 @@ class Hover_Transition extends Base_Data_Control {
|
|
137 |
Â
|
138 |
Â
public function enqueue() {
|
139 |
Â
|
140 |
-
wp_register_script( 'eae-control', EAE_URL . 'assets/js/editor.js', [ 'jquery' ], '1.0.0' );
|
141 |
Â
wp_enqueue_script( 'eae-control' );
|
142 |
Â
}
|
143 |
Â
|
@@ -145,24 +145,24 @@ class Hover_Transition extends Base_Data_Control {
|
|
145 |
Â
public function content_template() {
|
146 |
Â
$control_uid = $this->get_control_uid();
|
147 |
Â
?>
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
Â
<?php foreach ( self::get_transitions() as $transitions_group_name => $transitions_group ) : ?>
|
154 |
-
|
155 |
Â
<?php foreach ( $transitions_group as $transition_name => $transition_title ) : ?>
|
156 |
-
|
157 |
Â
<?php endforeach; ?>
|
158 |
-
|
159 |
Â
<?php endforeach; ?>
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
Â
<?php
|
167 |
Â
}
|
168 |
Â
}
|
127 |
Â
'hvr-shadow-radial' => __( 'Shadow Radial', 'wts-eae' ),
|
128 |
Â
'hvr-box-shadow-outset' => __( 'Box Shadow Outset', 'wts-eae' ),
|
129 |
Â
'hvr-box-shadow-inset' => __( 'Box Shadow Inset', 'wts-eae' ),
|
130 |
+
],
|
131 |
Â
|
132 |
Â
];
|
133 |
Â
}
|
137 |
Â
|
138 |
Â
public function enqueue() {
|
139 |
Â
|
140 |
+
wp_register_script( 'eae-control', EAE_URL . 'assets/js/editor.js', [ 'jquery' ], '1.0.0', true );
|
141 |
Â
wp_enqueue_script( 'eae-control' );
|
142 |
Â
}
|
143 |
Â
|
145 |
Â
public function content_template() {
|
146 |
Â
$control_uid = $this->get_control_uid();
|
147 |
Â
?>
|
148 |
+
<div class="elementor-control-field">
|
149 |
+
<label for="<?php echo esc_attr( $control_uid ); ?>" class="elementor-control-title">{{{ data.label }}}</label>
|
150 |
+
<div class="elementor-control-input-wrapper">
|
151 |
+
<select id="<?php echo esc_attr( $control_uid ); ?>" data-setting="{{ data.name }}">
|
152 |
+
<option value=""><?php echo esc_html__( 'None', 'wts-eae' ); ?></option>
|
153 |
Â
<?php foreach ( self::get_transitions() as $transitions_group_name => $transitions_group ) : ?>
|
154 |
+
<optgroup label="<?php echo esc_attr( $transitions_group_name ); ?>">
|
155 |
Â
<?php foreach ( $transitions_group as $transition_name => $transition_title ) : ?>
|
156 |
+
<option value="<?php echo esc_attr( $transition_name ); ?>"><?php echo esc_attr( $transition_title ); ?></option>
|
157 |
Â
<?php endforeach; ?>
|
158 |
+
</optgroup>
|
159 |
Â
<?php endforeach; ?>
|
160 |
+
</select>
|
161 |
+
</div>
|
162 |
+
</div>
|
163 |
+
<# if ( data.description ) { #>
|
164 |
+
<div class="elementor-control-field-description">{{{ data.description }}}</div>
|
165 |
+
<# } #>
|
166 |
Â
<?php
|
167 |
Â
}
|
168 |
Â
}
|
elementor-addon-elements.php
CHANGED
@@ -4,59 +4,58 @@
|
|
4 |
Â
* Plugin Name: Elementor Addon Elements
|
5 |
Â
* Description: Elementor Addon Elements comes with 25+ widgets and extensions to extend the power of Elementor Page Builder.
|
6 |
Â
* Plugin URI: https://www.elementoraddons.com/elements-addon-elements/
|
7 |
-
* Author:
|
8 |
-
* Version: 1.11.
|
9 |
Â
* Author URI: https://wpvibes.com/
|
10 |
-
* Elementor tested up to: 3.
|
11 |
Â
* Elementor Pro tested up to: 3.2.0
|
12 |
Â
* Text Domain: wts-eae
|
13 |
Â
* @package WTS_EAE
|
14 |
Â
*/
|
15 |
-
define('EAE_FILE', __FILE__);
|
16 |
-
define('EAE_URL', plugins_url('/', __FILE__));
|
17 |
-
define('EAE_PATH', plugin_dir_path(__FILE__));
|
18 |
-
define('EAE_SCRIPT_SUFFIX', defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min');
|
19 |
-
define('EAE_VERSION', '1.11.
|
20 |
Â
|
21 |
Â
|
22 |
-
if (!function_exists('_is_elementor_installed')) {
|
23 |
Â
|
24 |
-
function _is_elementor_installed()
|
25 |
-
|
26 |
-
$file_path = 'elementor/elementor.php';
|
27 |
Â
$installed_plugins = get_plugins();
|
28 |
Â
|
29 |
-
return isset($installed_plugins[$file_path]);
|
30 |
Â
}
|
31 |
Â
}
|
32 |
Â
|
33 |
-
if (!function_exists('is_plugin_active')) {
|
34 |
-
include_once
|
35 |
Â
}
|
36 |
-
if (!function_exists('wpv_eae')) {
|
37 |
Â
// Create a helper function for easy SDK access.
|
38 |
-
function wpv_eae()
|
39 |
-
{
|
40 |
-
|
41 |
Â
global $wpv_eae;
|
42 |
Â
|
43 |
-
if (!isset($wpv_eae)) {
|
44 |
Â
// Include Freemius SDK.
|
45 |
-
require_once dirname(__FILE__) . '/freemius/start.php';
|
46 |
-
$wpv_eae = fs_dynamic_init(
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
'
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
Â
|
|
Â
|
|
60 |
Â
}
|
61 |
Â
|
62 |
Â
return $wpv_eae;
|
@@ -65,19 +64,18 @@ if (!function_exists('wpv_eae')) {
|
|
65 |
Â
// Init Freemius.
|
66 |
Â
wpv_eae();
|
67 |
Â
// Signal that SDK was initiated.
|
68 |
-
do_action('wpv_eae_loaded');
|
69 |
Â
}
|
70 |
Â
/**
|
71 |
Â
* Handles plugin activation actions.
|
72 |
Â
*
|
73 |
Â
* @since 1.0
|
74 |
Â
*/
|
75 |
-
function eae_activate()
|
76 |
-
{
|
77 |
-
if (!is_plugin_active('elementor/elementor.php')) {
|
78 |
Â
return;
|
79 |
Â
}
|
80 |
Â
\Elementor\Plugin::$instance->files_manager->clear_cache();
|
81 |
Â
}
|
82 |
-
register_activation_hook(__FILE__, 'eae_activate');
|
83 |
Â
require_once 'inc/bootstrap.php';
|
4 |
Â
* Plugin Name: Elementor Addon Elements
|
5 |
Â
* Description: Elementor Addon Elements comes with 25+ widgets and extensions to extend the power of Elementor Page Builder.
|
6 |
Â
* Plugin URI: https://www.elementoraddons.com/elements-addon-elements/
|
7 |
+
* Author: WPVibes
|
8 |
+
* Version: 1.11.2
|
9 |
Â
* Author URI: https://wpvibes.com/
|
10 |
+
* Elementor tested up to: 3.1.0
|
11 |
Â
* Elementor Pro tested up to: 3.2.0
|
12 |
Â
* Text Domain: wts-eae
|
13 |
Â
* @package WTS_EAE
|
14 |
Â
*/
|
15 |
+
define( 'EAE_FILE', __FILE__ );
|
16 |
+
define( 'EAE_URL', plugins_url( '/', __FILE__ ) );
|
17 |
+
define( 'EAE_PATH', plugin_dir_path( __FILE__ ) );
|
18 |
+
define( 'EAE_SCRIPT_SUFFIX', defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min' );
|
19 |
+
define( 'EAE_VERSION', '1.11.2' );
|
20 |
Â
|
21 |
Â
|
22 |
+
if ( ! function_exists( '_is_elementor_installed' ) ) {
|
23 |
Â
|
24 |
+
function _is_elementor_installed() {
|
25 |
+
$file_path = 'elementor/elementor.php';
|
Â
|
|
26 |
Â
$installed_plugins = get_plugins();
|
27 |
Â
|
28 |
+
return isset( $installed_plugins[ $file_path ] );
|
29 |
Â
}
|
30 |
Â
}
|
31 |
Â
|
32 |
+
if ( ! function_exists( 'is_plugin_active' ) ) {
|
33 |
+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
|
34 |
Â
}
|
35 |
+
if ( ! function_exists( 'wpv_eae' ) ) {
|
36 |
Â
// Create a helper function for easy SDK access.
|
37 |
+
function wpv_eae() {
|
Â
|
|
Â
|
|
38 |
Â
global $wpv_eae;
|
39 |
Â
|
40 |
+
if ( ! isset( $wpv_eae ) ) {
|
41 |
Â
// Include Freemius SDK.
|
42 |
+
require_once dirname( __FILE__ ) . '/freemius/start.php';
|
43 |
+
$wpv_eae = fs_dynamic_init(
|
44 |
+
[
|
45 |
+
'id' => '4599',
|
46 |
+
'slug' => 'addon-elements-for-elementor-page-builder',
|
47 |
+
'type' => 'plugin',
|
48 |
+
'public_key' => 'pk_086ef046431438c9a172bb55fde28',
|
49 |
+
'is_premium' => false,
|
50 |
+
'has_addons' => false,
|
51 |
+
'has_paid_plans' => false,
|
52 |
+
'menu' => [
|
53 |
+
'slug' => 'eae-settings',
|
54 |
+
'account' => false,
|
55 |
+
'contact' => false,
|
56 |
+
],
|
57 |
+
]
|
58 |
+
);
|
59 |
Â
}
|
60 |
Â
|
61 |
Â
return $wpv_eae;
|
64 |
Â
// Init Freemius.
|
65 |
Â
wpv_eae();
|
66 |
Â
// Signal that SDK was initiated.
|
67 |
+
do_action( 'wpv_eae_loaded' );
|
68 |
Â
}
|
69 |
Â
/**
|
70 |
Â
* Handles plugin activation actions.
|
71 |
Â
*
|
72 |
Â
* @since 1.0
|
73 |
Â
*/
|
74 |
+
function eae_activate() {
|
75 |
+
if ( ! is_plugin_active( 'elementor/elementor.php' ) ) {
|
Â
|
|
76 |
Â
return;
|
77 |
Â
}
|
78 |
Â
\Elementor\Plugin::$instance->files_manager->clear_cache();
|
79 |
Â
}
|
80 |
+
register_activation_hook( __FILE__, 'eae_activate' );
|
81 |
Â
require_once 'inc/bootstrap.php';
|
inc/admin/Settings.php
CHANGED
@@ -5,31 +5,21 @@
|
|
5 |
Â
* Date: 10/01/18
|
6 |
Â
* Time: 12:18 PM
|
7 |
Â
*/
|
8 |
-
|
9 |
Â
namespace WTS_EAE;
|
10 |
Â
|
11 |
-
|
12 |
Â
class Settings extends Settings_Page {
|
13 |
Â
|
14 |
Â
const PAGE_ID = 'eae';
|
15 |
Â
|
16 |
Â
public function __construct() {
|
17 |
Â
parent::__construct();
|
18 |
-
add_action('wp_ajax_eae_save_gmap',[ $this, 'eae_save_gmap_key']);
|
19 |
-
add_action('wp_ajax_eae_elements_save',[ $this, 'eae_save_elements']);
|
20 |
Â
add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 20 );
|
21 |
Â
}
|
22 |
Â
|
23 |
Â
public function register_admin_menu() {
|
24 |
-
|
25 |
-
__( 'Elementor Addon Elements', 'wts-eae' ),
|
26 |
-
__( 'Elementor Addon Elements', 'wts-eae' ),
|
27 |
-
'manage_options',
|
28 |
-
self::PAGE_ID,
|
29 |
-
[ $this, 'display_settings_page' ],
|
30 |
-
'',
|
31 |
-
99
|
32 |
-
);*/
|
33 |
Â
add_menu_page(
|
34 |
Â
__( 'Elementor Addons Elements', 'wts-eae' ),
|
35 |
Â
__( 'Elementor Addons Elements', 'wts-eae' ),
|
@@ -41,33 +31,36 @@ class Settings extends Settings_Page {
|
|
41 |
Â
);
|
42 |
Â
}
|
43 |
Â
|
44 |
-
public function eae_save_gmap_key(){
|
45 |
-
$key = sanitize_text_field($_REQUEST['mapkey']);
|
46 |
Â
|
47 |
-
if(current_user_can( 'manage_options' ) && check_ajax_referer('eae_ajax_nonce','nonce')){
|
48 |
-
update_option('wts_eae_gmap_key'
|
49 |
Â
}
|
50 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
51 |
Â
|
52 |
-
public function eae_save_elements(){
|
53 |
Â
$elements = $_REQUEST['eae_items'];
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
Â
|
|
58 |
Â
}
|
59 |
-
}
|
60 |
-
|
61 |
-
if(current_user_can( 'manage_options' ) && check_ajax_referer('eae_ajax_nonce','nonce')) {
|
62 |
-
update_option('wts_eae_elements',$items);
|
63 |
Â
}
|
64 |
Â
|
65 |
-
|
Â
|
|
Â
|
|
Â
|
|
66 |
Â
|
67 |
-
public function display_settings_page_new(){
|
68 |
Â
?>
|
69 |
Â
<div id="eae-settings"></div>
|
70 |
-
|
71 |
Â
}
|
72 |
Â
|
73 |
Â
protected function get_page_title() {
|
@@ -78,42 +71,42 @@ class Settings extends Settings_Page {
|
|
78 |
Â
|
79 |
Â
return [
|
80 |
Â
'general' => [
|
81 |
-
'label'
|
82 |
Â
'sections' => [
|
83 |
Â
'general' => [
|
84 |
Â
'fields' => [
|
85 |
Â
'gmap_key' => [
|
86 |
-
'label'
|
87 |
Â
'field_args' => [
|
88 |
Â
'type' => 'text',
|
89 |
Â
'desc' => '<a href="https://developers.google.com/maps/documentation/javascript/get-api-key" target="_blank">'
|
90 |
-
|
91 |
-
|
92 |
Â
],
|
93 |
-
]
|
94 |
-
]
|
95 |
-
]
|
96 |
-
]
|
97 |
Â
],
|
98 |
Â
'other_products' => [
|
99 |
-
'label'
|
100 |
-
'sections'
|
101 |
Â
'other_products' => [
|
102 |
-
'fields'
|
103 |
Â
'aepro' => [
|
104 |
Â
'field_args' => [
|
105 |
-
'type'
|
106 |
-
'html'
|
107 |
-
]
|
108 |
-
]
|
109 |
-
]
|
110 |
-
]
|
111 |
-
]
|
112 |
-
]
|
113 |
Â
];
|
114 |
Â
}
|
115 |
Â
|
116 |
-
function get_aepro_promo(){
|
117 |
Â
|
118 |
Â
$promo_html = '<h2>AnyWhere Elementor Pro</h2>';
|
119 |
Â
|
@@ -145,11 +138,11 @@ class Settings extends Settings_Page {
|
|
145 |
Â
</p></div>
|
146 |
Â
|
147 |
Â
<div class="logo-box">
|
148 |
-
<img src="'.EAE_URL.'assets/aep.png" title="AnyWhere Elementor Pro" />
|
149 |
Â
</div> ';
|
150 |
Â
|
151 |
Â
return $promo_html;
|
152 |
Â
}
|
153 |
Â
}
|
154 |
Â
|
155 |
-
new Settings();
|
5 |
Â
* Date: 10/01/18
|
6 |
Â
* Time: 12:18 PM
|
7 |
Â
*/
|
Â
|
|
8 |
Â
namespace WTS_EAE;
|
9 |
Â
|
Â
|
|
10 |
Â
class Settings extends Settings_Page {
|
11 |
Â
|
12 |
Â
const PAGE_ID = 'eae';
|
13 |
Â
|
14 |
Â
public function __construct() {
|
15 |
Â
parent::__construct();
|
16 |
+
add_action( 'wp_ajax_eae_save_gmap', [ $this, 'eae_save_gmap_key' ] );
|
17 |
+
add_action( 'wp_ajax_eae_elements_save', [ $this, 'eae_save_elements' ] );
|
18 |
Â
add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 20 );
|
19 |
Â
}
|
20 |
Â
|
21 |
Â
public function register_admin_menu() {
|
22 |
+
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
add_menu_page(
|
24 |
Â
__( 'Elementor Addons Elements', 'wts-eae' ),
|
25 |
Â
__( 'Elementor Addons Elements', 'wts-eae' ),
|
31 |
Â
);
|
32 |
Â
}
|
33 |
Â
|
34 |
+
public function eae_save_gmap_key() {
|
35 |
+
$key = sanitize_text_field( $_REQUEST['mapkey'] );
|
36 |
Â
|
37 |
+
if ( current_user_can( 'manage_options' ) && check_ajax_referer( 'eae_ajax_nonce', 'nonce' ) ) {
|
38 |
+
update_option( 'wts_eae_gmap_key', $key );
|
39 |
Â
}
|
40 |
+
}
|
41 |
+
|
42 |
+
public function eae_save_elements() {
|
43 |
+
|
44 |
+
check_ajax_referer( 'eae_ajax_nonce', 'nonce' );
|
45 |
Â
|
Â
|
|
46 |
Â
$elements = $_REQUEST['eae_items'];
|
47 |
+
$items = [];
|
48 |
+
$count = count( $elements );
|
49 |
+
for ( $i = 0; $i < $count; $i++ ) {
|
50 |
+
if ( $elements[ $i ]['enabled'] === 'true' || $elements[ $i ]['enabled'] === 'false' ) {
|
51 |
+
$items[ $elements[ $i ]['key'] ] = $elements[ $i ]['enabled'];
|
52 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
53 |
Â
}
|
54 |
Â
|
55 |
+
if ( current_user_can( 'manage_options' ) && check_ajax_referer( 'eae_ajax_nonce', 'nonce' ) ) {
|
56 |
+
update_option( 'wts_eae_elements', $items );
|
57 |
+
}
|
58 |
+
}
|
59 |
Â
|
60 |
+
public function display_settings_page_new() {
|
61 |
Â
?>
|
62 |
Â
<div id="eae-settings"></div>
|
63 |
+
<?php
|
64 |
Â
}
|
65 |
Â
|
66 |
Â
protected function get_page_title() {
|
71 |
Â
|
72 |
Â
return [
|
73 |
Â
'general' => [
|
74 |
+
'label' => __( 'General', 'wts-eae' ),
|
75 |
Â
'sections' => [
|
76 |
Â
'general' => [
|
77 |
Â
'fields' => [
|
78 |
Â
'gmap_key' => [
|
79 |
+
'label' => __( 'Google Map Key', 'wts-eae' ),
|
80 |
Â
'field_args' => [
|
81 |
Â
'type' => 'text',
|
82 |
Â
'desc' => '<a href="https://developers.google.com/maps/documentation/javascript/get-api-key" target="_blank">'
|
83 |
+
. __( 'Click Here', 'wts-eae' ) .
|
84 |
+
'</a> to generate API KEY',
|
85 |
Â
],
|
86 |
+
],
|
87 |
+
],
|
88 |
+
],
|
89 |
+
],
|
90 |
Â
],
|
91 |
Â
'other_products' => [
|
92 |
+
'label' => __( 'Other Products', 'wts-eae' ),
|
93 |
+
'sections' => [
|
94 |
Â
'other_products' => [
|
95 |
+
'fields' => [
|
96 |
Â
'aepro' => [
|
97 |
Â
'field_args' => [
|
98 |
+
'type' => 'raw_html',
|
99 |
+
'html' => $this->get_aepro_promo(),
|
100 |
+
],
|
101 |
+
],
|
102 |
+
],
|
103 |
+
],
|
104 |
+
],
|
105 |
+
],
|
106 |
Â
];
|
107 |
Â
}
|
108 |
Â
|
109 |
+
public function get_aepro_promo() {
|
110 |
Â
|
111 |
Â
$promo_html = '<h2>AnyWhere Elementor Pro</h2>';
|
112 |
Â
|
138 |
Â
</p></div>
|
139 |
Â
|
140 |
Â
<div class="logo-box">
|
141 |
+
<img src="' . EAE_URL . 'assets/aep.png" title="AnyWhere Elementor Pro" />
|
142 |
Â
</div> ';
|
143 |
Â
|
144 |
Â
return $promo_html;
|
145 |
Â
}
|
146 |
Â
}
|
147 |
Â
|
148 |
+
new Settings();
|
inc/admin/admin-notice.php
CHANGED
@@ -2,54 +2,49 @@
|
|
2 |
Â
|
3 |
Â
namespace WTS_EAE;
|
4 |
Â
|
5 |
-
class Admin_Notice
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
public static function get_instance()
|
12 |
-
|
13 |
-
|
14 |
-
self::$instance = new self;
|
15 |
Â
}
|
16 |
Â
|
17 |
Â
return self::$instance;
|
18 |
Â
}
|
19 |
Â
|
20 |
-
public function __construct()
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
add_filter('eae/admin_notices', [$this,'fv_notice']);
|
25 |
-
//$this->eae_notice();
|
26 |
-
//$this->fv_download_box();
|
27 |
-
}
|
28 |
Â
|
29 |
-
|
30 |
-
|
31 |
Â
|
32 |
-
if (
|
33 |
Â
$review = [
|
34 |
-
'installed' => current_time('yy/m/d'),
|
35 |
-
'status'
|
36 |
Â
];
|
37 |
Â
|
38 |
-
update_option('eae_review', $review);
|
39 |
Â
}
|
40 |
Â
|
41 |
-
$check_review = get_option('eae_review');
|
42 |
Â
|
43 |
Â
$start = $check_review['installed'];
|
44 |
-
$end
|
45 |
Â
|
46 |
-
$days = $this->dateDiff($start, $end);
|
47 |
Â
|
48 |
Â
$usage = [];
|
49 |
-
$usage = get_option('elementor_controls_usage');
|
50 |
Â
|
51 |
-
if ($usage) {
|
52 |
-
if (array_key_exists('wp-page', $usage)) {
|
53 |
Â
$usage = $usage['wp-page'];
|
54 |
Â
} else {
|
55 |
Â
$usage = [];
|
@@ -58,65 +53,60 @@ class Admin_Notice
|
|
58 |
Â
$usage = [];
|
59 |
Â
}
|
60 |
Â
|
61 |
-
$eae_widget
|
62 |
Â
$widget_count = 0;
|
63 |
-
foreach ($eae_widget as $key => $value) {
|
64 |
-
if (array_key_exists($value, $usage)) {
|
65 |
-
$widget_count = $widget_count + $usage[$value]['count'];
|
66 |
Â
}
|
67 |
-
|
68 |
-
|
69 |
-
if ($days < 11 && $widget_count < 5) {
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
70 |
Â
return $notice;
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
$notice[] = 'eae_review';
|
79 |
-
return $notice;
|
80 |
-
}
|
81 |
-
}
|
82 |
-
function dateDiff($start, $end)
|
83 |
-
{
|
84 |
-
$start_time = strtotime($start);
|
85 |
-
$end_time = strtotime($end);
|
86 |
-
$datediff = $end_time - $start_time;
|
87 |
-
return round($datediff / 86400);
|
88 |
Â
}
|
89 |
Â
|
90 |
-
|
91 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
92 |
Â
|
93 |
-
|
94 |
-
|
95 |
-
|
Â
|
|
96 |
Â
return $notice;
|
97 |
-
}
|
98 |
-
|
99 |
-
|
100 |
-
if (!is_plugin_active('form-vibes/form-vibes.php')) {
|
101 |
-
$query = array(
|
102 |
-
'post_type' => 'page',
|
103 |
-
'post_status' => 'publish',
|
104 |
-
'meta_query' => array(
|
105 |
-
array(
|
106 |
-
'key' => '_elementor_data',
|
107 |
-
'value' => '"widgetType":"form"',
|
108 |
-
'compare' => 'LIKE',
|
109 |
-
),
|
110 |
-
),
|
111 |
-
);
|
112 |
-
//print_r($query);
|
113 |
-
$data = new \WP_Query($query);
|
114 |
-
|
115 |
-
if (count($data->posts) <= 0) {
|
116 |
-
return $notice;
|
117 |
-
}
|
118 |
-
$notice[] = 'fv_download_box';
|
119 |
-
return $notice;
|
120 |
Â
}
|
121 |
-
|
122 |
-
}
|
2 |
Â
|
3 |
Â
namespace WTS_EAE;
|
4 |
Â
|
5 |
+
class Admin_Notice {
|
6 |
+
|
7 |
+
public static $instance;
|
8 |
+
|
9 |
+
public $module_manager;
|
10 |
+
|
11 |
+
public static function get_instance() {
|
12 |
+
if ( ! isset( self::$instance ) ) {
|
13 |
+
self::$instance = new self();
|
Â
|
|
14 |
Â
}
|
15 |
Â
|
16 |
Â
return self::$instance;
|
17 |
Â
}
|
18 |
Â
|
19 |
+
public function __construct() {
|
20 |
+
add_filter( 'eae/admin_notices', [ $this, 'eae_notice' ] );
|
21 |
+
add_filter( 'eae/admin_notices', [ $this, 'fv_notice' ] );
|
22 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
23 |
Â
|
24 |
+
public function eae_notice( $notice ) {
|
25 |
+
$check_review = get_option( 'eae_review' );
|
26 |
Â
|
27 |
+
if ( ! $check_review ) {
|
28 |
Â
$review = [
|
29 |
+
'installed' => current_time( 'yy/m/d' ),
|
30 |
+
'status' => '',
|
31 |
Â
];
|
32 |
Â
|
33 |
+
update_option( 'eae_review', $review );
|
34 |
Â
}
|
35 |
Â
|
36 |
+
$check_review = get_option( 'eae_review' );
|
37 |
Â
|
38 |
Â
$start = $check_review['installed'];
|
39 |
+
$end = current_time( 'yy/m/d' );
|
40 |
Â
|
41 |
+
$days = $this->dateDiff( $start, $end );
|
42 |
Â
|
43 |
Â
$usage = [];
|
44 |
+
$usage = get_option( 'elementor_controls_usage' );
|
45 |
Â
|
46 |
+
if ( $usage ) {
|
47 |
+
if ( array_key_exists( 'wp-page', $usage ) ) {
|
48 |
Â
$usage = $usage['wp-page'];
|
49 |
Â
} else {
|
50 |
Â
$usage = [];
|
53 |
Â
$usage = [];
|
54 |
Â
}
|
55 |
Â
|
56 |
+
$eae_widget = [ 'eae-info-circle', 'eae-dual-button', 'wts-flipbox', 'wts-splittext', 'wts-modal-popup', 'eae-timeline', 'wts-AnimatedText', 'wts-ab-image', 'wts-gmap', 'eae-progress-bar', 'wts-textseparator', 'wts-postlist', 'eae-content-switcher', 'eae-filterableGallery', 'wts-shape-separator', 'wts-twitter', 'wts-pricetable' ];
|
57 |
Â
$widget_count = 0;
|
58 |
+
foreach ( $eae_widget as $key => $value ) {
|
59 |
+
if ( array_key_exists( $value, $usage ) ) {
|
60 |
+
$widget_count = $widget_count + $usage[ $value ]['count'];
|
61 |
Â
}
|
62 |
+
}
|
63 |
+
|
64 |
+
if ( $days < 11 && $widget_count < 5 ) {
|
65 |
+
return $notice;
|
66 |
+
}
|
67 |
+
|
68 |
+
$remind_later = get_transient( 'eae_remind_later' );
|
69 |
+
|
70 |
+
if ( $check_review['status'] === '' && $remind_later === '' ) {
|
71 |
+
$notice[] = 'eae_review';
|
72 |
Â
return $notice;
|
73 |
+
}
|
74 |
+
}
|
75 |
+
public function dateDiff( $start, $end ) {
|
76 |
+
$start_time = strtotime( $start );
|
77 |
+
$end_time = strtotime( $end );
|
78 |
+
$datediff = $end_time - $start_time;
|
79 |
+
return round( $datediff / 86400 );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
80 |
Â
}
|
81 |
Â
|
82 |
+
public function fv_notice( $notice ) {
|
83 |
+
$download_later = get_transient( 'fv_download_later' );
|
84 |
+
|
85 |
+
$fv_downloaded = get_option( 'fv_downloaded' );
|
86 |
+
|
87 |
+
if ( $fv_downloaded === 'done' || $download_later ) {
|
88 |
+
return $notice;
|
89 |
+
}
|
90 |
+
|
91 |
+
if ( ! is_plugin_active( 'form-vibes/form-vibes.php' ) ) {
|
92 |
+
$query = [
|
93 |
+
'post_type' => 'page',
|
94 |
+
'post_status' => 'publish',
|
95 |
+
'meta_query' => [
|
96 |
+
[
|
97 |
+
'key' => '_elementor_data',
|
98 |
+
'value' => '"widgetType":"form"',
|
99 |
+
'compare' => 'LIKE',
|
100 |
+
],
|
101 |
+
],
|
102 |
+
];
|
103 |
+
$data = new \WP_Query( $query );
|
104 |
Â
|
105 |
+
if ( count( $data->posts ) <= 0 ) {
|
106 |
+
return $notice;
|
107 |
+
}
|
108 |
+
$notice[] = 'fv_download_box';
|
109 |
Â
return $notice;
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
110 |
Â
}
|
111 |
+
}
|
112 |
+
}
|
inc/admin/controls.php
CHANGED
@@ -18,11 +18,11 @@ class Settings_Controls {
|
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
$defaults = [
|
21 |
-
'type'
|
22 |
Â
'placeholder' => '',
|
23 |
-
'classes'
|
24 |
-
'std'
|
25 |
-
'desc'
|
26 |
Â
];
|
27 |
Â
|
28 |
Â
$field = array_merge( $defaults, $field );
|
@@ -46,15 +46,15 @@ class Settings_Controls {
|
|
46 |
Â
$field['classes'] = [ 'regular-text' ];
|
47 |
Â
}
|
48 |
Â
?>
|
49 |
-
<input type="<?php echo esc_attr( $field['type'] ); ?>" class="<?php echo esc_attr( implode( ' ', $field['classes'] ) ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" name="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo esc_attr( get_option( $field['id'], $field['std'] ) ); ?>"<?php echo ! empty( $field['placeholder'] ) ? ' placeholder="' . $field['placeholder'] . '"' : ''; ?> />
|
50 |
Â
<?php
|
51 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
52 |
-
echo $field['sub_desc'];
|
53 |
Â
endif;
|
54 |
Â
?>
|
55 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
56 |
-
<p class="description"><?php echo $field['desc']; ?></p>
|
57 |
-
|
58 |
Â
endif;
|
59 |
Â
}
|
60 |
Â
|
@@ -66,16 +66,16 @@ class Settings_Controls {
|
|
66 |
Â
private static function _checkbox( array $field ) {
|
67 |
Â
?>
|
68 |
Â
<label>
|
69 |
-
<input type="<?php echo esc_attr( $field['type'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" name="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo $field['value']; ?>"<?php checked( $field['value'], get_option( $field['id'], $field['std'] ) ); ?> />
|
70 |
Â
<?php
|
71 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
72 |
-
echo $field['sub_desc'];
|
73 |
Â
endif;
|
74 |
Â
?>
|
75 |
Â
</label>
|
76 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
77 |
-
<p class="description"><?php echo $field['desc']; ?></p>
|
78 |
-
|
79 |
Â
endif;
|
80 |
Â
}
|
81 |
Â
|
@@ -91,15 +91,15 @@ class Settings_Controls {
|
|
91 |
Â
}
|
92 |
Â
|
93 |
Â
foreach ( $field['options'] as $option_key => $option_value ) :
|
94 |
-
|
95 |
Â
<label>
|
96 |
-
<input type="checkbox" name="<?php echo $field['id']; ?>[]" value="<?php echo $option_key; ?>"<?php checked( in_array( $option_key, $old_value ), true ); ?> />
|
97 |
-
<?php echo $option_value; ?>
|
98 |
Â
</label><br />
|
99 |
Â
<?php endforeach; ?>
|
100 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
101 |
-
<p class="description"><?php echo $field['desc']; ?></p>
|
102 |
-
|
103 |
Â
endif;
|
104 |
Â
}
|
105 |
Â
|
@@ -113,17 +113,17 @@ class Settings_Controls {
|
|
113 |
Â
?>
|
114 |
Â
<select name="<?php echo esc_attr( $field['id'] ); ?>">
|
115 |
Â
<?php if ( ! empty( $field['show_select'] ) ) : ?>
|
116 |
-
<option value="">— <?php
|
117 |
Â
<?php endif; ?>
|
118 |
Â
|
119 |
Â
<?php foreach ( $field['options'] as $value => $label ) : ?>
|
120 |
-
<option value="<?php echo esc_attr( $value ); ?>"<?php selected( $value, $old_value ); ?>><?php echo $label; ?></option>
|
121 |
Â
<?php endforeach; ?>
|
122 |
Â
</select>
|
123 |
Â
|
124 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
125 |
-
<p class="description"><?php echo $field['desc']; ?></p>
|
126 |
-
|
127 |
Â
endif;
|
128 |
Â
}
|
129 |
Â
|
@@ -136,16 +136,17 @@ class Settings_Controls {
|
|
136 |
Â
$defaults = [
|
137 |
Â
'exclude' => [],
|
138 |
Â
];
|
139 |
-
$field
|
140 |
Â
|
141 |
Â
$post_types_objects = get_post_types(
|
142 |
Â
[
|
143 |
Â
'public' => true,
|
144 |
-
],
|
Â
|
|
145 |
Â
);
|
146 |
-
$field['options']
|
147 |
Â
foreach ( $post_types_objects as $cpt_slug => $post_type ) {
|
148 |
-
if ( in_array( $cpt_slug, $field['exclude'] ) ) {
|
149 |
Â
continue;
|
150 |
Â
}
|
151 |
Â
|
@@ -164,11 +165,11 @@ class Settings_Controls {
|
|
164 |
Â
$defaults = [
|
165 |
Â
'exclude' => [],
|
166 |
Â
];
|
167 |
-
$field
|
168 |
Â
|
169 |
Â
$field['options'] = [];
|
170 |
Â
foreach ( get_editable_roles() as $role_slug => $role_data ) {
|
171 |
-
if ( in_array( $role_slug, $field['exclude'] ) ) {
|
172 |
Â
continue;
|
173 |
Â
}
|
174 |
Â
|
@@ -188,16 +189,16 @@ class Settings_Controls {
|
|
188 |
Â
return;
|
189 |
Â
}
|
190 |
Â
?>
|
191 |
-
<div id="<?php echo $field['id']; ?>">
|
192 |
Â
|
193 |
-
<div><?php echo $field['html']; ?></div>
|
194 |
Â
<?php
|
195 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
196 |
-
echo $field['sub_desc'];
|
197 |
Â
endif;
|
198 |
Â
?>
|
199 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
200 |
-
<p class="description"><?php echo $field['desc']; ?></p>
|
201 |
Â
<?php endif; ?>
|
202 |
Â
</div>
|
203 |
Â
<?php
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
$defaults = [
|
21 |
+
'type' => '',
|
22 |
Â
'placeholder' => '',
|
23 |
+
'classes' => [],
|
24 |
+
'std' => '',
|
25 |
+
'desc' => '',
|
26 |
Â
];
|
27 |
Â
|
28 |
Â
$field = array_merge( $defaults, $field );
|
46 |
Â
$field['classes'] = [ 'regular-text' ];
|
47 |
Â
}
|
48 |
Â
?>
|
49 |
+
<input type="<?php echo esc_attr( $field['type'] ); ?>" class="<?php echo esc_attr( implode( ' ', $field['classes'] ) ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" name="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo esc_attr( get_option( $field['id'], $field['std'] ) ); ?>"<?php echo esc_attr( ! empty( $field['placeholder'] ) ) ? ' placeholder="' . esc_attr( $field['placeholder'] ) . '"' : ''; ?> />
|
50 |
Â
<?php
|
51 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
52 |
+
echo esc_attr( $field['sub_desc'] );
|
53 |
Â
endif;
|
54 |
Â
?>
|
55 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
56 |
+
<p class="description"><?php echo esc_attr( $field['desc'] ); ?></p>
|
57 |
+
<?php
|
58 |
Â
endif;
|
59 |
Â
}
|
60 |
Â
|
66 |
Â
private static function _checkbox( array $field ) {
|
67 |
Â
?>
|
68 |
Â
<label>
|
69 |
+
<input type="<?php echo esc_attr( $field['type'] ); ?>" id="<?php echo esc_attr( $field['id'] ); ?>" name="<?php echo esc_attr( $field['id'] ); ?>" value="<?php echo esc_attr( $field['value'] ); ?>"<?php checked( $field['value'], get_option( $field['id'], $field['std'] ) ); ?> />
|
70 |
Â
<?php
|
71 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
72 |
+
echo esc_attr( $field['sub_desc'] );
|
73 |
Â
endif;
|
74 |
Â
?>
|
75 |
Â
</label>
|
76 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
77 |
+
<p class="description"><?php echo esc_attr( $field['desc'] ); ?></p>
|
78 |
+
<?php
|
79 |
Â
endif;
|
80 |
Â
}
|
81 |
Â
|
91 |
Â
}
|
92 |
Â
|
93 |
Â
foreach ( $field['options'] as $option_key => $option_value ) :
|
94 |
+
?>
|
95 |
Â
<label>
|
96 |
+
<input type="checkbox" name="<?php echo esc_attr( $field['id'] ); ?>[]" value="<?php echo esc_attr( $option_key ); ?>"<?php checked( in_array( $option_key, $old_value, true ), true ); ?> />
|
97 |
+
<?php echo esc_attr( $option_value ); ?>
|
98 |
Â
</label><br />
|
99 |
Â
<?php endforeach; ?>
|
100 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
101 |
+
<p class="description"><?php echo esc_attr( $field['desc'] ); ?></p>
|
102 |
+
<?php
|
103 |
Â
endif;
|
104 |
Â
}
|
105 |
Â
|
113 |
Â
?>
|
114 |
Â
<select name="<?php echo esc_attr( $field['id'] ); ?>">
|
115 |
Â
<?php if ( ! empty( $field['show_select'] ) ) : ?>
|
116 |
+
<option value="">— <?php echo esc_html__( 'Select', 'wts-eae' ); ?> —</option>
|
117 |
Â
<?php endif; ?>
|
118 |
Â
|
119 |
Â
<?php foreach ( $field['options'] as $value => $label ) : ?>
|
120 |
+
<option value="<?php echo esc_attr( $value ); ?>"<?php selected( $value, $old_value ); ?>><?php echo esc_attr( $label ); ?></option>
|
121 |
Â
<?php endforeach; ?>
|
122 |
Â
</select>
|
123 |
Â
|
124 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
125 |
+
<p class="description"><?php echo esc_attr( $field['desc'] ); ?></p>
|
126 |
+
<?php
|
127 |
Â
endif;
|
128 |
Â
}
|
129 |
Â
|
136 |
Â
$defaults = [
|
137 |
Â
'exclude' => [],
|
138 |
Â
];
|
139 |
+
$field = array_merge( $defaults, $field );
|
140 |
Â
|
141 |
Â
$post_types_objects = get_post_types(
|
142 |
Â
[
|
143 |
Â
'public' => true,
|
144 |
+
],
|
145 |
+
'objects'
|
146 |
Â
);
|
147 |
+
$field['options'] = [];
|
148 |
Â
foreach ( $post_types_objects as $cpt_slug => $post_type ) {
|
149 |
+
if ( in_array( $cpt_slug, $field['exclude'], true ) ) {
|
150 |
Â
continue;
|
151 |
Â
}
|
152 |
Â
|
165 |
Â
$defaults = [
|
166 |
Â
'exclude' => [],
|
167 |
Â
];
|
168 |
+
$field = array_merge( $defaults, $field );
|
169 |
Â
|
170 |
Â
$field['options'] = [];
|
171 |
Â
foreach ( get_editable_roles() as $role_slug => $role_data ) {
|
172 |
+
if ( in_array( $role_slug, $field['exclude'], true ) ) {
|
173 |
Â
continue;
|
174 |
Â
}
|
175 |
Â
|
189 |
Â
return;
|
190 |
Â
}
|
191 |
Â
?>
|
192 |
+
<div id="<?php echo esc_attr( $field['id'] ); ?>">
|
193 |
Â
|
194 |
+
<div><?php echo esc_attr( $field['html'] ); ?></div>
|
195 |
Â
<?php
|
196 |
Â
if ( ! empty( $field['sub_desc'] ) ) :
|
197 |
+
echo esc_attr( $field['sub_desc'] );
|
198 |
Â
endif;
|
199 |
Â
?>
|
200 |
Â
<?php if ( ! empty( $field['desc'] ) ) : ?>
|
201 |
+
<p class="description"><?php echo esc_attr( $field['desc'] ); ?></p>
|
202 |
Â
<?php endif; ?>
|
203 |
Â
</div>
|
204 |
Â
<?php
|
inc/admin/settings-page.php
CHANGED
@@ -29,7 +29,7 @@ abstract class Settings_Page {
|
|
29 |
Â
* @since 1.5.0
|
30 |
Â
* @access public
|
31 |
Â
*/
|
32 |
-
public
|
33 |
Â
return admin_url( 'admin.php?page=' . static::PAGE_ID );
|
34 |
Â
}
|
35 |
Â
|
@@ -45,7 +45,7 @@ abstract class Settings_Page {
|
|
45 |
Â
* @since 1.5.0
|
46 |
Â
* @access public
|
47 |
Â
*/
|
48 |
-
public
|
49 |
Â
$this->ensure_tabs();
|
50 |
Â
|
51 |
Â
return $this->tabs;
|
@@ -55,7 +55,7 @@ abstract class Settings_Page {
|
|
55 |
Â
* @since 1.5.0
|
56 |
Â
* @access public
|
57 |
Â
*/
|
58 |
-
public
|
59 |
Â
$this->ensure_tabs();
|
60 |
Â
|
61 |
Â
if ( isset( $this->tabs[ $tab_id ] ) ) {
|
@@ -74,7 +74,7 @@ abstract class Settings_Page {
|
|
74 |
Â
* @since 1.5.0
|
75 |
Â
* @access public
|
76 |
Â
*/
|
77 |
-
public
|
78 |
Â
$this->ensure_tabs();
|
79 |
Â
|
80 |
Â
if ( ! isset( $this->tabs[ $tab_id ] ) ) {
|
@@ -98,7 +98,7 @@ abstract class Settings_Page {
|
|
98 |
Â
* @since 1.5.0
|
99 |
Â
* @access public
|
100 |
Â
*/
|
101 |
-
public
|
102 |
Â
$this->ensure_tabs();
|
103 |
Â
|
104 |
Â
if ( ! isset( $this->tabs[ $tab_id ] ) ) {
|
@@ -123,7 +123,7 @@ abstract class Settings_Page {
|
|
123 |
Â
* @since 1.5.0
|
124 |
Â
* @access public
|
125 |
Â
*/
|
126 |
-
public
|
127 |
Â
foreach ( $fields as $field_id => $field ) {
|
128 |
Â
$this->add_field( $tab_id, $section_id, $field_id, $field );
|
129 |
Â
}
|
@@ -133,7 +133,7 @@ abstract class Settings_Page {
|
|
133 |
Â
* @since 1.5.0
|
134 |
Â
* @access public
|
135 |
Â
*/
|
136 |
-
public
|
137 |
Â
$controls_class_name = __NAMESPACE__ . '\Settings_Controls';
|
138 |
Â
|
139 |
Â
$tabs = $this->get_tabs();
|
@@ -183,77 +183,6 @@ abstract class Settings_Page {
|
|
183 |
Â
}
|
184 |
Â
}
|
185 |
Â
|
186 |
-
/**
|
187 |
-
* @since 1.5.0
|
188 |
-
* @access public
|
189 |
-
*/
|
190 |
-
public function display_settings_page() {
|
191 |
-
$tabs = $this->get_tabs();
|
192 |
-
?>
|
193 |
-
<div class="wrap">
|
194 |
-
<h1><?php echo $this->get_page_title(); ?></h1>
|
195 |
-
<div id="elementor-settings-tabs-wrapper" class="nav-tab-wrapper">
|
196 |
-
<?php
|
197 |
-
foreach ( $tabs as $tab_id => $tab ) {
|
198 |
-
if ( empty( $tab['sections'] ) ) {
|
199 |
-
continue;
|
200 |
-
}
|
201 |
-
|
202 |
-
$active_class = '';
|
203 |
-
|
204 |
-
if ( 'general' === $tab_id ) {
|
205 |
-
$active_class = ' nav-tab-active';
|
206 |
-
}
|
207 |
-
|
208 |
-
echo "<a id='elementor-settings-tab-$tab_id' class='nav-tab$active_class' href='#tab-$tab_id'>$tab[label]</a>";
|
209 |
-
}
|
210 |
-
?>
|
211 |
-
</div>
|
212 |
-
<form id="elementor-settings-form" method="post" action="options.php">
|
213 |
-
<?php
|
214 |
-
settings_fields( static::PAGE_ID );
|
215 |
-
|
216 |
-
foreach ( $tabs as $tab_id => $tab ) {
|
217 |
-
if ( empty( $tab['sections'] ) ) {
|
218 |
-
continue;
|
219 |
-
}
|
220 |
-
|
221 |
-
$active_class = '';
|
222 |
-
|
223 |
-
if ( 'general' === $tab_id ) {
|
224 |
-
$active_class = ' elementor-active';
|
225 |
-
}
|
226 |
-
|
227 |
-
echo "<div id='tab-$tab_id' class='elementor-settings-form-page$active_class'>";
|
228 |
-
|
229 |
-
foreach ( $tab['sections'] as $section_id => $section ) {
|
230 |
-
$full_section_id = 'elementor_' . $section_id . '_section';
|
231 |
-
|
232 |
-
if ( ! empty( $section['label'] ) ) {
|
233 |
-
echo "<h2>$section[label]</h2>";
|
234 |
-
}
|
235 |
-
|
236 |
-
if ( ! empty( $section['callback'] ) ) {
|
237 |
-
$section['callback']();
|
238 |
-
}
|
239 |
-
|
240 |
-
echo '<table class="form-table">';
|
241 |
-
|
242 |
-
do_settings_fields( static::PAGE_ID, $full_section_id );
|
243 |
-
|
244 |
-
echo '</table>';
|
245 |
-
}
|
246 |
-
|
247 |
-
echo '</div>';
|
248 |
-
}
|
249 |
-
|
250 |
-
submit_button();
|
251 |
-
?>
|
252 |
-
</form>
|
253 |
-
</div><!-- /.wrap -->
|
254 |
-
<?php
|
255 |
-
}
|
256 |
-
|
257 |
Â
/**
|
258 |
Â
* @since 1.5.0
|
259 |
Â
* @access private
|
29 |
Â
* @since 1.5.0
|
30 |
Â
* @access public
|
31 |
Â
*/
|
32 |
+
final public static function get_url() {
|
33 |
Â
return admin_url( 'admin.php?page=' . static::PAGE_ID );
|
34 |
Â
}
|
35 |
Â
|
45 |
Â
* @since 1.5.0
|
46 |
Â
* @access public
|
47 |
Â
*/
|
48 |
+
final public function get_tabs() {
|
49 |
Â
$this->ensure_tabs();
|
50 |
Â
|
51 |
Â
return $this->tabs;
|
55 |
Â
* @since 1.5.0
|
56 |
Â
* @access public
|
57 |
Â
*/
|
58 |
+
final public function add_tab( $tab_id, array $tab_args = [] ) {
|
59 |
Â
$this->ensure_tabs();
|
60 |
Â
|
61 |
Â
if ( isset( $this->tabs[ $tab_id ] ) ) {
|
74 |
Â
* @since 1.5.0
|
75 |
Â
* @access public
|
76 |
Â
*/
|
77 |
+
final public function add_section( $tab_id, $section_id, array $section_args = [] ) {
|
78 |
Â
$this->ensure_tabs();
|
79 |
Â
|
80 |
Â
if ( ! isset( $this->tabs[ $tab_id ] ) ) {
|
98 |
Â
* @since 1.5.0
|
99 |
Â
* @access public
|
100 |
Â
*/
|
101 |
+
final public function add_field( $tab_id, $section_id, $field_id, array $field_args ) {
|
102 |
Â
$this->ensure_tabs();
|
103 |
Â
|
104 |
Â
if ( ! isset( $this->tabs[ $tab_id ] ) ) {
|
123 |
Â
* @since 1.5.0
|
124 |
Â
* @access public
|
125 |
Â
*/
|
126 |
+
final public function add_fields( $tab_id, $section_id, array $fields ) {
|
127 |
Â
foreach ( $fields as $field_id => $field ) {
|
128 |
Â
$this->add_field( $tab_id, $section_id, $field_id, $field );
|
129 |
Â
}
|
133 |
Â
* @since 1.5.0
|
134 |
Â
* @access public
|
135 |
Â
*/
|
136 |
+
final public function register_settings_fields() {
|
137 |
Â
$controls_class_name = __NAMESPACE__ . '\Settings_Controls';
|
138 |
Â
|
139 |
Â
$tabs = $this->get_tabs();
|
183 |
Â
}
|
184 |
Â
}
|
185 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
186 |
Â
/**
|
187 |
Â
* @since 1.5.0
|
188 |
Â
* @access private
|
inc/bootstrap.php
CHANGED
@@ -6,82 +6,68 @@ use Elementor;
|
|
6 |
Â
use WTS_EAE\Classes\Helper;
|
7 |
Â
use const EAE_PATH;
|
8 |
Â
|
9 |
-
class Plugin
|
10 |
-
|
11 |
Â
|
12 |
Â
public static $instance;
|
13 |
Â
|
14 |
Â
public $module_manager;
|
15 |
Â
|
16 |
-
public static $helper
|
17 |
Â
private static $show_notice = true;
|
18 |
Â
|
19 |
-
public static function get_instance()
|
20 |
-
|
21 |
-
|
22 |
-
self::$instance = new self;
|
23 |
Â
}
|
24 |
Â
|
25 |
Â
return self::$instance;
|
26 |
Â
}
|
27 |
Â
|
28 |
-
public function __construct()
|
29 |
-
{
|
30 |
-
//die('---');
|
31 |
Â
$this->register_autoloader();
|
32 |
Â
self::$helper = new Helper();
|
33 |
Â
|
34 |
-
add_action('elementor/init', [$this, 'eae_elementor_init'], -10);
|
35 |
-
add_action('elementor/elements/categories_registered', [$this, 'register_category']);
|
36 |
-
add_action('wp_enqueue_scripts', [$this, 'eae_scripts']);
|
37 |
-
add_action('elementor/editor/wp_head', [$this, 'eae_editor_enqueue_scripts']);
|
38 |
-
add_action('elementor/controls/controls_registered', [$this, 'register_controls']);
|
39 |
-
add_action('plugins_loaded', [$this, '_plugins_loaded']);
|
40 |
-
|
41 |
-
add_action('admin_enqueue_scripts', [$this, 'eae_admin_scripts']);
|
42 |
Â
|
43 |
Â
$this->_includes();
|
44 |
Â
|
45 |
-
|
46 |
-
|
47 |
Â
$this->module_manager = new Managers\Module_Manager();
|
48 |
Â
|
49 |
Â
$wpv_notice = [];
|
50 |
Â
|
51 |
-
$wpv_notice = apply_filters('eae/admin_notices', $wpv_notice);
|
52 |
-
|
53 |
-
if($wpv_notice){
|
54 |
-
add_action('admin_init',[$this, $wpv_notice[0] ],10);
|
55 |
-
}
|
56 |
-
//$this->eae_review();
|
57 |
-
//$this->fv_download_box();
|
58 |
-
}
|
59 |
Â
|
60 |
-
|
61 |
-
|
Â
|
|
62 |
Â
}
|
63 |
Â
|
64 |
-
public function
|
65 |
-
{
|
66 |
-
|
67 |
Â
|
68 |
-
|
Â
|
|
69 |
Â
/* TO DO */
|
70 |
-
add_action('admin_notices',
|
71 |
Â
|
72 |
Â
return;
|
73 |
Â
}
|
74 |
Â
$elementor_version_required = '3.0';
|
75 |
Â
|
76 |
-
|
77 |
Â
// Check for required Elementor version
|
78 |
-
if (!version_compare(ELEMENTOR_VERSION, $elementor_version_required, '>=')) {
|
79 |
-
add_action('admin_notices',
|
80 |
Â
return;
|
81 |
Â
}
|
82 |
Â
|
83 |
Â
// WPML Compatibility
|
84 |
-
if (is_plugin_active('sitepress-multilingual-cms/sitepress.php') && is_plugin_active('wpml-string-translation/plugin.php')) {
|
85 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-animated-text.php';
|
86 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-gmap.php';
|
87 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-filterable-gallery.php';
|
@@ -93,384 +79,313 @@ class Plugin
|
|
93 |
Â
}
|
94 |
Â
}
|
95 |
Â
|
96 |
-
public function register_category($elements)
|
97 |
-
{
|
98 |
Â
|
99 |
Â
\Elementor\Plugin::instance()->elements_manager->add_category(
|
100 |
Â
'wts-eae',
|
101 |
Â
[
|
102 |
Â
'title' => 'Elementor Addon Elements',
|
103 |
-
'icon' => 'font'
|
104 |
Â
],
|
105 |
Â
1
|
106 |
Â
);
|
107 |
-
|
108 |
-
//require_once EAE_PATH.'modules/animated-gradient.php';
|
109 |
-
//require_once EAE_PATH.'modules/particles.php';
|
110 |
-
//require_once EAE_PATH.'modules/bg-slider.php';
|
111 |
Â
}
|
112 |
Â
|
113 |
-
public function _includes()
|
114 |
-
|
115 |
-
if (is_admin()) {
|
116 |
Â
require_once EAE_PATH . 'inc/admin/settings-page.php';
|
117 |
Â
require_once EAE_PATH . 'inc/admin/controls.php';
|
118 |
Â
require_once EAE_PATH . 'inc/admin/Settings.php';
|
119 |
Â
require_once EAE_PATH . 'inc/admin/admin-notice.php';
|
120 |
-
|
121 |
Â
$admin_notice = new Admin_Notice();
|
122 |
Â
}
|
123 |
Â
}
|
124 |
-
public function register_controls(Elementor\Controls_Manager $controls_manager)
|
125 |
-
{
|
126 |
Â
|
127 |
Â
require_once EAE_PATH . 'controls/group/icon.php';
|
128 |
Â
require_once EAE_PATH . 'controls/group/icon_timeline.php';
|
129 |
Â
require_once EAE_PATH . 'controls/group/grid-control.php';
|
130 |
Â
|
131 |
-
|
132 |
-
|
133 |
-
$controls_manager->add_group_control('eae-icon', new \WTS_EAE\Controls\Group\Group_Control_Icon());
|
134 |
Â
|
135 |
-
$controls_manager->add_group_control('eae-icon-timeline', new \WTS_EAE\Controls\Group\Group_Control_Icon_Timeline());
|
136 |
Â
|
137 |
-
$controls_manager->add_group_control('eae-grid', new \WTS_EAE\Controls\Group\Group_Control_Grid());
|
138 |
Â
}
|
139 |
-
function eae_admin_scripts()
|
140 |
-
{
|
141 |
Â
$screen = get_current_screen();
|
142 |
Â
|
143 |
-
wp_enqueue_style('eae-admin-css', EAE_URL . 'assets/css/eae-admin.css');
|
144 |
Â
|
145 |
-
if ($screen->id
|
146 |
-
add_action('admin_print_scripts', [$this, 'eae_disable_admin_notices']);
|
147 |
Â
|
148 |
-
wp_enqueue_script('eae-admin', EAE_URL . 'assets/js/admin.js', ['wp-components'], '1.0', true);
|
149 |
Â
|
150 |
Â
$modules = self::$helper->get_eae_modules();
|
151 |
Â
|
152 |
-
wp_localize_script(
|
153 |
-
'
|
154 |
-
'
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
161 |
Â
}
|
162 |
Â
}
|
163 |
Â
|
164 |
-
function eae_disable_admin_notices()
|
165 |
-
{
|
166 |
Â
global $wp_filter;
|
167 |
-
if (is_user_admin()) {
|
168 |
-
if (isset($wp_filter['user_admin_notices'])) {
|
169 |
-
unset($wp_filter['user_admin_notices']);
|
170 |
Â
}
|
171 |
-
} elseif (isset($wp_filter['admin_notices'])) {
|
172 |
-
unset($wp_filter['admin_notices']);
|
173 |
Â
}
|
174 |
-
if (isset($wp_filter['all_admin_notices'])) {
|
175 |
-
unset($wp_filter['all_admin_notices']);
|
176 |
Â
}
|
177 |
Â
}
|
178 |
Â
|
179 |
-
function eae_scripts()
|
180 |
-
|
181 |
-
wp_enqueue_style('eae-css', EAE_URL . 'assets/css/eae' . EAE_SCRIPT_SUFFIX . '.css');
|
182 |
Â
|
183 |
Â
/* chart js file */
|
184 |
-
wp_register_script('eae-chart', EAE_URL . 'assets/js/Chart.bundle' . EAE_SCRIPT_SUFFIX . '.js');
|
185 |
-
wp_register_script('eae-data-table', EAE_URL. 'assets/lib/tablesorter/tablesorter.js');
|
186 |
-
wp_register_script('eae-lottie', EAE_URL. 'assets/lib/lottie/lottie'. EAE_SCRIPT_SUFFIX. '.js');
|
187 |
-
|
188 |
Â
|
189 |
Â
/* animated text css and js file*/
|
Â
|
|
190 |
Â
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
203 |
Â
}
|
204 |
-
wp_register_script('eae-particles', EAE_URL . 'assets/js/particles' . EAE_SCRIPT_SUFFIX . '.js',
|
205 |
-
|
206 |
-
wp_register_style('vegas-css', EAE_URL . 'assets/lib/vegas/vegas' . EAE_SCRIPT_SUFFIX . '.css');
|
207 |
-
wp_register_script('vegas', EAE_URL . 'assets/lib/vegas/vegas' . EAE_SCRIPT_SUFFIX . '.js',
|
208 |
-
|
209 |
-
wp_register_script('wts-magnific', EAE_URL . 'assets/lib/magnific' . EAE_SCRIPT_SUFFIX . '.js',
|
210 |
-
wp_register_script('wts-isotope', EAE_URL . 'assets/lib/isotope/isotope.pkgd' . EAE_SCRIPT_SUFFIX . '.js',
|
211 |
-
wp_register_script('wts-tilt', EAE_URL . 'assets/lib/tilt/tilt.jquery' . EAE_SCRIPT_SUFFIX . '.js',
|
212 |
-
if (is_plugin_active('elementor/elementor.php')) {
|
213 |
Â
wp_register_style(
|
214 |
Â
'font-awesome-5-all',
|
215 |
-
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/all.min.css'
|
Â
|
|
Â
|
|
216 |
Â
);
|
217 |
Â
wp_register_style(
|
218 |
Â
'font-awesome-4-shim',
|
219 |
-
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/v4-shims.min.css'
|
Â
|
|
Â
|
|
220 |
Â
);
|
221 |
Â
wp_register_script(
|
222 |
Â
'font-awesome-4-shim',
|
223 |
-
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/js/v4-shims.min.js'
|
Â
|
|
Â
|
|
Â
|
|
224 |
Â
);
|
225 |
Â
}
|
226 |
-
$map_key = get_option('wts_eae_gmap_key');
|
227 |
-
if (isset($map_key) && $map_key
|
228 |
-
wp_register_script('eae-gmap', 'https://maps.googleapis.com/maps/api/js?key=' . $map_key);
|
229 |
Â
}
|
230 |
Â
|
231 |
-
wp_register_script('pinit', '//assets.pinterest.com/js/pinit.js',
|
232 |
Â
|
Â
|
|
233 |
Â
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
);
|
239 |
-
wp_localize_script('eae-main', 'eae_editor', $localize_data);
|
240 |
Â
}
|
241 |
Â
|
242 |
-
function eae_editor_enqueue_scripts()
|
243 |
-
|
244 |
-
|
245 |
-
wp_enqueue_style('eae-icons', EAE_URL . 'assets/lib/eae-icons/style.css');
|
246 |
Â
}
|
247 |
Â
|
248 |
-
private function register_autoloader()
|
249 |
-
|
250 |
-
spl_autoload_register([__CLASS__, 'autoload']);
|
251 |
Â
}
|
252 |
Â
|
253 |
-
function autoload($class)
|
254 |
-
|
255 |
-
|
256 |
-
/*require_once EAE_PATH.'inc/helper.php';*/
|
257 |
-
if (0 !== strpos($class, __NAMESPACE__)) {
|
258 |
Â
return;
|
259 |
Â
}
|
260 |
Â
|
261 |
-
|
262 |
-
if (!class_exists($class)) {
|
263 |
Â
|
264 |
Â
$filename = strtolower(
|
265 |
Â
preg_replace(
|
266 |
-
['/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/'],
|
267 |
-
['', '$1-$2', '-', DIRECTORY_SEPARATOR],
|
268 |
Â
$class
|
269 |
Â
)
|
270 |
Â
);
|
271 |
Â
|
272 |
Â
$filename = EAE_PATH . $filename . '.php';
|
273 |
Â
|
274 |
-
if (is_readable($filename)) {
|
275 |
-
include
|
276 |
Â
}
|
277 |
Â
}
|
278 |
Â
}
|
279 |
-
function elementor_requried_version_fail()
|
280 |
-
|
281 |
-
if (!current_user_can('update_plugins')) {
|
282 |
Â
return;
|
283 |
Â
}
|
284 |
Â
$elementor_version_required = '3.0.0';
|
285 |
-
$file_path
|
286 |
Â
|
287 |
-
$upgrade_link = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=') . $file_path, 'upgrade-plugin_' . $file_path);
|
288 |
-
$message
|
289 |
-
$message
|
290 |
Â
|
291 |
-
|
Â
|
|
292 |
Â
}
|
293 |
Â
|
294 |
-
public function wts_eae_pro_fail_load()
|
295 |
-
{
|
296 |
-
|
297 |
Â
$plugin = 'elementor/elementor.php';
|
298 |
Â
|
299 |
-
if (_is_elementor_installed()) {
|
300 |
-
if (!current_user_can('activate_plugins')) {
|
301 |
Â
return;
|
302 |
Â
}
|
303 |
Â
|
304 |
-
$message
|
305 |
-
$action_url = wp_nonce_url('plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin);
|
306 |
-
$button_label = __('Activate Elementor', 'wts-eae');
|
307 |
Â
} else {
|
308 |
-
if (!current_user_can('install_plugins')) {
|
309 |
Â
return;
|
310 |
Â
}
|
311 |
-
$message
|
312 |
-
$action_url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=elementor'), 'install-plugin_elementor');
|
313 |
-
$button_label = __('Install Elementor', 'wts-eae');
|
314 |
Â
}
|
315 |
Â
|
316 |
Â
$button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
|
317 |
Â
|
318 |
-
|
Â
|
|
319 |
Â
}
|
320 |
-
function dateDiff($start, $end)
|
321 |
-
|
322 |
-
$
|
323 |
-
$end_time
|
324 |
-
$datediff
|
325 |
-
return round($datediff / 86400);
|
326 |
Â
}
|
327 |
-
function eae_review()
|
328 |
-
|
329 |
-
if (isset($_GET['remind_later'])) {
|
330 |
-
//add_action('admin_notices', [$this, 'eae_remind_later']);
|
331 |
Â
$this->eae_remind_later();
|
332 |
-
}
|
333 |
-
//add_action('admin_notices', [$this, 'eae_review_done']);
|
334 |
Â
$this->eae_review_done();
|
335 |
Â
} else {
|
336 |
-
add_action('admin_notices', [$this, 'eae_review_box']);
|
337 |
-
}
|
338 |
-
|
339 |
-
/*
|
340 |
-
$check_review = get_option('eae_review');
|
341 |
-
|
342 |
-
if (!$check_review) {
|
343 |
-
$review = [
|
344 |
-
'installed' => current_time('yy/m/d'),
|
345 |
-
'status' => '',
|
346 |
-
];
|
347 |
-
|
348 |
-
update_option('eae_review', $review);
|
349 |
-
}
|
350 |
-
|
351 |
-
$check_review = get_option('eae_review');
|
352 |
-
|
353 |
-
$start = $check_review['installed'];
|
354 |
-
$end = current_time('yy/m/d');
|
355 |
-
|
356 |
-
$days = $this->dateDiff($start, $end);
|
357 |
-
|
358 |
-
$usage = [];
|
359 |
-
$usage = get_option('elementor_controls_usage');
|
360 |
-
|
361 |
-
if ($usage) {
|
362 |
-
if (array_key_exists('wp-page', $usage)) {
|
363 |
-
$usage = $usage['wp-page'];
|
364 |
-
} else {
|
365 |
-
$usage = [];
|
366 |
-
}
|
367 |
-
} else {
|
368 |
-
$usage = [];
|
369 |
-
}
|
370 |
-
|
371 |
-
$eae_widget = ['eae-info-circle', 'eae-dual-button', 'wts-flipbox', 'wts-splittext', 'wts-modal-popup', 'eae-timeline', 'wts-AnimatedText', 'wts-ab-image', 'wts-gmap', 'eae-progress-bar', 'wts-textseparator', 'wts-postlist', 'eae-content-switcher', 'eae-filterableGallery', 'wts-shape-separator', 'wts-twitter', 'wts-pricetable'];
|
372 |
-
$widget_count = 0;
|
373 |
-
foreach ($eae_widget as $key => $value) {
|
374 |
-
if (array_key_exists($value, $usage)) {
|
375 |
-
$widget_count = $widget_count + $usage[$value]['count'];
|
376 |
-
}
|
377 |
-
}
|
378 |
-
|
379 |
-
if ($days < 11 || $widget_count < 5) {
|
380 |
-
return;
|
381 |
Â
}
|
382 |
-
if ($check_review['status'] === '' || $check_review['status'] === 'remind_later') {
|
383 |
-
*/
|
384 |
-
//add_action('admin_notices', [$this, 'eae_review_box'], 10);
|
385 |
-
//}
|
386 |
Â
}
|
387 |
Â
|
388 |
-
function eae_review_box($review)
|
389 |
-
|
390 |
-
/*$review = get_option('eae_review');
|
391 |
-
|
392 |
-
$remind_later = get_transient('eae_remind_later');
|
393 |
-
$status = $review['status'];
|
394 |
-
|
395 |
-
if ($status !== 'done') {
|
396 |
-
if ($status == '' && $remind_later == '' && self::$show_notice) {
|
397 |
-
self::$show_notice = false;*/
|
398 |
-
?>
|
399 |
Â
<div class="notice notice-success is-dismissible">
|
400 |
-
<p><?php
|
401 |
Â
<p>
|
402 |
-
|
403 |
-
|
404 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
405 |
Â
</p>
|
406 |
Â
</div>
|
407 |
Â
<?php
|
408 |
-
//}
|
409 |
-
//}
|
410 |
Â
}
|
411 |
Â
|
412 |
Â
|
413 |
-
function eae_remind_later()
|
414 |
-
|
415 |
-
set_transient('eae_remind_later', 'show again', WEEK_IN_SECONDS);
|
416 |
Â
}
|
417 |
Â
|
418 |
-
function eae_review_done()
|
419 |
-
|
420 |
-
$review
|
421 |
-
$review['
|
422 |
-
|
423 |
-
update_option('eae_review', $review, false);
|
424 |
Â
}
|
425 |
Â
|
426 |
-
function fv_download_box(){
|
427 |
-
if (isset($_GET['fv_download_later'])) {
|
428 |
-
//add_action('admin_notices', [$this, 'fv_download_later']);
|
429 |
Â
$this->fv_download_later();
|
430 |
-
|
431 |
-
//add_action('admin_notices', [$this, 'fv_not_interested']);
|
432 |
Â
$this->fv_not_interested();
|
433 |
-
|
434 |
-
|
435 |
-
}
|
436 |
-
}
|
437 |
-
function check_form_used()
|
438 |
-
{
|
439 |
-
/*if(!self::$show_notice){
|
440 |
-
return;
|
441 |
Â
}
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
$fv_downloaded = get_option('fv_downloaded');
|
447 |
-
|
448 |
-
if($fv_downloaded === 'done' || $download_later){
|
449 |
-
return;
|
450 |
-
}*/
|
451 |
-
if (!is_plugin_active('form-vibes/form-vibes.php')) {
|
452 |
-
add_action('admin_notices', [$this, 'fv_add_box'], 10);
|
453 |
Â
}
|
454 |
-
|
455 |
Â
}
|
456 |
Â
|
457 |
-
function fv_add_box()
|
458 |
-
|
459 |
-
$query = array(
|
460 |
Â
'post_type' => 'page',
|
461 |
Â
'post_status' => 'publish',
|
462 |
-
'meta_query' =>
|
463 |
-
|
464 |
Â
'key' => '_elementor_data',
|
465 |
Â
'value' => '"widgetType":"form"',
|
466 |
Â
'compare' => 'LIKE',
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
$data = new \WP_Query($query);
|
472 |
Â
|
473 |
-
if (count($data->posts) <= 0) {
|
474 |
Â
return;
|
475 |
Â
}
|
476 |
Â
self::$show_notice = false;
|
@@ -489,40 +404,41 @@ class Plugin
|
|
489 |
Â
</svg>
|
490 |
Â
</div>
|
491 |
Â
<div class="fv-add-content">
|
492 |
-
<?php
|
493 |
-
/*
|
494 |
Â
<div>
|
495 |
-
<p><?php
|
496 |
-
</div>
|
497 |
-
<div>
|
498 |
-
<?php echo '<a class="fv-download" href="'.admin_url().'plugin-install.php?s=form+vibes&tab=search&type=term">Download Now</a>' ?>
|
499 |
-
</div> */
|
500 |
-
?>
|
501 |
-
<div>
|
502 |
-
<p><?php _e('I hope you are enjoying using <b>Elementor Addon Elements</b>. Here is another useful plugin by us - <b>Form Vibes</b>. <br/>If you are using Elementor Pro Form, then you can capture form submissions within WordPress Admin.', 'wpv-fv'); ?></p>
|
503 |
Â
|
504 |
Â
<p>
|
505 |
-
<?php
|
506 |
-
|
507 |
-
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
508 |
Â
</p>
|
509 |
Â
</div>
|
510 |
Â
</div>
|
511 |
Â
</div>
|
512 |
-
<?php
|
513 |
Â
}
|
514 |
Â
|
515 |
-
function fv_download_later()
|
516 |
-
|
517 |
-
|
518 |
-
}
|
519 |
-
|
520 |
-
function fv_not_interested()
|
521 |
-
{
|
522 |
-
//set_transient( 'fv_review_done', 'Already Reviewed !', 3 * MONTH_IN_SECONDS );
|
523 |
Â
|
524 |
-
|
525 |
-
|
Â
|
|
526 |
Â
}
|
527 |
Â
|
528 |
Â
Plugin::get_instance();
|
6 |
Â
use WTS_EAE\Classes\Helper;
|
7 |
Â
use const EAE_PATH;
|
8 |
Â
|
9 |
+
class Plugin {
|
10 |
+
|
11 |
Â
|
12 |
Â
public static $instance;
|
13 |
Â
|
14 |
Â
public $module_manager;
|
15 |
Â
|
16 |
+
public static $helper = null;
|
17 |
Â
private static $show_notice = true;
|
18 |
Â
|
19 |
+
public static function get_instance() {
|
20 |
+
if ( ! isset( self::$instance ) ) {
|
21 |
+
self::$instance = new self();
|
Â
|
|
22 |
Â
}
|
23 |
Â
|
24 |
Â
return self::$instance;
|
25 |
Â
}
|
26 |
Â
|
27 |
+
public function __construct() {
|
Â
|
|
Â
|
|
28 |
Â
$this->register_autoloader();
|
29 |
Â
self::$helper = new Helper();
|
30 |
Â
|
31 |
+
add_action( 'elementor/init', [ $this, 'eae_elementor_init' ], -10 );
|
32 |
+
add_action( 'elementor/elements/categories_registered', [ $this, 'register_category' ] );
|
33 |
+
add_action( 'wp_enqueue_scripts', [ $this, 'eae_scripts' ] );
|
34 |
+
add_action( 'elementor/editor/wp_head', [ $this, 'eae_editor_enqueue_scripts' ] );
|
35 |
+
add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );
|
36 |
+
add_action( 'plugins_loaded', [ $this, '_plugins_loaded' ] );
|
37 |
+
add_action( 'admin_enqueue_scripts', [ $this, 'eae_admin_scripts' ] );
|
Â
|
|
38 |
Â
|
39 |
Â
$this->_includes();
|
40 |
Â
|
Â
|
|
Â
|
|
41 |
Â
$this->module_manager = new Managers\Module_Manager();
|
42 |
Â
|
43 |
Â
$wpv_notice = [];
|
44 |
Â
|
45 |
+
$wpv_notice = apply_filters( 'eae/admin_notices', $wpv_notice );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
46 |
Â
|
47 |
+
if ( $wpv_notice ) {
|
48 |
+
add_action( 'admin_init', [ $this, $wpv_notice[0] ], 10 );
|
49 |
+
}
|
50 |
Â
}
|
51 |
Â
|
52 |
+
public function eae_elementor_init() { }
|
Â
|
|
Â
|
|
53 |
Â
|
54 |
+
public function _plugins_loaded() {
|
55 |
+
if ( ! did_action( 'elementor/loaded' ) ) {
|
56 |
Â
/* TO DO */
|
57 |
+
add_action( 'admin_notices', [ $this, 'wts_eae_pro_fail_load' ] );
|
58 |
Â
|
59 |
Â
return;
|
60 |
Â
}
|
61 |
Â
$elementor_version_required = '3.0';
|
62 |
Â
|
Â
|
|
63 |
Â
// Check for required Elementor version
|
64 |
+
if ( ! version_compare( ELEMENTOR_VERSION, $elementor_version_required, '>=' ) ) {
|
65 |
+
add_action( 'admin_notices', [ $this, 'elementor_requried_version_fail' ] );
|
66 |
Â
return;
|
67 |
Â
}
|
68 |
Â
|
69 |
Â
// WPML Compatibility
|
70 |
+
if ( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) && is_plugin_active( 'wpml-string-translation/plugin.php' ) ) {
|
71 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-animated-text.php';
|
72 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-gmap.php';
|
73 |
Â
require_once EAE_PATH . 'wpml/modules/class-wpml-eae-filterable-gallery.php';
|
79 |
Â
}
|
80 |
Â
}
|
81 |
Â
|
82 |
+
public function register_category( $elements ) {
|
Â
|
|
83 |
Â
|
84 |
Â
\Elementor\Plugin::instance()->elements_manager->add_category(
|
85 |
Â
'wts-eae',
|
86 |
Â
[
|
87 |
Â
'title' => 'Elementor Addon Elements',
|
88 |
+
'icon' => 'font',
|
89 |
Â
],
|
90 |
Â
1
|
91 |
Â
);
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
92 |
Â
}
|
93 |
Â
|
94 |
+
public function _includes() {
|
95 |
+
if ( is_admin() ) {
|
Â
|
|
96 |
Â
require_once EAE_PATH . 'inc/admin/settings-page.php';
|
97 |
Â
require_once EAE_PATH . 'inc/admin/controls.php';
|
98 |
Â
require_once EAE_PATH . 'inc/admin/Settings.php';
|
99 |
Â
require_once EAE_PATH . 'inc/admin/admin-notice.php';
|
100 |
+
|
101 |
Â
$admin_notice = new Admin_Notice();
|
102 |
Â
}
|
103 |
Â
}
|
104 |
+
public function register_controls( Elementor\Controls_Manager $controls_manager ) {
|
Â
|
|
105 |
Â
|
106 |
Â
require_once EAE_PATH . 'controls/group/icon.php';
|
107 |
Â
require_once EAE_PATH . 'controls/group/icon_timeline.php';
|
108 |
Â
require_once EAE_PATH . 'controls/group/grid-control.php';
|
109 |
Â
|
110 |
+
$controls_manager->add_group_control( 'eae-icon', new \WTS_EAE\Controls\Group\Group_Control_Icon() );
|
Â
|
|
Â
|
|
111 |
Â
|
112 |
+
$controls_manager->add_group_control( 'eae-icon-timeline', new \WTS_EAE\Controls\Group\Group_Control_Icon_Timeline() );
|
113 |
Â
|
114 |
+
$controls_manager->add_group_control( 'eae-grid', new \WTS_EAE\Controls\Group\Group_Control_Grid() );
|
115 |
Â
}
|
116 |
+
public function eae_admin_scripts() {
|
Â
|
|
117 |
Â
$screen = get_current_screen();
|
118 |
Â
|
119 |
+
wp_enqueue_style( 'eae-admin-css', EAE_URL . 'assets/css/eae-admin.css', [], '1.0', '' );
|
120 |
Â
|
121 |
+
if ( $screen->id === 'toplevel_page_eae-settings' ) {
|
122 |
+
add_action( 'admin_print_scripts', [ $this, 'eae_disable_admin_notices' ] );
|
123 |
Â
|
124 |
+
wp_enqueue_script( 'eae-admin', EAE_URL . 'assets/js/admin.js', [ 'wp-components' ], '1.0', true );
|
125 |
Â
|
126 |
Â
$modules = self::$helper->get_eae_modules();
|
127 |
Â
|
128 |
+
wp_localize_script(
|
129 |
+
'eae-admin',
|
130 |
+
'eaeGlobalVar',
|
131 |
+
[
|
132 |
+
'site_url' => site_url(),
|
133 |
+
'eae_dir' => EAE_URL,
|
134 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
135 |
+
'map_key' => get_option( 'wts_eae_gmap_key' ),
|
136 |
+
'eae_elements' => $modules,
|
137 |
+
'eae_version' => EAE_VERSION,
|
138 |
+
'nonce' => wp_create_nonce( 'eae_ajax_nonce' ),
|
139 |
+
]
|
140 |
+
);
|
141 |
Â
}
|
142 |
Â
}
|
143 |
Â
|
144 |
+
public function eae_disable_admin_notices() {
|
Â
|
|
145 |
Â
global $wp_filter;
|
146 |
+
if ( is_user_admin() ) {
|
147 |
+
if ( isset( $wp_filter['user_admin_notices'] ) ) {
|
148 |
+
unset( $wp_filter['user_admin_notices'] );
|
149 |
Â
}
|
150 |
+
} elseif ( isset( $wp_filter['admin_notices'] ) ) {
|
151 |
+
unset( $wp_filter['admin_notices'] );
|
152 |
Â
}
|
153 |
+
if ( isset( $wp_filter['all_admin_notices'] ) ) {
|
154 |
+
unset( $wp_filter['all_admin_notices'] );
|
155 |
Â
}
|
156 |
Â
}
|
157 |
Â
|
158 |
+
public function eae_scripts() {
|
159 |
+
wp_enqueue_style( 'eae-css', EAE_URL . 'assets/css/eae' . EAE_SCRIPT_SUFFIX . '.css', [], '1.0' );
|
Â
|
|
160 |
Â
|
161 |
Â
/* chart js file */
|
162 |
+
wp_register_script( 'eae-chart', EAE_URL . 'assets/js/Chart.bundle' . EAE_SCRIPT_SUFFIX . '.js', [], '1.0', true );
|
163 |
+
wp_register_script( 'eae-data-table', EAE_URL . 'assets/lib/tablesorter/tablesorter.js', [], '1.0', true );
|
164 |
+
wp_register_script( 'eae-lottie', EAE_URL . 'assets/lib/lottie/lottie' . EAE_SCRIPT_SUFFIX . '.js', [], '1.0', true );
|
Â
|
|
165 |
Â
|
166 |
Â
/* animated text css and js file*/
|
167 |
+
wp_register_script( 'animated-main', EAE_URL . 'assets/js/animated-main' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '1.0', true );
|
168 |
Â
|
169 |
+
wp_enqueue_script(
|
170 |
+
'eae-main',
|
171 |
+
EAE_URL . 'assets/js/eae' . EAE_SCRIPT_SUFFIX . '.js',
|
172 |
+
[
|
173 |
+
'jquery',
|
174 |
+
],
|
175 |
+
'1.0',
|
176 |
+
true
|
177 |
+
);
|
178 |
+
if ( is_plugin_active( 'elementor/elementor.php' ) ) {
|
179 |
+
wp_localize_script(
|
180 |
+
'eae-main',
|
181 |
+
'eae',
|
182 |
+
[
|
183 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
184 |
+
'current_url' => base64_encode( self::$helper->get_current_url_non_paged() ),
|
185 |
+
'breakpoints' => Elementor\Core\Responsive\Responsive::get_breakpoints(),
|
186 |
+
]
|
187 |
+
);
|
188 |
Â
}
|
189 |
+
wp_register_script( 'eae-particles', EAE_URL . 'assets/js/particles' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '1.0', true );
|
190 |
+
//wp_register_script( 'eae-tsparticles', EAE_URL . 'assets/js/tsparticles.js', [ 'jquery' ], '1.0', true );
|
191 |
+
wp_register_style( 'vegas-css', EAE_URL . 'assets/lib/vegas/vegas' . EAE_SCRIPT_SUFFIX . '.css', [], '1.0' );
|
192 |
+
wp_register_script( 'vegas', EAE_URL . 'assets/lib/vegas/vegas' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '2.4.0', true );
|
193 |
+
|
194 |
+
wp_register_script( 'wts-magnific', EAE_URL . 'assets/lib/magnific' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '1.9', true );
|
195 |
+
wp_register_script( 'wts-isotope', EAE_URL . 'assets/lib/isotope/isotope.pkgd' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '2.6.2', true );
|
196 |
+
wp_register_script( 'wts-tilt', EAE_URL . 'assets/lib/tilt/tilt.jquery' . EAE_SCRIPT_SUFFIX . '.js', [ 'jquery' ], '1.0', true );
|
197 |
+
if ( is_plugin_active( 'elementor/elementor.php' ) ) {
|
198 |
Â
wp_register_style(
|
199 |
Â
'font-awesome-5-all',
|
200 |
+
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/all.min.css',
|
201 |
+
[],
|
202 |
+
'1.0'
|
203 |
Â
);
|
204 |
Â
wp_register_style(
|
205 |
Â
'font-awesome-4-shim',
|
206 |
+
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/css/v4-shims.min.css',
|
207 |
+
[],
|
208 |
+
'1.0'
|
209 |
Â
);
|
210 |
Â
wp_register_script(
|
211 |
Â
'font-awesome-4-shim',
|
212 |
+
ELEMENTOR_ASSETS_URL . 'lib/font-awesome/js/v4-shims.min.js',
|
213 |
+
[],
|
214 |
+
'1.0',
|
215 |
+
true
|
216 |
Â
);
|
217 |
Â
}
|
218 |
+
$map_key = get_option( 'wts_eae_gmap_key' );
|
219 |
+
if ( isset( $map_key ) && $map_key !== '' ) {
|
220 |
+
wp_register_script( 'eae-gmap', 'https://maps.googleapis.com/maps/api/js?key=' . $map_key, [], '1.0', true );
|
221 |
Â
}
|
222 |
Â
|
223 |
+
wp_register_script( 'pinit', '//assets.pinterest.com/js/pinit.js', [], '1.0', true );
|
224 |
Â
|
225 |
+
wp_register_script( 'eae-stickyanything', EAE_URL . 'assets/js/stickyanything.js', [ 'jquery' ], '1.1.2', true );
|
226 |
Â
|
227 |
+
$localize_data = [
|
228 |
+
'plugin_url' => EAE_URL,
|
229 |
+
];
|
230 |
+
wp_localize_script( 'eae-main', 'eae_editor', $localize_data );
|
Â
|
|
Â
|
|
231 |
Â
}
|
232 |
Â
|
233 |
+
public function eae_editor_enqueue_scripts() {
|
234 |
+
wp_enqueue_style( 'eae-icons', EAE_URL . 'assets/lib/eae-icons/style.css', [], '1.0', '' );
|
Â
|
|
Â
|
|
235 |
Â
}
|
236 |
Â
|
237 |
+
private function register_autoloader() {
|
238 |
+
spl_autoload_register( [ __CLASS__, 'autoload' ] );
|
Â
|
|
239 |
Â
}
|
240 |
Â
|
241 |
+
public function autoload( $class ) {
|
242 |
+
if ( 0 !== strpos( $class, __NAMESPACE__ ) ) {
|
Â
|
|
Â
|
|
Â
|
|
243 |
Â
return;
|
244 |
Â
}
|
245 |
Â
|
246 |
+
if ( ! class_exists( $class ) ) {
|
Â
|
|
247 |
Â
|
248 |
Â
$filename = strtolower(
|
249 |
Â
preg_replace(
|
250 |
+
[ '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
|
251 |
+
[ '', '$1-$2', '-', DIRECTORY_SEPARATOR ],
|
252 |
Â
$class
|
253 |
Â
)
|
254 |
Â
);
|
255 |
Â
|
256 |
Â
$filename = EAE_PATH . $filename . '.php';
|
257 |
Â
|
258 |
+
if ( is_readable( $filename ) ) {
|
259 |
+
include $filename;
|
260 |
Â
}
|
261 |
Â
}
|
262 |
Â
}
|
263 |
+
public function elementor_requried_version_fail() {
|
264 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
Â
|
|
265 |
Â
return;
|
266 |
Â
}
|
267 |
Â
$elementor_version_required = '3.0.0';
|
268 |
+
$file_path = 'elementor/elementor.php';
|
269 |
Â
|
270 |
+
$upgrade_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file_path, 'upgrade-plugin_' . $file_path );
|
271 |
+
$message = '<p>' . sprintf( __( 'Elementor Addon Elements requires Elementor %s Please update Elementor to continue.', 'wts-eae' ), $elementor_version_required ) . '</p>';
|
272 |
+
$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $upgrade_link, __( 'Update Elementor Now', 'wts-eae' ) ) . '</p>';
|
273 |
Â
|
274 |
+
//phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText
|
275 |
+
printf( '<div class="%1$s">%2$s</div>', 'error', esc_attr__( $message, 'wts-eae' ) );
|
276 |
Â
}
|
277 |
Â
|
278 |
+
public function wts_eae_pro_fail_load() {
|
Â
|
|
Â
|
|
279 |
Â
$plugin = 'elementor/elementor.php';
|
280 |
Â
|
281 |
+
if ( _is_elementor_installed() ) {
|
282 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
283 |
Â
return;
|
284 |
Â
}
|
285 |
Â
|
286 |
+
$message = esc_html__( 'Elementor Addon Elements is not working because you need to activate the Elementor plugin.', 'wts-eae' );
|
287 |
+
$action_url = wp_nonce_url( 'plugins.php?action=activate&plugin=' . $plugin . '&plugin_status=all&paged=1&s', 'activate-plugin_' . $plugin );
|
288 |
+
$button_label = __( 'Activate Elementor', 'wts-eae' );
|
289 |
Â
} else {
|
290 |
+
if ( ! current_user_can( 'install_plugins' ) ) {
|
291 |
Â
return;
|
292 |
Â
}
|
293 |
+
$message = esc_html__( 'Elementor Addon Elements is not working because you need to install the Elementor plugin.', 'wts-eae' );
|
294 |
+
$action_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );
|
295 |
+
$button_label = __( 'Install Elementor', 'wts-eae' );
|
296 |
Â
}
|
297 |
Â
|
298 |
Â
$button = '<p><a href="' . $action_url . '" class="button-primary">' . $button_label . '</a></p><p></p>';
|
299 |
Â
|
300 |
+
//phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
301 |
+
printf( '<div class="%1$s"><p>%2$s</p>%3$s</div>', 'notice notice-error', $message, $button );
|
302 |
Â
}
|
303 |
+
public function dateDiff( $start, $end ) {
|
304 |
+
$start_time = strtotime( $start );
|
305 |
+
$end_time = strtotime( $end );
|
306 |
+
$datediff = $end_time - $start_time;
|
307 |
+
return round( $datediff / 86400 );
|
Â
|
|
308 |
Â
}
|
309 |
+
public function eae_review() {
|
310 |
+
if ( wp_verify_nonce( isset( $_GET['remind_later'] ) ) ) {
|
Â
|
|
Â
|
|
311 |
Â
$this->eae_remind_later();
|
312 |
+
} elseif ( wp_verify_nonce( isset( $_GET['review_done'] ) ) ) {
|
Â
|
|
313 |
Â
$this->eae_review_done();
|
314 |
Â
} else {
|
315 |
+
add_action( 'admin_notices', [ $this, 'eae_review_box' ] );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
316 |
Â
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
317 |
Â
}
|
318 |
Â
|
319 |
+
public function eae_review_box( $review ) {
|
320 |
+
?>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
321 |
Â
<div class="notice notice-success is-dismissible">
|
322 |
+
<p><?php esc_attr_e( 'I hope you are enjoying using <b>Elementor Addon Elements</b>. Could you please do a BIG favor and give it a 5-star rating on WordPress.org ? <br/> Just to help us spread the word and boost our motivation. <br/><b>~ Anand Upadhyay</b>', 'wts-eae' ); ?></p>
|
323 |
Â
<p>
|
324 |
+
<?php
|
325 |
+
printf(
|
326 |
+
'<a class="eae-notice-link" style="padding-right: 5px;" target="_blank" href="https://wordpress.org/support/plugin/addon-elements-for-elementor-page-builder/reviews/#new-post" class="button button-primary"><span class="dashicons dashicons-heart" style="text-decoration : none; margin : 0px 3px 0px 0px;"></span>%1$s</a>',
|
327 |
+
esc_html__( 'Ok, you deserve it!', 'wts-eae' )
|
328 |
+
);
|
329 |
+
|
330 |
+
printf(
|
331 |
+
'<a class="eae-notice-link" style="padding-right: 5px;" href="%1$s"><span class="dashicons dashicons-schedule" style="text-decoration : none; margin : 0px 3px;"></span>%2$s</a>',
|
332 |
+
esc_url( add_query_arg( 'remind_later', 'later' ) ),
|
333 |
+
esc_html__( 'May Be Later', 'wts-eae' ),
|
334 |
+
);
|
335 |
+
|
336 |
+
printf(
|
337 |
+
'<a class="eae-notice-link" style="padding-right: 5px;" href="%1$s"><span class="dashicons dashicons-smiley" style="text-decoration : none; margin : 0px 3px;"></span>%2$s</a>',
|
338 |
+
esc_url( add_query_arg( 'review_done', 'done' ) ),
|
339 |
+
esc_html__( 'Already Done', 'wts-eae' ),
|
340 |
+
);
|
341 |
+
?>
|
342 |
Â
</p>
|
343 |
Â
</div>
|
344 |
Â
<?php
|
Â
|
|
Â
|
|
345 |
Â
}
|
346 |
Â
|
347 |
Â
|
348 |
+
public function eae_remind_later() {
|
349 |
+
set_transient( 'eae_remind_later', 'show again', WEEK_IN_SECONDS );
|
Â
|
|
350 |
Â
}
|
351 |
Â
|
352 |
+
public function eae_review_done() {
|
353 |
+
$review = get_option( 'eae_review' );
|
354 |
+
$review['status'] = 'done';
|
355 |
+
$review['reviwed'] = current_time( 'yy/m/d' );
|
356 |
+
update_option( 'eae_review', $review, false );
|
Â
|
|
357 |
Â
}
|
358 |
Â
|
359 |
+
public function fv_download_box() {
|
360 |
+
if ( wp_verify_nonce( isset( $_GET['fv_download_later'] ) ) ) {
|
Â
|
|
361 |
Â
$this->fv_download_later();
|
362 |
+
} elseif ( wp_verify_nonce( isset( $_GET['fv_not_interested'] ) ) ) {
|
Â
|
|
363 |
Â
$this->fv_not_interested();
|
364 |
+
} else {
|
365 |
+
$this->check_form_used();
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
366 |
Â
}
|
367 |
+
}
|
368 |
+
public function check_form_used() {
|
369 |
+
if ( ! is_plugin_active( 'form-vibes/form-vibes.php' ) ) {
|
370 |
+
add_action( 'admin_notices', [ $this, 'fv_add_box' ], 10 );
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
371 |
Â
}
|
Â
|
|
372 |
Â
}
|
373 |
Â
|
374 |
+
public function fv_add_box() {
|
375 |
+
$query = [
|
Â
|
|
376 |
Â
'post_type' => 'page',
|
377 |
Â
'post_status' => 'publish',
|
378 |
+
'meta_query' => [
|
379 |
+
[
|
380 |
Â
'key' => '_elementor_data',
|
381 |
Â
'value' => '"widgetType":"form"',
|
382 |
Â
'compare' => 'LIKE',
|
383 |
+
],
|
384 |
+
],
|
385 |
+
];
|
386 |
+
$data = new \WP_Query( $query );
|
Â
|
|
387 |
Â
|
388 |
+
if ( count( $data->posts ) <= 0 ) {
|
389 |
Â
return;
|
390 |
Â
}
|
391 |
Â
self::$show_notice = false;
|
404 |
Â
</svg>
|
405 |
Â
</div>
|
406 |
Â
<div class="fv-add-content">
|
Â
|
|
Â
|
|
407 |
Â
<div>
|
408 |
+
<p><?php printf( 'I hope you are enjoying using <b>%1$s</b>. Here is another useful plugin by us - <b>%2$s</b>. <br/>If you are using Elementor Pro Form, then you can capture form submissions within WordPress Admin.', 'Elementor Addon Elements', 'Form Vibes' ); ?></p>
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
409 |
Â
|
410 |
Â
<p>
|
411 |
+
<?php
|
412 |
+
|
413 |
+
printf(
|
414 |
+
'<a class="eae-notice-link" style="padding: 5px;" href=" %splugin-install.php?s=form+vibes&tab=search&type=term">Download Now</a>',
|
415 |
+
esc_url( admin_url() )
|
416 |
+
);
|
417 |
+
printf(
|
418 |
+
'<a class="eae-notice-link" style="padding-right: 5px;" href="%1$s"><span class="dashicons dashicons-schedule" style="text-decoration : none; margin : 0px 3px;"></span>%2$s</a>',
|
419 |
+
esc_url( add_query_arg( 'fv_download_later', 'later' ) ),
|
420 |
+
esc_html__( 'May Be Later', 'wts-eae' ),
|
421 |
+
);
|
422 |
+
printf(
|
423 |
+
'<a class="eae-notice-link" style="padding-right: 5px;" href="%1$s"><span class="dashicons dashicons-smiley" style="text-decoration : none; margin : 0px 3px;"></span>%2$s</a>',
|
424 |
+
esc_url( add_query_arg( 'fv_not_interested', 'done' ) ),
|
425 |
+
esc_html__( 'Not Interested', 'wts-eae' ),
|
426 |
+
);
|
427 |
+
?>
|
428 |
Â
</p>
|
429 |
Â
</div>
|
430 |
Â
</div>
|
431 |
Â
</div>
|
432 |
+
<?php
|
433 |
Â
}
|
434 |
Â
|
435 |
+
public function fv_download_later() {
|
436 |
+
set_transient( 'fv_download_later', 'show again', WEEK_IN_SECONDS );
|
437 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
438 |
Â
|
439 |
+
public function fv_not_interested() {
|
440 |
+
update_option( 'fv_downloaded', 'done', false );
|
441 |
+
}
|
442 |
Â
}
|
443 |
Â
|
444 |
Â
Plugin::get_instance();
|
managers/module-manager.php
CHANGED
@@ -1,26 +1,23 @@
|
|
1 |
Â
<?php
|
2 |
Â
namespace WTS_EAE\Managers;
|
Â
|
|
3 |
Â
use WTS_EAE\Classes\Helper;
|
4 |
Â
|
5 |
Â
class Module_Manager {
|
6 |
Â
protected $modules = [];
|
7 |
Â
public function __construct() {
|
8 |
-
$helper
|
9 |
-
$this->modules = $helper->get_eae_modules()
|
10 |
Â
|
11 |
-
$this->modules = apply_filters('wts_eae_active_modules', $this->modules);
|
12 |
Â
// Todo:: apply filter for modules that depends on third party plugins
|
13 |
-
|
14 |
Â
foreach ( $this->modules as $key => $module_name ) {
|
15 |
-
if($module_name['enabled'] == 'true' || trim($module_name['enabled']) === '' || $module_name['enabled']
|
16 |
Â
$class_name = str_replace( '-', ' ', $key );
|
17 |
-
//$class_name = $module_name['Name'];
|
18 |
Â
$class_name = str_replace( ' ', '', ucwords( $class_name ) );
|
19 |
-
$class_name = 'WTS_EAE
|
20 |
-
|
21 |
Â
$this->modules[ $module_name['name'] ] = $class_name::instance();
|
22 |
Â
}
|
23 |
-
|
24 |
Â
}
|
25 |
Â
}
|
26 |
-
}
|
1 |
Â
<?php
|
2 |
Â
namespace WTS_EAE\Managers;
|
3 |
+
|
4 |
Â
use WTS_EAE\Classes\Helper;
|
5 |
Â
|
6 |
Â
class Module_Manager {
|
7 |
Â
protected $modules = [];
|
8 |
Â
public function __construct() {
|
9 |
+
$helper = new Helper();
|
10 |
+
$this->modules = $helper->get_eae_modules();
|
11 |
Â
|
12 |
+
$this->modules = apply_filters( 'wts_eae_active_modules', $this->modules );
|
13 |
Â
// Todo:: apply filter for modules that depends on third party plugins
|
Â
|
|
14 |
Â
foreach ( $this->modules as $key => $module_name ) {
|
15 |
+
if ( $module_name['enabled'] == 'true' || trim( $module_name['enabled'] ) === '' || $module_name['enabled'] === null ) {
|
16 |
Â
$class_name = str_replace( '-', ' ', $key );
|
Â
|
|
17 |
Â
$class_name = str_replace( ' ', '', ucwords( $class_name ) );
|
18 |
+
$class_name = 'WTS_EAE\\Modules\\' . $class_name . '\Module';
|
Â
|
|
19 |
Â
$this->modules[ $module_name['name'] ] = $class_name::instance();
|
20 |
Â
}
|
Â
|
|
21 |
Â
}
|
22 |
Â
}
|
23 |
+
}
|
modules/animated-gradient/module.php
CHANGED
@@ -5,178 +5,165 @@ namespace WTS_EAE\Modules\AnimatedGradient;
|
|
5 |
Â
use Elementor\Controls_Manager;
|
6 |
Â
use Elementor\Repeater;
|
7 |
Â
|
8 |
-
class Module
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
ob_end_clean();
|
169 |
-
$template = $slider_content . $old_template;
|
170 |
-
return $template;
|
171 |
-
}
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
public static function instance() {
|
176 |
-
if ( is_null( self::$_instance ) ) {
|
177 |
-
self::$_instance = new self();
|
178 |
-
}
|
179 |
-
return self::$_instance;
|
180 |
-
}
|
181 |
Â
}
|
182 |
-
|
5 |
Â
use Elementor\Controls_Manager;
|
6 |
Â
use Elementor\Repeater;
|
7 |
Â
|
8 |
+
class Module {
|
9 |
+
// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
10 |
+
private static $_instance = null;
|
11 |
+
|
12 |
+
public function __construct() {
|
13 |
+
add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 10, 3 );
|
14 |
+
add_action( 'elementor/element/print_template', [ $this, '_print_template' ], 10, 2 );
|
15 |
+
add_action( 'elementor/section/print_template', [ $this, '_print_template' ], 10, 2 );
|
16 |
+
add_action( 'elementor/column/print_template', [ $this, '_print_template' ], 10, 2 );
|
17 |
+
add_action( 'elementor/frontend/before_render', [ $this, '_before_render' ] );
|
18 |
+
}
|
19 |
+
|
20 |
+
public function register_controls( $element, $section_id, $args ) {
|
21 |
+
if ( ( 'section' === $element->get_name() && 'section_background' === $section_id ) || ( 'column' === $element->get_name() && 'section_style' === $section_id ) ) {
|
22 |
+
|
23 |
+
$element->start_controls_section(
|
24 |
+
'eae_animated_gradient',
|
25 |
+
[
|
26 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
27 |
+
'label' => __( 'EAE - Animated Gradient Background', 'wts-eae' ),
|
28 |
+
]
|
29 |
+
);
|
30 |
+
$element->add_control(
|
31 |
+
'eae_animated_gradient_enable',
|
32 |
+
[
|
33 |
+
'type' => Controls_Manager::SWITCHER,
|
34 |
+
'label' => __( 'Enable', 'wts-eae' ),
|
35 |
+
'default' => '',
|
36 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
37 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
38 |
+
'return_value' => 'yes',
|
39 |
+
'prefix_class' => 'eae-animated-gradient-',
|
40 |
+
'render_type' => 'template',
|
41 |
+
]
|
42 |
+
);
|
43 |
+
$element->add_control(
|
44 |
+
'gradient_background_angle',
|
45 |
+
[
|
46 |
+
'label' => __( 'Angle', 'wts-eae' ),
|
47 |
+
'type' => Controls_Manager::SLIDER,
|
48 |
+
'size_units' => [ 'deg' ],
|
49 |
+
'range' => [
|
50 |
+
'deg' => [
|
51 |
+
'min' => -45,
|
52 |
+
'max' => 180,
|
53 |
+
'step' => 2,
|
54 |
+
],
|
55 |
+
],
|
56 |
+
'default' => [
|
57 |
+
'unit' => 'deg',
|
58 |
+
'size' => -45,
|
59 |
+
],
|
60 |
+
'selectors' => [
|
61 |
+
'{{WRAPPER}} .box' => 'width: {{SIZE}}{{UNIT}};',
|
62 |
+
],
|
63 |
+
'condition' => [
|
64 |
+
'eae_animated_gradient_enable' => 'yes',
|
65 |
+
],
|
66 |
+
]
|
67 |
+
);
|
68 |
+
$repeater = new Repeater();
|
69 |
+
|
70 |
+
$repeater->add_control(
|
71 |
+
'eae_animated_gradient_color',
|
72 |
+
[
|
73 |
+
'label' => __( 'Add Color', 'wts-eae' ),
|
74 |
+
'type' => Controls_Manager::COLOR,
|
75 |
+
]
|
76 |
+
);
|
77 |
+
|
78 |
+
$element->add_control(
|
79 |
+
'gradient_color_list',
|
80 |
+
[
|
81 |
+
'label' => __( 'Color', 'wts-eae' ),
|
82 |
+
'type' => Controls_Manager::REPEATER,
|
83 |
+
'fields' => $repeater->get_controls(),
|
84 |
+
'title_field' => 'Color {{{eae_animated_gradient_color}}}',
|
85 |
+
'show_label' => true,
|
86 |
+
|
87 |
+
'default' => [
|
88 |
+
[
|
89 |
+
'eae_animated_gradient_color' => '#00a6d8',
|
90 |
+
],
|
91 |
+
[
|
92 |
+
'eae_animated_gradient_color' => '#b800c9',
|
93 |
+
],
|
94 |
+
[
|
95 |
+
'eae_animated_gradient_color' => '#e57600',
|
96 |
+
],
|
97 |
+
],
|
98 |
+
|
99 |
+
'condition' => [
|
100 |
+
'eae_animated_gradient_enable' => 'yes',
|
101 |
+
],
|
102 |
+
]
|
103 |
+
);
|
104 |
+
|
105 |
+
$element->end_controls_section();
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
public function _before_render( $element ) {
|
110 |
+
if ( $element->get_name() !== 'section' && $element->get_name() !== 'column' ) {
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
|
114 |
+
$settings = $element->get_settings();
|
115 |
+
|
116 |
+
if ( $settings['eae_animated_gradient_enable'] === 'yes' ) {
|
117 |
+
$angle = $settings['gradient_background_angle']['size'];
|
118 |
+
$element->add_render_attribute( '_wrapper', 'data-angle', $settings['gradient_background_angle']['size'] . 'deg' );
|
119 |
+
$gradient_color_list = $settings['gradient_color_list'];
|
120 |
+
foreach ( $gradient_color_list as $gradient_color ) {
|
121 |
+
$color[] = $gradient_color['eae_animated_gradient_color'];
|
122 |
+
};
|
123 |
+
$colors = implode( ',', $color );
|
124 |
+
$element->add_render_attribute( '_wrapper', 'data-color', $colors );
|
125 |
+
?>
|
126 |
+
|
127 |
+
<?php
|
128 |
+
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
public function _print_template( $template, $widget ) {
|
133 |
+
?>
|
134 |
+
<?php
|
135 |
+
if ( $widget->get_name() !== 'section' && $widget->get_name() !== 'column' ) {
|
136 |
+
return $template;
|
137 |
+
}
|
138 |
+
$old_template = $template;
|
139 |
+
ob_start();
|
140 |
+
?>
|
141 |
+
<#
|
142 |
+
color_list = settings.gradient_color_list;
|
143 |
+
angle = settings.gradient_background_angle.size;
|
144 |
+
var color = [];
|
145 |
+
var i = 0;
|
146 |
+
_.each(color_list , function(color_list){
|
147 |
+
color[i] = color_list.eae_animated_gradient_color;
|
148 |
+
i = i+1;
|
149 |
+
});
|
150 |
+
view.addRenderAttribute('_wrapper', 'data-color', color);
|
151 |
+
#>
|
152 |
+
<div class="animated-gradient" data-angle="{{{ angle }}}deg" data-color="{{{ color }}}"></div>
|
153 |
+
<?php
|
154 |
+
$slider_content = ob_get_contents();
|
155 |
+
ob_end_clean();
|
156 |
+
$template = $slider_content . $old_template;
|
157 |
+
return $template;
|
158 |
+
}
|
159 |
+
|
160 |
+
|
161 |
+
|
162 |
+
public static function instance() {
|
163 |
+
if ( is_null( self::$_instance ) ) {
|
164 |
+
self::$_instance = new self();
|
165 |
+
}
|
166 |
+
return self::$_instance;
|
167 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
168 |
Â
}
|
169 |
+
|
modules/animated-text/module.php
CHANGED
@@ -16,8 +16,8 @@ class Module extends Module_Base {
|
|
16 |
Â
return 'eae-animatedtext';
|
17 |
Â
}
|
18 |
Â
|
19 |
-
public function add_dependent_js_css(){
|
20 |
-
wp_enqueue_script('animated-main');
|
21 |
Â
}
|
22 |
Â
|
23 |
-
}
|
16 |
Â
return 'eae-animatedtext';
|
17 |
Â
}
|
18 |
Â
|
19 |
+
public function add_dependent_js_css() {
|
20 |
+
wp_enqueue_script( 'animated-main' );
|
21 |
Â
}
|
22 |
Â
|
23 |
+
}
|
modules/animated-text/widgets/animated-text.php
CHANGED
@@ -10,18 +10,20 @@ use WTS_EAE\Base\EAE_Widget_Base;
|
|
10 |
Â
use Elementor\Group_Control_Typography;
|
11 |
Â
|
12 |
Â
|
13 |
-
if ( ! defined( 'ABSPATH' ) )
|
Â
|
|
Â
|
|
14 |
Â
|
15 |
Â
class AnimatedText extends EAE_Widget_Base {
|
16 |
-
|
17 |
Â
public function get_name() {
|
18 |
Â
return 'wts-AnimatedText';
|
19 |
Â
}
|
20 |
-
|
21 |
Â
public function get_title() {
|
22 |
Â
return __( 'EAE - Animated Text', 'wts-eae' );
|
23 |
Â
}
|
24 |
-
|
25 |
Â
public function get_icon() {
|
26 |
Â
return 'eicon-animation-text wts-eae-pe';
|
27 |
Â
}
|
@@ -29,62 +31,60 @@ class AnimatedText extends EAE_Widget_Base {
|
|
29 |
Â
public function get_categories() {
|
30 |
Â
return [ 'wts-eae' ];
|
31 |
Â
}
|
32 |
-
|
33 |
Â
protected function _register_controls() {
|
34 |
Â
$this->start_controls_section(
|
35 |
Â
'section_general',
|
36 |
Â
[
|
37 |
-
'label' => __( 'General', 'wts-eae' )
|
38 |
Â
]
|
39 |
Â
);
|
40 |
Â
|
41 |
-
|
42 |
Â
$this->add_responsive_control(
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
Â
);
|
67 |
Â
|
68 |
Â
$this->add_control(
|
69 |
Â
'pre-text',
|
70 |
Â
[
|
71 |
-
'label'
|
72 |
-
'type'
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
Â
'placeholder' => __( 'Enter text', 'wts-eae' ),
|
77 |
-
'default'
|
78 |
Â
]
|
79 |
Â
);
|
80 |
-
|
81 |
-
|
82 |
Â
$this->add_control(
|
83 |
Â
'animation-text-list',
|
84 |
Â
[
|
85 |
-
'label'
|
86 |
-
'type'
|
87 |
-
'default'
|
88 |
Â
[
|
89 |
Â
'text' => __( 'Football', 'wts-eae' ),
|
90 |
Â
],
|
@@ -95,33 +95,33 @@ class AnimatedText extends EAE_Widget_Base {
|
|
95 |
Â
'text' => __( 'Basketball', 'wts-eae' ),
|
96 |
Â
],
|
97 |
Â
],
|
98 |
-
'fields'
|
99 |
Â
[
|
100 |
-
'name'
|
101 |
-
'label'
|
102 |
-
'type'
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
Â
'label_block' => true,
|
107 |
Â
'placeholder' => __( 'Text to animate', 'wts-eae' ),
|
108 |
-
'default'
|
109 |
Â
],
|
110 |
Â
],
|
111 |
-
'title_field' => '{{{ text }}}'
|
112 |
Â
]
|
113 |
Â
);
|
114 |
Â
|
115 |
Â
$this->add_control(
|
116 |
Â
'post-text',
|
117 |
Â
[
|
118 |
-
'label'
|
119 |
-
'type'
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
Â
'placeholder' => __( 'Enter text', 'wts-eae' ),
|
124 |
-
'default'
|
125 |
Â
]
|
126 |
Â
);
|
127 |
Â
|
@@ -131,17 +131,16 @@ class AnimatedText extends EAE_Widget_Base {
|
|
131 |
Â
'section_pre_text_style',
|
132 |
Â
[
|
133 |
Â
'label' => __( 'Pre Text', 'wts-eae' ),
|
134 |
-
'tab'
|
135 |
Â
]
|
136 |
Â
);
|
137 |
-
|
138 |
-
|
139 |
Â
$this->add_control(
|
140 |
Â
'pre_text_color',
|
141 |
Â
[
|
142 |
-
'label'
|
143 |
-
'type'
|
144 |
-
'global'
|
145 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
146 |
Â
],
|
147 |
Â
'selectors' => [
|
@@ -149,49 +148,45 @@ class AnimatedText extends EAE_Widget_Base {
|
|
149 |
Â
],
|
150 |
Â
]
|
151 |
Â
);
|
152 |
-
|
153 |
Â
$this->add_group_control(
|
154 |
Â
Group_Control_Typography::get_type(),
|
155 |
Â
[
|
156 |
-
'name'
|
157 |
-
'global'
|
158 |
-
'default' => Global_Typography::TYPOGRAPHY_PRIMARY
|
159 |
Â
],
|
160 |
Â
'selector' => '{{WRAPPER}} .eae-at-pre-text',
|
161 |
Â
]
|
162 |
Â
);
|
163 |
Â
|
164 |
-
|
165 |
Â
$this->end_controls_section();
|
166 |
Â
|
167 |
-
|
168 |
-
$this->start_controls_section(
|
169 |
Â
'section_animation_text_style',
|
170 |
Â
[
|
171 |
Â
'label' => __( 'Animated Text', 'wts-eae' ),
|
172 |
-
'tab'
|
173 |
Â
]
|
174 |
Â
);
|
175 |
Â
|
176 |
-
|
177 |
Â
$this->add_group_control(
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
Â
);
|
187 |
-
|
188 |
-
|
189 |
Â
$this->add_control(
|
190 |
Â
'animation_color',
|
191 |
Â
[
|
192 |
-
'label'
|
193 |
-
'type'
|
194 |
-
'global'
|
195 |
Â
'default' => Global_Colors::COLOR_ACCENT,
|
196 |
Â
],
|
197 |
Â
'selectors' => [
|
@@ -203,33 +198,31 @@ class AnimatedText extends EAE_Widget_Base {
|
|
203 |
Â
$this->add_group_control(
|
204 |
Â
Group_Control_Border::get_type(),
|
205 |
Â
[
|
206 |
-
'name'
|
207 |
-
'label'
|
208 |
Â
'selector' => '{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible',
|
209 |
Â
]
|
210 |
Â
);
|
211 |
Â
|
212 |
-
|
213 |
-
|
214 |
Â
$this->add_control(
|
215 |
Â
'box_border_radius',
|
216 |
Â
[
|
217 |
-
'label'
|
218 |
-
'type'
|
219 |
Â
'size_units' => [ 'px', '%' ],
|
220 |
-
'selectors'
|
221 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
222 |
-
|
223 |
Â
]
|
224 |
Â
);
|
225 |
Â
|
226 |
Â
$this->add_control(
|
227 |
Â
'box_padding',
|
228 |
Â
[
|
229 |
-
'label'
|
230 |
-
'type'
|
231 |
Â
'size_units' => [ 'px', '%' ],
|
232 |
-
'selectors'
|
233 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
234 |
Â
],
|
235 |
Â
]
|
@@ -237,50 +230,45 @@ class AnimatedText extends EAE_Widget_Base {
|
|
237 |
Â
$this->add_control(
|
238 |
Â
'box_margin',
|
239 |
Â
[
|
240 |
-
'label'
|
241 |
-
'type'
|
242 |
Â
'size_units' => [ 'px', '%' ],
|
243 |
-
'selectors'
|
244 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
245 |
Â
],
|
246 |
Â
]
|
247 |
Â
);
|
248 |
-
|
249 |
Â
|
250 |
-
|
251 |
Â
$this->add_group_control(
|
252 |
Â
Group_Control_Background::get_type(),
|
253 |
Â
[
|
254 |
-
'name'
|
255 |
-
'label'
|
256 |
-
'types'
|
257 |
Â
'selector' => '{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible',
|
258 |
Â
]
|
259 |
Â
);
|
260 |
Â
|
261 |
-
|
262 |
-
|
263 |
Â
$this->end_controls_section();
|
264 |
Â
|
265 |
Â
$this->start_controls_section(
|
266 |
Â
'section_cursor_style',
|
267 |
Â
[
|
268 |
Â
'label' => __( 'Cursor Control', 'wts-eae' ),
|
269 |
-
'tab'
|
270 |
Â
]
|
271 |
Â
);
|
272 |
Â
|
273 |
-
|
274 |
Â
$this->add_control(
|
275 |
Â
'cursor_color',
|
276 |
Â
[
|
277 |
-
'label'
|
278 |
-
'type'
|
279 |
Â
|
280 |
-
'global'
|
281 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
282 |
Â
],
|
283 |
-
'default'
|
284 |
Â
'selectors' => [
|
285 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper::after' => 'background-color: {{VALUE}};',
|
286 |
Â
],
|
@@ -290,20 +278,20 @@ class AnimatedText extends EAE_Widget_Base {
|
|
290 |
Â
$this->add_responsive_control(
|
291 |
Â
'cursor_width',
|
292 |
Â
[
|
293 |
-
'label'
|
294 |
-
'type'
|
295 |
Â
'size_units' => [ 'px' ],
|
296 |
-
'default'
|
297 |
Â
'size' => 1,
|
298 |
Â
'unit' => 'px',
|
299 |
Â
],
|
300 |
-
'range'
|
301 |
Â
'px' => [
|
302 |
Â
'min' => 1,
|
303 |
Â
'max' => 5,
|
304 |
Â
],
|
305 |
Â
],
|
306 |
-
'selectors'
|
307 |
Â
'{{WRAPPER}} .eae-at-animation.type .eae-at-animation-text-wrapper::after' => 'width: {{SIZE}}{{UNIT}};',
|
308 |
Â
],
|
309 |
Â
]
|
@@ -315,17 +303,16 @@ class AnimatedText extends EAE_Widget_Base {
|
|
315 |
Â
'section_post_text_style',
|
316 |
Â
[
|
317 |
Â
'label' => __( 'Post Text', 'wts-eae' ),
|
318 |
-
'tab'
|
319 |
Â
]
|
320 |
Â
);
|
321 |
Â
|
322 |
-
|
323 |
Â
$this->add_control(
|
324 |
Â
'post_text_color',
|
325 |
Â
[
|
326 |
-
'label'
|
327 |
-
'type'
|
328 |
-
'global'
|
329 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
330 |
Â
],
|
331 |
Â
'selectors' => [
|
@@ -337,8 +324,8 @@ class AnimatedText extends EAE_Widget_Base {
|
|
337 |
Â
$this->add_group_control(
|
338 |
Â
Group_Control_Typography::get_type(),
|
339 |
Â
[
|
340 |
-
'name'
|
341 |
-
'global'
|
342 |
Â
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
|
343 |
Â
],
|
344 |
Â
'selector' => '{{WRAPPER}} .eae-at-post-text',
|
@@ -347,45 +334,47 @@ class AnimatedText extends EAE_Widget_Base {
|
|
347 |
Â
|
348 |
Â
$this->end_controls_section();
|
349 |
Â
}
|
350 |
-
|
351 |
-
protected function render(){
|
352 |
Â
$settings = $this->get_settings_for_display();
|
353 |
Â
|
354 |
-
$this->add_render_attribute('eae-at-animated-text-wrapper','class','eae-at-animation-text-wrapper');
|
355 |
Â
|
356 |
-
$this->add_render_attribute('eae-at-animated-text-wrapper','class','waiting');
|
357 |
Â
|
358 |
-
$this->add_render_attribute('eae-at-animated-text','class','eae-at-animation-text');
|
359 |
Â
|
360 |
-
$this->add_render_attribute('eae-at-pre-txt','class','eae-at-pre-text');
|
361 |
Â
|
362 |
-
|
363 |
Â
|
364 |
-
$this->add_render_attribute('eae-at-animated','class','type');
|
365 |
Â
|
366 |
-
$this->add_render_attribute('eae-at-animated','class','letters');
|
367 |
Â
|
368 |
-
$this->add_render_attribute('eae-at-post-txt','class','eae-at-post-text');
|
369 |
Â
|
370 |
Â
?>
|
371 |
Â
<div id="eae-at-<?php echo $this->get_id(); ?>" class="eae-animtext-wrapper">
|
372 |
Â
<div <?php echo $this->get_render_attribute_string( 'eae-at-animated' ); ?>>
|
373 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-pre-txt' ); ?>><?php echo $settings['pre-text']; ?></span>
|
374 |
-
<?php
|
375 |
-
|
Â
|
|
376 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-animated-text-wrapper' ); ?>>
|
377 |
Â
<?php
|
378 |
-
|
379 |
-
|
380 |
Â
|
381 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-animated-text' ); ?>><?php echo $animation_text['text']; ?></span>
|
382 |
Â
|
383 |
-
|
384 |
-
|
385 |
Â
?>
|
386 |
Â
</span>
|
387 |
-
|
388 |
-
}
|
Â
|
|
389 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-post-txt' ); ?>><?php echo $settings['post-text']; ?></span>
|
390 |
Â
</div>
|
391 |
Â
</div>
|
@@ -396,10 +385,9 @@ class AnimatedText extends EAE_Widget_Base {
|
|
396 |
Â
jQuery(document).trigger('elementor/render/animation-text','#eae-at-<?php echo $this->get_id(); ?>');
|
397 |
Â
});
|
398 |
Â
</script>
|
399 |
-
|
400 |
Â
}
|
401 |
Â
|
402 |
Â
}
|
403 |
Â
|
404 |
-
|
405 |
-
?>
|
10 |
Â
use Elementor\Group_Control_Typography;
|
11 |
Â
|
12 |
Â
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit; // Exit if accessed directly
|
15 |
+
}
|
16 |
Â
|
17 |
Â
class AnimatedText extends EAE_Widget_Base {
|
18 |
+
|
19 |
Â
public function get_name() {
|
20 |
Â
return 'wts-AnimatedText';
|
21 |
Â
}
|
22 |
+
|
23 |
Â
public function get_title() {
|
24 |
Â
return __( 'EAE - Animated Text', 'wts-eae' );
|
25 |
Â
}
|
26 |
+
|
27 |
Â
public function get_icon() {
|
28 |
Â
return 'eicon-animation-text wts-eae-pe';
|
29 |
Â
}
|
31 |
Â
public function get_categories() {
|
32 |
Â
return [ 'wts-eae' ];
|
33 |
Â
}
|
34 |
+
|
35 |
Â
protected function _register_controls() {
|
36 |
Â
$this->start_controls_section(
|
37 |
Â
'section_general',
|
38 |
Â
[
|
39 |
+
'label' => __( 'General', 'wts-eae' ),
|
40 |
Â
]
|
41 |
Â
);
|
42 |
Â
|
Â
|
|
43 |
Â
$this->add_responsive_control(
|
44 |
+
'text-align',
|
45 |
+
[
|
46 |
+
'label' => __( 'Alignment', 'wts-eae' ),
|
47 |
+
'type' => Controls_Manager::CHOOSE,
|
48 |
+
'options' => [
|
49 |
+
'left' => [
|
50 |
+
'title' => __( 'Left', 'wts-eae' ),
|
51 |
+
'icon' => 'fa fa-align-left',
|
52 |
+
],
|
53 |
+
'center' => [
|
54 |
+
'title' => __( 'Center', 'wts-eae' ),
|
55 |
+
'icon' => 'fa fa-align-center',
|
56 |
+
],
|
57 |
+
'right' => [
|
58 |
+
'title' => __( 'Right', 'wts-eae' ),
|
59 |
+
'icon' => 'fa fa-align-right',
|
60 |
+
],
|
61 |
+
],
|
62 |
+
'default' => '',
|
63 |
+
'selectors' => [
|
64 |
+
'{{WRAPPER}} .eae-at-animation' => 'text-align: {{VALUE}};',
|
65 |
+
],
|
66 |
+
]
|
67 |
Â
);
|
68 |
Â
|
69 |
Â
$this->add_control(
|
70 |
Â
'pre-text',
|
71 |
Â
[
|
72 |
+
'label' => __( 'Pre Text', 'wts-eae' ),
|
73 |
+
'type' => Controls_Manager::TEXTAREA,
|
74 |
+
'dynamic' => [
|
75 |
+
'active' => true,
|
76 |
+
],
|
77 |
Â
'placeholder' => __( 'Enter text', 'wts-eae' ),
|
78 |
+
'default' => __( 'I Love', 'wts-eae' ),
|
79 |
Â
]
|
80 |
Â
);
|
81 |
+
|
Â
|
|
82 |
Â
$this->add_control(
|
83 |
Â
'animation-text-list',
|
84 |
Â
[
|
85 |
+
'label' => __( 'Animated Text List', 'wts-eae' ),
|
86 |
+
'type' => Controls_Manager::REPEATER,
|
87 |
+
'default' => [
|
88 |
Â
[
|
89 |
Â
'text' => __( 'Football', 'wts-eae' ),
|
90 |
Â
],
|
95 |
Â
'text' => __( 'Basketball', 'wts-eae' ),
|
96 |
Â
],
|
97 |
Â
],
|
98 |
+
'fields' => [
|
99 |
Â
[
|
100 |
+
'name' => 'text',
|
101 |
+
'label' => __( 'Text', 'wts-eae' ),
|
102 |
+
'type' => Controls_Manager::TEXT,
|
103 |
+
'dynamic' => [
|
104 |
+
'active' => true,
|
105 |
+
],
|
106 |
Â
'label_block' => true,
|
107 |
Â
'placeholder' => __( 'Text to animate', 'wts-eae' ),
|
108 |
+
'default' => '',
|
109 |
Â
],
|
110 |
Â
],
|
111 |
+
'title_field' => '{{{ text }}}',
|
112 |
Â
]
|
113 |
Â
);
|
114 |
Â
|
115 |
Â
$this->add_control(
|
116 |
Â
'post-text',
|
117 |
Â
[
|
118 |
+
'label' => __( 'Post Text', 'wts-eae' ),
|
119 |
+
'type' => Controls_Manager::TEXTAREA,
|
120 |
+
'dynamic' => [
|
121 |
+
'active' => true,
|
122 |
+
],
|
123 |
Â
'placeholder' => __( 'Enter text', 'wts-eae' ),
|
124 |
+
'default' => __( 'Very Much', 'wts-eae' ),
|
125 |
Â
]
|
126 |
Â
);
|
127 |
Â
|
131 |
Â
'section_pre_text_style',
|
132 |
Â
[
|
133 |
Â
'label' => __( 'Pre Text', 'wts-eae' ),
|
134 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
135 |
Â
]
|
136 |
Â
);
|
137 |
+
|
Â
|
|
138 |
Â
$this->add_control(
|
139 |
Â
'pre_text_color',
|
140 |
Â
[
|
141 |
+
'label' => __( 'Pre Text Color', 'wts-eae' ),
|
142 |
+
'type' => Controls_Manager::COLOR,
|
143 |
+
'global' => [
|
144 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
145 |
Â
],
|
146 |
Â
'selectors' => [
|
148 |
Â
],
|
149 |
Â
]
|
150 |
Â
);
|
151 |
+
|
152 |
Â
$this->add_group_control(
|
153 |
Â
Group_Control_Typography::get_type(),
|
154 |
Â
[
|
155 |
+
'name' => 'pre_text_typography',
|
156 |
+
'global' => [
|
157 |
+
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
|
158 |
Â
],
|
159 |
Â
'selector' => '{{WRAPPER}} .eae-at-pre-text',
|
160 |
Â
]
|
161 |
Â
);
|
162 |
Â
|
Â
|
|
163 |
Â
$this->end_controls_section();
|
164 |
Â
|
165 |
+
$this->start_controls_section(
|
Â
|
|
166 |
Â
'section_animation_text_style',
|
167 |
Â
[
|
168 |
Â
'label' => __( 'Animated Text', 'wts-eae' ),
|
169 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
170 |
Â
]
|
171 |
Â
);
|
172 |
Â
|
Â
|
|
173 |
Â
$this->add_group_control(
|
174 |
+
Group_Control_Typography::get_type(),
|
175 |
+
[
|
176 |
+
'name' => 'animation_color_typography',
|
177 |
+
'global' => [
|
178 |
+
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
|
179 |
+
],
|
180 |
+
'selector' => '{{WRAPPER}} .eae-at-animation-text, {{WRAPPER}} .eae-at-animation-text i',
|
181 |
+
]
|
182 |
Â
);
|
183 |
+
|
Â
|
|
184 |
Â
$this->add_control(
|
185 |
Â
'animation_color',
|
186 |
Â
[
|
187 |
+
'label' => __( 'Animation Text Color', 'wts-eae' ),
|
188 |
+
'type' => Controls_Manager::COLOR,
|
189 |
+
'global' => [
|
190 |
Â
'default' => Global_Colors::COLOR_ACCENT,
|
191 |
Â
],
|
192 |
Â
'selectors' => [
|
198 |
Â
$this->add_group_control(
|
199 |
Â
Group_Control_Border::get_type(),
|
200 |
Â
[
|
201 |
+
'name' => 'animated_text_border',
|
202 |
+
'label' => __( 'Box Border', 'wts-eae' ),
|
203 |
Â
'selector' => '{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible',
|
204 |
Â
]
|
205 |
Â
);
|
206 |
Â
|
Â
|
|
Â
|
|
207 |
Â
$this->add_control(
|
208 |
Â
'box_border_radius',
|
209 |
Â
[
|
210 |
+
'label' => __( 'Border Radius', 'wts-eae' ),
|
211 |
+
'type' => Controls_Manager::DIMENSIONS,
|
212 |
Â
'size_units' => [ 'px', '%' ],
|
213 |
+
'selectors' => [
|
214 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
215 |
+
],
|
216 |
Â
]
|
217 |
Â
);
|
218 |
Â
|
219 |
Â
$this->add_control(
|
220 |
Â
'box_padding',
|
221 |
Â
[
|
222 |
+
'label' => __( 'Padding', 'wts-eae' ),
|
223 |
+
'type' => Controls_Manager::DIMENSIONS,
|
224 |
Â
'size_units' => [ 'px', '%' ],
|
225 |
+
'selectors' => [
|
226 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
227 |
Â
],
|
228 |
Â
]
|
230 |
Â
$this->add_control(
|
231 |
Â
'box_margin',
|
232 |
Â
[
|
233 |
+
'label' => __( 'Margin', 'wts-eae' ),
|
234 |
+
'type' => Controls_Manager::DIMENSIONS,
|
235 |
Â
'size_units' => [ 'px', '%' ],
|
236 |
+
'selectors' => [
|
237 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
|
238 |
Â
],
|
239 |
Â
]
|
240 |
Â
);
|
Â
|
|
241 |
Â
|
Â
|
|
242 |
Â
$this->add_group_control(
|
243 |
Â
Group_Control_Background::get_type(),
|
244 |
Â
[
|
245 |
+
'name' => 'animation_section_bg',
|
246 |
+
'label' => __( 'Section Background', 'wts-eae' ),
|
247 |
+
'types' => [ 'classic', 'gradient' ],
|
248 |
Â
'selector' => '{{WRAPPER}} .eae-at-animation-text-wrapper .eae-at-animation-text.is-visible',
|
249 |
Â
]
|
250 |
Â
);
|
251 |
Â
|
Â
|
|
Â
|
|
252 |
Â
$this->end_controls_section();
|
253 |
Â
|
254 |
Â
$this->start_controls_section(
|
255 |
Â
'section_cursor_style',
|
256 |
Â
[
|
257 |
Â
'label' => __( 'Cursor Control', 'wts-eae' ),
|
258 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
259 |
Â
]
|
260 |
Â
);
|
261 |
Â
|
Â
|
|
262 |
Â
$this->add_control(
|
263 |
Â
'cursor_color',
|
264 |
Â
[
|
265 |
+
'label' => __( 'Color', 'wts-eae' ),
|
266 |
+
'type' => Controls_Manager::COLOR,
|
267 |
Â
|
268 |
+
'global' => [
|
269 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
270 |
Â
],
|
271 |
+
'default' => '#54595f',
|
272 |
Â
'selectors' => [
|
273 |
Â
'{{WRAPPER}} .eae-at-animation-text-wrapper::after' => 'background-color: {{VALUE}};',
|
274 |
Â
],
|
278 |
Â
$this->add_responsive_control(
|
279 |
Â
'cursor_width',
|
280 |
Â
[
|
281 |
+
'label' => __( 'Width', 'wts-eae' ),
|
282 |
+
'type' => Controls_Manager::SLIDER,
|
283 |
Â
'size_units' => [ 'px' ],
|
284 |
+
'default' => [
|
285 |
Â
'size' => 1,
|
286 |
Â
'unit' => 'px',
|
287 |
Â
],
|
288 |
+
'range' => [
|
289 |
Â
'px' => [
|
290 |
Â
'min' => 1,
|
291 |
Â
'max' => 5,
|
292 |
Â
],
|
293 |
Â
],
|
294 |
+
'selectors' => [
|
295 |
Â
'{{WRAPPER}} .eae-at-animation.type .eae-at-animation-text-wrapper::after' => 'width: {{SIZE}}{{UNIT}};',
|
296 |
Â
],
|
297 |
Â
]
|
303 |
Â
'section_post_text_style',
|
304 |
Â
[
|
305 |
Â
'label' => __( 'Post Text', 'wts-eae' ),
|
306 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
307 |
Â
]
|
308 |
Â
);
|
309 |
Â
|
Â
|
|
310 |
Â
$this->add_control(
|
311 |
Â
'post_text_color',
|
312 |
Â
[
|
313 |
+
'label' => __( 'Post Text Color', 'wts-eae' ),
|
314 |
+
'type' => Controls_Manager::COLOR,
|
315 |
+
'global' => [
|
316 |
Â
'default' => Global_Colors::COLOR_PRIMARY,
|
317 |
Â
],
|
318 |
Â
'selectors' => [
|
324 |
Â
$this->add_group_control(
|
325 |
Â
Group_Control_Typography::get_type(),
|
326 |
Â
[
|
327 |
+
'name' => 'post_text_typography',
|
328 |
+
'global' => [
|
329 |
Â
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
|
330 |
Â
],
|
331 |
Â
'selector' => '{{WRAPPER}} .eae-at-post-text',
|
334 |
Â
|
335 |
Â
$this->end_controls_section();
|
336 |
Â
}
|
337 |
+
|
338 |
+
protected function render() {
|
339 |
Â
$settings = $this->get_settings_for_display();
|
340 |
Â
|
341 |
+
$this->add_render_attribute( 'eae-at-animated-text-wrapper', 'class', 'eae-at-animation-text-wrapper' );
|
342 |
Â
|
343 |
+
$this->add_render_attribute( 'eae-at-animated-text-wrapper', 'class', 'waiting' );
|
344 |
Â
|
345 |
+
$this->add_render_attribute( 'eae-at-animated-text', 'class', 'eae-at-animation-text' );
|
346 |
Â
|
347 |
+
$this->add_render_attribute( 'eae-at-pre-txt', 'class', 'eae-at-pre-text' );
|
348 |
Â
|
349 |
+
$this->add_render_attribute( 'eae-at-animated', 'class', 'eae-at-animation' );
|
350 |
Â
|
351 |
+
$this->add_render_attribute( 'eae-at-animated', 'class', 'type' );
|
352 |
Â
|
353 |
+
$this->add_render_attribute( 'eae-at-animated', 'class', 'letters' );
|
354 |
Â
|
355 |
+
$this->add_render_attribute( 'eae-at-post-txt', 'class', 'eae-at-post-text' );
|
356 |
Â
|
357 |
Â
?>
|
358 |
Â
<div id="eae-at-<?php echo $this->get_id(); ?>" class="eae-animtext-wrapper">
|
359 |
Â
<div <?php echo $this->get_render_attribute_string( 'eae-at-animated' ); ?>>
|
360 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-pre-txt' ); ?>><?php echo $settings['pre-text']; ?></span>
|
361 |
+
<?php
|
362 |
+
if ( count( $settings['animation-text-list'] ) ) {
|
363 |
+
?>
|
364 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-animated-text-wrapper' ); ?>>
|
365 |
Â
<?php
|
366 |
+
foreach ( $settings['animation-text-list'] as $animation_text ) {
|
367 |
+
?>
|
368 |
Â
|
369 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-animated-text' ); ?>><?php echo $animation_text['text']; ?></span>
|
370 |
Â
|
371 |
+
<?php
|
372 |
+
}
|
373 |
Â
?>
|
374 |
Â
</span>
|
375 |
+
<?php
|
376 |
+
}
|
377 |
+
?>
|
378 |
Â
<span <?php echo $this->get_render_attribute_string( 'eae-at-post-txt' ); ?>><?php echo $settings['post-text']; ?></span>
|
379 |
Â
</div>
|
380 |
Â
</div>
|
385 |
Â
jQuery(document).trigger('elementor/render/animation-text','#eae-at-<?php echo $this->get_id(); ?>');
|
386 |
Â
});
|
387 |
Â
</script>
|
388 |
+
<?php
|
389 |
Â
}
|
390 |
Â
|
391 |
Â
}
|
392 |
Â
|
393 |
+
?>
|
Â
|
modules/bg-slider/module.php
CHANGED
@@ -7,6 +7,7 @@ use Elementor\Group_Control_Background;
|
|
7 |
Â
use Elementor\Utils;
|
8 |
Â
|
9 |
Â
class Module {
|
Â
|
|
10 |
Â
private static $_instance = null;
|
11 |
Â
|
12 |
Â
public static function instance() {
|
@@ -17,47 +18,47 @@ class Module {
|
|
17 |
Â
}
|
18 |
Â
|
19 |
Â
private function __construct() {
|
20 |
-
add_action('elementor/element/after_section_end',[ $this, '_add_controls'],10,3);
|
21 |
Â
|
22 |
-
add_action( 'elementor/frontend/element/before_render', [ $this, '_before_render'],10,1);
|
23 |
Â
|
24 |
-
add_action( 'elementor/frontend/column/before_render', [ $this, '_before_render'],10,1);
|
25 |
-
add_action( 'elementor/frontend/section/before_render', [ $this, '_before_render'],10,1);
|
26 |
Â
|
27 |
-
add_action( 'elementor/element/print_template', [ $this, '_print_template'],10,2);
|
28 |
-
add_action( 'elementor/section/print_template', [ $this, '_print_template'],10,2);
|
29 |
-
add_action( 'elementor/column/print_template', [ $this, '_print_template'],10,2);
|
30 |
Â
|
31 |
Â
add_action( 'wp_enqueue_scripts', [ $this, 'eae_add_js_css' ] );
|
32 |
Â
}
|
33 |
Â
|
34 |
-
function eae_add_js_css(){
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
Â
|
41 |
Â
public function _add_controls( $element, $section_id, $args ) {
|
42 |
-
if ( ('section' === $element->get_name() && 'section_background' === $section_id) || ('column' === $element->get_name() && 'section_style' === $section_id)) {
|
43 |
Â
|
44 |
Â
$element->start_controls_section(
|
45 |
Â
'_eae_section_bg_slider',
|
46 |
Â
[
|
47 |
Â
'label' => __( 'EAE - Background Slider', 'wts-eae' ),
|
48 |
-
'tab' => Controls_Manager::TAB_STYLE
|
49 |
Â
]
|
50 |
Â
);
|
51 |
Â
|
52 |
Â
$element->add_control(
|
53 |
Â
'eae_bg_slider_images',
|
54 |
Â
[
|
55 |
-
'label'
|
56 |
-
'type'
|
57 |
-
'default'
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
Â
]
|
62 |
Â
);
|
63 |
Â
|
@@ -68,29 +69,6 @@ class Module {
|
|
68 |
Â
]
|
69 |
Â
);
|
70 |
Â
|
71 |
-
/*$slides_to_show = range( 1, 10 );
|
72 |
-
$slides_to_show = array_combine( $slides_to_show, $slides_to_show );
|
73 |
-
|
74 |
-
$element->add_control(
|
75 |
-
'slides_to_show',
|
76 |
-
[
|
77 |
-
'label' => __( 'Slides to Show', 'wts-eae' ),
|
78 |
-
'type' => Controls_Manager::SELECT,
|
79 |
-
'default' => '3',
|
80 |
-
'options' => $slides_to_show,
|
81 |
-
]
|
82 |
-
);*/
|
83 |
-
/*$element->add_control(
|
84 |
-
'slide',
|
85 |
-
[
|
86 |
-
'label' => __( 'Initial Slide', 'wts-eae' ),
|
87 |
-
'type' => Controls_Manager::TEXT,
|
88 |
-
'label_block' => true,
|
89 |
-
'placeholder' => __( 'Initial Slide', 'wts-eae' ),
|
90 |
-
'default' => __( '0', 'wts-eae' ),
|
91 |
-
]
|
92 |
-
);*/
|
93 |
-
|
94 |
Â
$element->add_control(
|
95 |
Â
'eae_slider_transition',
|
96 |
Â
[
|
@@ -121,7 +99,7 @@ class Module {
|
|
121 |
Â
'blur2' => __( 'Blur 2', 'wts-eae' ),
|
122 |
Â
'flash' => __( 'Flash', 'wts-eae' ),
|
123 |
Â
'flash2' => __( 'Flash 2', 'wts-eae' ),
|
124 |
-
'random' => __( 'Random', 'wts-eae' )
|
125 |
Â
],
|
126 |
Â
'default' => 'fade',
|
127 |
Â
]
|
@@ -142,7 +120,7 @@ class Module {
|
|
142 |
Â
'kenburnsDownLeft' => __( 'Kenburns Down Left', 'wts-eae' ),
|
143 |
Â
'kenburnsDownRight' => __( 'Kenburns Down Right', 'wts-eae' ),
|
144 |
Â
'random' => __( 'Random', 'wts-eae' ),
|
145 |
-
'' => __( 'None', 'wts-eae' )
|
146 |
Â
],
|
147 |
Â
'default' => 'kenburns',
|
148 |
Â
]
|
@@ -159,16 +137,7 @@ class Module {
|
|
159 |
Â
'return_value' => 'yes',
|
160 |
Â
]
|
161 |
Â
);
|
162 |
-
|
163 |
-
'custom_overlay',
|
164 |
-
[
|
165 |
-
'label' => __( 'Overlay Image', 'wts-eae' ),
|
166 |
-
'type' => Controls_Manager::MEDIA,
|
167 |
-
'condition' => [
|
168 |
-
'eae_custom_overlay_switcher' => 'yes',
|
169 |
-
]
|
170 |
-
]
|
171 |
-
);*/
|
172 |
Â
$element->add_group_control(
|
173 |
Â
Group_Control_Background::get_type(),
|
174 |
Â
[
|
@@ -178,7 +147,7 @@ class Module {
|
|
178 |
Â
'selector' => '{{WRAPPER}} .vegas-overlay',
|
179 |
Â
'condition' => [
|
180 |
Â
'eae_custom_overlay_switcher' => 'yes',
|
181 |
-
]
|
182 |
Â
]
|
183 |
Â
);
|
184 |
Â
$element->add_control(
|
@@ -196,12 +165,12 @@ class Module {
|
|
196 |
Â
'06' => __( 'Style 6', 'wts-eae' ),
|
197 |
Â
'07' => __( 'Style 7', 'wts-eae' ),
|
198 |
Â
'08' => __( 'Style 8', 'wts-eae' ),
|
199 |
-
'09' => __( 'Style 9', 'wts-eae' )
|
200 |
Â
],
|
201 |
Â
'default' => '01',
|
202 |
Â
'condition' => [
|
203 |
Â
'eae_custom_overlay_switcher' => '',
|
204 |
-
]
|
205 |
Â
]
|
206 |
Â
);
|
207 |
Â
$element->add_control(
|
@@ -211,7 +180,7 @@ class Module {
|
|
211 |
Â
'type' => Controls_Manager::SELECT,
|
212 |
Â
'options' => [
|
213 |
Â
'true' => __( 'True', 'wts-eae' ),
|
214 |
-
'false' => __( 'False', 'wts-eae' )
|
215 |
Â
],
|
216 |
Â
'default' => 'true',
|
217 |
Â
]
|
@@ -233,7 +202,7 @@ class Module {
|
|
233 |
Â
'type' => Controls_Manager::SELECT,
|
234 |
Â
'options' => [
|
235 |
Â
'true' => __( 'True', 'wts-eae' ),
|
236 |
-
'false' => __( 'False', 'wts-eae' )
|
237 |
Â
],
|
238 |
Â
'default' => 'true',
|
239 |
Â
]
|
@@ -244,13 +213,12 @@ class Module {
|
|
244 |
Â
}
|
245 |
Â
}
|
246 |
Â
|
247 |
-
function _before_render( \Elementor\Element_Base $element ) {
|
248 |
Â
|
249 |
-
if ( $element->get_name()
|
250 |
Â
return;
|
251 |
Â
}
|
252 |
Â
$settings = $element->get_settings_for_display();
|
253 |
-
//echo '<pre>'; print_r($settings);
|
254 |
Â
|
255 |
Â
$element->add_render_attribute( '_wrapper', 'class', 'has_eae_slider' );
|
256 |
Â
$element->add_render_attribute( 'eae-bs-background-slideshow-wrapper', 'class', 'eae-bs-background-slideshow-wrapper' );
|
@@ -259,128 +227,122 @@ class Module {
|
|
259 |
Â
|
260 |
Â
$slides = [];
|
261 |
Â
|
262 |
-
|
263 |
Â
return;
|
264 |
Â
}
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
//echo '<pre>'; print_r(json_encode( $slides )); echo '</pre>';
|
277 |
-
// echo 'fadsfadf';
|
278 |
Â
if ( empty( $slides ) ) {
|
279 |
Â
return;
|
280 |
Â
}
|
281 |
Â
|
282 |
Â
?>
|
283 |
Â
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
}
|
314 |
-
});
|
315 |
-
</script>
|
316 |
Â
<?php
|
317 |
Â
}
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
Â
|
384 |
Â
}
|
385 |
Â
|
386 |
-
//EAE_Bg_Slider::instance();
|
7 |
Â
use Elementor\Utils;
|
8 |
Â
|
9 |
Â
class Module {
|
10 |
+
// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
11 |
Â
private static $_instance = null;
|
12 |
Â
|
13 |
Â
public static function instance() {
|
18 |
Â
}
|
19 |
Â
|
20 |
Â
private function __construct() {
|
21 |
+
add_action( 'elementor/element/after_section_end', [ $this, '_add_controls' ], 10, 3 );
|
22 |
Â
|
23 |
+
add_action( 'elementor/frontend/element/before_render', [ $this, '_before_render' ], 10, 1 );
|
24 |
Â
|
25 |
+
add_action( 'elementor/frontend/column/before_render', [ $this, '_before_render' ], 10, 1 );
|
26 |
+
add_action( 'elementor/frontend/section/before_render', [ $this, '_before_render' ], 10, 1 );
|
27 |
Â
|
28 |
+
add_action( 'elementor/element/print_template', [ $this, '_print_template' ], 10, 2 );
|
29 |
+
add_action( 'elementor/section/print_template', [ $this, '_print_template' ], 10, 2 );
|
30 |
+
add_action( 'elementor/column/print_template', [ $this, '_print_template' ], 10, 2 );
|
31 |
Â
|
32 |
Â
add_action( 'wp_enqueue_scripts', [ $this, 'eae_add_js_css' ] );
|
33 |
Â
}
|
34 |
Â
|
35 |
+
public function eae_add_js_css() {
|
36 |
+
wp_enqueue_style( 'vegas-css' );
|
37 |
+
wp_enqueue_script( 'vegas' );
|
38 |
+
wp_enqueue_script( 'wts-swiper-script' );
|
39 |
+
wp_enqueue_style( 'wts-swiper-style' );
|
40 |
+
}
|
41 |
Â
|
42 |
Â
public function _add_controls( $element, $section_id, $args ) {
|
43 |
+
if ( ( 'section' === $element->get_name() && 'section_background' === $section_id ) || ( 'column' === $element->get_name() && 'section_style' === $section_id ) ) {
|
44 |
Â
|
45 |
Â
$element->start_controls_section(
|
46 |
Â
'_eae_section_bg_slider',
|
47 |
Â
[
|
48 |
Â
'label' => __( 'EAE - Background Slider', 'wts-eae' ),
|
49 |
+
'tab' => Controls_Manager::TAB_STYLE,
|
50 |
Â
]
|
51 |
Â
);
|
52 |
Â
|
53 |
Â
$element->add_control(
|
54 |
Â
'eae_bg_slider_images',
|
55 |
Â
[
|
56 |
+
'label' => __( 'Add Images', 'wts-eae' ),
|
57 |
+
'type' => Controls_Manager::GALLERY,
|
58 |
+
'default' => [],
|
59 |
+
'dynamic' => [
|
60 |
+
'active' => true,
|
61 |
+
],
|
62 |
Â
]
|
63 |
Â
);
|
64 |
Â
|
69 |
Â
]
|
70 |
Â
);
|
71 |
Â
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
72 |
Â
$element->add_control(
|
73 |
Â
'eae_slider_transition',
|
74 |
Â
[
|
99 |
Â
'blur2' => __( 'Blur 2', 'wts-eae' ),
|
100 |
Â
'flash' => __( 'Flash', 'wts-eae' ),
|
101 |
Â
'flash2' => __( 'Flash 2', 'wts-eae' ),
|
102 |
+
'random' => __( 'Random', 'wts-eae' ),
|
103 |
Â
],
|
104 |
Â
'default' => 'fade',
|
105 |
Â
]
|
120 |
Â
'kenburnsDownLeft' => __( 'Kenburns Down Left', 'wts-eae' ),
|
121 |
Â
'kenburnsDownRight' => __( 'Kenburns Down Right', 'wts-eae' ),
|
122 |
Â
'random' => __( 'Random', 'wts-eae' ),
|
123 |
+
'' => __( 'None', 'wts-eae' ),
|
124 |
Â
],
|
125 |
Â
'default' => 'kenburns',
|
126 |
Â
]
|
137 |
Â
'return_value' => 'yes',
|
138 |
Â
]
|
139 |
Â
);
|
140 |
+
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
141 |
Â
$element->add_group_control(
|
142 |
Â
Group_Control_Background::get_type(),
|
143 |
Â
[
|
147 |
Â
'selector' => '{{WRAPPER}} .vegas-overlay',
|
148 |
Â
'condition' => [
|
149 |
Â
'eae_custom_overlay_switcher' => 'yes',
|
150 |
+
],
|
151 |
Â
]
|
152 |
Â
);
|
153 |
Â
$element->add_control(
|
165 |
Â
'06' => __( 'Style 6', 'wts-eae' ),
|
166 |
Â
'07' => __( 'Style 7', 'wts-eae' ),
|
167 |
Â
'08' => __( 'Style 8', 'wts-eae' ),
|
168 |
+
'09' => __( 'Style 9', 'wts-eae' ),
|
169 |
Â
],
|
170 |
Â
'default' => '01',
|
171 |
Â
'condition' => [
|
172 |
Â
'eae_custom_overlay_switcher' => '',
|
173 |
+
],
|
174 |
Â
]
|
175 |
Â
);
|
176 |
Â
$element->add_control(
|
180 |
Â
'type' => Controls_Manager::SELECT,
|
181 |
Â
'options' => [
|
182 |
Â
'true' => __( 'True', 'wts-eae' ),
|
183 |
+
'false' => __( 'False', 'wts-eae' ),
|
184 |
Â
],
|
185 |
Â
'default' => 'true',
|
186 |
Â
]
|
202 |
Â
'type' => Controls_Manager::SELECT,
|
203 |
Â
'options' => [
|
204 |
Â
'true' => __( 'True', 'wts-eae' ),
|
205 |
+
'false' => __( 'False', 'wts-eae' ),
|
206 |
Â
],
|
207 |
Â
'default' => 'true',
|
208 |
Â
]
|
213 |
Â
}
|
214 |
Â
}
|
215 |
Â
|
216 |
+
public function _before_render( \Elementor\Element_Base $element ) {
|
217 |
Â
|
218 |
+
if ( $element->get_name() !== 'section' && $element->get_name() !== 'column' ) {
|
219 |
Â
return;
|
220 |
Â
}
|
221 |
Â
$settings = $element->get_settings_for_display();
|
Â
|
|
222 |
Â
|
223 |
Â
$element->add_render_attribute( '_wrapper', 'class', 'has_eae_slider' );
|
224 |
Â
$element->add_render_attribute( 'eae-bs-background-slideshow-wrapper', 'class', 'eae-bs-background-slideshow-wrapper' );
|
227 |
Â
|
228 |
Â
$slides = [];
|
229 |
Â
|
230 |
+
if ( empty( $settings['eae_bg_slider_images'] ) ) {
|
231 |
Â
return;
|
232 |
Â
}
|
233 |
+
foreach ( $settings['eae_bg_slider_images'] as $attachment ) {
|
234 |
+
if ( array_key_exists( 'url', $attachment ) ) {
|
235 |
+
$image_url = Group_Control_Image_Size::get_attachment_image_src( $attachment['id'], 'eae_thumbnail', $settings );
|
236 |
+
} else {
|
237 |
+
|
238 |
+
$image_url = Group_Control_Image_Size::get_attachment_image_src( $attachment['id'], 'eae_thumbnail', $settings );
|
239 |
+
|
240 |
+
}
|
241 |
+
$slides[] = [ 'src' => $image_url ];
|
242 |
+
}
|
243 |
+
|
Â
|
|
Â
|
|
244 |
Â
if ( empty( $slides ) ) {
|
245 |
Â
return;
|
246 |
Â
}
|
247 |
Â
|
248 |
Â
?>
|
249 |
Â
|
250 |
+
<script type="text/javascript">
|
251 |
+
jQuery(document).ready(function () {
|
252 |
+
jQuery(".elementor-element-<?php echo $element->get_id(); ?>").prepend('<div class="eae-section-bs"><div class="eae-section-bs-inner"></div></div>');
|
253 |
+
if ('<?php echo $settings['eae_custom_overlay_switcher']; ?>' === 'yes') {
|
254 |
+
|
255 |
+
var bgoverlay = '<?php echo EAE_URL . '/assets/lib/vegas/overlays/00.png'; ?>';
|
256 |
+
} else {
|
257 |
+
if ('<?php echo $settings['eae_slider_overlay']; ?>') {
|
258 |
+
var bgoverlay = '<?php echo EAE_URL . 'assets/lib/vegas/overlays/' . $settings['eae_slider_overlay'] . '.png'; ?>';
|
259 |
+
} else {
|
260 |
+
var bgoverlay = '<?php echo EAE_URL . 'assets/lib/vegas/overlays/00.png'; ?>';
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
|
265 |
+
jQuery(".elementor-element-<?php echo $element->get_id(); ?>").children('.eae-section-bs').children('.eae-section-bs-inner').vegas({
|
266 |
+
slides: <?php echo wp_json_encode( $slides ); ?>,
|
267 |
+
transition: '<?php echo $settings['eae_slider_transition']; ?>',
|
268 |
+
animation: '<?php echo $settings['eae_slider_animation']; ?>',
|
269 |
+
overlay: bgoverlay,
|
270 |
+
cover: <?php echo $settings['eae_slider_cover']; ?>,
|
271 |
+
delay: <?php echo $settings['eae_slider_delay']; ?>,
|
272 |
+
timer: <?php echo $settings['eae_slider_timer_bar']; ?>
|
273 |
+
});
|
274 |
+
if ('<?php echo $settings['eae_custom_overlay_switcher']; ?>' === 'yes') {
|
275 |
+
jQuery(".elementor-element-<?php echo $element->get_id(); ?>").children('.eae-section-bs').children('.eae-section-bs-inner').children('.vegas-overlay').css('background-image', '');
|
276 |
+
}
|
277 |
+
});
|
278 |
+
</script>
|
Â
|
|
Â
|
|
Â
|
|
279 |
Â
<?php
|
280 |
Â
}
|
281 |
+
|
282 |
+
public function _print_template( $template, $widget ) {
|
283 |
+
if ( $widget->get_name() !== 'section' && $widget->get_name() !== 'column' ) {
|
284 |
+
return $template;
|
285 |
+
}
|
286 |
+
|
287 |
+
$old_template = $template;
|
288 |
+
ob_start();
|
289 |
+
?>
|
290 |
+
<#
|
291 |
+
|
292 |
+
var rand_id = Math.random().toString(36).substring(7);
|
293 |
+
var slides_path_string = '';
|
294 |
+
var eae_transition = settings.eae_slider_transition;
|
295 |
+
var eae_animation = settings.eae_slider_animation;
|
296 |
+
var eae_custom_overlay = settings.eae_custom_overlay_switcher;
|
297 |
+
var eae_overlay = '';
|
298 |
+
var eae_cover = settings.eae_slider_cover;
|
299 |
+
var eae_delay = settings.eae_slider_delay;
|
300 |
+
var eae_timer = settings.eae_slider_timer_bar;
|
301 |
+
|
302 |
+
if(!_.isUndefined(settings.eae_bg_slider_images) && settings.eae_bg_slider_images.length){
|
303 |
+
var slider_data = [];
|
304 |
+
slides = settings.eae_bg_slider_images;
|
305 |
+
for(var i in slides){
|
306 |
+
slider_data[i] = slides[i].url;
|
307 |
+
}
|
308 |
+
slides_path_string = slider_data.join();
|
309 |
+
}
|
310 |
+
|
311 |
+
if(settings.eae_custom_overlay_switcher == 'yes'){
|
312 |
+
//if(settings.eae_slider_custom_overlay_image.url){
|
313 |
+
//eae_overlay = settings.eae_slider_custom_overlay_image.url;
|
314 |
+
//}else{
|
315 |
+
eae_overlay = '00.png';
|
316 |
+
//}
|
317 |
+
}else{
|
318 |
+
if(settings.eae_slider_overlay){
|
319 |
+
eae_overlay = settings.eae_slider_overlay + '.png';
|
320 |
+
}else{
|
321 |
+
eae_overlay = '00.png';
|
322 |
+
}
|
323 |
+
}
|
324 |
+
#>
|
325 |
+
|
326 |
+
<div class="eae-section-bs">
|
327 |
+
<div class="eae-section-bs-inner"
|
328 |
+
data-eae-bg-slider="{{ slides_path_string }}"
|
329 |
+
data-eae-bg-slider-transition="{{ eae_transition }}"
|
330 |
+
data-eae-bg-slider-animation="{{ eae_animation }}"
|
331 |
+
data-eae-bg-custom-overlay="{{ eae_custom_overlay }}"
|
332 |
+
data-eae-bg-slider-overlay="{{ eae_overlay }}"
|
333 |
+
data-eae-bg-slider-cover="{{ eae_cover }}"
|
334 |
+
data-eae-bs-slider-delay="{{ eae_delay }}"
|
335 |
+
data-eae-bs-slider-timer="{{ eae_timer }}"
|
336 |
+
></div>
|
337 |
+
</div>
|
338 |
+
|
339 |
+
<?php
|
340 |
+
$slider_content = ob_get_contents();
|
341 |
+
ob_end_clean();
|
342 |
+
$template = $slider_content . $old_template;
|
343 |
+
|
344 |
+
return $template;
|
345 |
+
}
|
346 |
Â
|
347 |
Â
}
|
348 |
Â
|
Â
|
modules/chart/classes/map-data.php
CHANGED
@@ -6,258 +6,252 @@ namespace WTS_EAE\Modules\Chart\Classes;
|
|
6 |
Â
|
7 |
Â
class Map_Data {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
];
|
141 |
-
} else {
|
142 |
Â
$xaxes_grid = [];
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
} else {
|
182 |
Â
$yaxes_grid = [];
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
'legend' => $Legend,
|
221 |
-
'animation' => [
|
222 |
Â
'easing' => $settings['chart_animation'],
|
223 |
Â
'duration' => $settings['duration_animation'],
|
224 |
-
|
225 |
-
|
226 |
Â
'padding' => [
|
227 |
-
'top'
|
228 |
-
'right'
|
229 |
Â
'bottom' => $settings['eae_chart_padding']['bottom'],
|
230 |
-
'left'
|
231 |
-
]
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
232 |
Â
],
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
'barPercentage' => ( !empty( $settings['bar_width']['size'] ) ) ? $settings['bar_width']['size'] / 100 : '0.80000000000000004',
|
241 |
-
'categoryPercentage' => ( !empty( $settings['bar_category_width']['size'] ) ) ? $settings['bar_category_width']['size'] / 100 : '0.84999999999999998',
|
242 |
-
]
|
243 |
-
],
|
244 |
-
'yAxes' => [
|
245 |
-
[
|
246 |
-
'ticks' => $yaxes_labels,
|
247 |
-
'scaleLabel' => $yaxes_Title,
|
248 |
-
'gridLines' => $yaxes_grid,
|
249 |
-
'barPercentage' => ( !empty( $settings['bar_width']['size'] ) ) ? $settings['bar_width']['size'] / 100 : '0.80000000000000004',
|
250 |
-
'categoryPercentage' => ( !empty( $settings['bar_category_width']['size'] ) ) ? $settings['bar_category_width']['size'] / 100 : '0.84999999999999998',
|
251 |
-
]
|
252 |
-
|
253 |
-
],
|
254 |
-
|
255 |
-
],
|
256 |
-
|
257 |
-
];
|
258 |
-
|
259 |
-
return $options;
|
260 |
-
|
261 |
-
}
|
262 |
-
|
263 |
-
}
|
6 |
Â
|
7 |
Â
class Map_Data {
|
8 |
Â
|
9 |
+
public static function render_chart( $settings ) {
|
10 |
+
$chart_settings = wp_json_encode(
|
11 |
+
[
|
12 |
+
'type' => $settings['_skin'],
|
13 |
+
'data' => [
|
14 |
+
'labels' => explode( ',', esc_html( $settings['labels'] ) ),
|
15 |
+
'datasets' => self::chart_data( $settings ),
|
16 |
+
],
|
17 |
+
'options' => self::chart_option( $settings ),
|
18 |
+
]
|
19 |
+
);
|
20 |
+
|
21 |
+
return $chart_settings;
|
22 |
+
}
|
23 |
+
|
24 |
+
public static function chart_data( $settings ) {
|
25 |
+
|
26 |
+
$chart_data = [];
|
27 |
+
$datasets = $settings['dataset'];
|
28 |
+
|
29 |
+
if ( ! empty( $datasets ) ) {
|
30 |
+
foreach ( $datasets as $dataset ) {
|
31 |
+
$dataset['label'] = ! empty( $dataset['dataset_label'] ) ? esc_html( $dataset['dataset_label'] ) : '';
|
32 |
+
$dataset['data'] = ! empty( $dataset['dataset_data'] ) ? array_map( 'trim', explode( ',', $dataset['dataset_data'] ) ) : '';
|
33 |
+
|
34 |
+
if ( $settings['_skin'] === 'bar' || $settings['_skin'] === 'horizontalBar' ) {
|
35 |
+
$dataset['backgroundColor'] = ! empty( $dataset['background_color'] ) ? $dataset['background_color'] : '#52C0C0BA';
|
36 |
+
$dataset['hoverBackgroundColor'] = ! empty( $dataset['background_hover_color'] ) ? $dataset['background_hover_color'] : '#52C0C0E0';
|
37 |
+
$dataset['borderWidth'] = ! empty( $settings['bar_border_width'] ) ? $settings['bar_border_width'] : 1;
|
38 |
+
$dataset['borderColor'] = ! empty( $dataset['border_color'] ) ? $dataset['border_color'] : '#49C4C4';
|
39 |
+
$dataset['hoverBorderColor'] = ! empty( $dataset['border_hover_color'] ) ? $dataset['border_hover_color'] : '#49C4C4';
|
40 |
+
}
|
41 |
+
|
42 |
+
// Line Chart
|
43 |
+
if ( $settings['_skin'] === 'line' ) {
|
44 |
+
$dataset['pointBackgroundColor'] = ! empty( $dataset['point_background_color'] ) ? $dataset['point_background_color'] : '#49C4C4';
|
45 |
+
$dataset['pointHoverBackgroundColor'] = ! empty( $dataset['point_background_hover_color'] ) ? $dataset['point_background_hover_color'] : '#49C4C4';
|
46 |
+
$dataset['pointBorderColor'] = ! empty( $dataset['point_border_color'] ) ? $dataset['point_border_color'] : '#49C4C4';
|
47 |
+
$dataset['pointHoverBorderColor'] = ! empty( $dataset['point_border_hover_color'] ) ? $dataset['point_border_hover_color'] : '#49C4C4';
|
48 |
+
$dataset['borderWidth'] = ! empty( $settings['line_border_width'] ) ? $settings['line_border_width'] : 2;
|
49 |
+
$dataset['borderColor'] = ! empty( $dataset['line_border_color'] ) ? $dataset['line_border_color'] : '#49C4C4';
|
50 |
+
$dataset['pointRadius'] = ! empty( $settings['line_point_size'] ) ? $settings['line_point_size'] : 4;
|
51 |
+
$dataset['pointHoverRadius'] = ! empty( $settings['line_point_hover_size'] ) ? $settings['line_point_hover_size'] : 4;
|
52 |
+
$dataset['fill'] = $dataset['line_fill_color'] === 'yes' ? true : false;
|
53 |
+
$dataset['backgroundColor'] = $dataset['fill'] === true ? $dataset['line_bg_color'] : 'rgba(0, 0, 0, 0)';
|
54 |
+
$dataset['borderJoinStyle'] = ! empty( $settings['line_joint_style'] ) ? $settings['line_joint_style'] : 'miter';
|
55 |
+
$dataset['pointStyle'] = ! empty( $settings['line_point_style'] ) ? $settings['line_point_style'] : 'circle';
|
56 |
+
$dataset['steppedLine'] = $settings['line_stepped'] === 'yes' ? true : false;
|
57 |
+
}
|
58 |
+
|
59 |
+
$chart_data[] = $dataset;
|
60 |
+
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
return $chart_data;
|
65 |
+
}
|
66 |
+
|
67 |
+
public static function chart_option( $settings ) {
|
68 |
+
|
69 |
+
$xaxes_grid_line = $settings['xaxes_grid_line'] === 'yes' ? true : false;
|
70 |
+
$xaxes_title_display = $settings['xaxes_display_title'] === 'yes' ? true : false;
|
71 |
+
$xaxes_labels_display = $settings['xaxes_labels_display'] === 'yes' ? true : false;
|
72 |
+
$yaxes_labels_display = $settings['yaxes_labels_display'] === 'yes' ? true : false;
|
73 |
+
$yaxes_grid_line = $settings['yaxes_grid_line'] === 'yes' ? true : false;
|
74 |
+
$yaxes_title_display = $settings['yaxes_display_title'] === 'yes' ? true : false;
|
75 |
+
$legend_display = $settings['legend_display'] === 'yes' ? true : false;
|
76 |
+
$title_display = $settings['title_display'] === 'yes' ? true : false;
|
77 |
+
$display_tooltip = $settings['tooltip_display'] === 'yes' ? true : false;
|
78 |
+
|
79 |
+
$title = [
|
80 |
+
'display' => $title_display,
|
81 |
+
'text' => $settings['title'],
|
82 |
+
'position' => ! empty( $settings['title_position'] ) ? $settings['title_position'] : 'top',
|
83 |
+
'fontColor' => ! empty( $settings['heading_color'] ) ? $settings['heading_color'] : '#666',
|
84 |
+
'fontFamily' => ! empty( $settings['heading_font_family'] ) ? $settings['heading_font_family'] : 'auto',
|
85 |
+
'fontSize' => ! empty( $settings['heading_font_size']['size'] ) ? $settings['heading_font_size']['size'] : 16,
|
86 |
+
'fontStyle' => ( ! empty( $settings['heading_font_style'] ) ? $settings['heading_font_style'] : '' ) . ' ' . ( ! empty( $settings['heading_font_weight'] ) ? $settings['heading_font_weight'] : '' ),
|
87 |
+
'lineHeight' => ! empty( $settings['heading_line_height'] ) ? $settings['heading_line_height'] : 1.2,
|
88 |
+
'padding' => ! empty( $settings['chart_heading_padding']['size'] ) ? $settings['chart_heading_padding']['size'] : 10,
|
89 |
+
];
|
90 |
+
|
91 |
+
$Legend = [
|
92 |
+
'display' => $legend_display,
|
93 |
+
'position' => ! empty( $settings['legend_position'] ) ? $settings['legend_position'] : 'top',
|
94 |
+
'align' => $settings['legend_align'],
|
95 |
+
'reverse' => $settings['legend_reverse'] === 'yes' ? true : false,
|
96 |
+
'labels' => [
|
97 |
+
'boxWidth' => ! empty( $settings['legend_box_width']['size'] ) ? $settings['legend_box_width']['size'] : 40,
|
98 |
+
'fontColor' => ! empty( $settings['legend_color'] ) ? $settings['legend_color'] : '#666',
|
99 |
+
'fontFamily' => ! empty( $settings['legend_font_family'] ) ? $settings['legend_font_family'] : 'auto',
|
100 |
+
'fontSize' => ! empty( $settings['legend_font_size']['size'] ) ? $settings['legend_font_size']['size'] : 12,
|
101 |
+
'fontStyle' => ( ! empty( $settings['legend_font_style'] ) ? $settings['legend_font_style'] : '' ) . ' ' . ( ! empty( $settings['legend_font_weight'] ) ? $settings['legend_font_weight'] : '' ),
|
102 |
+
'lineHeight' => ! empty( $settings['legend_line_height'] ) ? $settings['legend_line_height'] : 1.2,
|
103 |
+
'padding' => ! empty( $settings['legend_padding']['size'] ) ? $settings['legend_padding']['size'] : 10,
|
104 |
+
],
|
105 |
+
];
|
106 |
+
|
107 |
+
$tooltip = [
|
108 |
+
'enabled' => $display_tooltip,
|
109 |
+
'mode' => ! empty( $settings['tooltip_mode'] ) ? $settings['tooltip_mode'] : 'nearest',
|
110 |
+
'backgroundColor' => ! empty( $settings['tooltip_background_color'] ) ? $settings['tooltip_background_color'] : 'rgba(0, 0, 0, 0.8)',
|
111 |
+
'borderColor' => ! empty( $settings['tooltip_border_color'] ) ? $settings['tooltip_border_color'] : 'rgba(0, 0, 0, 0.8)',
|
112 |
+
'borderWidth' => ! empty( $settings['tooltip_border_width']['size'] ) ? $settings['tooltip_border_width']['size'] : 1,
|
113 |
+
'cornerRadius' => ! empty( $settings['tooltip_border_radius'] ) ? $settings['tooltip_border_radius'] : 6,
|
114 |
+
'xPadding' => ! empty( $settings['tooltip_padding'] ) ? $settings['tooltip_padding'] : 6,
|
115 |
+
'yPadding' => ! empty( $settings['tooltip_padding'] ) ? $settings['tooltip_padding'] : 6,
|
116 |
+
'caretSize' => ! empty( $settings['tooltip_arrow_size'] ) ? $settings['tooltip_arrow_size'] : 5,
|
117 |
+
'titleFontColor' => ! empty( $settings['tooltip_title_color'] ) ? $settings['tooltip_title_color'] : '#fff',
|
118 |
+
'titleFontFamily' => ! empty( $settings['tooltip_title_font_family'] ) ? $settings['tooltip_title_font_family'] : 'auto',
|
119 |
+
'titleFontSize' => ! empty( $settings['tooltip_title_font_size']['size'] ) ? $settings['tooltip_title_font_size']['size'] : 12,
|
120 |
+
'titleFontStyle' => ( ! empty( $settings['tooltip_title_font_style'] ) ? $settings['tooltip_title_font_style'] : '' ) . ' ' . ( ! empty( $settings['tooltip_title_font_weight'] ) ? $settings['tooltip_title_font_weight'] : '' ),
|
121 |
+
'titleAlign' => ! empty( $settings['tooltip_title_align'] ) ? $settings['tooltip_title_align'] : 'left',
|
122 |
+
'titleMarginBottom' => ! empty( $settings['tooltip_title_margin'] ) ? $settings['tooltip_title_margin'] : 6,
|
123 |
+
'bodyFontColor' => ! empty( $settings['tooltip_body_color'] ) ? $settings['tooltip_body_color'] : '#fff',
|
124 |
+
'bodyFontFamily' => ! empty( $settings['tooltip_body_font_family'] ) ? $settings['tooltip_body_font_family'] : 'auto',
|
125 |
+
'bodyFontSize' => ! empty( $settings['tooltip_body_font_size']['size'] ) ? $settings['tooltip_body_font_size']['size'] : 12,
|
126 |
+
'bodyFontStyle' => ( ! empty( $settings['tooltip_body_font_style'] ) ? $settings['tooltip_body_font_style'] : '' ) . ' ' . ( ! empty( $settings['tooltip_body_font_weight'] ) ? $settings['tooltip_body_font_weight'] : '' ),
|
127 |
+
'bodySpacing' => 6,
|
128 |
+
'bodyAlign' => ! empty( $settings['tooltip_body_align'] ) ? $settings['tooltip_body_align'] : 'left',
|
129 |
+
];
|
130 |
+
|
131 |
+
/** X- Axes configuration */
|
132 |
+
|
133 |
+
if ( $xaxes_grid_line === 'yes' ) {
|
134 |
+
$xaxes_grid = [
|
135 |
+
'drawBorder' => false,
|
136 |
+
'color' => ! empty( $settings['xaxes_grid_color'] ) ? $settings['xaxes_grid_color'] : 'rgba(0, 0, 0, 0.1)',
|
137 |
+
'lineWidth' => ! empty( $settings['xaxes_grid_width']['size'] ) ? $settings['xaxes_grid_width']['size'] : 1,
|
138 |
+
];
|
139 |
+
} else {
|
Â
|
|
Â
|
|
140 |
Â
$xaxes_grid = [];
|
141 |
+
}
|
142 |
+
|
143 |
+
$xaxes_labels = [
|
144 |
+
'display' => $xaxes_labels_display,
|
145 |
+
'beginAtZero' => true,
|
146 |
+
'stepSize' => isset( $settings['step_size'] ) ? $settings['step_size'] : 10,
|
147 |
+
'max' => isset( $settings['axis_range'] ) ? $settings['axis_range'] : 100,
|
148 |
+
'fontColor' => ! empty( $settings['xaxes_label_color'] ) ? $settings['xaxes_label_color'] : '#666',
|
149 |
+
'fontFamily' => ! empty( $settings['xaxes_lable_font_family'] ) ? $settings['xaxes_lable_font_family'] : 'auto',
|
150 |
+
'fontSize' => ! empty( $settings['xaxes_lable_font_size']['size'] ) ? $settings['xaxes_lable_font_size']['size'] : 12,
|
151 |
+
'fontStyle' => ( ! empty( $settings['xaxes_lable_font_style'] ) ? $settings['xaxes_lable_font_style'] : '' ) . ' ' . ( ! empty( $settings['xaxes_lable_font_weight'] ) ? $settings['xaxes_lable_font_weight'] : '' ),
|
152 |
+
'lineHeight' => ! empty( $settings['xaxes_lable_line_height'] ) ? $settings['xaxes_lable_line_height'] : 1.2,
|
153 |
+
'padding' => ! empty( $settings['xaxes_labels_padding']['size'] ) ? $settings['xaxes_labels_padding']['size'] : 10,
|
154 |
+
];
|
155 |
+
|
156 |
+
if ( $xaxes_title_display === 'yes' ) {
|
157 |
+
$xaxes_Title = [
|
158 |
+
'display' => $xaxes_title_display,
|
159 |
+
'labelString' => $settings['xaxes_title'],
|
160 |
+
'fontColor' => ! empty( $settings['xaxes_title_color'] ) ? $settings['xaxes_title_color'] : '#666',
|
161 |
+
'fontFamily' => ! empty( $settings['xaxes_title_font_family'] ) ? $settings['xaxes_title_font_family'] : 'auto',
|
162 |
+
'fontSize' => ! empty( $settings['xaxes_title_font_size']['size'] ) ? $settings['xaxes_title_font_size']['size'] : 15,
|
163 |
+
'fontStyle' => ( ! empty( $settings['xaxes_title_font_style'] ) ? $settings['xaxes_title_font_style'] : '' ) . ' ' . ( ! empty( $settings['xaxes_title_font_weight'] ) ? $settings['xaxes_title_font_weight'] : '' ),
|
164 |
+
'lineHeight' => ! empty( $settings['xaxes_title_line_height'] ) ? $settings['xaxes_title_line_height'] : 1.2,
|
165 |
+
];
|
166 |
+
} else {
|
167 |
+
$xaxes_Title = [];
|
168 |
+
}
|
169 |
+
|
170 |
+
/** Y- Axes configuration */
|
171 |
+
|
172 |
+
if ( $yaxes_grid_line === 'yes' ) {
|
173 |
+
$yaxes_grid = [
|
174 |
+
'drawBorder' => false,
|
175 |
+
'color' => ! empty( $settings['yaxes_grid_color'] ) ? $settings['yaxes_grid_color'] : 'rgba(0, 0, 0, 0.1)',
|
176 |
+
'lineWidth' => ! empty( $settings['yaxes_grid_width']['size'] ) ? $settings['yaxes_grid_width']['size'] : 1,
|
177 |
+
];
|
178 |
+
} else {
|
Â
|
|
179 |
Â
$yaxes_grid = [];
|
180 |
+
}
|
181 |
+
|
182 |
+
$yaxes_labels = [
|
183 |
+
'display' => $yaxes_labels_display,
|
184 |
+
'beginAtZero' => true,
|
185 |
+
'stepSize' => isset( $settings['step_size'] ) ? $settings['step_size'] : 1,
|
186 |
+
'max' => isset( $settings['axis_range'] ) ? $settings['axis_range'] : 10,
|
187 |
+
'fontColor' => ! empty( $settings['yaxes_label_color'] ) ? $settings['yaxes_label_color'] : '#666',
|
188 |
+
'fontFamily' => ! empty( $settings['yaxes_lable_font_family'] ) ? $settings['yaxes_lable_font_family'] : 'auto',
|
189 |
+
'fontSize' => ! empty( $settings['yaxes_lable_font_size']['size'] ) ? $settings['yaxes_lable_font_size']['size'] : 12,
|
190 |
+
'fontStyle' => ( ! empty( $settings['yaxes_lable_font_style'] ) ? $settings['yaxes_lable_font_style'] : '' ) . ' ' . ( ! empty( $settings['yaxes_lable_font_weight'] ) ? $settings['yaxes_lable_font_weight'] : '' ),
|
191 |
+
'lineHeight' => ! empty( $settings['yaxes_lable_line_height'] ) ? $settings['yaxes_lable_line_height'] : 1.2,
|
192 |
+
'padding' => ! empty( $settings['yaxes_labels_padding']['size'] ) ? $settings['yaxes_labels_padding']['size'] : 10,
|
193 |
+
];
|
194 |
+
|
195 |
+
if ( $yaxes_title_display === 'yes' ) {
|
196 |
+
$yaxes_Title = [
|
197 |
+
'display' => $yaxes_title_display,
|
198 |
+
'labelString' => $settings['yaxes_title'],
|
199 |
+
'fontColor' => ! empty( $settings['yaxes_title_color'] ) ? $settings['yaxes_title_color'] : '#666',
|
200 |
+
'fontFamily' => ! empty( $settings['yaxes_title_font_family'] ) ? $settings['yaxes_title_font_family'] : 'auto',
|
201 |
+
'fontSize' => ! empty( $settings['yaxes_title_font_size']['size'] ) ? $settings['yaxes_title_font_size']['size'] : 15,
|
202 |
+
'fontStyle' => ( ! empty( $settings['yaxes_title_font_style'] ) ? $settings['yaxes_title_font_style'] : '' ) . ' ' . ( ! empty( $settings['yaxes_title_font_weight'] ) ? $settings['yaxes_title_font_weight'] : '' ),
|
203 |
+
'lineHeight' => ! empty( $settings['yaxes_title_line_height'] ) ? $settings['yaxes_title_line_height'] : 1.2,
|
204 |
+
];
|
205 |
+
} else {
|
206 |
+
$yaxes_Title = [];
|
207 |
+
}
|
208 |
+
|
209 |
+
/** Options Array */
|
210 |
+
|
211 |
+
$options = [
|
212 |
+
|
213 |
+
'title' => $title,
|
214 |
+
'tooltips' => $tooltip,
|
215 |
+
'legend' => $Legend,
|
216 |
+
'animation' => [
|
Â
|
|
Â
|
|
217 |
Â
'easing' => $settings['chart_animation'],
|
218 |
Â
'duration' => $settings['duration_animation'],
|
219 |
+
],
|
220 |
+
'layout' => [
|
221 |
Â
'padding' => [
|
222 |
+
'top' => $settings['eae_chart_padding']['top'],
|
223 |
+
'right' => $settings['eae_chart_padding']['right'],
|
224 |
Â
'bottom' => $settings['eae_chart_padding']['bottom'],
|
225 |
+
'left' => $settings['eae_chart_padding']['left'],
|
226 |
+
],
|
227 |
+
],
|
228 |
+
'maintainAspectRatio' => false,
|
229 |
+
'scales' => [
|
230 |
+
'xAxes' => [
|
231 |
+
[
|
232 |
+
'ticks' => $xaxes_labels,
|
233 |
+
'scaleLabel' => $xaxes_Title,
|
234 |
+
'gridLines' => $xaxes_grid,
|
235 |
+
'barPercentage' => ( ! empty( $settings['bar_width']['size'] ) ) ? $settings['bar_width']['size'] / 100 : '0.80000000000000004',
|
236 |
+
'categoryPercentage' => ( ! empty( $settings['bar_category_width']['size'] ) ) ? $settings['bar_category_width']['size'] / 100 : '0.84999999999999998',
|
237 |
+
],
|
238 |
+
],
|
239 |
+
'yAxes' => [
|
240 |
+
[
|
241 |
+
'ticks' => $yaxes_labels,
|
242 |
+
'scaleLabel' => $yaxes_Title,
|
243 |
+
'gridLines' => $yaxes_grid,
|
244 |
+
'barPercentage' => ( ! empty( $settings['bar_width']['size'] ) ) ? $settings['bar_width']['size'] / 100 : '0.80000000000000004',
|
245 |
+
'categoryPercentage' => ( ! empty( $settings['bar_category_width']['size'] ) ) ? $settings['bar_category_width']['size'] / 100 : '0.84999999999999998',
|
246 |
+
],
|
247 |
+
|
248 |
+
],
|
249 |
+
|
250 |
Â
],
|
251 |
+
|
252 |
+
];
|
253 |
+
|
254 |
+
return $options;
|
255 |
+
}
|
256 |
+
|
257 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
modules/chart/module.php
CHANGED
@@ -4,25 +4,21 @@ namespace WTS_EAE\Modules\Chart;
|
|
4 |
Â
|
5 |
Â
use WTS_EAE\Base\Module_Base;
|
6 |
Â
|
7 |
-
class Module extends Module_Base{
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
Â
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
Â
|
19 |
-
|
20 |
Â
|
21 |
-
|
Â
|
|
22 |
Â
|
23 |
-
|
24 |
-
|
25 |
-
function add_dependent_js_css() {
|
26 |
-
parent::add_dependent_js_css(); // TODO: Change the autogenerated stub
|
27 |
-
}
|
28 |
-
}
|
4 |
Â
|
5 |
Â
use WTS_EAE\Base\Module_Base;
|
6 |
Â
|
7 |
+
class Module extends Module_Base {
|
8 |
Â
|
9 |
+
public function get_widgets() {
|
10 |
+
return [
|
11 |
+
'Chart',
|
12 |
+
];
|
13 |
+
}
|
14 |
Â
|
15 |
+
public function get_name() {
|
16 |
+
return 'eae-chart';
|
17 |
+
}
|
18 |
Â
|
19 |
+
public function get_title() {
|
20 |
Â
|
21 |
+
return __( 'Chart', 'wts-eae' );
|
22 |
+
}
|
23 |
Â
|
24 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
modules/chart/skins/skin-bar-chart.php
CHANGED
@@ -6,25 +6,22 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Bar_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
public function get_title() {
|
14 |
-
return __( 'Vertical Bar', 'wts-eae' );
|
15 |
-
}
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
Â
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
Â
|
25 |
-
|
Â
|
|
26 |
Â
|
27 |
Â
public function render() {
|
28 |
Â
$this->common_render();
|
29 |
Â
}
|
30 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Bar_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'bar';
|
11 |
+
}
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Vertical Bar', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
Â
|
21 |
+
public function register_style_controls() {
|
22 |
+
}
|
23 |
Â
|
24 |
Â
public function render() {
|
25 |
Â
$this->common_render();
|
26 |
Â
}
|
27 |
+
}
|
modules/chart/skins/skin-base.php
CHANGED
@@ -6,45 +6,42 @@ use WTS_EAE\Classes\Post_Helper;
|
|
6 |
Â
use Elementor\Skin_Base as Elementor_Skin_Base;
|
7 |
Â
use WTS_EAE\Modules\Chart\Classes\Map_Data;
|
8 |
Â
use Elementor\Widget_Base;
|
9 |
-
abstract class Skin_Base extends Elementor_Skin_Base{
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
<?php
|
49 |
-
}
|
50 |
-
}
|
6 |
Â
use Elementor\Skin_Base as Elementor_Skin_Base;
|
7 |
Â
use WTS_EAE\Modules\Chart\Classes\Map_Data;
|
8 |
Â
use Elementor\Widget_Base;
|
9 |
+
abstract class Skin_Base extends Elementor_Skin_Base {
|
10 |
+
|
11 |
+
protected function _register_controls_actions() {
|
12 |
+
|
13 |
+
add_action( 'elementor/element/eae-charts/tl_skins/after_section_end', [ $this, 'register_style_controls' ] );
|
14 |
+
}
|
15 |
+
|
16 |
+
public function register_controls( Widget_Base $widget ) {
|
17 |
+
$this->parent = $widget;
|
18 |
+
}
|
19 |
+
|
20 |
+
public function common_render() {
|
21 |
+
$settings = $this->parent->get_settings_for_display();
|
22 |
+
|
23 |
+
require_once EAE_PATH . 'modules/chart/classes/map-data.php';
|
24 |
+
|
25 |
+
$this->parent->add_render_attribute(
|
26 |
+
'chart-container',
|
27 |
+
[
|
28 |
+
'class' => 'eae-chart-outer-container',
|
29 |
+
'data-settings' => Map_Data::render_chart( $settings ),
|
30 |
+
]
|
31 |
+
);
|
32 |
+
$this->parent->add_render_attribute( 'wrapper', 'class', 'eae-chart-wrapper' );
|
33 |
+
$this->parent->add_render_attribute( 'chart-canvas', 'id', 'eae-chart-canvas' );
|
34 |
+
|
35 |
+
?>
|
36 |
+
<div <?php echo $this->parent->get_render_attribute_string( 'chart-container' ); ?>>
|
37 |
+
<?php if ( ! empty( $settings['eae_chart_background_color_image']['id'] ) && $settings['chart_overlay'] === 'yes' ) { ?>
|
38 |
+
<div class="eae-chart-overlay"></div>
|
39 |
+
<?php } ?>
|
40 |
+
<div <?php echo $this->parent->get_render_attribute_string( 'wrapper' ); ?>>
|
41 |
+
<canvas <?php echo $this->parent->get_render_attribute_string( 'chart-canvas' ); ?> ></canvas>
|
42 |
+
</div>
|
43 |
+
</div>
|
44 |
+
|
45 |
+
<?php
|
46 |
+
}
|
47 |
+
}
|
Â
|
|
Â
|
|
Â
|
modules/chart/skins/skin-doughnut-chart.php
CHANGED
@@ -6,18 +6,18 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Doughnut_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Doughnut_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'doughnut';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Doughnut', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/skins/skin-horizontal-bar-chart.php
CHANGED
@@ -4,20 +4,20 @@ namespace WTS_EAE\Modules\Chart\Skins;
|
|
4 |
Â
|
5 |
Â
use Elementor\Widget_Base;
|
6 |
Â
|
7 |
-
class
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
4 |
Â
|
5 |
Â
use Elementor\Widget_Base;
|
6 |
Â
|
7 |
+
class Skin_Horizontal_Bar_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'horizontalBar';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Horizontal Bar', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/skins/skin-line-chart.php
CHANGED
@@ -6,18 +6,18 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Line_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Line_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'line';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Line', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/skins/skin-pie-chart.php
CHANGED
@@ -6,18 +6,18 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Pie_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Pie_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'pie';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Pie', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/skins/skin-polar-area-chart.php
CHANGED
@@ -6,18 +6,18 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Polar_Area_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Polar_Area_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'polarArea';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Polar Area', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/skins/skin-radar-chart.php
CHANGED
@@ -6,18 +6,18 @@ use Elementor\Widget_Base;
|
|
6 |
Â
|
7 |
Â
class Skin_Radar_Chart extends Skin_Base {
|
8 |
Â
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
Â
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
Â
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
}
|
6 |
Â
|
7 |
Â
class Skin_Radar_Chart extends Skin_Base {
|
8 |
Â
|
9 |
+
public function get_id() {
|
10 |
+
return 'radar';
|
11 |
+
}
|
12 |
Â
|
13 |
+
public function get_title() {
|
14 |
+
return __( 'Radar', 'wts-eae' );
|
15 |
+
}
|
16 |
Â
|
17 |
+
public function register_items_control( Widget_Base $widget ) {
|
18 |
+
$this->parent = $widget;
|
19 |
+
}
|
20 |
+
public function render() {
|
21 |
+
$this->common_render();
|
22 |
+
}
|
23 |
+
}
|
modules/chart/widgets/chart.php
CHANGED
@@ -11,2493 +11,2469 @@ use Elementor\Group_Control_Background;
|
|
11 |
Â
|
12 |
Â
|
13 |
Â
class Chart extends EAE_Widget_Base {
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
'separator' => 'before',
|
314 |
-
'condition' => [
|
315 |
-
'_skin!' => 'line',
|
316 |
-
],
|
317 |
-
]
|
318 |
-
);
|
319 |
-
|
320 |
-
$this->add_control(
|
321 |
Â
'bar_width',
|
322 |
Â
[
|
323 |
-
'label'
|
324 |
-
'type'
|
325 |
-
'range'
|
326 |
-
'px' => [
|
327 |
-
'min' => 0,
|
328 |
-
'max' => 99,
|
329 |
-
],
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
11 |
Â
|
12 |
Â
|
13 |
Â
class Chart extends EAE_Widget_Base {
|
14 |
+
public function get_name() {
|
15 |
+
return 'eae-chart';
|
16 |
+
}
|
17 |
+
|
18 |
+
public function get_title() {
|
19 |
+
|
20 |
+
return __( 'EAE - Chart', 'wts-eae' );
|
21 |
+
}
|
22 |
+
|
23 |
+
public function get_icon() {
|
24 |
+
return 'eicon-text-align-left';
|
25 |
+
}
|
26 |
+
|
27 |
+
public function get_categories() {
|
28 |
+
return [ 'wts-eae' ];
|
29 |
+
}
|
30 |
+
|
31 |
+
public function get_script_depends() {
|
32 |
+
return [ 'eae-chart' ];
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
protected function _register_skins() {
|
37 |
+
$this->add_skin( new Skins\Skin_Bar_Chart( $this ) );
|
38 |
+
$this->add_skin( new Skins\Skin_Horizontal_Bar_Chart( $this ) );
|
39 |
+
$this->add_skin( new Skins\Skin_Line_Chart( $this ) );
|
40 |
+
}
|
41 |
+
|
42 |
+
// phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
|
43 |
+
protected $_has_template_content = false;
|
44 |
+
|
45 |
+
protected function _register_controls() {
|
46 |
+
$this->start_controls_section(
|
47 |
+
'section_layout',
|
48 |
+
[
|
49 |
+
'label' => __( 'Layout', 'wts-eae' ),
|
50 |
+
]
|
51 |
+
);
|
52 |
+
|
53 |
+
$this->add_control(
|
54 |
+
'labels',
|
55 |
+
[
|
56 |
+
'label' => __( 'Labels', 'wts-eae' ),
|
57 |
+
'type' => Controls_Manager::TEXT,
|
58 |
+
'label_block' => true,
|
59 |
+
'default' => '2017, 2018, 2019, 2020',
|
60 |
+
'placeholder' => __( 'January, February, March', 'wts-eae' ),
|
61 |
+
'description' => __( 'Enter multiple Labels Separated With ( , ). Example: January, February, March etc. ', 'wts-eae' ),
|
62 |
+
]
|
63 |
+
);
|
64 |
+
|
65 |
+
$repeater = new Repeater();
|
66 |
+
|
67 |
+
$repeater->start_controls_tabs( 'chart_data_tab' );
|
68 |
+
|
69 |
+
$repeater->start_controls_tab(
|
70 |
+
'content',
|
71 |
+
[
|
72 |
+
'label' => __( 'Content', 'wts-eae' ),
|
73 |
+
]
|
74 |
+
);
|
75 |
+
|
76 |
+
$repeater->add_control(
|
77 |
+
'dataset_label',
|
78 |
+
[
|
79 |
+
'label' => __( 'Label', 'wts-eae' ),
|
80 |
+
'label_block' => true,
|
81 |
+
'type' => Controls_Manager::TEXT,
|
82 |
+
'default' => __( 'Lable', 'wts-eae' ),
|
83 |
+
'placeholder' => __( 'Enter your label', 'wts-eae' ),
|
84 |
+
]
|
85 |
+
);
|
86 |
+
|
87 |
+
$repeater->add_control(
|
88 |
+
'dataset_data',
|
89 |
+
[
|
90 |
+
'label' => __( 'Data', 'wts-eae' ),
|
91 |
+
'type' => Controls_Manager::TEXT,
|
92 |
+
'label_block' => true,
|
93 |
+
'default' => '10, 50, 13, 35',
|
94 |
+
'placeholder' => __( '10, 20, 30', 'wts-eae' ),
|
95 |
+
'description' => __( 'Enter Data Values Separated With ( , ). Example: 10, 20, 30 ', 'wts-eae' ),
|
96 |
+
]
|
97 |
+
);
|
98 |
+
|
99 |
+
$repeater->end_controls_tab();
|
100 |
+
|
101 |
+
$repeater->start_controls_tab(
|
102 |
+
'style',
|
103 |
+
[
|
104 |
+
'label' => __( 'Style', 'wts-eae' ),
|
105 |
+
]
|
106 |
+
);
|
107 |
+
|
108 |
+
$repeater->add_control(
|
109 |
+
'background_color',
|
110 |
+
[
|
111 |
+
'label' => __( 'Background Color', 'wts-eae' ),
|
112 |
+
'type' => Controls_Manager::COLOR,
|
113 |
+
'default' => '#52C0C0BA',
|
114 |
+
]
|
115 |
+
);
|
116 |
+
|
117 |
+
$repeater->add_control(
|
118 |
+
'background_hover_color',
|
119 |
+
[
|
120 |
+
'label' => __( 'Background Hover Color', 'wts-eae' ),
|
121 |
+
'type' => Controls_Manager::COLOR,
|
122 |
+
'default' => '#52C0C0E0',
|
123 |
+
]
|
124 |
+
);
|
125 |
+
|
126 |
+
$repeater->add_control(
|
127 |
+
'border_color',
|
128 |
+
[
|
129 |
+
'label' => __( 'Border Color', 'wts-eae' ),
|
130 |
+
'type' => Controls_Manager::COLOR,
|
131 |
+
'default' => '#49C4C4',
|
132 |
+
]
|
133 |
+
);
|
134 |
+
|
135 |
+
$repeater->add_control(
|
136 |
+
'border_hover_color',
|
137 |
+
[
|
138 |
+
'label' => __( 'Border Hover Color', 'wts-eae' ),
|
139 |
+
'type' => Controls_Manager::COLOR,
|
140 |
+
'default' => '#49C4C4',
|
141 |
+
]
|
142 |
+
);
|
143 |
+
|
144 |
+
$repeater->add_control(
|
145 |
+
'line_title',
|
146 |
+
[
|
147 |
+
'label' => __( 'Line', 'wts-eae' ),
|
148 |
+
'type' => Controls_Manager::HEADING,
|
149 |
+
'separator' => 'before',
|
150 |
+
'description' => __( 'Note: These options only work with line chart.', 'wts-eae' ),
|
151 |
+
]
|
152 |
+
);
|
153 |
+
|
154 |
+
$repeater->add_control(
|
155 |
+
'line_description',
|
156 |
+
[
|
157 |
+
'label' => __( 'line chart note', 'wts-eae' ),
|
158 |
+
'show_label' => false,
|
159 |
+
'type' => Controls_Manager::RAW_HTML,
|
160 |
+
'raw' => __( 'Note: These options only work with line chart.', 'wts-eae' ),
|
161 |
+
]
|
162 |
+
);
|
163 |
+
|
164 |
+
$repeater->add_control(
|
165 |
+
'line_fill_color',
|
166 |
+
[
|
167 |
+
'label' => __( 'Background Color', 'wts-eae' ),
|
168 |
+
'type' => Controls_Manager::SWITCHER,
|
169 |
+
'default' => '',
|
170 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
171 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
172 |
+
'return_value' => 'yes',
|
173 |
+
]
|
174 |
+
);
|
175 |
+
|
176 |
+
$repeater->add_control(
|
177 |
+
'line_bg_color',
|
178 |
+
[
|
179 |
+
'label' => __( 'Color', 'wts-eae' ),
|
180 |
+
'type' => Controls_Manager::COLOR,
|
181 |
+
'label_block' => false,
|
182 |
+
'default' => 'rgba(0, 0, 0, 0.1)',
|
183 |
+
'condition' => [
|
184 |
+
'line_fill_color' => 'yes',
|
185 |
+
],
|
186 |
+
]
|
187 |
+
);
|
188 |
+
|
189 |
+
$repeater->add_control(
|
190 |
+
'line_border_color',
|
191 |
+
[
|
192 |
+
'label' => __( 'Border Color', 'wts-eae' ),
|
193 |
+
'type' => Controls_Manager::COLOR,
|
194 |
+
'default' => '#49C4C4',
|
195 |
+
]
|
196 |
+
);
|
197 |
+
|
198 |
+
$repeater->add_control(
|
199 |
+
'point_background_color',
|
200 |
+
[
|
201 |
+
'label' => __( 'Point Background Color', 'wts-eae' ),
|
202 |
+
'type' => Controls_Manager::COLOR,
|
203 |
+
'default' => '#49C4C4',
|
204 |
+
]
|
205 |
+
);
|
206 |
+
|
207 |
+
$repeater->add_control(
|
208 |
+
'point_background_hover_color',
|
209 |
+
[
|
210 |
+
'label' => __( 'Point Background Hover Color', 'wts-eae' ),
|
211 |
+
'type' => Controls_Manager::COLOR,
|
212 |
+
'default' => '#49C4C4',
|
213 |
+
]
|
214 |
+
);
|
215 |
+
|
216 |
+
$repeater->add_control(
|
217 |
+
'point_border_color',
|
218 |
+
[
|
219 |
+
'label' => __( 'Point Border Color', 'wts-eae' ),
|
220 |
+
'type' => Controls_Manager::COLOR,
|
221 |
+
'default' => '#49C4C4',
|
222 |
+
]
|
223 |
+
);
|
224 |
+
|
225 |
+
$repeater->add_control(
|
226 |
+
'point_border_hover_color',
|
227 |
+
[
|
228 |
+
'label' => __( 'Point Border Hover Color', 'wts-eae' ),
|
229 |
+
'type' => Controls_Manager::COLOR,
|
230 |
+
'default' => '#49C4C4',
|
231 |
+
]
|
232 |
+
);
|
233 |
+
|
234 |
+
$repeater->end_controls_tab();
|
235 |
+
|
236 |
+
$this->add_control(
|
237 |
+
'dataset',
|
238 |
+
[
|
239 |
+
'label' => __( 'Datasets', 'wts-eae' ),
|
240 |
+
'type' => Controls_Manager::REPEATER,
|
241 |
+
'show_label' => true,
|
242 |
+
'fields' => $repeater->get_controls(),
|
243 |
+
'default' => [
|
244 |
+
[
|
245 |
+
'dataset_label' => __( 'Company A', 'wts-eae' ),
|
246 |
+
'dataset_data' => '30, 40, 27, 45',
|
247 |
+
'background_color' => '#EE6083B8',
|
248 |
+
'background_hover_color' => '#EE6083D9',
|
249 |
+
'border_color' => '#F34A74',
|
250 |
+
'border_hover_color' => '#F34A74',
|
251 |
+
'line_border_color' => '#ee6083',
|
252 |
+
'point_background_color' => '#ee6083',
|
253 |
+
'point_background_hover_color' => '#ee6083',
|
254 |
+
'point_border_color' => '#ee6083',
|
255 |
+
'point_border_hover_color' => '#ee6083',
|
256 |
+
],
|
257 |
+
[
|
258 |
+
'dataset_label' => __( 'Company B', 'wts-eae' ),
|
259 |
+
'dataset_data' => '37, 45, 39, 50',
|
260 |
+
'background_color' => '#3BA3ECB8',
|
261 |
+
'background_hover_color' => '#3BA3ECDE',
|
262 |
+
'border_color' => '#2999E8',
|
263 |
+
'border_hover_color' => '#2999E8',
|
264 |
+
'line_border_color' => '#3ba3eb',
|
265 |
+
'point_background_color' => '#3ba3eb',
|
266 |
+
'point_background_hover_color' => '#3ba3eb',
|
267 |
+
'point_border_color' => '#3ba3eb',
|
268 |
+
'point_border_hover_color' => '#3ba3eb',
|
269 |
+
],
|
270 |
+
],
|
271 |
+
'title_field' => '{{{ dataset_label }}}',
|
272 |
+
]
|
273 |
+
);
|
274 |
+
|
275 |
+
$this->end_controls_section();
|
276 |
+
|
277 |
+
$this->start_controls_section(
|
278 |
+
'section_additional_settings',
|
279 |
+
[
|
280 |
+
'label' => __( 'Additional Settings', 'wts-eae' ),
|
281 |
+
]
|
282 |
+
);
|
283 |
+
|
284 |
+
$this->add_responsive_control(
|
285 |
+
'eae_chart_height',
|
286 |
+
[
|
287 |
+
'label' => __( 'Chart Height', 'wts-eae' ),
|
288 |
+
'type' => Controls_Manager::NUMBER,
|
289 |
+
'min' => 50,
|
290 |
+
'max' => 1500,
|
291 |
+
'step' => 5,
|
292 |
+
'default' => 500,
|
293 |
+
'selectors' => [
|
294 |
+
'{{WRAPPER}} .eae-chart-outer-container' => 'height: {{SIZE}}px;',
|
295 |
+
'{{WRAPPER}} #eae-chart-canvas' => 'height: {{SIZE}}px !important;',
|
296 |
+
],
|
297 |
+
]
|
298 |
+
);
|
299 |
+
|
300 |
+
$this->add_control(
|
301 |
+
'bar_settings_heading',
|
302 |
+
[
|
303 |
+
'label' => __( 'Bar Chart', 'wts-eae' ),
|
304 |
+
'type' => Controls_Manager::HEADING,
|
305 |
+
'separator' => 'before',
|
306 |
+
'condition' => [
|
307 |
+
'_skin!' => 'line',
|
308 |
+
],
|
309 |
+
]
|
310 |
+
);
|
311 |
+
|
312 |
+
$this->add_control(
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
313 |
Â
'bar_width',
|
314 |
Â
[
|
315 |
+
'label' => __( 'Bar Width', 'wts-eae' ),
|
316 |
+
'type' => Controls_Manager::SLIDER,
|
317 |
+
'range' => [
|
318 |
+
'px' => [
|
319 |
+
'min' => 0,
|
320 |
+
'max' => 99,
|
321 |
+
],
|
322 |
+
],
|
323 |
+
'default' => [
|
324 |
+
'unit' => 'px',
|
325 |
+
'size' => 80,
|
326 |
+
],
|
327 |
+
'condition' => [
|
328 |
+
'_skin!' => 'line',
|
329 |
+
],
|
330 |
+
]
|
331 |
+
);
|
332 |
+
|
333 |
+
$this->add_control(
|
334 |
+
'bar_category_width',
|
335 |
+
[
|
336 |
+
'label' => __( 'Bar Category Width', 'wts-eae' ),
|
337 |
+
'type' => Controls_Manager::SLIDER,
|
338 |
+
'range' => [
|
339 |
+
'px' => [
|
340 |
+
'min' => 0,
|
341 |
+
'max' => 99,
|
342 |
+
],
|
343 |
+
],
|
344 |
+
'default' => [
|
345 |
+
'unit' => 'px',
|
346 |
+
'size' => 85,
|
347 |
+
],
|
348 |
+
'condition' => [
|
349 |
+
'_skin!' => 'line',
|
350 |
+
],
|
351 |
+
]
|
352 |
+
);
|
353 |
+
|
354 |
+
$this->add_control(
|
355 |
+
'bar_border_width',
|
356 |
+
[
|
357 |
+
'label' => __( 'Bar Border Width', 'wts-eae' ),
|
358 |
+
'type' => Controls_Manager::NUMBER,
|
359 |
+
'default' => 1,
|
360 |
+
'min' => 1,
|
361 |
+
'max' => 10,
|
362 |
+
'condition' => [
|
363 |
+
'_skin!' => 'line',
|
364 |
+
],
|
365 |
+
]
|
366 |
+
);
|
367 |
+
|
368 |
+
$this->add_control(
|
369 |
+
'line_settings',
|
370 |
+
[
|
371 |
+
'label' => __( 'Line Chart', 'wts-eae' ),
|
372 |
+
'type' => Controls_Manager::HEADING,
|
373 |
+
'separator' => 'before',
|
374 |
+
'condition' => [
|
375 |
+
'_skin' => 'line',
|
376 |
+
],
|
377 |
+
]
|
378 |
+
);
|
379 |
+
|
380 |
+
$this->add_control(
|
381 |
+
'line_stepped',
|
382 |
+
[
|
383 |
+
'label' => __( 'Stepped Line', 'wts-eae' ),
|
384 |
+
'type' => Controls_Manager::SWITCHER,
|
385 |
+
'default' => '',
|
386 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
387 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
388 |
+
'return_value' => 'yes',
|
389 |
+
'condition' => [
|
390 |
+
'_skin' => 'line',
|
391 |
+
],
|
392 |
+
]
|
393 |
+
);
|
394 |
+
|
395 |
+
$this->add_control(
|
396 |
+
'line_border_width',
|
397 |
+
[
|
398 |
+
'label' => __( 'Line Border Width', 'wts-eae' ),
|
399 |
+
'type' => Controls_Manager::NUMBER,
|
400 |
+
'default' => 2,
|
401 |
+
'min' => 1,
|
402 |
+
'max' => 20,
|
403 |
+
'condition' => [
|
404 |
+
'_skin' => 'line',
|
405 |
+
],
|
406 |
+
]
|
407 |
+
);
|
408 |
+
|
409 |
+
$this->add_control(
|
410 |
+
'line_point_size',
|
411 |
+
[
|
412 |
+
'label' => __( 'Line Point Size', 'wts-eae' ),
|
413 |
+
'type' => Controls_Manager::NUMBER,
|
414 |
+
'default' => 3,
|
415 |
+
'min' => 1,
|
416 |
+
'max' => 20,
|
417 |
+
'condition' => [
|
418 |
+
'_skin' => 'line',
|
419 |
+
],
|
420 |
+
]
|
421 |
+
);
|
422 |
+
|
423 |
+
$this->add_control(
|
424 |
+
'line_point_hover_size',
|
425 |
+
[
|
426 |
+
'label' => __( 'Line Point Hover Size', 'wts-eae' ),
|
427 |
+
'type' => Controls_Manager::NUMBER,
|
428 |
+
'default' => 3,
|
429 |
+
'min' => 1,
|
430 |
+
'max' => 20,
|
431 |
+
'condition' => [
|
432 |
+
'_skin' => 'line',
|
433 |
+
],
|
434 |
+
]
|
435 |
+
);
|
436 |
+
|
437 |
+
$this->add_control(
|
438 |
+
'line_joint_style',
|
439 |
+
[
|
440 |
+
'label' => __( 'Line Joint Style', 'wts-eae' ),
|
441 |
+
'type' => Controls_Manager::SELECT,
|
442 |
+
'default' => 'miter',
|
443 |
+
'options' => [
|
444 |
+
'miter' => __( 'Miter', 'wts-eae' ),
|
445 |
+
'round' => __( 'Round', 'wts-eae' ),
|
446 |
+
'bevel' => __( 'Bevel', 'wts-eae' ),
|
447 |
+
],
|
448 |
+
'condition' => [
|
449 |
+
'_skin' => 'line',
|
450 |
+
'line_stepped' => 'yes',
|
451 |
+
],
|
452 |
+
]
|
453 |
+
);
|
454 |
+
|
455 |
+
$this->add_control(
|
456 |
+
'line_point_style',
|
457 |
+
[
|
458 |
+
'label' => __( 'Line Point Style', 'wts-eae' ),
|
459 |
+
'type' => Controls_Manager::SELECT,
|
460 |
+
'default' => 'circle',
|
461 |
+
'options' => [
|
462 |
+
'circle' => __( 'Circle', 'wts-eae' ),
|
463 |
+
'cross' => __( 'Cross', 'wts-eae' ),
|
464 |
+
'crossRot' => __( 'CrossRot', 'wts-eae' ),
|
465 |
+
'rect' => __( 'Rect', 'wts-eae' ),
|
466 |
+
'rectRounded' => __( 'RectRounded', 'wts-eae' ),
|
467 |
+
'rectRot' => __( 'RectRot', 'wts-eae' ),
|
468 |
+
'star' => __( 'Star', 'wts-eae' ),
|
469 |
+
'triangle' => __( 'Triangle', 'wts-eae' ),
|
470 |
+
],
|
471 |
+
'condition' => [
|
472 |
+
'_skin' => 'line',
|
473 |
+
],
|
474 |
+
]
|
475 |
+
);
|
476 |
+
|
477 |
+
$this->add_control(
|
478 |
+
'xaxes_display',
|
479 |
+
[
|
480 |
+
'label' => __( 'X-Axis', 'wts-eae' ),
|
481 |
+
'type' => Controls_Manager::HEADING,
|
482 |
+
'separator' => 'before',
|
483 |
+
]
|
484 |
+
);
|
485 |
+
|
486 |
+
$this->add_control(
|
487 |
+
'xaxes_grid_line',
|
488 |
+
[
|
489 |
+
'label' => __( 'Enable Grid Lines', 'wts-eae' ),
|
490 |
+
'type' => Controls_Manager::SWITCHER,
|
491 |
+
'default' => 'yes',
|
492 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
493 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
494 |
+
'return_value' => 'yes',
|
495 |
+
'description' => __( ' Enable or Disable X-Axis Grid Lines ', 'wts-eae' ),
|
496 |
+
]
|
497 |
+
);
|
498 |
+
|
499 |
+
$this->add_control(
|
500 |
+
'xaxes_display_title',
|
501 |
+
[
|
502 |
+
'label' => __( 'Enable Title', 'wts-eae' ),
|
503 |
+
'type' => Controls_Manager::SWITCHER,
|
504 |
+
'default' => '',
|
505 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
506 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
507 |
+
'return_value' => 'yes',
|
508 |
+
]
|
509 |
+
);
|
510 |
+
|
511 |
+
$this->add_control(
|
512 |
+
'xaxes_title',
|
513 |
+
[
|
514 |
+
'label' => __( 'Title', 'wts-eae' ),
|
515 |
+
'type' => Controls_Manager::TEXT,
|
516 |
+
'default' => 'X-Axis Title',
|
517 |
+
'placeholder' => __( 'Enter Title', 'wts-eae' ),
|
518 |
+
'condition' => [
|
519 |
+
'xaxes_display_title' => 'yes',
|
520 |
+
],
|
521 |
+
]
|
522 |
+
);
|
523 |
+
|
524 |
+
$this->add_control(
|
525 |
+
'xaxes_labels_display',
|
526 |
+
[
|
527 |
+
'label' => __( 'Enable Labels', 'wts-eae' ),
|
528 |
+
'type' => Controls_Manager::SWITCHER,
|
529 |
+
'default' => 'yes',
|
530 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
531 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
532 |
+
'return_value' => 'yes',
|
533 |
+
]
|
534 |
+
);
|
535 |
+
|
536 |
+
$this->add_control(
|
537 |
+
'yaxes_display',
|
538 |
+
[
|
539 |
+
'label' => __( 'Y-Axis', 'wts-eae' ),
|
540 |
+
'type' => Controls_Manager::HEADING,
|
541 |
+
'separator' => 'before',
|
542 |
+
]
|
543 |
+
);
|
544 |
+
|
545 |
+
$this->add_control(
|
546 |
+
'yaxes_grid_line',
|
547 |
+
[
|
548 |
+
'label' => __( 'Enable Grid Lines', 'wts-eae' ),
|
549 |
+
'type' => Controls_Manager::SWITCHER,
|
550 |
+
'default' => 'yes',
|
551 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
552 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
553 |
+
'return_value' => 'yes',
|
554 |
+
'description' => __( ' Enable or Disable Y-Axis Grid Lines ', 'wts-eae' ),
|
555 |
+
]
|
556 |
+
);
|
557 |
+
|
558 |
+
$this->add_control(
|
559 |
+
'yaxes_display_title',
|
560 |
+
[
|
561 |
+
'label' => __( 'Enable Title', 'wts-eae' ),
|
562 |
+
'type' => Controls_Manager::SWITCHER,
|
563 |
+
'default' => '',
|
564 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
565 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
566 |
+
'return_value' => 'yes',
|
567 |
+
]
|
568 |
+
);
|
569 |
+
|
570 |
+
$this->add_control(
|
571 |
+
'yaxes_title',
|
572 |
+
[
|
573 |
+
'label' => __( 'Title', 'wts-eae' ),
|
574 |
+
'type' => Controls_Manager::TEXT,
|
575 |
+
'default' => 'Y-Axis Title',
|
576 |
+
'placeholder' => __( 'Enter Title', 'wts-eae' ),
|
577 |
+
'condition' => [
|
578 |
+
'yaxes_display_title' => 'yes',
|
579 |
+
],
|
580 |
+
]
|
581 |
+
);
|
582 |
+
|
583 |
+
$this->add_control(
|
584 |
+
'yaxes_labels_display',
|
585 |
+
[
|
586 |
+
'label' => __( 'Enable Labels', 'wts-eae' ),
|
587 |
+
'type' => Controls_Manager::SWITCHER,
|
588 |
+
'default' => 'yes',
|
589 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
590 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
591 |
+
'return_value' => 'yes',
|
592 |
+
'separator' => 'after',
|
593 |
+
]
|
594 |
+
);
|
595 |
+
|
596 |
+
$this->add_control(
|
597 |
+
'step_size',
|
598 |
+
[
|
599 |
+
'label' => __( 'Step Size', 'wts-eae' ),
|
600 |
+
'type' => Controls_Manager::NUMBER,
|
601 |
+
'default' => 10,
|
602 |
+
'min' => 0,
|
603 |
+
'step' => 1,
|
604 |
+
]
|
605 |
+
);
|
606 |
+
|
607 |
+
$this->add_control(
|
608 |
+
'axis_range',
|
609 |
+
[
|
610 |
+
'label' => __( 'Scale Axis Range', 'wts-eae' ),
|
611 |
+
'type' => Controls_Manager::NUMBER,
|
612 |
+
'default' => 100,
|
613 |
+
'description' => __( 'Maximum number for the scale.', 'wts-eae' ),
|
614 |
+
]
|
615 |
+
);
|
616 |
+
|
617 |
+
$this->add_control(
|
618 |
+
'heading',
|
619 |
+
[
|
620 |
+
'label' => __( 'Title', 'wts-eae' ),
|
621 |
+
'type' => Controls_Manager::HEADING,
|
622 |
+
'separator' => 'before',
|
623 |
+
]
|
624 |
+
);
|
625 |
+
|
626 |
+
$this->add_control(
|
627 |
+
'title_display',
|
628 |
+
[
|
629 |
+
'label' => __( 'Enable Title', 'wts-eae' ),
|
630 |
+
'type' => Controls_Manager::SWITCHER,
|
631 |
+
'default' => '',
|
632 |
+
'label_on' => __( 'Yes', 'wts-eae' ),
|
633 |
+
'label_off' => __( 'No', 'wts-eae' ),
|
634 |
+
'return_value' => 'yes',
|
635 |
+
]
|
636 |
+
);
|
637 |
+
|
638 |
+
$this->add_control(
|
639 |
+
'title',
|
640 |
+
[
|
641 |
+
'label' => __( 'Title', 'wts-eae' ),
|
642 |
+
'type' => Controls_Manager::TEXT,
|
643 |
+
'default' => 'Add Your Heading',
|
644 |
+
'placeholder' => __( 'Enter Title', 'wts-eae' ),
|
645 |
+
'condition' => [
|
646 |
+
'title_display' => 'yes',
|
647 |
+
],
|
648 |
+
]
|
649 |
+
);
|
650 |
+
|
651 |
+
$this->add_control(
|
652 |
+
'title_position',
|
653 |
+
[
|
654 |
+
'type' => Controls_Manager::SELECT,
|
655 |
+
'label' => __( 'Position', 'wts-eae' ),
|
656 |
+
'default' => 'top',
|
657 |
+
'options' => [
|
658 |
+
'top' => __( 'Top', 'wts-eae' ),
|
659 |
+
'bottom' => __( 'Bottom', 'wts-eae' ),
|
660 |
+
],
|
661 |
+
'condition' => [
|
662 |
+
'title_display' => 'yes',
|
663 |
+
],
|
664 |
+
|
665 |
+
]
|
666 |
+
);
|
667 |
+
|
668 |
+
$this->add_control(
|
669 |
+
'legend',
|
670 |
+
[
|
671 |
+
'label' => __( 'Legend', 'wts-eae' ),
|
672 |
+
'type' => Controls_Manager::HEADING,
|
673 |
+
'separator' => 'before',
|
674 |
+
]
|
675 |
+
);
|
676 |
+
|
677 |
+
$this->add_control(
|
678 |
+
'legend_display',
|
679 |
+
[
|
680 |
+
'label' => __( 'Enable Legend', 'wts-eae' ),
|
681 |
+
'type' => Controls_Manager::SWITCHER,
|
682 |
+
'default' => 'yes',
|
683 |
+
'label_on' => 'Yes',
|
684 |
+
'label_off' => 'No',
|
685 |
+
'return_value' => 'yes',
|
686 |
+
]
|
687 |
+
);
|
688 |
+
|
689 |
+
$this->add_control(
|
690 |
+
'legend_position',
|
691 |
+
[
|
692 |
+
'label' => __( 'Position', 'wts-eae' ),
|
693 |
+
'type' => Controls_Manager::SELECT,
|
694 |
+
'options' => [
|
695 |
+
'top' => __( 'Top', 'wts-eae' ),
|
696 |
+
'left' => __( 'Left', 'wts-eae' ),
|
697 |
+
'bottom' => __( 'Bottom', 'wts-eae' ),
|
698 |
+
'right' => __( 'Right', 'wts-eae' ),
|
699 |
+
],
|
700 |
+
'default' => 'top',
|
701 |
+
'condition' => [
|
702 |
+
'legend_display' => 'yes',
|
703 |
+
],
|
704 |
+
]
|
705 |
+
);
|
706 |
+
|
707 |
+
$this->add_control(
|
708 |
+
'legend_align',
|
709 |
+
[
|
710 |
+
'label' => __( 'Alignment', 'wts-eae' ),
|
711 |
+
'type' => Controls_Manager::CHOOSE,
|
712 |
+
'options' => [
|
713 |
+
'start' => [
|
714 |
+
'title' => __( 'Left', 'wts-eae' ),
|
715 |
+
'icon' => 'fa fa-align-left',
|
716 |
+
],
|
717 |
+
'center' => [
|
718 |
+
'title' => __( 'Center', 'wts-eae' ),
|
719 |
+
'icon' => 'fa fa-align-center',
|
720 |
+
],
|
721 |
+
'end' => [
|
722 |
+
'title' => __( 'Right', 'wts-eae' ),
|
723 |
+
'icon' => 'fa fa-align-right',
|
724 |
+
],
|
725 |
+
],
|
726 |
+
'default' => 'center',
|
727 |
+
'condition' => [
|
728 |
+
'legend_display' => 'yes',
|
729 |
+
],
|
730 |
+
]
|
731 |
+
);
|
732 |
+
|
733 |
+
$this->add_control(
|
734 |
+
'legend_reverse',
|
735 |
+
[
|
736 |
+
'label' => __( 'Reverse', 'wts-eae' ),
|
737 |
+
'type' => Controls_Manager::SWITCHER,
|
738 |
+
'default' => 'no',
|
739 |
+
'label_on' => 'Yes',
|
740 |
+
'label_off' => 'No',
|
741 |
+
'return_value' => 'yes',
|
742 |
+
'condition' => [
|
743 |
+
'legend_display' => 'yes',
|
744 |
+
],
|
745 |
+
]
|
746 |
+
);
|
747 |
+
|
748 |
+
$this->add_control(
|
749 |
+
'tooltip',
|
750 |
+
[
|
751 |
+
'label' => __( 'Tooltip', 'wts-eae' ),
|
752 |
+
'type' => Controls_Manager::HEADING,
|
753 |
+
'separator' => 'before',
|
754 |
+
]
|
755 |
+
);
|
756 |
+
|
757 |
+
$this->add_control(
|
758 |
+
'tooltip_display',
|
759 |
+
[
|
760 |
+
'label' => __( 'Enable Tooltips', 'wts-eae' ),
|
761 |
+
'type' => Controls_Manager::SWITCHER,
|
762 |
+
'default' => 'yes',
|
763 |
+
'label_on' => 'Yes',
|
764 |
+
'label_off' => 'No',
|
765 |
+
'return_value' => 'yes',
|
766 |
+
]
|
767 |
+
);
|
768 |
+
|
769 |
+
$this->add_control(
|
770 |
+
'tooltip_mode',
|
771 |
+
[
|
772 |
+
'label' => __( 'Mode', 'wts-eae' ),
|
773 |
+
'type' => Controls_Manager::SELECT,
|
774 |
+
'options' => [
|
775 |
+
'index' => __( 'Index', 'wts-eae' ),
|
776 |
+
'point' => __( 'Point', 'wts-eae' ),
|
777 |
+
],
|
778 |
+
'default' => 'point',
|
779 |
+
'condition' => [
|
780 |
+
'tooltip_display' => 'yes',
|
781 |
+
],
|
782 |
+
]
|
783 |
+
);
|
784 |
+
|
785 |
+
$this->add_control(
|
786 |
+
'animation_title',
|
787 |
+
[
|
788 |
+
'label' => __( 'Animation', 'wts-eae' ),
|
789 |
+
'type' => Controls_Manager::HEADING,
|
790 |
+
'separator' => 'before',
|
791 |
+
]
|
792 |
+
);
|
793 |
+
|
794 |
+
$this->add_control(
|
795 |
+
'chart_animation',
|
796 |
+
[
|
797 |
+
'label' => __( 'Animation', 'wts-eae' ),
|
798 |
+
'type' => Controls_Manager::SELECT,
|
799 |
+
'options' => [
|
800 |
+
'linear' => __( 'Linear', 'wts-eae' ),
|
801 |
+
'easeInQuad' => __( 'Ease in Quad', 'wts-eae' ),
|
802 |
+
'easeOutQuad' => __( 'Ease out Quad', 'wts-eae' ),
|
803 |
+
'easeInOutQuad' => __( 'Ease in out Quad', 'wts-eae' ),
|
804 |
+
'easeInCubic' => __( 'Ease in Cubic', 'wts-eae' ),
|
805 |
+
'easeOutCubic' => __( 'Ease out Cubic', 'wts-eae' ),
|
806 |
+
'easeInOutCubic' => __( 'Ease in out Cubic', 'wts-eae' ),
|
807 |
+
'easeInQuart' => __( 'Ease in Quart', 'wts-eae' ),
|
808 |
+
'easeOutQuart' => __( 'Ease out Quart', 'wts-eae' ),
|
809 |
+
'easeInOutQuar
|